当前位置: 首页>>技术教程>>正文


如何创建UEFI-only可启动USB实时媒体?

, , ,

问题描述

将Ubuntu安装到当前可用的Windows 8计算机上时,可以启动两种方式的实时媒体可能会成为问题。

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

由于Valve已经在用Debian-based启动USB安装程序UEFI-only Steam操作系统和UNetbootin是Ubuntu的Startup Disk Creator的最佳选择,它不是UEFI兼容的,因此具有误导性,我认为我们应该有一个单独的主题来创建UEFI-only可启动USB现场媒体。

最佳解决方案

Overview

创建启动USB实时媒体的UEFI-only非常简单。只需将文件复制到FAT32格式的USB驱动器。而已!

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

目录

  • 从ISO方法复制文件

    1. 通过终端举例

    2. 通过GUI的示例

    3. Windows上的示例

  • ISO环回方法(高级)

    1. 创建二进制文件

    2. 创建配置文件

    3. 添加持久性

    4. 检查完整性

    5. UEFI安全启动


1.从ISO方法复制文件

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

1.1。通过终端举例

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

$ 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-file并将内容复制到USB驱动器。在Nautilus中按Ctrl + H以显示和复制隐藏文件。

    boot,live-usb,uefi,ubuntu

  2. 通过GParted添加启动标志。

    boot,live-usb,uefi,ubuntu

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虚拟机很好。

2.1。创建二进制文件

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

以下命令将生成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配置文件应与bootx64.efi放在同一目录中的一个非常基本的例子如下所示:

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 manual确实值得您的时间。

回到配置块,很明显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文件加载到可从中直接引导Linux内核的环回设备的线路。这是可能的,因为我们的EFI GRUB映像包含回送模块。 (有些试验和错误是在弄清楚哪些模块是合理的,你不应该看到任何错误信息,但它仍然不是完美的。)说到内核,你可以添加内核参数,如toram,不同的参数语言(示例locale=de_DE bootkbd=de),并且如下例所示:persistent

2.3。添加持久性

您可以按照以下所述添加分区:How do I get a live-USB to use a partition for persistence?您也可以创建casper-rw文件并将其放置在USB驱动器的根目录下。

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

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

2.4。检查完整性

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

2.5。 UEFI安全启动

安全启动将成为Windows 10计算机的必备工具,我建议您查看Linux Foundation的PreLoader以将Secure Boot功能添加到此设置中。这里是一些ASCII art illustrating menus of the accompanying HashTool


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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/751.html,未经允许,请勿转载。