如何卸载以前 chroot 的文件系统?

如何卸载以前 chroot 的文件系统?

我正在使用救援实时系统(类似于实时 CD)来修复 Debian 服务器的一些问题,如下所示:

# mkdir -p /mnt/rescue
# mount /dev/md2 /mnt/rescue
# mount --bind /dev /mnt/rescue/dev/
# mount --bind /proc /mnt/rescue/proc/
# mount --bind /sys /mnt/rescue/sys/

现在我可以 chroot /mnt/rescue- 但完成后,如何再次卸载文件系统?

umount: /mnt/rescue: target is busy.
    (In some cases useful info about processes that use
     the device is found by lsof(8) or fuser(1))

我猜这是因为dev,procsys绑定到已安装的文件系统。但也不可能卸载它们......

答案1

  1. 您必须首先退出 chroot 会话,通常只需简单的exit操作即可:

    exit
    
  2. 然后卸载所有绑定的目录:

    umount /mnt/rescue/dev/
    umount /mnt/rescue/proc/
    umount /mnt/rescue/sys/
    
  3. 然后:

    umount /mnt/rescue
    

如果您担心sync此处未使用它,请注意它对于是否可以卸载没有影响。无论如何,卸载都会刷新挂载的写入(必须这样做,因为卸载后它们将无处可去)。 chroot 进程的存在是无关紧要的(除非它阻止卸载)。在正常的系统操作中,同步没有明显的影响。仅当设备在未卸载的情况下物理断开连接或在设备安装时系统崩溃时,sync 才会产生影响。

答案2

执行以下命令以强制从文件系统层次结构中分离文件系统,并在文件系统不再繁忙时立即清除对文件系统的所有引用。

umount -lf /mnt/rescue

答案3

您收到“目标正忙”的原因。消息是因为安装点 ( /mnt/rescue) 在文件浏览器或终端会话中打开,以及卸载过程的顺序(这里我的意思是dev/pts应该在之前卸载dev/

好吧,为了成功卸载那里的所有文件系统:

  • 确保安装点未在文件浏览器中打开!
  • 退出 chroot 后,将目录更改为 chroot dir ( cd)!
  • 卸载 fs 遵循以下顺序dev/pts => dev/ => proc/ => sys/

    sudo umount /mnt/rescue/dev/pts
    sudo umount /mnt/rescue/dev sudo
    umount /mnt/rescue/proc
    sudo umount /mnt/rescue/sys
    sudo umount /mnt/rescue

答案4

退出 chroot。在主机系统中,命令“mount”将显示所有已挂载的路径。 (包括那些挂载在 chroot 中的路径。)例如:

binfmt_misc on /home/user/projects/jsroot/proc/sys/fs/binfmt_misc

然后进入chroot环境。在 chroot 环境中运行 unmount 以按顺序卸载所有路径。 (子路径必须在父路径之前卸载。)

unmount /proc/sys/fs/binfmt_misc
unmount /proc/sys
unmount /proc

相关内容