我一直在并行执行多个 chroot 环境,每个环境都在单独的文件夹中(当脚本chroot
退出时,我有时会在同一文件夹中运行另一个环境),有一段时间它看起来很好。但现在我几乎没有/dev
“主”系统(无法启动应用程序/打开新窗口等)。
我一直这样安装:
sudo mount -t proc proc $work_path/fin_sq/proc
sudo mount -t sysfs sys $work_path/fin_sq/sys
sudo mount -t devtmpfs devtmpfs $work_path/fin_sq/dev
sudo mount -t devpts devpts $work_path/fin_sq/dev/pts
退出后卸载chroot
:
umount "${work_path}"/fin_sq/dev/pts
umount "${work_path}"/fin_sq/dev
umount "${work_path}"/fin_sq/proc
umount "${work_path}"/fin_sq/sys
有时我会通过ctrl-c
.对于脚本在存在先前运行残留的文件夹中运行的情况,脚本将被编码为卸载并删除先前的工作。
今天,我至少在一个终端窗口中看到target is busy
我使用chroot
.失败后,umount
脚本删除了 chroot 系统的所有文件夹。对于未来,我认为如果其中一个卸载失败,我最好取消进一步的卸载/删除。
然而,您认为是什么可能导致这样的结果呢?如何调查?如何让系统进入工作状态?我暂时不会重新启动系统,希望能更深入地学习 Linux。 TIA
PS 完整脚本供感兴趣的人参考:脚本通过 chroot 运行其他脚本,搜索/dev/pts
在代码中找到两行(mount/umount)。
“自然”lsof
显示空输出,添加--force
似乎没有什么区别。尝试的mount -t devpts devpts /dev
结果是“devtmpfs 已安装在 one_of_chrooted_paths/dev 上”。
我读了umount:目标正忙,但问题是-o rbind
,我安装时没有它。再次,它正在使用两个 chrooted,我增加到 3-4,然后有些东西坏了......
答案1
笔记:这个答案是我如何解决这个问题的,欢迎回答有关它如何发生的技术细节。
我发现有ps aux
几个sudo chroot .../work5/
进程分别具有T
和Ss
状态。
翻译:博士
另外,我在运行lsof
另一个子文件夹时发现的其他几个进程chroot
仍然安装在其中findmnt
(不是我之前检查过的“${work_path}”/fin_sq/dev/pts)。在这些被终止之后(不容易,我发布了另一个相关问题:linux:kill -9进程仅在第二次尝试时成功),我能够卸载有问题的安装点。
之后我损坏了/dev
,特别是/dev/null
没有损坏special character
,我修复了在谷歌上搜索我自己的答案的问题https://superuser.com/a/1767579/607929:
# mknod -m 666 /dev/null c 1 3
# mknod -m 666 /dev/ptmx c 5 2
一切似乎都有效,但 INO 更难找到问题到底是如何开始的细节。看起来我已经清除了上一次运行脚本的终端输出,然后chroot
再运行下一步。Ctrl-c
几乎可以肯定是根本原因。我想知道为什么它以前多次中断而没有问题,但最近却导致如此“混乱”。