如何创建仅支持UEFI的可启动USB直播媒体?

在将Ubuntu安装到当前可用的Windows 8计算机上时,拥有可以双向启动的实时媒体可能会出现问题。

换句话说,创建仅支持UEFI的 USB实时媒体的关键优势是:您知道它确实是通过UEFI启动和安装的。

由于Valve已经使用基于Debian的 Steam操作系统启动USB安装程序,并且UNetbootin(Ubuntu的启动磁盘创建器的最佳投票替代方案)不兼容UEFI,因此具有误导性,我认为我们应该有一个单独的主题创建仅支持UEFI的可启动USB直播媒体。

概观

创建仅支持UEFI的USB直播媒体非常简单。 只需将文件复制到FAT32格式的 USB驱动器即可。 而已!

请记住,对于安装或引导媒体:

  • 您可能仍需要明确告诉您的计算机通过UEFI引导媒体 。
  • 建议使用类似于Windows 8及更高版本的预安装的GPT分区表 。
  • 使用最新的AMD64 (LTS)ISO,因为它们肯定包含UEFI引导加载程序。

目录

  • 从ISO方法复制文件
    1. 通过终端示例
    2. 通过GUI示例
    3. Windows上的示例
  • ISO环回方法(高级)
    1. 创建二进制文件
    2. 创建配置文件
    3. 添加持久性
    4. 检查完整性
    5. UEFI安全启动

1.从ISO方法复制文件

此方法也适用于包含EFI加载器的其他安装介质,例如Windows。

1.1。 通过终端示例

如果604A-00EA是您的USB驱动器并且您已经安装了604A-00EA则可以执行以下操作:

 $ 7z x ubuntu-12.04-desktop-amd64.iso -o/media/$USER/604A-00EA/ 

如果此USB驱动器上只有一个分区,则表示已完成,否则您需要将分区标记为可引导,例如通过parted

 # parted /dev/sdX set 1 boot on 

其中/dev/sdX是你的USB驱动器, 1是应该用来启动的分区号。

1.2。 通过GUI示例

  1. 挂载.iso文件并将内容复制到USB驱动器。 在Nautilus中按Ctrl + H也可以显示和复制隐藏文件。

    当选择.iso文件时,nautilus在上下文菜单中显示Disk Image Mounter

  2. 通过GParted添加引导标志。

    GParted展示了如何管理分区标志

1.3。 Windows上的示例

  1. 与上面相同,只需复制文件。
  2. Windows / Super + X ,转到磁盘管理并检查分区是否标记为活动。 在Windows 8之前的Windows版本上,按Windows / Super + R打开运行菜单并打开diskmgmt.msc ,这将打开磁盘管理。

2. ISO环回方法(高级)

GRUB和GRUB2已经能够直接通过环回设备从ISO映像启动,而不是从ISO映像中提取内容。 鉴于ISO映像是UEFI可引导的,我们可以设置包含多个具有不同操作系统的ISO的USB驱动器,而不会在USB驱动器上造成混乱。

如果你也想启动Windows,你可能想看看SARDU 。 我记得在2005年左右将它与Windows PE一起使用,似乎已经更新以支持USB驱动器和UEFI,但请记住,此工具还支持传统启动。

我们需要什么?

  • GRUB配置文件的基本知识。
  • 非常基本的UEFI启动和GRUB知识,因为我们将生成我们自己的GRUB引导加载程序映像,其中包含大量模块。
  • UEFI可启动ISO映像,FAT格式化USB驱动器和运行Linux的计算机。
    • 不,我们不需要安装Linux的UEFI(这可能是一个鸡蛋和鸡蛋的情况),像VirtualBox这样的传统Linux VM很好。

2.1。 创建二进制文件

在您的Ubuntu机器或VM上确保安装了grub-efi-amd64-bin软件包(grub-efi-ia32-bin也适用于新版本的32位Intel架构)。 该包可能在另一个发行版上具有不同的名称,您可以比较该包的文件列表以在您的发行版上找到正确的包。

以下命令将生成GRUB映像,在本例中为EFI二进制文件,每台具有UEFI固件的计算机都应该能够运行:

 grub-mkimage -o bootx64.efi -p /efi/boot -O x86_64-efi \ fat iso9660 part_gpt part_msdos \ normal boot linux configfile loopback chain \ efifwsetup efi_gop efi_uga \ ls search search_label search_fs_uuid search_fs_file \ gfxterm gfxterm_background gfxterm_menu test all_video loadenv \ exfat ext2 ntfs btrfs hfsplus udf 

