ここで尋ねる前に、私はSU/SEとGoogleで検索しようとしましたが成功しませんでした。 これは私が得た最も近いものです。
基本的に、私は次のことをしようとしています:
-約128MBのディスクイメージを作成します。
-GPTを作成します。
-最初の32MBにFAT32パーティションを作成します(これをUEFIと呼びます)。
-残りのバイトにFAT32パーティションを作成します(これをSYSTEMと呼びます)。
-UEFIパーティションに次のサブディレクトリを作成します。/EFI/BOOT/;
-サブディレクトリ内のファイルをコピーします。
-SYSTEMパーティション内の別のファイルをコピーします。
これは私が今までやってきたことです:
dd if =/dev/zero of = disk.img bs = 1M count = 128
別れたdisk.img
(別れ)mktable gpt
(parted)mkpart primary fat32 2048s 65535s
(parted)mkpart primary fat32 65536s 100%
(parted)align-checkoptimal 1
(parted)align-checkoptimal 2
(parted)name 1 UEFI
(parted)name 2 SYSTEM
これは私の出力です:
ディスクdisk.img:134MB セクターサイズ(論理/物理):512B/512B パーティションテーブル:gpt ディスクフラグ: 番号開始終了サイズファイルシステム名フラグ 1 1049kB 33,6MB 32,5MB UEFI msftdata 2 33,6MB 134MB101MBシステムmsftdata
別の方法は、2つの異なるパーティションを作成し、後でそれらをマージすることです。
dd if =/dev/zero of = uefi.img bs = 1M count = 32 mformat -i uefi.img -v UEFI -f 1440 -c 1 :: mmd -iuefi。 img ::/EFI mmd -i uefi.img ::/EFI/BOOT mcopy -i uefi.img BOOTX64.EFI ::/EFI/BOOT
dd if =/dev/zero of = system.img bs = 1M count = 100 mformat -i system.img -v UEFI -f 1440 -c 1 :: mcopy -isystem。 img myawesomeOS ::
前者の方法では、「ファイルシステム」列が空である理由(fat32と表示されているはずです)と、サブディレクトリを作成してファイルをコピーする方法がわかりません。
後者の方法では、mformatに-Fを追加すると、2つのイメージに対して適切なFAT32ファイルシステムを作成できません。
この脂肪サイズにはクラスターが少なすぎます。 /etc/mtools.confまたは.mtoolsrcファイルで16ビットのファットを選択してください
それができたとしても、GPTを設定して、2つの画像を1つのファイルにマージする方法がわかりません。
どうすればこれを達成できますか?ヘルプやヒントをいただければ幸いです。
数時間苦労した後、自分で解決しました。念のため、ここに解決策を投稿します。
#256MBの空のディスクイメージを作成し、そのGPTを作成してから、 #2つのパーティションを作成します。最初のパーティションは約60MBで、2番目のパーティションは残りのバイトを埋めます #。両方のパーティションが整列されます。 ddif =/dev/zero of = disk.img bs = 1M count = 256 parted disk.img mktable gpt mkpart primary fat32 2048s 131071s mkpart primary fat32 131072s 100% align-checkoptimal 1 align-checkoptimal 2 name 1 UEFI name 2 SYSTEM quit #33MBの空のディスクイメージを作成します。 ddif =/dev/zero of = uefi.img bs = 1M count = 33 #ディスクイメージをFAT32 mkfs.vfat uefi.img -F 32 #としてフォーマットします。要求されたサブディレクトリを作成します。 mmd-i uefi.img ::/EFI mmd -i uefi.img ::/EFI/BOOT #ブートファイルをコピーします。 mcopy-i uefi.img BOOTX64.EFI ::/EFI/BOOT #100MBの空のディスクイメージを作成します。 ddif =/dev/zero of = system.img bs = 1M count = 100 #ディスクをフォーマットしますimage as FAT32 mkfs.vfat system.img -F 32 #OSファイルをコピーします。 mcopy-i system.img SYSTEM.EFI :: #kpartxによって要求されたカーネルモジュールを有効にします。念のため。 Sudo modprobe dm-mod #disk.imgの2つのパーティションを/ dev/mapper/loop0p1および #/ dev/mapper/loop0p2にマップしてマウントします。 Sudo kpartx -av disk.img #UEFIパーティションをディスクイメージにコピーします。 Sudo dd if = uefi.img of =/dev/mapper/loop0p1 bs = 1M #SYSTEMパーティションをディスクイメージにコピーします。 Sudo dd if = system.img of =/dev/mapper/loop0p2 bs = 1M #2つのパーティションをアンマウントします Sudo kpartx -dv disk.img