通过“efibootmgr”将 Ubuntu ISO 添加为启动选项

通过“efibootmgr”将 Ubuntu ISO 添加为启动选项

我想知道如何操作 Mac 上的启动菜单以添加“Ubuntu ISO”选项。为了 100% 清楚,因为我可以看到没有答案,我并不是想安装 Ubuntu,而是只想从 HD 启动 ISO。根据我的研究,我需要efibootmgr从 Linux 发行版内部使用来操作启动选项。

例如,这将是我使用 Grub 所做的操作:

sudo nano /etc/grub.d/40_custom && sudo update-grub2
 menuentry "Ubuntu ISO" {
        set isofile="/home/isos/ubuntu.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject toram
        initrd (loop)/casper/initrd.lz
}

但我需要这样的东西:

https://wiki.gentoo.org/wiki/Efibootmgr#Creating_a_boot_entry

efibootmgr -c -d /dev/sda -p 2 -L "Gentoo" -l '\efi\boot\bootx64.efi' -u 'root=/dev/sda3 initrd=\efi\boot\initramfs.img quiet'

答案1

不确定 MacBook 如何与 EFI 配合使用,但 EFI 只能启动具体的在没有参数的情况下,无法在 EFI 分区上启动可执行文件。无法从 ISO 文件启动。以下是使用 grub 从 ISO 文件运行 Ubuntu 的方法:

  1. 创建一个 10GB 的救援分区。
  2. 将其格式化为 ext4。标签并输入名称“rescue”。
  3. grub.cfg在 Linux 中创建文件

    $HOME/grub.cfg

    menuentry "Rescue Ubuntu 18.04 LiveCD" 
    {
      set isoname="/ubuntu-18.04.3-desktop-amd64.iso"
      search --label --set rescue rescue
      loopback loop ($rescue)$isoname
      linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isoname quiet splash
      initrd (loop)/casper/initrd
    }
    
  4. 创建一个独立 grubx64.efi以及memdisk所需的模块

    创建带有模块和grub.cfg嵌入的二进制文件:

    grub-mkstandalone --modules="minicmd normal search search_fs_file search_fs_uuid search_label ext2 echo cat ls disk part_gpt part_msdos" \
    -o grubx64.efi \
    -O x86_64-efi --compress=xz \
    "/boot/grub/grub.cfg=$HOME/grub.cfg"
    
  5. 在 EFI 启动管理器中创建一个条目,并将其放置grubx64.efi在新条目内。添加所有其他EFI 需要的文件BOOTX64.CSV,,shimx64.efimmx64.efi

相关内容