可通过grub2配置直接从硬盘iso启动系统:先将iso复制到grub可访问分区并设权限;再挂载iso查找vmlinuz和initrd;接着在40_custom中添加menuentry,指定loopback、linux及initrd路径;然后运行update-grub生效;最后依错误提示调整设备标识、内核参数或驱动黑名单。

如果您希望在不使用U盘的情况下直接从硬盘中的ISO镜像文件启动安装操作系统,则可通过GRUB2配置实现。以下是具体操作步骤:
一、将ISO镜像文件复制到指定分区
GRUB2需能访问ISO文件,因此必须将其放置在GRUB2可识别的文件系统(如ext4、NTFS、FAT32)中,并确保该分区在GRUB启动时已被挂载。推荐存放在Linux根分区或单独的/boot分区下,避免路径含空格或特殊字符。
1、使用终端进入目标目录,例如:sudo mkdir -p /boot/iso
2、将ISO文件复制至该目录,例如:sudo cp /path/to/ubuntu-22.04-desktop-amd64.iso /boot/iso/
3、确认文件权限可读:sudo chmod 644 /boot/iso/ubuntu-22.04-desktop-amd64.iso
二、获取ISO内核与初始化内存盘路径
不同发行版ISO内部结构不同,需手动挂载并查找vmlinuz和initrd.img文件。这些文件通常位于ISO根目录的/casper/、/isolinux/或/boot/目录下,是GRUB2启动必需的内核参数来源。
1、创建临时挂载点:sudo mkdir /mnt/iso
2、挂载ISO文件:sudo mount -o loop /boot/iso/ubuntu-22.04-desktop-amd64.iso /mnt/iso
3、查找内核与initrd文件:ls /mnt/iso/casper/vmlinuz /mnt/iso/casper/initrd
4、卸载ISO:sudo umount /mnt/iso
三、编辑GRUB自定义启动项
通过添加自定义菜单项,使GRUB2在启动时显示ISO引导选项。该方法不修改系统默认配置,安全可逆,适用于Ubuntu、Debian、Fedora等主流发行版。
1、编辑自定义配置文件:sudo nano /etc/grub.d/40_custom
2、在文件末尾新增如下内容(以Ubuntu ISO为例):
menuentry "Boot Ubuntu 22.04 ISO" {
set isofile="/boot/iso/ubuntu-22.04-desktop-amd64.iso"
loopback loop (hd0,msdos1)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet splash ---
initrd (loop)/casper/initrd
}
3、确认设备标识符(hd0,msdos1)与ISO所在分区一致,可用sudo fdisk -l或lsblk核实
四、更新GRUB配置并验证
修改自定义菜单后必须更新GRUB主配置文件,否则新增项不会出现在启动菜单中。此操作仅重生成/boot/grub/grub.cfg,不改动现有系统引导逻辑。
1、执行更新命令:sudo update-grub
2、检查输出中是否包含“Found custom menuentry 'Boot Ubuntu 22.04 ISO'”字样
3、重启系统,在GRUB菜单中选择对应条目,观察是否成功加载ISO内核
五、处理常见启动失败情形
若选择ISO菜单后卡在黑屏、kernel panic或“Failed to load COM32 file”等错误,说明内核参数或设备映射不匹配,需针对性调整。
1、尝试替换loopback行,使用绝对分区标识:loopback loop (hd0,1)$isofile
2、对Fedora/CentOS类ISO,改用:linux (loop)/isolinux/vmlinuz inst.ks=cdrom:/ks.cfg
3、若提示“Unable to find a medium containing a live file system”,在linux行末添加:findiso=$isofile
4、禁用nouveau驱动避免显卡冲突:linux ... nouveau.modeset=0 rd.driver.blacklist=nouveau










