GRUB 无法启动持久性 - “未找到 hd0,4”

GRUB 无法启动持久性 - “未找到 hd0,4”

我正在尝试使用 mkusb (dus) 制作 Ubuntu 17.04 的持久 USB 闪存驱动器。我明确遵循了 mkusb 网站上的说明,并尝试了我能想到的大多数变体,但都无济于事。当我在 BIOS 中选择持久 USB 时,grub 从中启动;我选择 Ubuntu 持久;未找到带有 hd0,4 的 grub 对象。我已经在网上搜索解决方案好几天了。

我尝试过的一些事情: - 从实时 USB 闪存驱动器启动时在第二个闪存驱动器上创建持久驱动器; - 启用和禁用 BIOS 传统模式和安全启动的所有组合; - 目标驱动器上的 msdos 和 gpt 分区表; - 不同的闪存驱动器; - 不同数量的持久内存; - 等等。

如有任何建议,我们将不胜感激。

我的系统:HP 笔记本电脑,配备 AMD64 四核处理器、16GB 内存,通常以 UEFI 安全模式启动。BIOS 是最新的。安装的操作系统是 Ubuntu 17.04。

谢谢!-沃伦

编辑#1以添加:

进一步研究发现,grub 似乎以 hd2 而非 hd0 的形式从闪存驱动器加载。这可能是因为 BIOS 首先发现两个内部硬盘驱动器,并将其识别为 hd0 和 hd1。如何让持久闪存驱动器上的 grub 识别出它是从 hd2 而非 hd0 加载的,目前还超出了我的能力范围。

编辑#2以添加:

@sudodus- 谢谢你的帮助。请求的一些信息:

mkusb 和 dus 组件均从 ppa 加载,版本为 12.0.9。BIOS 已禁用传统模式并启用安全启动。我尝试编辑 grub 命令(“e”)并将 hd0 更改为 hd2。成功了!持久闪存驱动器按预期启动。(想知道为什么 grub 不将 root 设置为加载它的磁盘……?)

命令输出--

warren@warren-laptop:~$ sudo lsblk -fm
NAME   FSTYPE  LABEL              UUID                                 MOUNTPOINT                       NAME     SIZE OWNER GROUP MODE
sda                                                                                                     sda    953.9G root  disk  brw-rw----
├─sda1 vfat                       1168-7BED                            /boot/efi                        ├─sda1   256M root  disk  brw-rw----
├─sda2 ext4                       182d8f07-567e-4514-9f99-49b78767f195 /                                ├─sda2 921.6G root  disk  brw-rw----
└─sda3 swap                       8187044e-0939-4868-b81a-b5bc64bd9e7c [SWAP]                           └─sda3    32G root  disk  brw-rw----
sdb                                                                                                     sdb    698.7G root  disk  brw-rw----
└─sdb1 ext4    devel              27a0c109-82be-4ceb-b572-dedbeb412744 /home/warren/devel               └─sdb1 698.6G root  disk  brw-rw----
sdc                                                                                                     sdc     14.5G root  disk  brw-rw----
├─sdc1 ntfs    usbdata            134E2DAF76E6A9A4                     /media/warren/usbdata            ├─sdc1   3.2G root  disk  brw-rw----
├─sdc2                                                                                                  ├─sdc2     1M root  disk  brw-rw----
├─sdc3 vfat    usbboot            2EA6-44A9                                                             ├─sdc3   122M root  disk  brw-rw----
├─sdc4 iso9660 Ubuntu 17.04 amd64 2017-04-12-03-44-04-00               /media/warren/Ubuntu 17.04 amd64 ├─sdc4   1.5G root  disk  brw-rw----
└─sdc5 ext4    casper-rw          8a27c645-3e5c-4e7f-bf92-eb51dc0bd19f /media/warren/casper-rw          └─sdc5   9.6G root  disk  brw-rw----
warren@warren-laptop:~$ sudo parted -ls
Model: ATA SanDisk SD8SB8U1 (scsi)
Disk /dev/sda: 1024GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  269MB   268MB   fat32           efi   boot, esp
 2      269MB   990GB   990GB   ext4
 3      990GB   1024GB  34.4GB  linux-swap(v1)


