จัดวางภาพดิสก์และคัดลอกไฟล์ลงในภาพ


2

ก่อนถามที่นี่ฉันพยายามค้นหา SU / SE และ Google ไม่ประสบความสำเร็จ นี่คือสิ่งที่ฉันได้ใกล้เคียงที่สุด

โดยพื้นฐานฉันพยายามทำสิ่งต่อไปนี้:
- สร้างภาพดิสก์ประมาณ 128MB;
- สร้าง GPT
- สร้างพาร์ติชัน FAT32 ใน 32MB แรก (ฉันจะเรียกมันว่า UEFI)
- สร้างพาร์ติชัน FAT32 ในไบต์ที่เหลือ (ฉันจะเรียกมันว่าระบบ);
- สร้างไดเรกทอรีย่อยต่อไปนี้ในพาร์ติชัน UEFI: / EFI / BOOT /;
- คัดลอกไฟล์ในไดเรกทอรีย่อย;
- คัดลอกไฟล์อื่นในพาร์ติชั่น SYSTEM


สิ่งที่ฉันทำมาจนถึงตอนนี้:

dd if = / dev / zero of = disk.img bs = 1M จำนวน = 128

disk.img ที่แยกส่วน
(แยกส่วน) mktable gpt
(แยก) mkpart ไขมันหลัก 32 2048 วินาที 65535 วินาที
(แยก) mkpart ไขมันหลัก 32 65536 วินาที 100%
(แยกส่วน) ตรวจสอบการจัดตำแหน่งที่เหมาะสมที่สุด 1
(แยกส่วน) ตรวจสอบการจัดตำแหน่งที่เหมาะสมที่สุด 2
(แยกส่วน) ชื่อ 1 UEFI
(แยกส่วน) ชื่อ 2 ระบบ

นี่คือผลลัพธ์ของฉัน:

Disk disk.img: 134MB  
Sector size (logical/physical): 512B/512B  
Partition Table: gpt  
Disk Flags:  

Number  Start   End     Size    File system  Name    Flags  
 1      1049kB  33,6MB  32,5MB               UEFI    msftdata
 2      33,6MB  134MB   101MB                SYSTEM  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 count=100
mformat -i system.img -v UEFI -f 1440 -c 1 ::
mcopy -i system.img myawesomeOS ::



ก่อนหน้านี้ฉันไม่สามารถเข้าใจได้ว่าทำไมคอลัมน์ "ระบบไฟล์" จึงว่างเปล่า (ควรบอก fat32) และวิธีสร้างไดเรกทอรีย่อยและคัดลอกไฟล์
ในวิธีหลังฉันไม่สามารถสร้างระบบไฟล์ FAT32 ที่เหมาะสมสำหรับสองภาพถ้าฉันผนวก -F เพื่อ mformat ฉันได้รับ

มีกลุ่มน้อยเกินไปสำหรับขนาดไขมันนี้ โปรดเลือกไขมัน 16 บิตในไฟล์ /etc/mtools.conf หรือ. mtoolsrc

หากฉันสามารถทำได้ฉันก็ยังไม่รู้วิธีตั้งค่า GPT และรวมสองภาพในไฟล์เดียว

ฉันจะบรรลุสิ่งนี้ได้อย่างไร ความช่วยเหลือหรือคำใบ้ใด ๆ ที่ชื่นชม

คำตอบ:


3

หลังจากดิ้นรนสองสามชั่วโมงฉันก็แก้ไขมันเอง ฉันจะโพสต์โซลูชันที่นี่ในกรณี:

# Creates an empty disk image of 256MB, creates its GPT, and then it makes
# two partitions: the first one of approximatively 60MB, the second one fills
# the remaining bytes. Both partitions are aligned.
dd if=/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-check optimal 1
align-check optimal 2
name 1 UEFI
name 2 SYSTEM
quit

# Creates an empty disk image of 33MB.
dd if=/dev/zero of=uefi.img bs=1M count=33
# Formats the disk image as FAT32
mkfs.vfat uefi.img -F 32
# Creates the requested subdirectories.
mmd -i uefi.img ::/EFI
mmd -i uefi.img ::/EFI/BOOT
# Copies the boot file.
mcopy -i uefi.img BOOTX64.EFI ::/EFI/BOOT

# Creates an empty disk image of 100MB.
dd if=/dev/zero of=system.img bs=1M count=100
# Formats the disk image as FAT32
mkfs.vfat system.img -F 32
# Copies the OS file.
mcopy -i system.img SYSTEM.EFI ::

# Enables the kernel module requested by kpartx, just in case.
sudo modprobe dm-mod
# Maps and mounts the two partitions in disk.img to /dev/mapper/loop0p1 and
# /dev/mapper/loop0p2
sudo kpartx -av disk.img
# Copies the UEFI partion into the disk image.
sudo dd if=uefi.img of=/dev/mapper/loop0p1 bs=1M
# Copies the SYSTEM partion into the disk image.
sudo dd if=system.img of=/dev/mapper/loop0p2 bs=1M
# Unmounts the two partitions
sudo kpartx -dv disk.img

1
คุณสามารถใช้ -i image@@offset ไวยากรณ์เพื่อ mformat เพื่อสร้างพาร์ติชันและทำให้ไม่ต้องสร้างไฟล์แยกต่างหาก
RolKau

@RolKau ขอบคุณ !!! ฉันคิดว่า (หวังว่า) คำแนะนำนี้จะแก้ปัญหาของฉัน (พยายามทำสิ่งนี้ผ่านการทุบตีในระบบย่อย Windows สำหรับ Linux และดูเหมือนไม่สามารถแมป / เมานท์ได้
Vreenak
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.