Linux的GRUB2 boot loader可以直接从硬盘引导Linux ISO文件,也可以引导Live CD的ISO而不用刻录到CD将Linux安装到硬盘分区,或者从USB驱动引导。我们在Ubuntu 14.04上实现了这
Linux的GRUB2 boot loader可以直接从硬盘引导Linux ISO文件,也可以引导Live CD的ISO而不用刻录到CD将Linux安装到硬盘分区,或者从USB驱动引导。
我们在Ubuntu 14.04上实现了这个过程——Ubuntu和基于Ubuntu的Linux版本都很好地支持它。其他Linux发行版的工作原理是相似的。
获取Linux ISO文件这个秘密技术要求你的硬盘上安装了Linux系统,你的电脑必须使用GRUB2引导加载程序,这是大多数Linux系统的标准引导加载程序。抱歉,您不能使用Windows启动加载程序直接启动Linux ISO文件。
下载您想要使用的ISO文件,并将其放在您的Linux分区中。GRUB2应该支持大部分Linux系统。如果您想在真实环境中使用它们,但不想将它们安装在硬盘上,请确保您下载了每个Linux ISO的“live CD”版本。许多基于Linux的可引导工具盘也应该可以工作。
检查ISO文件的内容。您可能需要查看ISO文件内部,以了解这些特定文件的位置。例如,你可以在Ubuntu和其他基于GNOME的桌面环境中使用图形应用程序打开ISO文件。在Nautilus文件管理器中,右键单击ISO文件,然后选择使用归档管理器打开。
找到内核文件和initrd映像。如果你用的是Ubuntu ISO文件,你会在casper文件夹里找到这些文件——vmlinuz文件是Linux内核,而initrd文件是initrd镜像。稍后,您需要知道它们在ISO文件中的位置。
检查硬盘分区路径。GRUB使用与Linux不同的“设备命名”方法。在Linux系统中,/dev/sda0是硬盘上的第一个分区——A指第一个硬盘,0指第一个分区。在GRUB中,与/dev/sda0对应的是(hd0,1)。0是指第一个硬盘,1是指它上面的第一个分区。换句话说,在GRUB设备名中,磁盘号是从0开始计数的,而分区号是从1开始计数的——是的,这一下子真的很混乱。例如,(hd3,6)指的是第四个磁盘上的第六个分区。
您可以使用fdisk -l命令来查看这些信息。在Ubuntu上,打开终端并运行以下命令:
sudo fdisk -l
您将看到一个Linux设备路径列表,您可以自己将它转换成GRUB设备名称。比如下图,我们可以看到一个系统分区是/dev/sda 1——那么,对于GRUB来说,就是(hd0,1)。
创建GRUB2启动条目添加自定义启动条目最简单的方法是编辑/etc/grub.d/40_custom脚本,该脚本是为用户自己添加启动条目而设计的。编辑该文件后,/etc/defaults/grub文件和/etc/grub.d/ script的内容将被合成以创建/boot/grub/grub.cfg文件——您不应手动编辑该文件。它被设计为由您在另一个文件中指定的设置自动生成。
需要以root权限打开/etc/grub.d/40_custom文件进行编辑。在Ubuntu上,您可以通过打开终端窗口并运行以下命令来实现这一点:
sudo gedit /etc/grub.d/40_custom
放松,你可以用你喜欢的文本编辑器打开文件。例如,您可以将命令中的“gedit”替换为“nano ”,并在Nano文本编辑器中打开它。
除非您添加了其他自定义启动条目,否则您应该会看到一个几乎空的文件。您需要在注释行下添加一个或多个ISO启动部分。
这里展示了如何从ISO文件启动Ubuntu或基于Ubuntu的发行版。我们在Ubuntu 14.04下测试了它:
menuentry "Ubuntu 14.04 ISO" {set isofile="/home/name/Downloads/ubuntu-14.04.1-desktop-amd64.iso"loopback loop (hd0,1)$isofilelinux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splashinitrd (loop)/casper/initrd.lz}
启动自定义条目以包含所需菜单的条目名称,并指定ISO文件在计算机上的正确路径,以及包含ISO文件的硬盘和分区设备名称。如果vmlinuz和initrd文件的名称或路径不同,请为这些文件指定正确的路径。
(如果你的/home/目录是分区,请忽略/home部分,像这样:set iso file = "/name/downloads/$ { iso name } ")。
重要提示:不同的Linux版本需要不同的引导条目和不同的引导选项。GRUB Live ISO多重引导项目为不同的Linux发行版提供了各种类型的菜单项。您应该为要启动的ISO文件调整这些示例菜单项。您也可以在web页面上搜索您想使用关键字“Start from ISO in GRUB”开始的Linux发行版的名称和版本号,以获得更多信息。
如果您想添加更多的ISO启动选项,请在此文件中添加额外的部分。
完成后保存文件,返回终端窗口并运行以下命令:
sudo update-grub
当您再次启动计算机时,您将看到ISO启动条目,您可以选择该条目来启动ISO文件。启动时,您可能需要按Shift键来显示GRUB菜单。
如果您在尝试启动ISO文件时看到错误消息或黑屏,您的启动条目配置一定是配置错误。即使ISO文件路径和设备名是正确的,ISO文件上vmlinuz和initrd文件的路径也可能是不正确的,或者您可能需要不同的选项来启动Linux系统。