如何创建仅UEFI的可启动USB实时媒体?


107

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

换句话说,创建仅UEFI的可启动USB实时媒体的主要优势是:您知道它肯定是通过UEFI启动和安装的。

由于Valve已经使用基于Debian的 Steam OS和UNetbootin 进行了UEFI引导USB安装程序的启动,这是Ubuntu的Startup Disk Creator的最佳选择,因此不兼容UEFI,因此存在误导性,我认为我们应该为创建仅UEFI的可启动USB实时媒体。

Answers:


133

总览

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

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

  • 您可能仍然需要明确告知计算机通过UEFI引导媒体
  • 一个GPT分区表,建议像在Windows 8的预安装及更高版本。
  • 创建分区表后,不要忘记创建分区。
  • 使用最新的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您已经p7zip安装了USB驱动器,则可以执行以下操作:

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

如果此USB驱动器上只有一个分区,则说明已完成,否则需要将该分区标记为可启动,例如通过parted

# parted /dev/sdX set 1 boot on

/dev/sdXUSB驱动器和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的计算机。
    • 不,我们不需要UEFI安装Linux(这可能很麻烦),像VirtualBox这样的传统Linux VM很好。

2.1。创建二进制文件

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

以下命令将生成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,但在链式加载其他配置时很容易区分。您可以在Arch Wiki中找到其他发行版的更多示例,如果您想超越GRUB手册,那么阅读GRUB手册确实值得。

回到配置块,显然应该将ISO引用为/efi/boot/ubuntu-14.04.2-desktop-amd64.iso,因此将ISO复制到,\EFI\BOOT\并用ISO ubuntu-14.04.2-desktop-amd64.iso的实际文件名替换配置。

loopback loop $isofile这行代码将把我们的ISO文件加载到回送设备,我们可以从该设备直接引导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)的每次更改都是对覆盖文件系统的修改,甚至是删除文件。

2.4。检查完整性

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

2.5。UEFI安全启动

Windows 10计算机将强制使用安全启动,建议您查看Linux Foundation的PreLoader,以将安全启动功能添加到此设置中。这是一些ASCII插图,说明了随附的HashTool的菜单


恭喜,我要说的是您现在已经掌握了UEFI引导,不要再害怕了。


1
让我指出:(a)最近5年左右出货的所有PC都具有此功能;(b)然后,.iso安装程序根目录可以将完整的USB记忆棒用作普通的持久性存储。(使用ro mount选项以防止意外删除。)对于现代PC和常用用法,这似乎比live-usb-creator的默认解决方案更好。
user1539216 2014年

3
使用GUI方法时,我遇到了一些符号链接错误。这相关吗?你能详细说明一下吗?
VRR 2015年

1
嗨,LiveWireBT!谢谢你这么有趣的回答!我遵循了2。ISO环回方法(高级)并设法从USB闪存驱动器启动UEFI。但是,在引导结束时,我收到了错误消息: 无法在/ cow上挂载/ dev / loop2,按Enter键后,我看到了(initramfs)提示。你能帮我吗?
zuba 2015年

我还要感谢您提供的指导,内容简洁明了。我什至从未想到要对拇指驱动器进行分区并在其上安装多个操作系统。再次感谢!
哈特姆·贾伯

2
至少在16.04中,由于grub.cfg内核行参数“ file = / cdrom / preseed / ubuntu.seed”,“复制所有文件”无法启动。没有这样的文件,可能与前面提到的缺少符号链接有关(ubuntu到。)。编辑grub.cfg删除文件= ...,然后将其替换为“ live-media-path = / casper / ignore_uuid”
ubfan1 2016年

3

从ISO文件提取到FAT32

将Ubuntu 64位桌面ISO文件的内容提取到具有FAT32文件系统和引导标志的分区中将完成此工作:创建仅在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


2

使用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!)


8
以这种方式创建媒体不会导致 UEFI 可启动媒体。重点放在问题的最后一段:“创建仅UEFI引导USB实时媒体还有一个优势:您知道它肯定是通过UEFI引导的。” 尝试了解和设置可通过UEFI引导的Ubuntu安装时,拥有可以双向引导的媒体是一个问题。
LiveWireBT 2014年

1
我懂了。奇怪的是,以这种方式,我能够生成以UEFI模式启动的映像(我知道,由于笔记本电脑被设置为仅允许uefi启动,并且还因为其初始屏幕)。首选答案对我不起作用,计算机将不会仅通过复制文件而创建的映像启动。
2014年

5
@sup此方法创建可以通过UEFI引导的媒体。问题在于,它不仅可以按照问题的要求进行UEFI引导:还可以在BIOS模式下进行引导。
Darael 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.