装完Arch之后,重启,结果kernel panic,报这个错:
No filesystem could mount root
检查了/etc/fstab和生成的/boot/grub/grub.cfg,都是对的。
但是在grub的GUI界面在archlinux的项按e,进入grub编辑器之后,却发现initrd那行只有这个:
initrd /boot/intel-ucode.img
但是/boot/grub/grub.cfg里这行是这个:
initrd /boot/intel-ucode.img /boot/initramfs-linux-lts.img
在grub编辑器里手动加上/boot/initramfs-linux-lts.img之后,就能进系统了。
所以问题的原因是GRUB GUI的界面是debian 11提供的,但是debian 11的GRUB有BUG,在读取arch的/boot/grub/grub.cfg时在initrd这行少读了一项,生成了错误的GRUB菜单。
解决方法有如下几个:
卸载intel-ucode
这样initrd里就只有一项了:
initrd /boot/initramfs-linux-lts.img
{spa.nbgonghe.com]
{spa.paradise-premium.com]
{spa.hnxl-edu.com]
{spa.english-mental-doctor.com]
{spa.fzbhls.com]
手动修改GRUB menu
教程:https://arcolinux.com/fix-for-kernel-panic-when-dualbooting-with-intel-ucode-or-amd-ucode/
但是这个更改不是永久的,下次update-grub的时候更改就会被覆盖掉。
手动给GRUB打补丁
教程:https://askubuntu.com/questions/628206/how-can-i-boot-into-arch-linux-using-initramfs-in-ubuntus-grub
这个要编辑系统库。感觉风险挺大的,而且可能会对后续系统库升级产生影响?
致谢
感谢#archlinux:archlinux.org里的各位大佬的帮助。