前回、以下のコマンドでisoファイルを作成した。
※-boot-load-sizeが誤っていたので修正
xorriso -as mkisofs \ -b boot/etfsboot.com -no-emul-boot -boot-load-size 8 \ -eltorito-alt-boot -e efi/microsoft/boot/efisys.bin -no-emul-boot -isohybrid-gpt-basdat -o output.iso .
作成したファイルを見ると、
・fdisk -l:パーティション情報が表示されない
$ fdisk -l w10-22h2-inst-xorrisofs.iso
ディスク w10-22h2-inst-xorrisofs.iso: 4.56 GiB, 4891910144 バイト, 9554512 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
・hexdump -C:LBA0、LBA1が空
$ hexdump -C w10-22h2-inst-xorrisofs.iso | head
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00008000 01 43 44 30 30 31 01 00 20 20 20 20 20 20 20 20 |.CD001.. |
00008010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00008020 20 20 20 20 20 20 20 20 49 53 4f 49 4d 41 47 45 | ISOIMAGE|
00008030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00008040 20 20 20 20 20 20 20 20 00 00 00 00 00 00 00 00 | ........|
00008050 94 72 24 00 00 24 72 94 00 00 00 00 00 00 00 00 |.r$..$r.........|
00008060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00008070 00 00 00 00 00 00 00 00 01 00 00 01 01 00 00 01 |................|
・Ubuntuディスクユーティリティ:パーティション情報が表示されない
・VirtualBoxからHDDとしてUEFI起動:失敗(CDROMと認識される)
xorrisofsのisohybrid関連オプション
xorriso -as mkisofs ではなく xorrisofs を使う。
実体は同じだと思うが、オプションの情報はこちらのほうが調べやすかった。
xorrisofs - マニュアルページ セクション 1: ユーザーコマンド
https://docs.oracle.com/cd/F16635_01/html/E71065/xorrisofs-1.html
Oracle Solarisのだけど、xorrisofsのman。
isohybrid関係のオプション:
・ -isohybrid-gpt-basdat
EFIのブートイメージをESPとして疑似MBR・GPTに登録する。-isohybrid-mbrと一緒に使うことが前提。
・-part_like_isohybrid
・-efi-boot-part disk_path
disk_path のファイルをGPTでESPとしてマークする。disk_pathはFAT-12のディスクイメージを指定する。disk_pathの代わりに --efi-boot-image を指定すると、 -eもしくは -efi-boot で指定したブートイメージが指定される。
aports/scripts/mkimg.base.sh at master · alpinelinux/aports · GitHub
https://github.com/alpinelinux/aports/blob/master/scripts/mkimg.base.sh
Alpine Linuxのisoイメージを作成するスクリプト。
スクリプトの中で、以下のような記述があった。
if [ -z "$_isolinux" ]; then # efi boot only _efiboot=" -efi-boot-part --efi-boot-image -e boot/grub/efi.img -no-emul-boot " else # hybrid isolinux+efi boot _efiboot=" -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat "
isolinuxはBIOS環境でCDROM起動する仕組みなので、efi boot only とコメントが付いているオプションを指定すると、UEFI環境でのみHDD起動すると思われる。
RepackBootableISO - Debian Wiki
https://wiki.debian.org/RepackBootableISO
DebianでブータブルISOを再作成する際のガイド。
xorrisofsの各オプションの説明の中で --isohybrid-mbr と --isohybrid-gpt-basdat についても説明されている。
-
- isohybrid-mbr isohdpfx.bin について、isoファイルの先頭432バイトに書き込む、とある。
ロードされるファイルは isolinux.bin が想定されているのだが、ISO9660のファイルシステム上、ブートローダーのセクタ位置は同じなのではないか。
対処
UEFI環境でCDROMとHDD両方に対応するハイブリッドisoファイルを作る方法は以下が考えられる。
(1) -isohybrid-mbr を指定せず -isohybrid-gpt-basedat -part_like_isohybrid を指定することで、疑似MBRなしで疑似ESPだけを付与する
(2) -isohybrid-mbr を指定せず -efi-boot-part --efi-boot-image を指定することで、疑似MBRなしで疑似ESPだけを付与する
(3) -isohybrid-mbr isohdpfx.bin と -isohybrid-gpt-basedat を指定することで、疑似MBRと疑似ESP両方を付与する
(1) -isohybrid-mbr を指定せず -isohybrid-gpt-basedat -part_like_isohybrid を指定することで、疑似MBRなしで疑似ESPだけを付与する
$ sudo xorrisofs -iso-level 4 -R -D -U -b boot/etfsboot.com -no-emul-boot -boot-load-size 8 -boot-info-table -eltorito-alt-boot -e efi/microsoft/boot/efisys.bin -no-emul-boot -isohybrid-gpt-basdat -part_like_isohybrid -o ../w10-22h2-inst-xorrisofs.iso isoroot .
結果:だめ。LBA1にGPTヘッダーは書き込まれるのだが、GPTパーティションとして認識されない。
・fdisk -l:パーティション情報が表示されない
$ fdisk -l ../w10-22h2-inst-xorrisofs.iso ディスク ../w10-22h2-inst-xorrisofs.iso: 4.56 GiB, 4891942912 バイト, 9554576 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
・hexdump -C:LBA0が空、LBA1にGPTヘッダーあり
$ hexdump -C ../w10-22h2-inst-xorrisofs.iso | head 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000200 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 |EFI PART....\...| 00000210 05 86 bf 93 00 00 00 00 01 00 00 00 00 00 00 00 |................| 00000220 8f ca 91 00 00 00 00 00 40 00 00 00 00 00 00 00 |........@.......| 00000230 50 ca 91 00 00 00 00 00 d9 26 4f b9 01 64 5b 45 |P........&O..d[E| 00000240 94 d2 c1 89 29 e4 cf 82 02 00 00 00 00 00 00 00 |....)...........| 00000250 f8 00 00 00 80 00 00 00 92 53 36 1f 00 00 00 00 |.........S6.....| 00000260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| *
・Ubuntuディスクユーティリティ:パーティション情報が表示されない
・VirtualBoxからHDDとしてUEFI起動:失敗(CDROMと認識される)
(2) -isohybrid-mbr を指定せず -efi-boot-part --efi-boot-image を指定することで、疑似MBRなしで疑似ESPだけを付与する
$ sudo xorrisofs -iso-level 4 -R -D -U -b boot/etfsboot.com -no-emul-boot -boot-load-size 8 -boot-info-table -eltorito-alt-boot -e efi/microsoft/boot/efisys.bin -no-emul-boot -isohybrid-gpt-basdat -part_like_isohybrid -o ../w10-22h2-inst-xorrisofs.iso isoroot .
結果:だめ。3つの中で唯一UbuntuのディスクユーティリティーがHDDをGPTとして認識し、VirtualBoxでもHDDとして認識されるが、起動すると Press any key の後インストーラーを読み込めずに終了する。
(1)で boot/etfsboot.com と efi/microsoft/boot/efisys.bin と efi/boot/bootx64.efi だけを入れたISOファイルを作って起動すると Press any key は表示されるので、bootx64.efi か efisys.bin までは読み込んでいるが、それ以降のファイルへはアクセスできていないと思われる。
(3) -isohybrid-mbr isohdpfx.bin と -isohybrid-gpt-basedat を指定することで、疑似MBRと疑似ESP両方を付与する
$ sudo xorrisofs -iso-level 4 -R -D -U -b boot/etfsboot.com -no-emul-boot -boot-load-size 8 -boot-info-table -isohybrid-mbr ./isohdpfx.bin -eltorito-alt-boot -e efi/microsoft/boot/efisys.bin -no-emul-boot -isohybrid-gpt-basdat -o ../w10-22h2-inst-xorrisofs.iso isoroot .
結果:
結果:だめ。LBA0にMBRが、LBA1にGPTヘッダーが書き込まれるが、パーティションはMBRと認識され、疑似GPTパーティションが認識されない。
・fdisk -l:MBRとして空のディスクとEFIパーティションが表示される。
$ sudo fdisk -l /dev/sdc ディスク /dev/sdc: 4.56 GiB, 4893106176 バイト, 9556848 セクタ Disk model: VBOX HARDDISK 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: dos ディスク識別子: 0x244c3ab9 デバイス 起動 開始位置 最後から セクタ サイズ Id タイプ /dev/sdc1 * 0 9556847 9556848 4.6G 0 空 /dev/sdc2 1160 4039 2880 1.4M ef EFI (FAT-12/16/32)
・hexdump -C:LBA0にMBR、LBA1にGPTヘッダーあり
$ sudo hexdump -C /dev/sdc | less 00000000 33 ed 90 90 90 90 90 90 90 90 90 90 90 90 90 90 |3...............| 00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 |................| 00000020 33 ed fa 8e d5 bc 00 7c fb fc 66 31 db 66 31 c9 |3......|..f1.f1.| 00000030 66 53 66 51 06 57 8e dd 8e c5 52 be 00 7c bf 00 |fSfQ.W....R..|..| 00000040 06 b9 00 01 f3 a5 ea 4b 06 00 00 52 b4 41 bb aa |.......K...R.A..| 00000050 55 31 c9 30 f6 f9 cd 13 72 16 81 fb 55 aa 75 10 |U1.0....r...U.u.| 00000060 83 e1 01 74 0b 66 c7 06 f1 06 b4 42 eb 15 eb 00 |...t.f.....B....| 00000070 5a 51 b4 08 cd 13 83 e1 3f 5b 51 0f b6 c6 40 50 |ZQ......?[Q...@P| 00000080 f7 e1 53 52 50 bb 00 7c b9 04 00 66 a1 b0 07 e8 |..SRP..|...f....| 00000090 44 00 0f 82 80 00 66 40 80 c7 02 e2 f2 66 81 3e |D.....f@.....f.>| 000000a0 40 7c fb c0 78 70 75 09 fa bc ec 7b ea 44 7c 00 |@|..xpu....{.D|.| 000000b0 00 e8 83 00 69 73 6f 6c 69 6e 75 78 2e 62 69 6e |....isolinux.bin| 000000c0 20 6d 69 73 73 69 6e 67 20 6f 72 20 63 6f 72 72 | missing or corr| 000000d0 75 70 74 2e 0d 0a 66 60 66 31 d2 66 03 06 f8 7b |upt...f`f1.f...{| 000000e0 66 13 16 fc 7b 66 52 66 50 06 53 6a 01 6a 10 89 |f...{fRfP.Sj.j..| 000000f0 e6 66 f7 36 e8 7b c0 e4 06 88 e1 88 c5 92 f6 36 |.f.6.{.........6| 00000100 ee 7b 88 c6 08 e1 41 b8 01 02 8a 16 f2 7b cd 13 |.{....A......{..| 00000110 8d 64 10 66 61 c3 e8 1e 00 4f 70 65 72 61 74 69 |.d.fa....Operati| 00000120 6e 67 20 73 79 73 74 65 6d 20 6c 6f 61 64 20 65 |ng system load e| 00000130 72 72 6f 72 2e 0d 0a 5e ac b4 0e 8a 3e 62 04 b3 |rror...^....>b..| 00000140 07 cd 10 3c 0a 75 f1 cd 18 f4 eb fd 00 00 00 00 |...<.u..........| 00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * :[K [K000001b0 80 04 00 00 00 00 00 00 b9 3a 4c 24 00 00 80 00 |.........:L$....| 000001c0 01 00 00 97 ff e5 00 00 00 00 70 d3 91 00 00 fe |..........p.....| 000001d0 ff ff ef fe ff ff 88 04 00 00 40 0b 00 00 00 00 |..........@.....| 000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000200 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 |EFI PART....\...| 00000210 ff 4b d8 24 00 00 00 00 01 00 00 00 00 00 00 00 |.K.$............| 00000220 6f d3 91 00 00 00 00 00 40 00 00 00 00 00 00 00 |o.......@.......| 00000230 30 d3 91 00 00 00 00 00 44 ec 49 75 ab c7 57 42 |0.......D.Iu..WB| 00000240 be 4a 18 0b 11 6c 40 b9 02 00 00 00 00 00 00 00 |.J...l@.........| 00000250 f8 00 00 00 80 00 00 00 85 6b 70 f3 00 00 00 00 |.........kp.....| 00000260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000400 a2 a0 d0 eb e5 b9 33 44 87 c0 68 b6 b7 26 99 c7 |......3D..h..&..|
・Ubuntuディスクユーティリティ:
MBR 2パーティションとして認識される。
GPTでないのでEFIパーティションはESPとしては認識されない。
・VirtualBoxからHDDとしてUEFI起動:失敗(CDROMと認識される)