我已经提取了iso文件“archlinux-2022.06.01-x86_64.iso”。我已经在“airootfs.sfs”文件中进行了更改
现在我要再次创建一个“可引导(dos/MBR 扇区)”iso 映像,就像我提取的原始 iso 文件一样
sudo xorriso -as mkisofs -d -l -r -no-emul-boot
-o archlinux.iso .
-append_partition 2 0xef ../compile-linux/efi_part.img -e "--interval:appended_partition_2:all::" -no-emul-boot ../compile-linux/bios_boot.img
-G ../compile-linux/mbr_code.img
-b syslinux/isolinux.bin
-c syslinux/boot.cat
输出file archlinux.iso
archlinux.iso: ISO 9660 CD-ROM filesystem data (DOS/MBR boot sector) 'ISOIMAGE' (bootable)
输出命令xorriso -indev archlinux.iso -report-el-torito plain -report-system-area plain
xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project.
xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE : 114 nodes read in 1 seconds
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'archlinux.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record : El Torito , MBR cyl-align-off
Media summary: 1 session, 445804 data blocks, 871m data, 178g free
Volume id : 'ISOIMAGE'
El Torito catalog : 42 1
El Torito cat path : /syslinux/boot.cat
El Torito images : N Pltf B Emul Ld_seg Hdpt Ldsiz LBA
El Torito boot img : 1 BIOS y none 0x0000 0x00 76 43
El Torito img path : 1 /syslinux/isolinux.bin
System area options: 0x00000a00
System area summary: MBR cyl-align-off
ISO image size/512 : 1783216
Partition offset : 0
MBR heads per cyl : 64
MBR secs per head : 32
MBR partition table: N Status Type Start Blocks
MBR partition : 1 0x00 0x83 0 1783216
MBR partition : 2 0x00 0xef 1783216 1600
以上输出是我自己制作的iso文件
我尝试在虚拟机“Efi 选项已禁用”中使用我的 iso 文件,但我收到这些错误。
我是初学者,对此了解不多
这就是为什么我试图找到从原始iso输出制作图像的正确方法,但我没有成功
xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project.
xorriso : NOTE : ISO image bears MBR with -boot_image any partition_offset=16
xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE : 113 nodes read in 1 seconds
libisofs: NOTE : Found hidden El-Torito image for EFI.
libisofs: NOTE : EFI image start and size: 396800 * 2048 , 0 * 512
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev '../archlinux-2022.06.01-x86_64.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record : El Torito , MBR isohybrid cyl-align-all GPT
Media summary: 1 session, 440998 data blocks, 861m data, 178g free
Volume id : 'ARCH_202206'
El Torito catalog : 118 1
El Torito cat path : /syslinux/boot.cat
El Torito images : N Pltf B Emul Ld_seg Hdpt Ldsiz LBA
El Torito boot img : 1 BIOS y none 0x0000 0x00 4 119
El Torito boot img : 2 UEFI y none 0x0000 0x00 0 396800
El Torito img path : 1 /syslinux/isolinux.bin
El Torito img opts : 1 boot-info-table isohybrid-suitable
El Torito img blks : 2 44032
System area options: 0x00000302
System area summary: MBR isohybrid cyl-align-all GPT
ISO image size/512 : 1763992
Partition offset : 16
MBR heads per cyl : 64
MBR secs per head : 32
MBR partition table: N Status Type Start Blocks
MBR partition : 1 0x80 0x00 64 1587136
MBR partition : 2 0x00 0xef 1587200 176128
GPT : N Info
GPT disk GUID : 3230323230363041b130303533353232
GPT entry array : 2 248 separated
GPT lba range : 64 1763928 1763991
GPT partition name : 1 490053004f00480079006200720069006400
GPT partname local : 1 ISOHybrid
GPT partition GUID : 1 3230323230363041b131303533353232
GPT type GUID : 1 a2a0d0ebe5b9334487c068b6b72699c7
GPT partition flags: 1 0x1000000000000001
GPT start and size : 1 64 1587136
GPT partition name : 2 490053004f004800790062007200690064003100
GPT partname local : 2 ISOHybrid1
GPT partition GUID : 2 3230323230363041b132303533353232
GPT type GUID : 2 a2a0d0ebe5b9334487c068b6b72699c7
GPT partition flags: 2 0x1000000000000001
GPT start and size : 2 1587200 176128
我哪里做错了?我正在尝试创建我的 ISO 映像文件并实时使用它
谢谢您的帮助
您的 xorriso -as mkisofs 运行在 -e 及其修改选项和 -b 及其修改选项之间至少缺少分隔符 -eltorito-alt-boot 。因此,您的结果 ISO 缺少 EFI 的 El Torito 条目,因为 -e 已被 -b 覆盖。
不管怎样,ISOLINUX 的失败不能归咎于这个缺点。我想这与缺少-b的修改选项有关。
您可以向 xorriso 询问有关重放可引导 ISO 的引导相关选项的建议(如果 ISO 由 xorriso 制作,则效果最佳)。要正确分析 Archlinux ISO,您需要 xorriso-1.5.4 或更高版本,因为旧版本不期望使用的引导选项组合。
并非所有这些都必须给出,因为有些是 ISO 的个体(-V 'ARCH_202206' --modification-date='2022060115352200')。有些并不是真正需要的,因为 xorriso 可以自己解决(-partition_cyl_align all -partition_hd_cyl 64 -partition_sec_hd 32 -boot-load-size 0)。
与您的选项列表相比,我敢打赌这是无法从(虚拟)光学介质通过 BIOS 引导的直接原因:
但是还有更多的问题:
缺少 -eltorito-alt-boot,因此无法通过光学介质进行 EFI 引导。
缺少 -e 修改选项 -isohybrid-gpt-basdat,因此没有 GPT 可通过 USB 记忆棒的挑剔 EFI 实现进行引导。
缺少 -isohybrid-mbr,因此无法从 USB 记忆棒通过 BIOS 引导。相反,有一个带有模糊 MBR 图像 mbr_code.img 的盈余 -G (你从哪里得到这个?)
晦涩的输入文件 ../compile-linux/bios_boot.img 将映射到 ISO 的根目录。
-b 和 -e 的顺序是相反的,但应该没问题。EFI 映像的引导加载大小 0 是正确的,因为它太大而无法在引导目录中列出其实际大小(限制为 32 MiB)。
使用 xorriso-1.5.4 将有一种更简单的方法来操作 Archlinux ISO:
(xorriso 问题和支持请求最好提交至 [email protected]。)
祝你今天过得愉快 :)
托马斯
archlinux-2022.06.01-x86_64.iso
总共可以通过四种不同的方式启动:根据
archiso
配置文件配置,UEFI 引导模式甚至包括两个单独的引导加载程序,用于 64 位和 32 位 x86 UEFI 实现(x64
以及ia32
UEFI 术语),因此您可以说它总共有六种引导模式。创建这样一个野兽很复杂,Arch 有一个专门的工具
archiso
来完成这项工作——我想这是有充分理由的。我建议您也许应该尝试使用它,而不是尝试重新发明轮子。的源代码archiso
在 Gitlab 中可用,如果您发现需要自定义它。如果我对
xorriso
报告的解释正确,则您的 ISO 映像声称只能通过两种方式启动:此外,在您的映像上,引导记录状态
cyl-align-off
显示为与 相对isohybrid cyl-align-all
,这表明 ISO 映像的各个组件可能未正确对齐。在真正的 Arch ISO 上,MBR 表示第一个分区(主要的 Iiso9660 文件系统内容)可以在 BIOS 模式下启动(状态 0x80),并且分区类型 ID 为 0x00,这是 ISO9660 文件系统的典型值,因为它们没有标准 MBR分配的分区类型 ID。在您的映像上,MBR 声称第一个分区是不可引导的,并且类型 ID 为 0x83,这将是
ext4
其他 Linux 文件系统的预期值。