双系统(Windows10+Ubuntu)下通过40_custom加载ISO文件的问题排查及内核panic报错咨询
我最近在Windows10+Ubuntu的双系统环境里,尝试通过第二个Ubuntu系统的40_custom配置文件来加载并安装ISO镜像,过程中踩了一些坑,也遇到了新的问题,整理出来给大家做个参考:
磁盘分区环境
先给大家看一下我的Ubuntu系统里识别到的磁盘分区信息(省略了大小、扇区起始/结束等细节):
Disk /dev/nvme0n1: Disk model: Samsung SSD Units: Sector size (logical/physical): I/O size (minimum/optimal): Disklabel type: gpt Disk identifier: Device Type /dev/nvme0n1p1 EFI System /dev/nvme0n1p2 Microsoft reserved /dev/nvme0n1p3 Microsoft basic data # Windows系统分区 /dev/nvme0n1p4 Microsoft basic data # Ubuntu系统分区 /dev/nvme0n1p5 Windows recovery environment /dev/nvme0n1p6 Linux filesystem
另外我还在Windows10里新建了一个空分区用来挂载ISO。
初始配置与路径问题排查
一开始我修改了40_custom文件,内容如下:
menuentry "Ubuntu 20.04.05 ISO" { isofile="/home/<username>/ubuntu-20.04.5-desktop-amd64.iso" loopback loop (hd0,gpt4)$isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject initrd (loop)/casper/initrd }
但启动时遇到了一系列错误:
error: file "
" not found.
error: no server is specified.
error: you need to load the kernel first.
后来我才搞明白问题出在分区标识的指定上——我之前误解了loopback里的分区位置,实际上nvme0n1pX对应的是(hd0,gptX),而ISO文件是放在Ubuntu所在的nvme0n1p4分区里的,所以loopback loop后面必须准确指定(hd0,gpt4)这个分区位置。修正之后,系统终于能找到ISO文件了。
这里特意把这个点记下来,希望和我一样一开始误解文件位置的朋友能少走弯路。
后续遇到的内核Panic问题
解决了路径问题后,又出现了新的报错:
error: out of memory
kernel panic not syncing vfs unable to mount root fs on unknown block 0 0
我推测这应该是Ubuntu22.04的内核和我要加载的Ubuntu20.04 ISO之间存在版本兼容性问题,这个问题已经超出了本次帖子的范围,我打算另开一个帖子来专门解决这个内核panic的问题。
备注:内容来源于stack exchange,提问作者3088 K

