
在問這裡之前,我嘗試在 SU/SE 和 Google 上搜尋但沒有成功。這是我得到的最接近的東西。
基本上,我正在嘗試執行以下操作:
- 建立大約 128MB 的磁碟映像;
- 創建一個GPT;
- 在前 32MB 中建立一個 FAT32 分割區(我稱之為 UEFI);
- 在剩餘位元組中建立一個 FAT32 分割區(我稱之為 SYSTEM);
- 在 UEFI 分割區中建立下列子目錄:/EFI/BOOT/;
- 複製子目錄中的檔案;
- 複製 SYSTEM 分割區中的另一個檔案。
這是我到目前為止所做的:
dd if=/dev/zero of=disk.img bs=1M 計數=128
parted disk.img
(parted) mktable gpt
(parted) mkpart Primary fat32 2048s 65535s
(parted) mkpart Primary fat32 65536s 100%
(parted) 對齊檢查最優
名稱 1 ( parted
)檢查)
) 名稱 2 系統
這是我的輸出:
磁碟disk.img:134MB 扇區大小(邏輯/物理):512B/512B 分區表:gpt 磁碟標誌: 編號 開始 結束 大小 檔案系統名稱 標誌 1 1049kB 33,6MB 32,5MB UEFI msftdata 2 33,6MB 134MB 101MB 系統 msftdata
另一種方法是建立兩個不同的分割區,然後合併它們:
dd if=/dev/zero of=uefi.img bs=1M count=32 mformat -i uefi.img -v UEFI -f 1440 -c 1 :: mmd -i uefi.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 計數=100 mformat -i system.img -v UEFI -f 1440 -c 1 :: mcopy -i system.img myawesomeOS ::
在前一種方式中,我無法弄清楚為什麼「檔案系統」列是空的(應該是 fat32)以及如何建立子目錄和複製檔案。
在後一種方式中,我無法為兩個圖像創建正確的 FAT32 檔案系統,如果我將 -F 附加到 mformat 我得到
對於這個脂肪大小來說,簇太少了。請在 /etc/mtools.conf 或 .mtoolsrc 檔案中選擇 16 位元 fat
如果我設法做到這一點,我仍然不知道如何設定 GPT 並將兩個圖像合併到一個檔案中。
我怎樣才能實現這個目標?任何幫助或提示表示讚賞。
答案1
經過幾個小時的苦苦掙扎,我自己解決了。我將在這裡發布解決方案,以防萬一:
# 建立一個 256MB 的空磁碟映像,建立其 GPT,然後建立 # 兩個分割區:第一個分割區大約60MB,第二個分割區填滿 # 剩餘位元組。兩個分割區均對齊。 dd if=/dev/zero of=disk.img bs=1M 計數=256 分割磁碟.img MK表GPT mkpart 初級 fat32 2048s 131071s mkpart 初級脂肪32 131072s 100% 對齊檢查最優 1 對齊檢查最優 2 名稱 1 UEFI 名稱 2 系統 辭職 # 建立一個 33MB 的空磁碟映像。 dd if=/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 的空磁碟映像。 dd if=/dev/zero of=system.img bs=1M 計數=100 # 將磁碟映像格式化為 FAT32 mkfs.vfat 系統.img -F 32 # 複製作業系統檔案。 mcopy -i system.img SYSTEM.EFI :: # 啟用 kpartx 請求的核心模組,以防萬一。 sudo modprobe dm-mod # 將disk.img中的兩個分割區映射並掛載到/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 # 解除安裝兩個分割區 sudo kpartx -dv disk.img