无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 593|回复: 9
打印 上一主题 下一主题

[求助] 对于一个较大的efi文件,该怎么让它可从光盘启动?

[复制链接]
跳转到指定楼层
1#
如题,我在把pseudo大佬之前的含grub2fm的efi启动模板和自制的winpe打包进iso(给虚拟机用)。
但是在处理引导时遇到问题。
ovmf对无引导区(引导区是一个1.44m或2.88m的fat32格式的raw镜像)的iso兼容性很差,所以要把efi放入引导区。
但是,带有grub2fm的efi,大小为7.73m,无法装进。没有grub2fm的,大小为2.85m(ultraiso仅能放入2663KB文件)
求大佬支招。
2#
发表于 5 天前 | 只看该作者
虚拟机直接efi启动
回复

使用道具 举报

3#
发表于 5 天前 | 只看该作者
ovmf对无引导区(引导区是一个1.44m或2.88m的fat32格式的raw镜像)的iso兼容性很差,所以要把efi放入引导区。

无引导区ISO是什么意思?根据UEFI规范,ISO必须要有FAT镜像才能启动的,但是镜像大小是可以任意设置的。


grubfm_multiarch.iso 就可以正常启动啊。它的efi.img是16MB。
  1. dd if=/dev/zero of=build/efi.img bs=1M count=16
  2. mkfs.vfat build/efi.img
  3. mmd -i build/efi.img ::EFI
  4. mmd -i build/efi.img ::EFI/BOOT
  5. mcopy -i build/efi.img grubfmx64.efi ::EFI/BOOT/BOOTX64.EFI
  6. mcopy -i build/efi.img grubfmia32.efi ::EFI/BOOT/BOOTIA32.EFI
  7. xorriso -as mkisofs -l -R -hide-joliet boot.catalog -b fmldr -no-emul-boot -allow-lowercase -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e efi.img -no-emul-boot -o grubfm_multiarch.iso build
复制代码

windows下可以用mkisofs替换命令中的xorriso -as mkisofs

点评

我那里用ultraiso生成的软盘镜像超过2.88m就报错(3.64,5.76,20.8)硬盘镜像未测试  详情 回复 发表于 4 天前
回复

使用道具 举报

4#
发表于 4 天前 | 只看该作者
看看了
回复

使用道具 举报

5#
 楼主| 发表于 4 天前 来自手机 | 只看该作者
本帖最后由 hzyry2046 于 2025-7-11 12:17 编辑
wintoflash 发表于 2025-7-10 20:18
无引导区ISO是什么意思?根据UEFI规范,ISO必须要有FAT镜像才能启动的,但是镜像大小是可以任意设置的。
...

我那里用ultraiso生成的软盘镜像超过2.88m就报错(3.64,5.76,20.8)硬盘镜像未测试这是报错:(参数由江南一根葱的包转圈iso工具修改)
命令:mkisofs.exe -udf -d -v -V MiniPE -no-emul-boot -boot-load-size 4 -b boot/grldr -eltorito-platform efi -b boot/EFISECTOR.bin -o MiniPE.iso -R -U iso
efisector.bin为ultraiso生成的20.8m 软盘镜像。
Warning: creating filesystem that does not conform to ISO-9660.
3.02a09 (i686-pc-cygwin)
Scanning iso
Scanning iso/boot
Scanning iso/boot/a64-x86
Scanning iso/boot/a64-x86/EFI
Scanning iso/boot/a64-x86/EFI/BOOT
Scanning iso/boot/Fonts
Scanning iso/boot/x64
Scanning iso/boot/zh-CN
Scanning iso/EFI
Scanning iso/EFI/BOOT
Scanning iso/EFI/MICROSOFT
Scanning iso/EFI/MICROSOFT/BOOT
Scanning iso/WXPE
Writing:   Initial Padblock                        Start Block 0
Done with: Initial Padblock                        Block(s)    16
Writing:   Primary Volume Descriptor               Start Block 16
Done with: Primary Volume Descriptor               Block(s)    1
Writing:   Eltorito Volume Descriptor              Start Block 17
Size of boot image is 4 sectors -> No emulation
Size of boot image is 40664 sectors -> mkisofs: Error - boot image 'iso/boot/EFISECTOR.bin' has not an allowable size.
说支持不好,是因为zenemu的efi64固件可以访问非fat部分,不知道别的固件有无此支持。

点评

ultraiso生成的软盘镜像是用于bios启动的,随便弄一个大小是启动不了的。 一般都是用dd直接创建空文件,然后不创建分区表直接格式化,其实就是不带分区表的硬盘镜像。 另外,其实带分区表的硬盘镜像也可以嵌入ISO  详情 回复 发表于 4 天前
解决了,之前的mkisofs可能版本太旧,用ubuntu livecd的mkisofs可以  详情 回复 发表于 4 天前
回复

使用道具 举报

6#
发表于 4 天前 来自手机 | 只看该作者
那个img必须有dos引导才行,只是打包到img不行。

点评

这个没有遇到  详情 回复 发表于 4 天前
回复

使用道具 举报

7#
发表于 4 天前 来自手机 | 只看该作者
另外今天有人挖出来的,讨论的img和ima的区别也不对,ima是分区镜像,img是磁盘镜像;并非单纯后缀名修改那么简单。
回复

使用道具 举报

8#
 楼主| 发表于 4 天前 来自手机 | 只看该作者
hzyry2046 发表于 2025-7-11 12:07
我那里用ultraiso生成的软盘镜像超过2.88m就报错(3.64,5.76,20.8)硬盘镜像未测试这是报错:(参数由江 ...

解决了,之前的mkisofs可能版本太旧,用ubuntu livecd的mkisofs可以
回复

使用道具 举报

9#
 楼主| 发表于 4 天前 来自手机 | 只看该作者
窄口牛 发表于 2025-7-11 12:27
那个img必须有dos引导才行,只是打包到img不行。

这个没有遇到
回复

使用道具 举报

10#
发表于 4 天前 | 只看该作者
hzyry2046 发表于 2025-7-11 12:07
我那里用ultraiso生成的软盘镜像超过2.88m就报错(3.64,5.76,20.8)硬盘镜像未测试这是报错:(参数由江 ...

ultraiso生成的软盘镜像是用于bios启动的,随便弄一个大小是启动不了的。
一般都是用dd直接创建空文件,然后不创建分区表直接格式化,其实就是不带分区表的硬盘镜像。
另外,其实带分区表的硬盘镜像也可以嵌入ISO里面uefi启动的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-7-15 13:12

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表