我正在运行两个 Ubuntu 系统(64 位 AMD 台式机系统上的 12.04 和 64 位 Intel 笔记本电脑上的 14.04),并已按照以下说明配置了两个 CIFS 驱动器在系统启动时安装
https://help.ubuntu.com/community/MountWindowsSharesPermanently
我使用 /etc/fstab 中的以下条目配置了这些驱动器:
//gbsfp1/kgallant /home/kgallant/nethome cifs credentials=/etc/samba/credentials,rw,iocharset=utf8,_netdev,uid=1000,gid=1000 0 0
//gbsfp1/share /home/kgallant/netshare cifs credentials=/etc/samba/credentials,rw,iocharset=utf8,_netdev,uid=1000,gid=1000 0 0
当我登录任意一台机器时,两个驱动器始终都能成功安装,但在系统启动期间总会报告一系列错误消息,如下所示:
Jul 4 10:52:07 gbsdt1 kernel: [ 20.976113] CIFS VFS: Error connecting to socket. Aborting operation
Jul 4 10:52:07 gbsdt1 kernel: [ 20.976509] CIFS VFS: cifs_mount failed w/return code = -101
这些消息在系统日志中重复出现五到十次,对于 14.04 机器,在系统启动期间在屏幕上重复出现。似乎两个系统都在尝试在网络服务初始化之前安装驱动器,我认为这是问题的根本原因。文档表明 _netdev 选项可以防止这种情况,但它似乎对 12.04 或 14.04 系统都没有任何影响。
网络驱动器由运行在 Fedora 14 机器上的 Samba 服务器提供。
有没有办法延迟安装这些文件系统,直到网络服务可用之后(如果我怀疑这是问题的原因)?或者任何其他建议也将不胜感激。
提前致谢!
ls /etc/rc*.d/ 的输出
/etc/rc0.d:
K01nxserver
K09apache2
K10unattended-upgrades
K20osspd
K20speech-dispatcher
K20xrdp
K21postgresql
README
S20sendsigs
S30urandom
S31umountnfs.sh
S35networking
S40umountfs
S60umountroot
S90halt
/etc/rc1.d:
K01nxserver
K09apache2
K20acpi-support
K20kerneloops
K20osspd
K20saned
K20speech-dispatcher
K20xrdp
K21postgresql
README
S30killprocs
S70dns-clean
S70pppd-dns
S90single
/etc/rc2.d:
README
S19postgresql
S20kerneloops
S20osspd
S20speech-dispatcher
S20xrdp
S50rsync
S50saned
S70dns-clean
S70pppd-dns
S75sudo
S91apache2
S99acpi-support
S99grub-common
S99nxserver
S99ondemand
S99rc.local
/etc/rc3.d:
README
S19postgresql
S20kerneloops
S20osspd
S20speech-dispatcher
S20xrdp
S50rsync
S50saned
S70dns-clean
S70pppd-dns
S75sudo
S91apache2
S99acpi-support
S99grub-common
S99nxserver
S99ondemand
S99rc.local
/etc/rc4.d:
README
S19postgresql
S20kerneloops
S20osspd
S20speech-dispatcher
S20xrdp
S50rsync
S50saned
S70dns-clean
S70pppd-dns
S75sudo
S91apache2
S99acpi-support
S99grub-common
S99nxserver
S99ondemand
S99rc.local
/etc/rc5.d:
README
S19postgresql
S20kerneloops
S20osspd
S20speech-dispatcher
S20xrdp
S50rsync
S50saned
S70dns-clean
S70pppd-dns
S75sudo
S91apache2
S99acpi-support
S99grub-common
S99nxserver
S99ondemand
S99rc.local
/etc/rc6.d:
K01nxserver
K09apache2
K10unattended-upgrades
K20osspd
K20speech-dispatcher
K20xrdp
K21postgresql
README
S20sendsigs
S30urandom
S31umountnfs.sh
S35networking
S40umountfs
S60umountroot
S90reboot
/etc/rcS.d:
README
S25brltty
S37apparmor
S55urandom
S70x11-common
答案1
解决方案:
在 fstab 中,它永远不会按照您希望的方式工作:
- dmesg 中没有错误
- 登录前要挂载的共享。
我看到两种解决方案:
- 使用自动文件系统而不是 fstab,因为 Autofs 允许您根据需要自动挂载目录,从而允许您比下一个解决方案更轻松地管理更改。
- 创建自定义 upstart 脚本并将其放在 init.d/rc6.d 中。这是真实的解决方案,用于挂载 nfs 卷的服务器,但它需要您亲自动手,了解 Linux init 进程(非 *nix 术语中的“启动进程”)
让我知道您想走哪条路,或者如果以上内容足以为您指明正确的方向,请接受此答案。