|
|
最开始研究这个东西,是想像“plutoshen”大神一样,制作ventoy单文件版,最开始没搞定,但是通过解包ventoy单文件版,做出了云固件的单文件版。然后偶然翻到“plutoshen”制作的90兆和300兆的efi单文件PE,就忍不住继续研究了。以下只说核心命令哈。
先说一下原理,定制单文件版,基于grub2的grub-mkimage命令,先确定文件(img、wim、iso)能启动,把需要打包的文件按照路径放在文件夹里面,打包文件夹到cpio,然后把cpio作为mods打包进efi单文件。
打包命令:
find boot | ..\bin\cpio -o -H newc | ..\bin\gzip -9 > memdisk.cpio.gz
find memdisk.cpio.gz | ..\bin\cpio -o -H newc > memdisk.cpio
grub-mkimage -O x86_64-efi -m build\memdisk.cpio -c build\pre(gz).cfg -o BOOTX64.EFI %modules%
打包时,会调用默认配置文件pre.cfg
loopback loop1 (memdisk)/memdisk.cpio.gz
set root=loop1
set prefix=($root)/boot/grub
默认会启动($root)/boot/grub/grub.cfg
这时候img、wim、iso有差别。
img一般用于grubfm、ventoy、云固件的efi单文件制作。
menuentry "multiware_img" {
map --mem --rt --type=hd $prefix/mw.img
boot
}
wim一般用于PE的efi单文件制作。
menuentry "Boot WIM" {
wimboot @:bootmgfw.efi:/boot/grub/bootmgfw.efi \
@:bcd:/boot/grub/bcd \
@:boot.sdi:/boot/grub/boot.sdi \
@:boot.wim:/boot/grub/boot.wim
}
iso一般用于PE的efi单文件制作。
menuentry "winpe.iso" {
map $prefix/winpe.iso
boot
}
三种类型我都设置了gz和xz两种压缩方式,其中xz慢一点,但是一般压缩后体积小一点,但是兼容性不如gz,尽量使用gz压缩吧。
这个是模版,请自行去掉-,我的等级还没法发链接。
http-s://cloud.189.cn/t/N7v2Ezm6jyEj (访问码:5a9t)
|
|