|
楼主 |
发表于 2014-12-12 09:22:18
|
显示全部楼层
那我大概说一下,这个ISO不能用Ultraiso编辑的,否则UEFI启动信息丢失。
制作过程大概是:
- [size=14.4444446563721px]建立一个ISO目录
- 将GRUB2的基础文件复制到对应的地方(可以参考ISO里的结构)
- 用grub-mkimage生成BIOS、UEFI IA32、UEFI x64三个启动文件,其中cdboot.img与生成的BIOS启动文件合并得到G2ldr.bin,这是光盘的引导扇区。UEFI的两个文件Bootx64.efi,Bootia32.efi放在efisys.bin中,efisys.bin是一个磁盘映像,可以用WINIMAGE编辑
- 如果没有其他特殊用途,这个GRUB2双启启动盘的文件就完备了,用mkisofs生成ISO文件
- 如果有其他用途,比如要启动WINPE,则第3步的[size=14.4444446563721px]efisys.bin中要放入WINPE的两个EFI,光盘中要放入其他必要的WINPE启动文件,具体参见1楼链接的帖子
以下是主要的命令示例,%%围绕的变量自行替换成实际的路径或名称。
ECHO 生成bios启动文件
start /wait /min %grubDir%\grub-mkimage.exe -d %grubDir%\i386-pc -p /grub2/bios -o %BootFileDir%\Core.img -O i386-pc biosdisk part_msdos iso9660 udf configfile search help reiserfs font linux chain search_fs_file
Copy /B %grubDir%\i386-pc\cdboot.img+%BootFileDir%\Core.img %BootFileDir%\G2ldr.bin
COPY /y %BootFileDir%\G2ldr.bin %ISODir%\G2ldr.bin
COPY /y %BootFileDir%\Core.img %ISODir%\grub2\bios\i386-pc\Core.img
ECHO 生成EFI 64启动文件
start /wait /min %grubDir%\grub-mkimage.exe -d %grubDir%\x86_64-efi -p /grub2/uefi -o %EFIImgDir%\Bootx64.efi -O x86_64-efi search search_fs_file configfile help iso9660 fat part_gpt part_msdos disk exfat ext2 ntfs appleldr hfs normal reiserfs font linux chain
ECHO 生成EFI 32启动文件
start /wait /min %grubDir%\grub-mkimage.exe -d %grubDir%\i386-efi -p /grub2/uefi -o %EFIImgDir%\Bootia32.efi -O i386-efi search search_fs_file configfile help iso9660 fat part_gpt part_msdos disk exfat ext2 ntfs appleldr hfs normal reiserfs font linux chain
ECHO 生成EFI启动扇区
start /wait /min %ToolDir%\WinImage\WinImage.exe %ToolDir%\efisys.bin %BootFileDir%\efiImg /i /h /y
COPY /y %ToolDir%\efisys.bin %ISODir%\efisys.bin
IF "%1" neq "NoPause" PAUSE
ECHO 生成ISO镜像
mkisofs.exe -v -d -N -R -J -boot-info-table -l -relaxed-filenames -gbk4dos-filenames -gbk4win-filenames -no-emul-boot -boot-load-size 4 -o %ISOName% -v -V "%ISOTitle%" -b %biosImg% %efi% %ISODir%
IF "%1" neq "NoPause" PAUSE
|
|