如何让 GRUB 从 USB 外部硬盘正确加载?

如何让 GRUB 从 USB 外部硬盘正确加载?

我已经将 Ubuntu 的可启动备份创建到外部 USB 硬盘上。现在,当从内置硬盘加载 grub 时,我可以从 grub 启动到外部备份,但无法在外部硬盘上启动 grub。在告诉我的 PC BIOS 从 USB 启动后,我只收到消息“重新启动并选择正确的启动设备”。外部 USB 硬盘是“WD My Passport Ultra 1TB 驱动器”。

以下是我实现这一目标所采取的步骤:

  1. 删除并重新创建外部驱动器上的 msdos 分区表。
  2. 创建分区如下..

    Model: WD My Passport 0820 (scsi)
    Disk /dev/sdb: 1000GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    
    Number  Start   End     Size   Type     File system  Flags
     1      1049kB  483GB   483GB  primary  ext3         boot
     2      483GB   698GB   215GB  primary  fat32
     3      698GB   1000GB  302GB  primary  ntfs
    

    结果是:

    Disk /dev/sdb: 1000.2 GB, 1000170586112 bytes
    255 heads, 63 sectors/track, 121597 cylinders, total 1953458176 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00019d8c
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1   *        2048   943720447   471859200   83  Linux
    /dev/sdb2       943720448  1363150847   209715200    b  W95 FAT32
    /dev/sdb3      1363150848  1953458175   295153664    7  HPFS/NTFS/exFAT
    

    第二和第三个分区用于其他非 Linux 的备份。

  3. 使用 rsync 将我的整个 Ubuntu(从根目录往下)复制到 /dev/hdb1 上的外部驱动器(我的 Ubuntu 备份分区),主要使用此作为指南:https://wiki.archlinux.org/index.php/Full_system_backup_with_rsync

  4. 修改了备份的 /etc/fstab(即 /media/LinuxBackup/etc/fstab,其中 /media/LinuxBackup 是 /dev/sdb1 的挂载点)以仅包含两个条目:

    proc            /proc           proc    defaults        0       0
    UUID=ba0ad23c-1625-4dbf-ae50-0e4e68f469a6 /               ext3    relatime,errors=remount-ro 0       1
    

    其中上述 UUID 是 /dev/sdb1 的 UUID。

  5. 在内部驱动器的 Ubuntu 分区(/dev/hda7)中,我修改了 /boot/grub/menu.lst 以包含以下条目:

    title       USB BOOT, Ubuntu 12.04.4 LTS, kernel 3.2.0-67-generic
    uuid        ba0ad23c-1625-4dbf-ae50-0e4e68f469a6
    kernel      /boot/vmlinuz-3.2.0-67-generic root=UUID=ba0ad23c-1625-4dbf-ae50-0e4e68f469a6 ro quiet splash 
    initrd      /boot/initrd.img-3.2.0-67-generic
    quiet
    
  6. 我重新启动并选择了上述条目,并成功从外部硬盘启动到 Ubuntu。我通过检查 /dev/sdb1 是否已安装为 /(而不是 /dev/sda7,因为它是从内部驱动器启动时安装的)来确认这一点。

  7. 我尝试通过运行以下命令将 grub 加载到外部硬盘的主引导记录 (MBR) 中:

    # sudo grub-install /dev/sdb
    

    这运行成功。

  8. 我重新启动,将我的 PC BIOS 更改为仅从 USB 启动,希望出现 grub,但却出现“重新启动并选择正确的启动设备”,看起来好像 grub 不在外部驱动器上。

我现在有点不知所措。这可能是我的主板 BIOS 或 My Passport Ultra 的问题吗?

答案1

在我的问题的第 8 步中,我指出我“将 PC BIOS 更改为仅从 USB 启动”。也就是说,我进入 BIOS 设置,将 USB 设备设置为第一启动设备,并禁用所有其他设备。

为了弄明白为什么这不起作用,我绞尽脑汁,对 Ubuntu 和 grub 进行了多次试验,最后我尝试在首次启动时按 F8 键来获取 PC 的启动选择弹出窗口。然后,我选择了 USB 硬盘,瞧!我配置在 USB 驱动器上的 grub 菜单出现了,我可以在外部驱动器上使用 Ubuntu,完全忽略内部驱动器。

我仍然不明白为什么使用 BIOS 的启动选择弹出窗口时可以正常工作,但在我的 BIOS 设置中选择 USB 设备作为第一个启动设备时却不起作用。不过,这显然不是 Ubuntu 或 grub 的问题,而是我的主板 BIOS 出了问题(我使用的是华硕 P5KPL-CM)。

相关内容