คุณจะสร้างและแบ่งพาร์ติชันดิสก์อิมเมจดิบได้อย่างไร?


7

ฉันต้องการสร้างอิมเมจดิสก์ดิบสำหรับใช้ในเครื่องเสมือน แต่ฉันต้องสร้างพาร์ติชันก่อนสร้างระบบไฟล์หรือติดตั้งระบบปฏิบัติการ

ใครสามารถอธิบายกระบวนการในการทำเช่นนี้ได้บ้าง


คุณใช้เทคโนโลยีเครื่องจักรเสมือนใด เพราะมีรูปแบบดิสก์ที่แตกต่างกัน (.vhd (x) สำหรับ Microsoft, .vmdk สำหรับ VMware เป็นต้น) ฉันคิดว่าคุณควรสร้าง VM ประเภทที่คุณต้องการด้วย Linux LiveCD .iso ซึ่งเมาท์และดิสก์เสมือนที่จะแบ่งพาร์ติชัน มีคำแนะนำมากมายเกี่ยวกับวิธีการใช้ LiveCD เพื่อแบ่งพาร์ติชันดิสก์ (เนื่องจากมี LiveCD จำนวนมากรอบตัวคุณจึงต้องหาคำแนะนำที่เหมาะสมสำหรับ LiveCD ที่คุณเลือกใช้)
mprill

เพียงภาพดิสก์ดิบเช่นเมื่อคุณถ่ายโอนข้อมูลดิสก์โดยใช้เครื่องมือคัดลอกบล็อกเช่นdd
Aethylred

คำตอบ:


4

ขั้นแรกให้สร้างอิมเมจดิสก์เปล่าเปล่า (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

2

ขั้นตอนอัตโนมัติเต็มรูปแบบ

สร้าง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

ส่วน "ยาก" คือ:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.