1

Запустив Ubuntu, я недавно столкнулся с проблемой выключения компьютера - он просто зависает при каждом выключении, будь то из графического интерфейса или командной строки с sudo shutdown -hP now

~$ uname -a
Linux mythbuntu 3.0.0-17-generic #30-Ubuntu SMP x86_64 x86_64 GNU/Linux

У меня есть несколько записей cifs в моем /etc /fstab, которые настроены на auto, чтобы они монтировались при загрузке.

~$ cat /etc/fstab | grep cifs
//remoteserver/stuff    /mnt/remoteserver/stuff cifs ro,username=myuser,password=mypass,nobootwait,auto 0 0
//remoteserver/public   /mnt/remoteserver/public cifs rw,username=myuser,user,suid,noatime,nobootwait,auto 0 0

Я добавил nobootwait, но, похоже, ничего не изменилось (совет на другом форуме)

Когда я изменяю авто на noauto, система не зависает, но я хочу, чтобы эти монтирования были предприняты при запуске.

Я искал в интернете информацию об исправлениях, и есть много предложений, но нет конкретных ответов. Похоже, что сообщения, которые я вижу при завершении работы, указывают на то, что служба автоматических обновлений пытается использовать mountall после того, как сетевой сервис уже вышел из строя, и не смонтирует сетевые ресурсы. В последнем бите упоминается, что запуск по какой-то причине почти сразу останавливается. Я также видел эту ошибку при завершении работы umount //proc/fs/nfsd: device is busy В моем fstab нет монтирований nfs.

Я пытаюсь использовать CIFS неправильно? Есть ли лучший способ монтировать общие ресурсы в сети, которые не страдают от этой проблемы? (Это для конфига типа медиацентра, поэтому все должно быть автоматически)

2 ответа2

4

Основываясь на ответе uSlackr , я изменил скрипт mount_shares_locally (ниже)

  • Я создал этот файл как /etc/init.d/mount_shares_locally
  • Затем выполните chmod 755 /etc/init.d/mount_shares_locally чтобы сделать его исполняемым
  • Я создал каталог sudo mkdir /var/lock/subsys/
  • Я добавил noauto к каждому из моих общих ресурсов cifs, чтобы они не монтировались автоматически во время mountall
  • sudo service mount_shares_locally restart не дал ошибок
  • И, наконец, добавил его к уровням запуска / завершения работы с sudo update-rc.d mount_shares_locally defaults

#!/bin/sh
#
### BEGIN INIT INFO
# Provides:          mount_shares_locally
# Required-Start:    $network $local_fs $remote_fs smb mysqld
# Required-Stop:     $network $local_fs $remote_fs smb
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: mount Samba shares locally
### END INIT INFO

if [ -f /etc/rc.d/init.d/functions ]; then  # "/lib/lsb/init-functions" on Ubuntu
    . /etc/rc.d/init.d/functions
fi

start () {  
    echo -n "Mounting Samba shares locally:\n"

    cat /etc/fstab | grep 'cifs.*\(password\|credentials\)' | while read -r remoteServer localMount type options;
    do
        echo Mounting $remoteServer to $localMount
        mount $localMount
    done

    touch /var/lock/subsys/mount_shares_locally
    echo
    return 0
}

stop () {
    echo -n "Unmounting locally mounted Samba shares:\n"

    cat /etc/fstab | grep 'cifs.*\(password\|credentials\)' | while read -r remoteServer localMount type options;
    do
        echo Unmounting $localMount
        umount $localMount
    done

    rm -f /var/lock/subsys/mount_shares_locally

    echo
    return 0
}

restart () {
    stop
    start
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac

exit $?

Мне также пришлось добавить другой скрипт в модель upstart, чтобы mount_shares_locally вызывался в нужное время во время запуска (после запуска сети):

/etc/init/mount_shares_locally.conf

# mount_shares_locally - Mount any cifs shares in /etc/fstab when network comes online
#

description "Mount CIFS shares"

start on (local-filesystems and net-device-up IFACE=eth0)
stop on (runlevel [!12345] or net-device-down IFACE=eth0)

respawn
console none

pre-start script
    mkdir -p -m0755 /var/run/mount_shares_locally
    exec /etc/init.d/mount_shares_locally start
end script

post-stop script
    mkdir -p -m0755 /var/run/mount_shares_locally
    exec /etc/init.d/mount_shares_locally stop
end script
2

Вы можете создать "сервис", который отключает их во время выключения. Я использую скрипт на моем сервере Fedora/Amahi для этого. Это нужно будет настроить для Ubuntu, но теория работает.

Подробнее здесь: http://wiki.amahi.org/index.php/Mount_Shares_Locally

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .