如何从存储在硬盘上的ISO文件启动?


12

我知道我可以创建/刻录可启动CD / DVD或实时USB,并可以从中启动/安装。但是,假设我当前正在运行GNU / Linux,并且要在硬盘上安装另一个GNU / Linux的ISO文件,那么我可以直接从硬盘上的ISO引导并尝试/安装该GNU / Linux操作系统吗? ?

Answers:


15

是的,您可以通过在GRUB引导加载程序菜单中添加菜单项来完成此操作。

您可以通过编辑添加自定义GRUB菜单项/etc/grub.d/40_custom

自定义menuentry的示例

 exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.  

menuentry "Trisquel ISO" {
        set isofile="/Operating_Systems/Trisquel_7.0_i686/trisquel_7.0_i686.iso"
        loopback loop (hd0,5)$isofile
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet splash
        initrd (loop)/casper/initrd
}

说明及解释:

  1. 该命令set用于将ISO文件的路径存储到此处的变量中isofile

  2. loopback用于从文件系统映像制作设备。为此,必须指定设备和图像文件。在这里我们使用(hd0,5)$isofile其中(hd0,5)代表磁盘的第五个分区。

    • 注意要点:在(hd0,5)
      1 的数字表示从开始设备号0(此处为:0 = 1 第一装置)和
      2 位表示从开始分割数1(这里是5 = 5 分区)。
      那意味着/dev/sda5
    • 并且变量$isofile具有ISO文件的路径。因此,最终成为(hd0,5)/Operating_Systems/Trisquel_7.0_i686/trisquel_7.0_i686.iso
    • 有关更多信息,请访问:如何指定设备文件

  3. linux该命令用于从文件加载Linux内核(vmlinuz)。将Linux内核的路径放在ISO中。

    • 读取/提取ISO的内容以获得内核示例的路径:

       $ 7z l trisquel_7.0_i686.iso | grep vmlinu
       2014-10-29 21:41:43 .....      5841680      5841680  casper/vmlinuz
       2014-11-03 00:45:09 .....      5844176      5844176  casper/vmlinuz.netinst
      

      所以,/casper/vmlinuz被用在这里。

  4. initrd 命令用于为Linux内核映像加载初始ramdisk,并在内存的Linux设置区域中设置适当的参数。

    • initrd是用于将临时根文件系统加载到内存中的方案。将路径放入initrdISO。
    • 读取/提取ISO的内容以获得以下路径initrd

      $ 7z l trisquel_7.0_i686.iso | grep initrd
      2014-11-03 00:45:19 .....     16851900     16851900  casper/initrd
      2014-11-03 00:45:09 .....      9398592      9398592  casper/initrd.netinst
      
  5. 诸如的附加参数boot=casper iso-scan/filename=$isofile noprompt noeject可能特定于GNU / Linux发行版,并且对于另一个Linux家族有所不同。您可以从此处找到针对不同系列/发行版的一些配置。

    注意:某些发行版使用initrd.gzinitrd.lz取决于所使用的算法/压缩。

编辑后/etc/grub.d/40_custom,需要通过update-grub2命令更新GRUB 。重新启动后,您会在GRUB屏幕上找到添加的自定义菜单项。您可以使用GNU / Linux发行版的Live环境。

为了从ISO执行安装,安装程序可能需要卸载所有已安装的分区;即说安装另一个系统/isodevice,然后就可以了umount -l /isodevice


哇,我印象深刻……我本以为这是不可能的,因为安装新操作系统通常涉及重新格式化分区,其中可能包括存储ISO文件的分区。
通配符

您的样本使用GRUB2。Centos 6使用GRUB1(grub遗留),以上示例不起作用。
伊科隆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.