Closed d0ng13 closed 9 months ago
不同linux发行版的ISO数据格式不同。除了官方Ubuntu之外,ventoy支持其他Linux发行版吗?
不同linux发行版的ISO数据格式不同。除了官方Ubuntu之外,ventoy支持其他Linux发行版吗?
支持的,具体可以查看ventoy官网提供的 支持列表, 常用的包括 alpine、debian、ubuntu、kali、deepin、manjaro 都没问题,也用过像Kaspersky Rescue(krd)这样的救援环境。
我用Ubuntu 24.04 PE iso在ventoy提供的三种引导方式下(normal、grub2、memdisk)都没有成功,kernel和initramfs应该是加载正常的。
ventoy想要添加启动支持的话,需要找到它的grub2配置文件,里面加入启动项:
menuentry 'Ubuntu PE' {
search --set -f /noble-mate-x86_64-20240209.iso
loopback lo /noble-mate-x86_64-20240209.iso
linux (lo)/casper/vmlinuz boot=casper iso-scan/filename=/noble-mate-x86_64-20240209.iso
initrd (lo)/casper/initrd.img
}
受到启发,我猜是工作顺序的问题。我目前的方案是直接暴力替换 iso 中的 /boot/grub/grub.cfg 文件,并生成新的iso镜像来用,对比了一下原版的grub.cfg,然后参考用 cd-iso 引导起来以后grub菜单里的内容。
以下新的 grub.cfg 经过在上述环境中以 ventoy 和 vmware cd-iso 中初步测试可用。
# /boot/grub/grub.cfg
set timeout=20
loadfont unicode
# 这是原有的
menuentry "Ubuntu Boot" {
insmod part_gpt
insmod part_msdos
insmod fat
insmod ntfs
insmod iso9660
search --no-floppy --set -f /boot/memtest86+.upe
configfile /boot/grub/grub.cfg
}
# 这是新加的 只做了一项
menuentry "Ubuntu PE" {
set gfxpayload=keep
if [ -e /casper/vmlinuz ]; then
true
else
search --no-floppy --set -f /casper/vmlinuz
fi
linux /casper/vmlinuz boot=casper locale=zh_CN.UTF-8
initrd /casper/initrd.img
}
这里只做了一项,所以我还想问问其他项可以在哪里直接找到?
应该就是这里,上述内容似乎也是只是用于启动官方Ubuntu,不能用于其他诸如Archlinux、SUSE等。 每个linux发行版的grub启动脚本都有少许差别,需要分别正确配置。Ubuntu PE的启动脚本前面已经发过了:(1)把 noble-mate-x86_64-20240209.iso 放到 USB 或者本地磁盘根目录;(2)通过启动脚本中: iso-scan/filename 来定位到、并引导 Ubuntu PE。
这个问题我的解决方案就是这样了:
我观察了一下,这个差异应该是,本项目中完整的grub启动列表在 (iso)/[BOOT]/2-Boot-NoEmul.img 中存在(通过win下7zip打开iso看到),而非 (iso)/boot/grub/grub.cfg (相对常见位置),而ventoy的加载方式似乎对此兼容性不好?
官方ubuntu live-cd (ubuntu-22.04.2-desktop-amd64.iso)、Alpine (alpine-extended-3.19.1-x86_64.iso) 的方式是在 2-Boot-NoEmul.img 这个镜像文件里没有放置grub.cfg,kali (kali-linux-2023.4-live-amd64.iso)则用的是以下内容,这两种方案都没有问题。
search --set=root --file /live/initrd
set prefix=($root)/boot/grub
configfile ($root)/boot/grub/grub.cfg
我参考的 livecd 制作过程是这个 Create a Custom Debian Live Environment (CD or USB),里边提到了efiboot.img的制作(在 Create a FAT16 UEFI boot disk image containing the EFI bootloaders 位置,但也是偷工减料了),并比较了在 #42 中提到的那篇文章,收获颇多,并对本项目镜像的小巧表示惊叹。
即使不改任何config,似乎标准Ventoy的“Boot in grub2 mode”是可以成功启动,有试过吗?
问题描述
复现
环境
测试镜像
其他信息