问题描述
将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驱动器。而已!
请记住,对于安装或引导媒体:
-
建议使用GPT partition table,类似于Windows 8及更高版本的预安装。
-
使用最新的AMD64(LTS)ISO,因为它们肯定包含UEFI引导加载程序。
目录
-
从ISO方法复制文件
-
通过终端举例
-
通过GUI的示例
-
Windows上的示例
-
-
ISO环回方法(高级)
-
创建二进制文件
-
创建配置文件
-
添加持久性
-
检查完整性
-
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的示例
-
安装.iso-file并将内容复制到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虚拟机很好。
-
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的启动,不应该再害怕了。