启动流程:
硬件 BIOS/UEFI --> Bootloader --> kernel
像这种在设备上有多个分区的情况,如何正确引导启动存在系统的分区(也就是 sdb1 )?是否需要类似于 GRUB 这样的 bootloader?
简单地说: bootloader 在内核加载之前挂载内核文件所在分区 /boot,找到内核文件,将其载入内存中,其后转移控制权给内核。内核只有通过 bootloader 加载到内存中之后才能运作,所以 GRUB 类似的 bootloader 是必要的。
想要正确引导启动存在系统的分区,只要计算机上(无论哪块硬盘上)安装的有 bootloader,bootloader 能找到并正确加载内核(不一定要在同一块硬盘上)即可。
如果使用 GPT 分区表,GRUB 是否应该安装在 EFI 分区并将EFI挂载到 /boot?
GPT/UEFI 的计算机系统如果使用 GRUB,GRUB 应该将其一部分装在 EFI 分区下的固定目录 EFI/boot 下(grub-install 程序自动完成),在计算机系统启动时由 UEFI 启动 GRUB,GRUB 加载内核,内核加载整个系统。
我尝试过使用 GPT 并安装,然而 GRUB 好像被安装在了我的本地硬盘上的 EFI 分区(sda1)上。使用它启动U盘上的启动后,sda1 也被直接挂载到了 /boot,这种情况应该如何解决?
GRUB 的安装位置是可选的,一般在安装 GNU/Linux 的最后阶段中,可以选择 GRUB 的安装位置。
Linux 下文件系统全部组织到 / 下,无论这个分区属于哪一块硬盘。至于为何外部的 boot 分区而不是本系统的 boot 分区被挂载到 /boot,我不清楚。