我知道我可以创建/刻录可启动 CD/DVD 或 live USB,并可以从中启动/安装。但是假设我当前正在运行 GNU/Linux,并且我想在硬盘上安装另一个 GNU/Linux 的 ISO 文件,那么我可以直接从硬盘的 ISO 启动并尝试/安装该 GNU/Linux 操作系统吗? ?
答案1
是的,您可以通过向引导加载程序菜单添加菜单项来完成此操作GRUB
。
您可以通过编辑添加自定义 GRUB 菜单条目/etc/grub.d/40_custom
,
自定义菜单项示例:
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
}
说明与解释:
命令
set
用于将 ISO 文件的路径存储到变量中,此处为isofile
。loopback
用于从文件系统映像创建设备。为此,需要指定设备和图像文件。这里我们用(hd0,5)$isofile
in 其中(hd0,5)
代表第五磁盘的分区。linux
命令用于加载 Linux 内核(虚拟机) 从文件。将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
这里使用了。
initrd
该命令用于加载Linux内核映像的初始ramdisk,并在内存中的Linux设置区域中设置适当的参数。- 初始化程序是一种将临时根文件系统加载到内存中的方案。将路径放入
initrd
ISO 中。 读取/提取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
- 初始化程序是一种将临时根文件系统加载到内存中的方案。将路径放入
诸如 之类的附加参数
boot=casper iso-scan/filename=$isofile noprompt noeject
可能特定于 GNU/Linux 发行版,并且因其他 Linux 系列而异。您可以找到一些针对不同系列/发行版的配置这里。注意:某些发行版使用
initrd.gz
或initrd.lz
取决于所使用的算法/压缩。
编辑完成后/etc/grub.d/40_custom
,需要通过命令更新GRUB update-grub2
。重新启动后,您将在 GRUB 屏幕上找到您添加的自定义菜单项。您可以使用 GNU/Linux 发行版的 Live 环境。
为了从 ISO 执行安装,安装程序可能需要卸载任何已安装的分区;即说另一个系统安装在/isodevice
,那么就可以了umount -l /isodevice
。