之前安装 Linux 都是将 ISO 镜像烧写至 U 盘里,然后通过 U 盘进行安装。这样安装更换系统或者升级版本之后都要重新制作启动 U 盘,现在 U 盘容量都很大,每次只能供一个系统安装镜像使用空间都浪费了。而且每次换镜像都要清除掉 U 盘上所有内容,也很不方便。最近一直在用 Kali everything 版本的 Live Boot ,工具很全,还能持久化。这次又需要给新硬盘安装系统,想到之前机器本身就是 Ubuntu 的时候,可以直接在 Grub 中添加安装菜单项,就能安装硬盘上的 ISO 文件,完全不需要 U 盘,那通过 Live CD 启动到 Grub 菜单,直接去安装硬盘或者 U 盘上的镜像不就可以一个 U 盘安装多个系统了。经过尝试,发现这种方式完全可行,而且非常灵活。
制作 Live Boot
首先要制作一个 Live Boot,这里用的是 Kali 系统的 Live Boot,Everything
版本包含了各种常用工具,临时使用非常方便。参考官方文档 制作,非常简单,这里使用的 dd
命令,直接将 ISO 镜像写入到 U 盘中。
进入 Grub
制作好启动盘后重启电脑,通过快捷键进入到启动项选择菜单,选择刚刚制作的 U 盘进行启动,会看到 Kali 背景的启动菜单。
在此处可以先按方向键,阻止自动进入默认选项。然后按 c
进入 GRUB Command line。
引导 ISO
不同的发行版命令的区别主要是 linux 命令后跟的启动参数,这些参数要参考不通发行版的安装文档进行修改。前面的命令则都是 Grub 的命令,可以参考 GRUB Manual 。
如果 ISO 在 NTFS 格式磁盘上,而你的 Grub 本身没有自动加载 NTFS 模块的话,可以提前先执行 insmod ntfs
加载 NTFS 模块。
确认 ISO 位置
首先要找到 ISO 存放的位置,可以先使用 ls
命令来查看所有硬盘和分区。
1 | ls |
如果电脑上的硬盘分区表是 GUID 格式的,则分区会显示 gpt 前缀,U 盘一般是 msdos 前缀,这里我的 ISO 在 U 盘中,所以只需要去寻找 hd0 和 hd1。
1 | ls (hd0,msdos1)/ |
通过 ls
命令找到了系统镜像所存放的文件夹 OperatingSystem,所在的硬盘是 hd0,第一个分区。
挂载 ISO
首先设置一个环境变量 isofile,方便后面执行操作,在知道了文件所在分区后可以以 ls
命令开头,然后多用 Tab
键来补全路径,直到 ISO
文件名也被补全之后使用 Ctrl
+ a
回到开头,将 ls (hd0,msdos1)
改为 set isofile=
。
1 | set isofile=/OperatingSystem/manjaro-kde-22.0.4-230222.linux61.iso |
使用 loopback
命令后,会将 ISO 文件挂载到 (loop),名称 loop 可以自行设定。
从 ISO 启动
Manjaro
参考 Manjaro 社区文章 Boot Manjaro ISO directly with GRUB
中的启动参数,还需要获取 ISO 文件所在磁盘的 ID,并将带磁盘 ID 的路径设置为 img_dev
。
1 | 查找 ISO 文件所在的分区并设置为 root,--no-floppy 不从磁盘查找,提升速度 |
执行完 boot
命令后等待系统一系列输出后,最终看到 Manjaro Hello 窗口就成功了,双击左上角的 Install 图标即可执行图形化界面的安装程序。
Ubuntu
Ubuntu 参考官方 Wiki 中的 Grub2/ISOBoot Menuentry Example,不同的 Ubuntu 版本有不同的内核启动参数,根据所下载的系统版本修改即可,这里以 22.04.2 举例。
1 | 同一个 U 盘,ISO 文件不同 |
成功启动后应该能看到 Try Ubuntu 系统界面,双击右下角 Install Ubuntu 启动 GUI 安装界面。
iso-scan/filename
参数应该是 Ubuntu 独有的,如果在启动过程中在 initramfs 中出现报错 Could not find the ISO。需要检查 isofile
设置是否正确,isofile 是否在可以识别的磁盘格式上,磁盘不光需要 Grub 能够识别,引导启动后的 Linux 内核也要能够识别才能正常启动。
Pop! OS
Pop! OS 是基于 Ubuntu 的发行版,通过 Grub 安装的资料网上几乎没有,参考 ISO 镜像下的 /boot/grub/grub.cfg 文件和上面 Ubuntu 的安装命令稍加修改后就可以进入安装界面了。
1 | set isofile=/OperatingSystem/pop-os_22.04_amd64_intel_28.iso |
成功启动后的试用与安装界面。
有了 Grub,所有的发行版除了 Arm 架构的应该都能通过 Live CD 引导,不局限于 Kali Live Boot。通过 Kali Live 的持久化功能,安装对应应用后,应该也可以直接在系统里安装 Windows 镜像中的 install.wim。