รวมพาร์ติชันเป็นหนึ่งอิมเมจดิสก์


13

ฉันมี 3 ภาพ แต่ละอิมเมจถูกทำโดยการโคลน (โดย dd) พาร์ติชัน (พาร์ติชันเหล่านี้ถูกจัดรูปแบบโดยใช้ระบบไฟล์ ext3) พาร์ติชันหนึ่งสามารถบู๊ตได้ด้วย GRUB1 (CentOS)

ฉันจะรวมภาพเหล่านั้นเข้ากับดิสก์อิมเมจเดียวได้อย่างไร

(ฉันสามารถคัดลอกพาร์ติชั่นอิมเมจโดยใช้คำสั่ง dd แต่ฉันไม่รู้วิธีสร้างตารางพาร์ติชั่นและทำให้การบู๊ตทำงาน)


1
คุณพยายามทำอะไรจริงๆ ลอกเลียนแบบระบบการทำงานกับฮาร์ดแวร์ใหม่หรือไม่? พาร์ติชันทั้งสามนั้นมาจากจุดเชื่อมต่อที่แตกต่างกันในระบบเดียวหรือไม่?
Mike Renfro

เป้าหมายคืออะไร คุณสามารถใช้อุปกรณ์ลูปแบ็คเพื่อทำงานกับอิมเมจระบบไฟล์ แต่การแก้ไขอิมเมจดิสก์แทนอิมเมจพาร์ติชั่น / ระบบไฟล์นั้นเป็นเรื่องยุ่งยากมากขึ้น
Michael Lowman

คำตอบ:


15

สร้างภาพดิสก์ คำสั่งต่อไปนี้จะสร้างภาพกระจัดกระจาย 10G :

# dd if=/dev/zero of=mydisk.img bs=1 count=0 seek=10G
0+0 records in
0+0 records out
0 bytes (0 B) copied, 1.6554e-05 s, 0.0 kB/s
# ls -lh mydisk.img
-rw-r--r--. 1 root root 10G Jun 17 15:27 mydisk.img

แบ่งภาพด้วย fdisk:

# fdisk mydisk.img

ตรวจสอบให้แน่ใจว่าคุณสร้างพาร์ทิชันที่มีขนาดใหญ่เท่ากับพาร์ติชั่นที่คุณถ่าย! สำหรับตัวอย่างนี้ฉันสร้างเลย์เอาต์ต่อไปนี้:

# fdisk -l mydisk.img
Disk mydisk.img: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x5519250f

     Device Boot      Start         End      Blocks   Id  System
mydisk.img1            2048     2099199     1048576   83  Linux
mydisk.img2         2099200     4196351     1048576   83  Linux

ใช้kpartxเพื่อสร้างอุปกรณ์ที่สอดคล้องกับแต่ละพาร์ติชัน:

# kpartx -av mydisk.img
add map loop0p1 (253:3): 0 2097152 linear /dev/loop0 2048
add map loop0p2 (253:4): 0 2097152 linear /dev/loop0 2099200

สิ่งนี้จะสร้างรายการภายใต้/dev/mapper:

# ls -l /dev/mapper
lrwxrwxrwx. 1 root root       7 Jun 17 15:33 loop0p1 -> ../dm-3
lrwxrwxrwx. 1 root root       7 Jun 17 15:33 loop0p2 -> ../dm-4

ตอนนี้คุณสามารถคัดลอกอิมเมจพาร์ติชั่นไปยังพาร์ติชั่น:

# dd if=image_of_partition_1.img of=/dev/mapper/loop0p1 bs=1M
# dd if=image_of_partition_2.img of=/dev/mapper/loop0p2 bs=1M

ตอนนี้ลบการแมปอุปกรณ์:

# kpartx -dv mydisk.img
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0

และคุณพร้อมแล้ว!

หมายเหตุ

  • คุณสามารถทำสิ่งเดียวกันโดยใช้ddและseekพารามิเตอร์ (เพื่อเริ่มเขียนที่ออฟเซ็ตที่เหมาะสมในไฟล์อิมเมจดิสก์ของคุณ) แทนที่จะใช้kpartxแต่ฉันคิดว่าการใช้kpartxนั้นมีข้อผิดพลาดน้อยกว่า

  • สิ่งนี้จะไม่ส่งผลให้อิมเมจที่สามารถบูตได้ หากคุณต้องการคุณจะต้องติดตั้งบูตโหลดเดอร์ไว้

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