如何创建仅支持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方法复制文件
- 通过终端示例
- 通过GUI示例
- Windows上的示例
- ISO环回方法(高级)
- 创建二进制文件
- 创建配置文件
- 添加持久性
- 检查完整性
- 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示例
-
挂载.iso文件并将内容复制到USB驱动器。 在Nautilus中按Ctrl + H也可以显示和复制隐藏文件。
-
通过GParted添加引导标志。
1.3。 Windows上的示例
- 与上面相同,只需复制文件。
- 按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