当我正常使用导航器和文本编辑器时,我的操作系统崩溃了,所以我决定手动强制关闭,当屏幕打开并且正在加载操作系统时,它出现在 busybox 屏幕上,我应该在其中输入一些内容initramfs,所以我输入:
<initramfs> fsck /dev/sda2/
在这个过程中我所有的问题都输入了yes,
现在我每次打开电脑都会面对这个屏幕:
我该如何继续呢?我在整个网络中搜索了任何可以帮助我的答案,但看起来没有解决方案。我的Ubuntu版本是Ubuntu 20.04 Focal Fossa
我尝试从这篇文章运行下面的这些命令https://askubuntu.com/questions/910218/sbin-init-no-such-file-or-directory-not-able-to-boot-ubuntu-desktopTopHat 建议更新我的内核,但当我这样做时,sudo mount -a
我遇到了:sudo: error while shared libraries: libselinux.so.1: cannot open shared object file: no such file or directory
答案1
内核恐慌在这里有点转移注意力,因为它是先前错误的结果。在您的屏幕截图中,第一个异常启动消息是:
/sbin/init: error while loading shared libraries: libselinux.so.1: cannot open shared object file: No such file or directory
所以看起来该文件libselinux.so.1
现在丢失了。
根据Ubuntu 包搜索引擎,libselinux.so.1
位于包中libselinux1
,文件应位于/lib/x86_64-linux-gnu/libselinux.so.1
。
(Hardware name:
屏幕截图中的行以及调用跟踪中 Rxx 寄存器名称的存在do_syscall_64
告诉我,您正在使用 64 位 x86 版本的 Ubuntu,因此您需要下载的任何包的“架构”都需要是amd64
。)
你应该下载那个包对于某些可以与恢复启动介质一起使用的介质,请执行以下步骤 1、2 和 3您已经找到的说明访问损坏的 Ubuntu 安装的根文件系统:
<boot using external media>
mount /path/to/disk /mnt
mount --rbind /proc /mnt/proc
mount --rbind /sys /mnt/sys
mount --rbind /dev /mnt/dev
然后将包含丢失/损坏的库的包重新安装到当前安装的安装位置/mnt
:
dpkg --root=/mnt -i <path to the package>/libselinux1_3.0-1build2_amd64.deb
显然,替换<path to the package>
为下载libselinux1_3.0-1build2_amd64.deb
文件的实际路径。
然后看看现在是否可以成功使用mount
损坏的安装的命令:
chroot /mnt mount -a
如果这导致出现关于不同缺失库的另一条错误消息,请使用“搜索包的内容”部分包搜索页面找到包含该库的包,然后以相同的方式下载并重新安装它。
(如果您发现大量库已损坏,这可能会变得相当乏味。在这种情况下,您可以考虑备份您的主目录并重新安装。如果您将所有库都放在一个单一的目录中,/mnt/etc
您的主目录现在将位于/mnt/home
文件系统;否则请查看/mnt/etc/fstab
您需要安装哪个文件系统才能访问您的主目录。)
如果chrootmount -a
命令成功,可以使用chroot /mnt
进入chroot环境,然后重建最新内核的initramfs:
update-initramfs -u -k 5.13.0-30-generic