从 rm -rf /proc /sys/ /dev/pts /dev 恢复而不重新启动?

从 rm -rf /proc /sys/ /dev/pts /dev 恢复而不重新启动?

/proc这不是一个严重的问题,因为它可以通过重新启动来修复,但我很好奇是否有办法恢复、/sys/dev/pts中的文件(可能不是全部,但尽可能多)/dev

chroot当删除安装有这些目录的目录时,我部分删除了它们

mount -t proc proc [path/to/chroot]/proc
mount -t sysfs sys [path/to/chroot]/sys
mount --bind /dev/[path/to/chroot]/dev
mount -t devpts /dev/path [path/to/chroot]/dev/pts

在 Ubuntu 16.10 amd64 上。某些文件的删除失败(我没有记录错误消息),因为文件删除被拒绝,这是我可以理解的。我想该解决方案将适用于所有基于 Debian 的系统。

退出后chroot我看到类似的事情

$ ls -bash: /dev/null: Keine Berechtigung
bash: _upvars: `-a2': invalid number specifier
-bash: /dev/null: Keine Berechtigung
bash: _upvars: `-a0': invalid number specifier

在使用Tabon自动完成期间ls(导出后LANGUAGE=en)。

答案1

您实际上无法删除/proc或中的大多数文件/sys。它们是内核的接口,而不是存储在磁盘上的东西,并且大多数内核接口都是内核想要提供的并且不受用户空间的影响。

请注意,异常是可能的 - 这很不寻常,但驱动程序可以为从内核文件系统中删除文件分配含义。这是臭名昭著的案例埃维瓦夫斯,通常安装在/sys/firmware/efi/efivars具有 UEFI 的系统上。删除那里的文件可能会通过删除其启动配置来破坏您的计算机。和systemd 用于以读写方式挂载它……

要恢复内核文件系统本身,您只需重新挂载它们即可。事实上,rm -rf /proc /sys不会删除它们,因为大多数这些文件根本无法删除,并且只要挂载了某些东西,挂载点就无法删除。但是,如果您以某种方式进入了/proc不再存在的状态/sys,则可以重新创建目录并安装它们。

mkdir /proc /sys
mount -t proc proc /proc
mount -t sys sysfs /sys

当然,您需要一个 root shell。如果没有/proc和,您可能仍然能够以 root 身份登录/sys,但如果没有 ,则可能无法登录/dev

至于/dev,它通常由 udev 填充。您可以告诉 udev 重新填充它。

mkdir /dev
mount -t devtmpfs -o mode=0755 udev /dev
mount -t devpts devpts /dev/pts
udevadm trigger

相关内容