ฉันต้องการสร้างอิมเมจดิสก์ดิบสำหรับใช้ในเครื่องเสมือน แต่ฉันต้องสร้างพาร์ติชันก่อนสร้างระบบไฟล์หรือติดตั้งระบบปฏิบัติการ
ใครสามารถอธิบายกระบวนการในการทำเช่นนี้ได้บ้าง
dd
ฉันต้องการสร้างอิมเมจดิสก์ดิบสำหรับใช้ในเครื่องเสมือน แต่ฉันต้องสร้างพาร์ติชันก่อนสร้างระบบไฟล์หรือติดตั้งระบบปฏิบัติการ
ใครสามารถอธิบายกระบวนการในการทำเช่นนี้ได้บ้าง
dd
คำตอบ:
ขั้นแรกให้สร้างอิมเมจดิสก์เปล่าเปล่า (25GB ในกรณีนี้):
# dd if=/dev/zero of=disk.img bs=1024k seek=25600 count=0
0+0 records in
0+0 records out
0 bytes (0 B) copied, 2.7301e-05 s, 0.0 kB/s
# ls -lh
total 2.0G
-rw-r--r-- 1 root root 25G Dec 13 11:13 disk.img
ให้ตารางพาร์ติชัน:
# parted disk.img mklabel msdos
ติดตั้งเป็นอุปกรณ์ลูปแบ็ค (วิธีที่ง่ายที่สุดในการกำหนดกระบอกสูบหัวและเซกเตอร์):
# losetup -f disk.img
# losetup -a
/dev/loop0: [0801]:12059103 (/path/to/disk.img)
ตรวจสอบว่าเป็นอุปกรณ์บล็อกที่ถูกต้อง:
# fdisk /dev/loop0
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p
Disk /dev/loop0: 26.8 GB, 26843545600 bytes
255 heads, 63 sectors/track, 3263 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000db005
Device Boot Start End Blocks Id System
จากนั้นใช้fdisk
เพื่อแบ่งพาร์ติชันตามที่คุณต้องการ:
# fdisk /dev/loop0
เมื่อคุณทำเสร็จแล้วคุณจะต้องคลายอุปกรณ์ (จะต้องทำการ unmapping และ unmount ก่อน):
# losetup -d /dev/loop0
ขั้นตอนอัตโนมัติเต็มรูปแบบ
สร้างmy.img
ภาพด้วยพาร์ติชัน ext4 เดียว:
sudo apt-get install kpartx
img='my.img'
dd if=/dev/zero of="$img" bs=512 count=131072
printf 'o\nn\np\n1\n\n\nw\n' | fdisk "$img"
sudo kpartx -av "$img"
sudo mke2fs -t ext4 /dev/mapper/loop0p1
mkdir d
sudo mount /dev/mapper/loop0p1 d
# Do something to the ext partition.
sudo touch a
sudo umount d
sudo kpartx -dv "$img"
ทดสอบบน Ubuntu 14.04
ส่วน "ยาก" คือ:
การติดตั้งไฟล์ภาพด้วยอุปกรณ์พาร์ติชันหลายวง ที่นี่เราใช้kpartx
แต่มีวิธีอื่น ๆ : ฉันจะติดพาร์ติชันจากอิมเมจที่สร้างโดย dd ของอุปกรณ์บล็อก (เช่น HDD) ภายใต้ Linux ได้อย่างไร
การสร้างพาร์ติชั่นแบบไม่โต้ตอบ ที่นี่เราเพียงแค่ส่งเข้าไปfdisk
ตามที่กล่าวไว้ที่: การสร้างและจัดรูปแบบพาร์ติชันโดยใช้สคริปต์ทุบตี