Linux 位于硬盘分区,Bootloader 位于 USB 闪存驱动器上

Linux 位于硬盘分区,Bootloader 位于 USB 闪存驱动器上

如何使用 USB 闪存驱动器从(另一个)硬盘上的分区启动 Linux?

我正在尝试在硬盘驱动器上的加密分区上安装 Linux(在 LUKS 上使用 LVM)。

由于/boot必须位于单独的未加密分区上,因此我想将其存储在 USB 闪存驱动器上。

我的计划是将 GRUB (2) 安装到闪存驱动器 ( /dev/sdb) 并从其 MBR 引导 Linux,或者如果驱动器已拔出,则只需从硬盘驱动器 ( /dev/sda) MBR 引导 Windows。


我将 GRUB (2) 安装到/dev/sdb,但是当我尝试从闪存驱动器启动时,收到以下消息:

GRUB 加载

几秒钟后我收到了一条附加消息:

读取错误

出于测试目的,我尝试删除 的内容/boot,并且从闪存驱动器再次启动后收到相同的消息。


分区细节

/dev/sda(硬盘):

MBR: Windows Bootloader
/dev/sda1 - Windows System Partition
/dev/sda2 - Windows Boot Partition
/dev/sda3 - Windows Data Partition
/dev/sda4 - Linux partition

/dev/sdb(USB闪存盘):

MBR: GRUB
/dev/sdb1 - Linux /boot Partition

GRUB 详细信息

/etc/default/grub:

GRUB_CMDLINE_LINUX="cryptdevice=/dev/disk/by-uuid/$SDA4_UUID:vg root=/dev/mapper/vg-root resume=/dev/mapper/vg-swap cryptkey=/dev/disk/by-uuid/$SDB1_UUID:ext2:/key"
..
GRUB_DISABLE_LINUX_UUID=true

安装命令

grub-install --target=i386-pc --recheck /dev/sdb

我正在使用 Arch Linux。

答案1

你有没有尝试过

grub-install --target=i386-pc --recheck /dev/sdb1

请注意 /dev/sdb1 似乎是您的 USB 设备。

MBR: GRUB
/dev/sdb1 - Linux /boot Partition

也许试试这个:

title Start Ubuntu from USB DISK (PC)
root (cd)
kernel /boot/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper noprompt cdrom-detect/try-usb=true persistent
initrd /boot/initrd.lz
boot

答案2

两件事:你能先擦除 USB 密钥吗?我的印象是一条简洁的“读取错误”消息来自旧版本的 grub。

你检查过你的内容了吗grub.cfgGRUB_DISABLE_UUID_LINUX在有多个驱动器的情况下可能无法执行您想要的操作(它将传递一个设备节点名称)。我会重新运行update-grub该行并将其注释掉。

相关内容