grub_手动引导记录

Catalogue
  1. 1. 参考资料

机器上安装有两个linux 但是由archlinux 自动生成的grub.cfg,无法引导另外一个linux,于是趁着这个机会学习一下手动引导grub。

手动引导安装sway的linux,这个系统是ext4文件系统,使用GUID磁盘分区表(GUID Partition Table,缩写:GPT)。

进入到grub 引导菜单的时候,按e进入编辑界面,再按f2 进入黑呼呼的命令行。先运行 ls -al 查看一下系统的硬盘分区。

对比一下知道自己安装sway的linux 根分区是在 HD0,GPT6 上面,没有单独的boot 分区,于是按照arch wiki

直接这样输入:

1
2
3
4
grub> set root=(hd0,gpt6)
grub> linux /boot/vmlinuz-linux root=/dev/sda6 #这里可以使用TAB键补全
grub> initrd /boot/initramfs-linux.img
grub> boot

这样,这个linux就启动啦

另外一个系统使用btrfs文件系统,安装在一块nvme_ssd上面

还是先 ls -al 查看详细的磁盘分区情况,可以看到系统的根分区是安装在 hd2,gpt3 ,boot 分区是单独的 hd2,gpt1 fat 分区, 于是这样引导

1
2
3
4
grub> set root=(hd2,gpt3)
grub> linux (hd2,gpt1)/vmlinuz-linux root=UUDI=xxxx rw rootflags=subvol=@
grub> initrd (hd2,gpt1)/initramfs-linux.img #多用TAB按键自动补全
grub> boot

如果不使用 UUID 引导的话,可以使用 cat 查看 fstab文件, 第二行设置 root 的地方修改一下

1
2
cat (hd2,gpt3)/@/etc/fstab 
linux (hd2,gpt1)/vmlinuz-linux root=/@/dev/nvme0n1p3 rw rootflags=subvol=@

无法引导的原因是这一行

1
#grub> initrd /boot/initramfs-linux.img

变成了

1
grub> initrd /boot/intel-ucode.img

改成上面那个就好了

参考资料