![如何修复 sudo apt upgrade 后的启动问题](https://linux22.com/image/1201396/%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%20sudo%20apt%20upgrade%20%E5%90%8E%E7%9A%84%E5%90%AF%E5%8A%A8%E9%97%AE%E9%A2%98.png)
我一直在笔记本电脑上工作,硬盘停止工作后,我在外部 3TB HDD 驱动器上安装了 Ubuntu 22.04。该驱动器有大约 500GB 的数据,我无法移动它。我制作了自定义分区并安装好了所有内容。分区如下:
/dev/sda1
- efi,启动分区
/dev/sda2
- NTFS 包含先前的数据
/dev/sda3
- 交换区域
/dev/sda4
- 根分区
/dev/sda5
- 家庭分区
在安装过程中,在选择安装引导加载程序的设备下拉菜单中,选择/dev/sda
会导致操作系统崩溃,但重新安装并选择后/dev/sda1
一切正常。
操作系统运行良好,直到我运行
sudo apt upgrade
时才注意到一些有关更新的输出initramfs
(如图所示)
由于无法进入系统,我无法将日志粘贴为文本。一切正常,我甚至使用了笔记本电脑超过 10 个小时。我关闭笔记本电脑,然后启动它,单击 Ubuntu 并获取
error: attempt to read or write outside of disk `hd0`.
error: you need to load the kernel first.
Press any key to continue...
恢复模式不起作用,尝试从 grub 菜单加载内核会出现相同的读取或写入错误。这是当我使用在 /boot/ 中找到的所有版本的 vmlinuz 时出现的情况。只有
linux /boot/vmlinuz.old
不会出现该错误。Vmlinuz、vmlinuz-6.2.0-26-generic 和 vmlinuz-6.5.0-28-generic 均出现错误。当我在
initrd /boot/initrd.img
成功执行 vmlinuz.old 命令后尝试运行时,我得到了相同的读取或写入错误。
我该如何解决这个问题?由于许多挑战,我目前无法访问实时 CD/USB,因此任何不需要帮助的帮助都将非常有帮助。
答案1
你能附上一张完整启动信息的图片吗?可能会出现 grub 救援提示。grub 菜单会出现吗?如果是,请在菜单出现时单击 e。如果出现终端提示,请按照以下步骤操作:
- 运行
ls
,输出应如下所示:
grub > ls
(hd0) (hd0, msdos9)
- 运行
ls [(location without spaces)]
,如下所示:
grub > ls (hd0,msdos9)/
grub > ls (hd0,msdos8)/
grub > ls (hd0,msdos5)/ # Lets say this is the root location
grub > ls (hd0,msdos5)/
- 将 root 设置为你的根分区:
grub > set root=(hd0,msdos5)
grub > set prefix=(hd0,msdos5)/boot/grub
grub > insmod normal
grub > normal
- 设置 grub 和内核:
sudo update-grub
sudo grub-install /dev/sda # If the drive is hd0 the equivalent is sda, if it's hd1 then use sdb
apt-cache search linux-image
sudo apt install linux-image-your_version_choice linux-headers-your_version_choice linux-modules-extra-your_version_choice
注:灵感来自这个帖子,请查看此帖子寻求帮助。如果您可以启动 grub,我不知道在没有外部可启动设备的情况下是否可行。用您的路径替换:
/dev/sda1 - efi, boot partition
/dev/sda2 - NTFS with previous data
/dev/sda3 - Swap area
/dev/sda4 - root partition
/dev/sda5 - home partition