尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何用 livecd.sh 打包 Ventoy LiveCD ISO?

如何用 livecd.sh 打包 Ventoy LiveCD ISO? 如何用 livecd.sh 打包 Ventoy LiveCD ISO【免费下载链接】VentoyA new bootable USB solution.项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy如果你已经拿到 Ventoy 源码树并完成了完整编译打包接下来想生成一张可引导的 Ventoy LiveCD ISOTinycore 发行版 Ventoy Linux 安装包那么只需要运行 LiveCD/livecd.sh 一个脚本。本文基于 LiveCD/livecd.sh、LiveCD/README.txt 和 DOC/BuildVentoyFromSource.txt 说明运行前提、脚本实际做了什么、如何确认产物生成以及脚本自带的错误提示。LiveCD ISO 里包含什么LiveCD/README.txt 说明Ventoy LiveCD Tinycore 发行版 Ventoy linux 安装包。具体由三部分文件组成LiveCD/ISO/EFI/boot/下的vmlinuz64、corepure64.gz、modules64.gzTinycore 11.x x86_64 的发行版文件README 中给出了对应的 MD5SUMLiveCD/VTOY/ventoy/tcz/下的 8 个.tcz如parted.tcz、glib2.tcz、readline.tcz等LiveCD/VTOY/ventoy/drivers/下的内核驱动.koREADME 说明它们基于 Tinycore 5.4.3 内核编译config-5.4.3-tinycore64、linux-5.4.3-patched.txz编译时禁用了某个无线网卡驱动以避免编译错误。下载源地址与每个文件的 MD5SUM 以 LiveCD/README.txt 为准替换这些文件后可重新打包。运行前提livecd.sh 开头有两处硬性检查不满足会直接退出当前目录的上一级$PWD/../必须存在INSTALL/grub/grub.cfg脚本还会从中读取版本号version$(grep set.*VENTOY_VERSION $VENTOY_PATH/INSTALL/grub/grub.cfg | awk -F {print $2})也就是说必须在LiveCD/目录内运行脚本且源码树中已有INSTALL/的打包产物。当前仓库中 INSTALL/grub/grub.cfg 的版本行为set VENTOY_VERSION1.0.99脚本按此值命名产物。必须存在对应版本的安装包INSTALL/ventoy-${version}-linux.tar.gz否则报错no ventoy-${version}-linux.tar.gz detected并退出。该 tar 包是完整编译打包的产物按 DOC/BuildVentoyFromSource.txt 的流程在INSTALL/下运行all_in_one.sh或单独修改后运行ventoy_pack.sh生成见 INSTALL/ventoy_pack.sh。编译环境方面DOC/BuildVentoyFromSource.txt 给出的基准环境是 CentOS 7.8 x86_64安装的系统包列表中包含本脚本用到的gcc和xorriso脚本还依赖cpio、gzip、dd、mkfs.vfat。注意脚本会执行mount efi.img efimnt需要 root 权限。执行打包在LiveCD/目录下运行cd LiveCD sh livecd.sh脚本首行参数支持一个可选值sh livecd.sh CI两者的差别只有一处正常模式用cp -a复制GRUB/bootx64.efi进 EFI 镜像CI模式改用cp -dR。这是脚本内OPT变量的唯一用途。脚本内部做了什么按 livecd.sh 的执行顺序校验grub.cfg与ventoy-${version}-linux.tar.gz存在解析出版本号复制ISO/为ISO_TMP/、VTOY/为VTOY_TMP/复制失败会报Copy ISO_TMP failed/Copy VTOY_TMP failed并退出在VTOY_TMP内用gcc -O2编译ventoy/disksize.c生成disksize随后删除该 .c 源文件注意此删除发生在临时副本VTOY_TMP中再给ventoy/*.sh加执行权限把整个目录打成cpio newc gzip归档写入ISO_TMP/EFI/ventoy/ventoy.gz把ventoy-${version}-linux.tar.gz、GRUB/cdrom.img、GRUB/bootx64.efi拷入ISO_TMP/EFI/用dd建一个 2MB 的efi.imgmkfs.vfat格式化挂载后把GRUB/bootx64.efi复制为efimnt/EFI/boot/bootx64.efi再卸载——这一步需要 root失败会导致打包中断用sed把ISO_TMP/EFI/boot/grub.cfg中的占位符xxx替换为实际版本号。LiveCD/ISO/EFI/boot/grub.cfg 里的菜单项Ventoy xxx LiveCD和newc:ventoy.tar.gz:/EFI/ventoy/ventoy-xxx-linux.tar.gz因此变成真实版本路径set defaultLiveCD指定默认启动项另有Ventoy xxx LiveCD (Debug Mode)菜单项loglevel10 multivt用于调试调用xorriso -as mkisofs生成 ISO。关键参数包括卷标VentoyLiveCD、-P VENTOY COMPATIBLE、BIOS 引导文件-b EFI/boot/cdrom.img配--grub2-mbr ../GRUB/boot_hybrid.img、EFI 引导-e EFI/boot/efi.img配-append_partition 2 0xEF输出到../ventoy-${version}-livecd.iso清理临时目录ISO_TMP、VTOY_TMP、efimnt、efi.img。cdrom.img内嵌的 GRUB 入口是 LiveCD/GRUB/embed.cfg它只做两件事search -f /EFI/VentoyLiveCD -s root找到卷然后加载($root)/EFI/boot/grub.cfg。/EFI/VentoyLiveCD标记文件就来自 LiveCD/ISO/EFI/VentoyLiveCD。如何确认打包成功脚本在xorriso之前先执行rm -f ../ventoy-${version}-livecd.iso因此产物路径完全由版本号决定cd .. # 回到 Ventoy 源码根目录 ls ventoy-${version}-livecd.iso # 以当前仓库 grub.cfg 中 VENTOY_VERSION1.0.99 为例 ls ventoy-1.0.99-livecd.iso文件存在且大小非零即代表xorriso已成功写出。脚本过程中若失败会看到它自己给出的错误文本no grub.cfg detected、no ventoy-${version}-linux.tar.gz detected、Copy ISO_TMP failed、Copy VTOY_TMP failed按提示回到前提检查对应文件即可。限制与说明脚本假设运行目录就是源码树的LiveCD/VENTOY_PATH$PWD/../在其他位置运行会因找不到INSTALL/grub/grub.cfg而失败版本号唯一来源是INSTALL/grub/grub.cfg里的VENTOY_VERSION如果INSTALL/ventoy-*-linux.tar.gz的版本与它不一致脚本会以 grub.cfg 中的版本去查找 tar 包并报错需要先保证两者一致LiveCD/ISO/EFI/boot/grub.cfg中的xxx是脚本预留的占位符不要手动改成版本号——sed按xxx精确替换改了反而会导致版本号替换不进去重新打包前脚本会删除并重建ISO_TMP、VTOY_TMP、efi.img这些都是临时文件但运行livecd.sh属于生成产物操作确认LiveCD/下没有需要保留的本地改动后再执行。【免费下载链接】VentoyA new bootable USB solution.项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表