/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