运行 Ubuntu 我最近遇到了关闭计算机的问题 - 每次我关闭时它都会挂起,无论是从 GUI 还是命令行sudo shutdown -hP now
~$ uname -a
Linux mythbuntu 3.0.0-17-generic #30-Ubuntu SMP x86_64 x86_64 GNU/Linux
我的 /etc/fstab 中有一些 cifs 条目,它们被设置为自动,以便它们在启动时安装。
~$ 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,但似乎没有什么区别(在另一个论坛上提出建议)
当我改变汽车为了禁止自动系统没有挂起,但我希望在启动时尝试这些挂载。
我在网上搜索了修复信息,有很多建议,但没有具体的答案。我在关机时看到的消息似乎表明无人值守升级服务在网络服务已经关闭后尝试使用 mountall,并且无法挂载网络共享。输出的最后一部分提到启动然后几乎立即停止 apache2 webserver,原因不明。我在关机时也看到过这个错误umount //proc/fs/nfsd: device is busy
我的 fstab 中没有 nfs 挂载。
我是否尝试错误地使用 CIFS?有没有更好的方法来在网络上安装共享而不会受到此问题的困扰?(它适用于媒体中心类型的配置,因此一切都应该是自动的)
答案1
基于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 进行调整,但理论上可行。