Linux的GRUB2启动加载器可以直接从硬盘启动Linux ISO文件,可以启动Live CD的 ISO,而不用烧录到光盘来安装Linux到一个硬盘分区,或从USB驱动启动。

我们在Ubuntu 14.04上实施了该过程——Ubuntu及基于Ubuntu的Linux版本对此支持良好。其它Linux发行版上的工作原理也类似。

获取Linux ISO文件

这一密技需要你的硬盘驱动器上安装有Linux系统,你的计算机必须使用GRUB2启动加载器,这是大多数Linux系统的标准启动加载器。不好意思,你是不能使用Windows启动加载器来直接启动一个Linux ISO文件的。

下载你想要使用的ISO文件,并放到你的Linux分区中。GRUB2应该支持大多数Linux系统的。如果你想要在live环境中使用它们,而不想将它们安装到硬盘驱动器上,请确认你下载的是各个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/sda1——那么,对于GRUB而言,它就是(hd0,1)。

创建GRUB2启动条目

添加自定义启动条目的最简单的方式是编辑/etc/grub.d/40\_custom脚本,该文件设计用于用户自行添加启动条目。在编辑该文件后,/etc/defaults/grub文件和/etc/grub.d/脚本的内容将合成创建/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)$isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splash
initrd (loop)/casper/initrd.lz
}

自定义启动条目以包含你期望的菜单的条目名称,并指定计算机上该ISO文件的正确路径,以及包含ISO文件的硬盘和分区设备名。如果vmlinuz和initrd文件的名称或路径不同,请为这些文件指定正确的路径。

(如果你的/home/ 目录是一个分区,请忽略/home部分,像这样:set isofile="/name/Downloads/${isoname}")。

重要说明:不同的Linux版本要求带有不同启动选项的不同的启动条目,GRUB Live ISO多启动项目提供了用于不同Linux发行版的菜单条目的各种不同类型。你应当为你想要启动的ISO文件调整这些示例菜单条目。你也可以仅仅从网页搜索你想要启动的Linux发行版的名称和发行编号,并附带关键词“在GRUB中从ISO启动”,以获取更多信息。

如果你想要添加更多ISO启动选项,请为该文件添加额外部分。

完成后保存文件,返回终端窗口并运行以下命令:

sudo update-grub

再次启动计算机时,你将看到ISO启动条目,你可以选择它来启动ISO文件。在启动时,你可能需要按Shift键来显示GRUB菜单。

如果在尝试启动ISO文件时你看见错误信息或黑屏,那么你的启动条目配置肯定配置错误了。即使ISO文件路径和设备名是正确的,ISO文件上的vmlinuz和initrd文件的路径可能是不正确的,或者你启动Linux系统可能需要不同的选项。


via: http://www.howtogeek.com/196933/how-to-boot-linux-iso-images-directly-from-your-hard-drive/

作者:Chris Hoffman 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

已有 24 条评论

  1. 对ast有用 —— 微博评论 发表。
  2. 好像从8.X开始我一起是这样装的 —— 微博评论 发表。
  3. 走着,再也不用刻录到U盘启动了 —— 微博评论 发表。
  4. 没带U盘的时候用 —— 微博评论 发表。
  5. 我把ubuntu和win8装到一个盘里怎么办。。 —— 微博评论 发表。
  6. 回复@少年昂的奇葩漂流:是可以的。但是win8的镜像要解包放到根目录。title >> windows8.1_cn find --set-root/bootmgr chainloader /bootmgr boot —— 微博评论 发表。
  7. 回复@御翎:好吧,这个只是理论,对用grub4dos有效 —— 微博评论 发表。
  8. 回复@御翎:要怎么彻底删掉ubuntu,再重新装 —— 微博评论 发表。
  9. 回复@少年昂的奇葩漂流 在windows的磁盘管理里直接格式化掉ubuntu所在的区,注意这个时候开机引导会失效,需要修复,不然开不了机。你可以直接用bootice在硬盘主引导上写入windows的引导即可。 —— 微博评论 发表。
  10. 回复@少年昂的奇葩漂流:我看错了,不好意思,看分区之下有没有一个ubuntu的文件夹,删掉即可 —— 微博评论 发表。
  11. 回复@御翎:没有,我不是用wubi装的,我是用优盘装的。 —— 微博评论 发表。
  12. 回复@少年昂的奇葩漂流:这样啊,我就没什么好办法了,windows下的文件和ubuntu的文件如果分得清就手动删掉吧……我没有更深入的了解过。话说这样的文件系统就不是ext4了吧。 —— 微博评论 发表。
  13. 回复@御翎:你是华科的? —— 微博评论 发表。
  14. 回复@少年昂的奇葩漂流:[震惊]暴露行踪,你是怎么知道的,综合推理吗?难道最近露面太多? —— 微博评论 发表。
  15. 回复@御翎:你的微博上资料啊。。。。(我老哥也是你们学校的) —— 微博评论 发表。
  16. 回复@少年昂的奇葩漂流:哈~~~原来如此 —— 微博评论 发表。
  17. 用过。。虽然过程磕磕绊绊而且完全不懂原理。。 —— 微博评论 发表。
  18. 好东西啊 —— 微博评论 发表。
  19. 这个好,为了安装各种linux我已经刻了不计其数的盘了(就好像当年刻录ghost xp一样…) —— 微博评论 发表。
  20. 挺好 —— 微博评论 发表。

添加新评论