Model: ATA ST750LX003-1AC15 (scsi)
Disk /dev/sdb: 750GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name   Flags
 1      16.8MB  750GB  750GB  ext4         devel


Model:  Patriot Memory (scsi)
Disk /dev/sdc: 15.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 2      1049kB  2097kB  1049kB               primary  bios_grub
 3      2097kB  130MB   128MB   fat32        primary  boot, esp
 4      130MB   1759MB  1629MB               primary
 5      1759MB  12.1GB  10.3GB  ext2         primary
 1      12.1GB  15.5GB  3436MB  ntfs         primary  msftdata


warren@warren-laptop:~$ df
Filesystem     1K-blocks      Used Available Use% Mounted on
udev             7776108         0   7776108   0% /dev
tmpfs            1559788     10204   1549584   1% /run
/dev/sda2      951092244 187079792 715676736  21% /
tmpfs            7798928        12   7798916   1% /dev/shm
tmpfs               5120         4      5116   1% /run/lock
tmpfs            7798928         0   7798928   0% /sys/fs/cgroup
/dev/sda1         258095      3496    254599   2% /boot/efi
/dev/sdb1      720011344 242201684 441165412  36% /home/warren/devel
tmpfs            1559784       168   1559616   1% /run/user/1000
/dev/sdc4        1571328   1571328         0 100% /media/warren/Ubuntu 17.04 amd64
/dev/sdc1        3355644     17388   3338256   1% /media/warren/usbdata
/dev/sdc5        9909328     36912   9352660   1% /media/warren/casper-rw
warren@warren-laptop:~$ 

谢谢!!

答案1

尝试找到一个通用的错误修复

通常情况下,计算机会将启动驱动器识别为hd0,但您的计算机并非如此。我会尝试找到一种方法来解决这个问题。我在我的电脑上用 Lubuntu 17.04 进行了测试东芝笔记本电脑在 UEFI 模式下,无法重现该错误。所以我需要你的帮助来测试我能找到的任何错误修复。

编辑:我修改了mkusb的shellscript dus-persistent,并上传了新版本 12.1.1不稳定的 PPA。主要改进解决了 Ubuntu 17.04 启动结构的变化以及您的计算机无法从 hd0 启动的事实。主要区别在于如何使用 iso 文件中的映像(iso9660 文件系统)识别分区 #4,

search --set=root --fs-uuid <the-UUID-of-partition-no-4>

并且它由 mkusb-dus 自动完成。请测试是否能解决问题!你可以通过此链接获取新版本,

help.ubuntu.com/community/mkusb/gui#from_the_unstable_PPA

不稳定版本仍在开发和调试中。可ppa:mkusb/unstable通过以下命令行获取:

sudo add-apt-repository universe  # this line only for standard Ubuntu

sudo add-apt-repository ppa:mkusb/unstable
sudo apt-get update
sudo apt-get install mkusb               # install
# sudo apt-get dist-upgrade              # upgrade to current version (with all other upgrades), only for installed systems
sudo apt-get install mkusb guidus dus mkusb-common
                                         # upgrade all mkusb basic components including dus

# for persistent live drives that work in UEFI and BIOS mode with 32-bit iso files, add
sudo apt-get install usb-pack-efi

解决方法-修复您的错误

感谢您的反馈(您已将其编辑到原始问题中)。这让我们更容易提供帮助。

“我尝试编辑 grub 命令(“e”)并将其更改hd0hd2。成功了!持久闪存驱动器按预期启动。(想知道为什么 grub 不将 root 设置为加载它的磁盘......?)”

