开机时出现的挂载错误

我在启动过程中遇到了以下错误。但是这个错误没有被写入到boot.log中,因为它发生在早期的启动阶段。
mount: mounts none on /dev/pts failed: Device or resource busy

我在/etc/init.d/umountfs文件中找到了这段代码(其中有一个关于/dev/pts的条目)。
 PROTECTED_MOUNTS="$(sed -n '0,/^\/[^ ]* \/ /p' /proc/mounts)"
        WEAK_MTPTS="" # be gentle, don't use force
        REG_MTPTS=""
        TMPFS_MTPTS=""
        while read -r DEV MTPT FSTYPE REST
        do
                echo "$PROTECTED_MOUNTS" | grep -qs "^$DEV $MTPT " && continue
                case "$MTPT" in
                  /|/proc|/dev|/.dev|/dev/pts|/dev/shm|/dev/.static/dev|/proc/*$
                        continue
                        ;;
                  /var/run)
                        continue
                        ;;
                  /var/lock)
                        continue

文件/etc/init.d/umountnfs.sh也有一个类似的条目。所以,如果我删除/dev/pts这个条目,它会解决我的问题(启动时显示的挂载错误)。
以下是mtab文件的内容:
/dev/sda1 / ext4 rw,errors=remount-ro,commit=600 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
none /sys sysfs rw,noexec,nosuid,nodev 0 0
fusectl /sys/fs/fuse/connections fusectl rw 0 0
none /sys/kernel/debug debugfs rw 0 0
none /sys/kernel/security securityfs rw 0 0
none /dev devtmpfs rw,mode=0755 0 0
none /dev/pts devpts rw,noexec,nosuid,gid=5,mode=0620 0 0
none /dev/shm tmpfs rw,nosuid,nodev 0 0
none /var/run tmpfs rw,nosuid,mode=0755 0 0
none /var/lock tmpfs rw,noexec,nosuid,nodev 0 0
rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
/dev/sda6 /media/windisk fuseblk rw,nosuid,nodev,allow_other,blksize=4096 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,noexec,nosuid,nodev 0 0
gvfs-fuse-daemon /home/blandman/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,user=blandman 0 0

系统能启动吗?这是升级还是全新安装的10.10版本? - Jonathon
是的,系统已经启动了。这是从10.04升级过来的。 - nixnotwin
如果你的系统正常运行,我就不会编辑任何那些文件(“没坏就别修”)。至少在你知道是什么原因引起的之前。 - JanC
请你把 'cat /etc/mtab' 的输出结果发出来,以便检查 mountall。 - Nicolas Schirrer
这与那些卸载脚本无关,所以不要编辑它们。你的/etc/fstab是什么?我猜里面有一个多余的条目。 - Jonathon
fstab文件中没有/dev/pts的条目。 - nixnotwin
你能把/etc/fstab的内容附加到你的问题中吗? - Stefano Palazzo
3个回答

早期引导过程中运行的mountall程序将会挂载/lib/init/fstab/etc/fstab中列出的所有内容。检查是否存在/dev/pts的重复条目,如果没有找到任何重复条目,则检查所有init脚本中是否提及它:

grep /dev/pts /etc/init/* /etc/init.d/*

lib/init/fstab中有一个关于/dev/pts的条目,而/etc/fstab没有。并且在/dev/pts上没有重复的条目,上面的grep命令显示umountfs和umountnfs.sh中的条目与我在问题中发布的那个相似。 - nixnotwin

如果您尝试手动挂载它,是否有相同的信息:

sudo mount -t devpts -o gid=5,mode=620 devpts /dev/pts

我尝试了你的命令:这是输出结果 mount: devpts已经挂载或/dev/pts忙碌 mount: 根据mtab,/dev/pts上没有已经挂载的内容 - nixnotwin
你的命令输出让我觉得,如果我们在 mtab 文件中更改 /dev/pts 的运行级别(稍微延迟执行),问题可能会得到解决。如何更改挂载点的运行级别? - nixnotwin

我觉得最好的做法是在你的系统仍然能够启动的情况下不要碰这些文件。如果这让你很烦恼,也许重新安装(当然要先备份)是个不错的选择。 如果你使用的是Wubi,看一下他们网站上列出的问题可能会有帮助。https://wiki.ubuntu.com/WubiGuide#Wubi