การสร้างพาร์ติชัน
เพื่อสร้างตารางพาร์ทิชันคุณสามารถใช้เครื่องมือทั่วไปของคุณโดยตรงบนไฟล์แทนอุปกรณ์ เครื่องมือมาตรฐานส่วนใหญ่ควรรองรับการใช้งานนี้เช่น fdisk
และ parted
. parted
เป็นการรวมที่ดีในสคริปต์เนื่องจากสามารถใช้คำสั่งเป็นอาร์กิวเมนต์
parted -s testing.img mklabel gpt
parted -s -a none testing.img mkpart ESP fat32 0 4M
parted -s -a none testing.img mkpart linux ext4 4M 10M
การสร้างระบบไฟล์
ฉันไม่มีโซลูชันที่สะอาดในการเมานต์หรือสร้างระบบไฟล์ในพาร์ติชันเสมือน สิ่งที่ถูกต้องที่ควรทำคือ fuse
ไดรเวอร์ (ระบบไฟล์ใน Userspace) สำหรับตารางพาร์ติชัน แต่ฉันไม่ได้พบหนึ่งในขณะนี้
อย่างไรก็ตาม mke2fs
สามารถใช้ -E offset=1234
ตัวเลือกในการสร้าง ext2
, ext3
หรือ ext4
ระบบไฟล์ที่ออฟเซ็ตโดยพลการภายในไฟล์ คุณสามารถให้ออฟเซ็ตพาร์ติชันของคุณได้ อย่างไรก็ตามให้แน่ใจว่าได้กำหนดขนาดของระบบไฟล์ด้วยเนื่องจากพฤติกรรมเริ่มต้นดูเหมือนจะเป็นบั๊กและเขียนระบบไฟล์ด้วยขนาดของดิสก์เสมือนโดยค่าเริ่มต้นขยายไฟล์หากจำเป็น
mke2fs -E offset=4000256 testing.img 6316k
น่าเสียดายที่ไม่ใช่ทั้งหมด mkfs
มีตัวเลือกดังกล่าว mkfs.vfat
ไม่ ดังนั้นวิธีการแก้ปัญหาอื่นสามารถสร้างไฟล์แยกขนาดของพาร์ติชันใช้ mkfs
กับมันแล้วใช้ dd
เพื่อคัดลอกเนื้อหาลงในดิสก์เสมือนเต็ม
dd if=testing.img of=testing.fat32.img bs=512 skip=34 count=7779
mkfs -t vfat testing.fat32.img
dd if=testing.fat32.img of=testing.img bs=512 seek=34 count=7779 conv=notrunc
ไม่ใช่วิธีที่สะอาดหรือเร็วที่สุด แต่ใช้งานได้มันค่อนข้างทั่วไปและไม่ต้องการสิทธิ์พิเศษ ตัวเลือกการแปลง sparse
สามารถใช้เพื่อเร่งความเร็วสิ่งต่าง ๆ ได้โดยไม่ต้องเขียนลำดับของเลขศูนย์
ติดตั้งระบบไฟล์
คุณสามารถต่อเชื่อมระบบไฟล์ในพาร์ติชั่นได้ด้วยความช่วยเหลือของ fuse
หากมีการสนับสนุนสำหรับระบบไฟล์ของคุณ มีการสนับสนุนมาตรฐานสำหรับ ext
ระบบไฟล์ภายใต้ชื่อ fuse-ext2
และหนึ่งสำหรับ FAT
ภายใต้ชื่อ fusefat
. น่าเสียดายที่พวกเขาไม่ได้รับ offset
ตัวเลือกในขณะนี้ ดังนั้นฉันเดาว่าคุณจะต้องใช้ mount
หรือเหมือนกัน dd
หลอกลวงเหมือนก่อนหน้านี้
วิธีการมาตรฐานด้วย partx
หรือ kpartx
, หรือ -o offset
ตัวเลือกของ mount
) ต้องใช้สิทธิ์รูท dd
การแก้ปัญหาช้าซับซ้อนและแจ้งข้อผิดพลาด