我建议编辑grub.cfg“USB 驱动器要持久化”分区 #3 中的文件(“usbboot”分区)。这应该会使错误修复程序在您的 USB 闪存驱动器中持久化。但它不会在其他计算机上工作,因为这些计算机的行为与我的计算机类似。

$ ls -l /media/lubuntu/usbboot/boot/grub/grub.cfg 
-rw-r--r-- 1 lubuntu lubuntu 1312 Apr 29 06:31 /media/lubuntu/usbboot/boot/grub/grub.cfg

grub.cfg有以下内容,请将其修改hd0,4hd2,4。(您也可以将其修改hd0,3hd2,3,但 Memtest86+ 无论如何都无法在 UEFI 模式下工作。)

在您的情况下,您可以预期“Ubuntu”而不是“Lubuntu”,但除此之外它看起来是一样的。

set timeout=10
set default=0

menuentry "Lubuntu-17.04-desktop-amd64.iso - persistent live" {
 set root=(hd0,4)
 linux ($root)/casper/vmlinuz.efi boot=casper quiet splash persistent --
 initrd ($root)/casper/initrd.lz
}
menuentry "Lubuntu-17.04-desktop-amd64.iso - persistent live to RAM" {
 set root=(hd0,4)
 linux ($root)/casper/vmlinuz.efi boot=casper quiet splash toram persistent --
 initrd ($root)/casper/initrd.lz
}
menuentry "Lubuntu-17.04-desktop-amd64.iso - live" {
 set root=(hd0,4)
 linux ($root)/casper/vmlinuz.efi boot=casper quiet splash --
 initrd ($root)/casper/initrd.lz
}
menuentry "Lubuntu-17.04-desktop-amd64.iso - recovery mode" {
 set root=(hd0,4)
 linux ($root)/casper/vmlinuz.efi boot=casper ro recovery nomodeset
 initrd ($root)/casper/initrd.lz
}
submenu "Memory test" {
 menuentry "Memtest86+ works in BIOS alias CSM mode, but not in efi (UEFI) mode"{
  echo "${grub_platform} mode; (memtest86+ does not work with efi (UEFI) mode)"
 }
 menuentry "Memtest86+ 4.20" {
  set root=(hd0,3)
  echo "${grub_platform} mode; (memtest86+ does not work with efi (UEFI) mode)"
  linux16 /boot/memtest/memtest.bin
 }
 menuentry "Memtest86+-5.01" {
  set root=(hd0,3)
  echo "${grub_platform} mode; (memtest86+ does not work with efi (UEFI) mode)"
  linux16 /boot/memtest/memtest86+-5.01.bin
 }
}

选择

另一种方法是复制菜单项grub.cfg并修改其中一个,以便有两个替代方案,使 USB 闪存驱动器在不同的计算机上轻松启动。

...
menuentry "Ubuntu-17.04-desktop-amd64.iso - persistent live (hd2,4)" {
 set root=(hd2,4)
 linux ($root)/casper/vmlinuz.efi boot=casper quiet splash persistent --
 initrd ($root)/casper/initrd.lz
}
menuentry "Ubuntu-17.04-desktop-amd64.iso - persistent live (hd0,4)" {
 set root=(hd0,4)
 linux ($root)/casper/vmlinuz.efi boot=casper quiet splash persistent --
 initrd ($root)/casper/initrd.lz
}
...

答案2

假设您使用 grub(UEFI 模式)而不是 syslinux(传统模式)进行启动,您只需在 grub 菜单屏幕中输入“e”来编辑 grub 命令,然后使用箭头键移动到 hd0 并将其更改为 hd2。grub 屏幕底部的说明,然后按控制 X 或 F10 进行启动。

如果更改有效,请尝试将其编辑到 grub.cfg 文件中。Sudodus 是对的,在这种情况下 update-grub 将不起作用。

我将把 mkusb 讨论留给 sudodus,看到一个由旧版本创建的非常旧的 USB 记忆棒,我感到很困惑。

相关内容