每个标准 UEFI固件都应该查看\EFI\BOOT\以获取名为boot{arch}.efi的文件,因此在USB驱动器上创建文件夹并将刚创建的图像复制到此位置。 其他架构而不是x64是可能的,但让我们用x64 / amd64保持简单。

2.2。 创建配置文件

应该与grub.cfg放在同一目录中的grub.cfg配置文件的一个非常基本的示例如下所示:

 set timeout=3 set color_highlight=black/light-magenta menuentry 'Boot Ubuntu 14.04.2 LTS from ISO' { set isofile="/efi/boot/ubuntu-14.04.2-desktop-amd64.iso" loopback loop $isofile linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject quiet splash persistent -- initrd (loop)/casper/initrd.lz } submenu 'Useful snippets' { menuentry 'Ubuntu' { chainloader /efi/ubuntu/grubx64.efi } menuentry 'Windows' { chainloader /efi/Microsoft/Boot/bootmgfw.efi } menuentry 'Firmware Setup' { fwsetup } } 

重要的是配置块,标题为Boot Ubuntu 14.04.2 LTS from ISO 。 您可以根据自己的喜好更改颜色和超时。 我选择了black/light-magenta因为它仍然看起来有点Ubuntu-ish但在链式加载其他配置时很容易区分。 您可以在Arch Wiki中找到更多其他发行版的示例,如果您想要超越它,阅读GRUB手册真的值得您花时间。

回到配置块,很明显ISO被引用为/efi/boot/ubuntu-14.04.2-desktop-amd64.iso ,因此将ISO复制到\EFI\BOOT\并替换ubuntu-14.04.2-desktop-amd64.iso在配置中包含ISO的实际文件名。

loopback loop $isofile是行,它将我们的ISO文件加载到一个loopback设备,我们可以从中直接启动Linux内核。 这是可能的,因为我们的EFI GRUB映像包含环回模块。 (在确定哪些模块合理包含时会涉及一些试验和错误。您不应该看到任何错误消息,但它仍然不完美。)说到内核,您可以添加内核参数,如toram ,参数不同语言(例如locale=de_DE bootkbd=de ),如示例所示: persistent

2.3。 添加持久性

您可以按照以下描述添加分区: 如何使用实时USB来使用分区进行持久化? 或者您可以创建一个casper-rw文件并将其放在USB驱动器的根目录下。

 dd if=/dev/zero of=casper-rw bs=1M count=4094 mkfs.ext4 -m 0 casper-rw 

我没有测试绝对最大值是多少,它应该在4094到4096 MB之间。 如果您打算使用更多空间,请使用分区。 请注意,对(root)的每次更改都是对overlay文件系统的修改,甚至是删除文件。

2.4。 检查完整性

您应该查看以下问题的答案,以validationUSB驱动器上的Live ISO内容是否处于原始状态:

  • 如何检查下载的Ubuntu CD的完整性?
  • 可以对USB启动盘运行完整性检查吗?

2.5。 UEFI安全启动

Windows 10计算机必须使用安全启动,我建议您查看Linux Foundation的PreLoader,以便为此设置添加安全启动function。 这是一些ASCII艺术,说明随附的HashTool的菜单 。


恭喜,我说你现在已经掌握了UEFI启动,不应再害怕了。

使用dd为我工作,由于某种原因,GUI版本不起作用。 所以,首先,您可能想要监视 dd的进程,另一个选项是使用SIGUSR1选项来触发dd定期报告它的进度,但这比pv更复杂。

然后:

 sudo dd if=path/to/image/file | pv | sudo dd of=/dev/device_you_want_to_use 

/dev/device_you_want_to_use通常是/dev/sdb ,但请检查df !)

从ISO文件解压缩到FAT32

将具有FAT32文件系统和引导标志的Ubuntu 64位桌面ISO文件的内容提取到分区将完成以下任务:创建仅在UEFI模式下引导的实时驱动器。 它在这里被称为“从ISO方法复制文件”(在接受的答案中)。

测试是否在UEFI或BIOS模式下运行

但是,如果它是在UEFI或BIOS模式下启动的话,很容易在正在运行的Ubuntu系统(现场安装和已安装)中进行测试。 运行此命令行,

 test -d /sys/firmware/efi && echo efi || echo bios 

这使得使用可在两种启动模式下使用的实时系统变得非常简单,这也是一个优势。

有关该方法的更详细说明和说明,另请参阅以下链接,

help.ubuntu.com/community/Installation/iso2usb

help.ubuntu.com/community/Installation/iso2usb/diy