Manjaro引导项丢失修复
这是一个惨痛的教训。
在近一个月没有进我的manjaro双系统后,应了那句话:长期不更新,一更新必崩。果不其然,我更新的时候电脑屏幕黑了,只有个光标,其余怎么操作都不行。我心想坏了,系统崩了。然后我手足无措,心痛地长按下了关机键,电脑强制关机了。
我上一台电脑就是这样强制关机导致硬盘死掉的,大家千万不要经常强制关机,尤其是跑着很多程序的时候。果不其然,当我再打开系统,准备进入manjaro双系统的时候,问题来了:
error: file '/vmlinuz-5.7-x86_64' not found.
error: you need to load the kernel first.
Press any key to continue...
进不去了系统了。windows倒还能进入,manjaro是vmlinuz文件找不到了。高级选项里的其他内核的manjaro也进不去,全都是这个问题。坏了,关机的时候引导项弄坏了。
怎么办呢?重装系统?配置了那么久说没就没了太心疼。那怎么办?
重装内核,修复grub!跟着来。
制作manjaro系统启动盘
因为manjaro系统很好用的一个地方在于它有预体验的功能,就是启动盘就是一个完整的小系统,能够使用manjaro的功能。因此制作一个manjaro启动盘类似于装了个pe系统。
具体怎么制作启动盘见之前的博客。我之前的启动盘一直留着,因此可以直接插上使用。
挂载分区
进入manjaro预体验系统后,打开命令行,通过lsblk
命令和sudo fdisk -l
命令查看磁盘分区情况,找到之前manjaro系统的/
目录、/boot
目录、/home
目录,以及系统引导所在的/boot/efi
所在的盘。(可以通过名称和大小判断)。由于我是修复后才来写的博客,就只能展示现在已经挂载的情况,如图:
可以看到nvme0n1p7为/boot
分区,nvme0n1p1为/boot/efi
分区,nvme0n1p8为/
分区,nvme0n1p9为/home
分区。
在当时没能进入系统的情况下,这些分区都是没有挂载的。因此现在重新挂载。
- 挂载
/
到/mnt
sudo mount /dev/nvme0n1p8 /mnt
这是可以看到/mnt
下出现了一个@
,里面为曾经的/
下的文件夹
2. 挂载/boot
sudo mount /dev/nvm20n1p7 /mnt/\@/boot
- 挂载
/boot/efi
sudo mount /dev/nvm20n1p1 /mnt/\@/boot/efi
- chroot
进入/mnt/\@/
下,chroot
manjaro-chroot .
- 重装Linux内核
sudo pacman -S linux
- 重新制作grub引导
grub-mkconfig -o /mnt/\@/boot/grub/grub.cfg
- 关机重启
reboot
如此应该能够顺利进入引导界面并进入更新内核后的manjaro系统。
若windows引导项丢失
如果以上操作后windows的引导项丢了,开机后没有引导界面而直接进入了manjaro系统,则需要重新增加windows的引导。这可以直接重新制作grub.cfg
。此文件是grub的配置文件,但是是通过/etc/default/grub
自动生成的,只需要执行grub-mkconfig
命令则可自动识别windows引导项并添加到grub.cfg
中。
grub-mkconfig -o /boot/grub/grub.cfg
然后重启即可。
使用其他的grub引导界面
grub界面美化也是一个永恒的主题。可以参见这个知乎。
前往https://www.gnome-look.org/browse/cat/109/order/latest/下载喜欢的grub主题到本地,解压后其中将有一个主题文件夹和一个install.sh,如下图
可以直接运行install.sh安装该grub主题。
也可以手动安装挑战一下。主题文件夹复制入/usr/share/grub/themes/
下,如上例,则形成/usr/share/grub/themes/Atomic
。
前往/etc/default
,编辑grub
文件,将其中的GRUB_THEME
值改为/usr/share/grub/themes
下主题文件夹中的theme.txt
地址,如
GRUB_THEMS="/usr/share/grub/themes/Atomic/theme.txt"
如下图
保存后重做grub.cfg
文件:
grub-config -o /boot/grub/grub.cfg
关机重启后即可生效。
注意:如果修改grub
文件时提示只是可读文件不可编辑,则需要修改文件:chmod +w /etc/default/grub
,所有操作若是permission denied,则加上sudo。