当将Ubuntu安装到当前可用的Windows 8计算机上时,拥有可以双向启动的实时媒体可能是一个问题。
换句话说,创建仅UEFI的可启动USB实时媒体的主要优势是:您知道它肯定是通过UEFI启动和安装的。
由于Valve已经使用基于Debian的 Steam OS和UNetbootin 进行了UEFI引导USB安装程序的启动,这是Ubuntu的Startup Disk Creator的最佳选择,因此不兼容UEFI,因此存在误导性,我认为我们应该为创建仅UEFI的可启动USB实时媒体。
当将Ubuntu安装到当前可用的Windows 8计算机上时,拥有可以双向启动的实时媒体可能是一个问题。
换句话说,创建仅UEFI的可启动USB实时媒体的主要优势是:您知道它肯定是通过UEFI启动和安装的。
由于Valve已经使用基于Debian的 Steam OS和UNetbootin 进行了UEFI引导USB安装程序的启动,这是Ubuntu的Startup Disk Creator的最佳选择,因此不兼容UEFI,因此存在误导性,我认为我们应该为创建仅UEFI的可启动USB实时媒体。
Answers:
创建仅UEFI引导USB实时媒体非常简单。只需将文件复制到FAT32格式的 USB驱动器即可。而已!
请记住,对于安装或引导媒体:
此方法还适用于包含EFI加载程序的其他安装介质,例如Windows。
如果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/sdX
USB驱动器和1
用于引导的分区号在哪里。
挂载.iso文件,然后将内容复制到USB驱动器。在Nautilus中按Ctrl+也H可以显示和复制隐藏文件。
通过GParted添加启动标志。
diskmgmt.msc
,这将打开“磁盘管理”。GRUB和GRUB2无需从ISO映像中提取内容,而是能够直接通过回送设备从ISO映像启动。鉴于ISO映像可通过UEFI启动,因此我们可以设置一个包含多个具有不同操作系统的ISO的USB驱动器,而不会在USB驱动器上造成混乱。
如果您也想启动Windows,则可能需要查看SARDU。我记得它在2005年左右与Windows PE一起使用,并且似乎已更新为支持USB驱动器和UEFI,但请记住该工具还支持旧式启动。
我们需要什么?
在您的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使其简单。
一个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
您可以按照以下说明添加分区:如何获得活动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)的每次更改都是对覆盖文件系统的修改,甚至是删除文件。
您应该查看以下问题的答案,以验证USB驱动器上的Live ISO内容是否处于原始状态:
Windows 10计算机将强制使用安全启动,建议您查看Linux Foundation的PreLoader,以将安全启动功能添加到此设置中。这是一些ASCII插图,说明了随附的HashTool的菜单。
恭喜,我要说的是您现在已经掌握了UEFI引导,不要再害怕了。
将Ubuntu 64位桌面ISO文件的内容提取到具有FAT32文件系统和引导标志的分区中将完成此工作:创建仅在UEFI模式下引导的活动驱动器。在此处(被接受的答案中)称为“从ISO方法复制文件”。
但是,如果它是在UEFI或BIOS模式下启动的,则很容易在正在运行的Ubuntu系统(实时和已安装)中进行测试。运行此命令行,
test -d /sys/firmware/efi && echo efi || echo bios
这样就可以直接使用可以在两种引导模式下使用的实时系统,这也是一个优势。
另请参见以下链接,以获取有关该方法的更详细的说明和描述,
使用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
!)