menggabungkan partisi ke satu gambar disk

13

Saya punya 3 gambar. Setiap gambar dilakukan dengan mengkloning (dengan dd) partisi (partisi ini diformat menggunakan sistem file ext3). Satu partisi dapat di-boot dengan GRUB1 (CentOS)

Bagaimana saya bisa menggabungkan mereka ke satu gambar disk?

(Saya dapat menyalin gambar partisi menggunakan perintah dd, tapi saya tidak tahu cara membuat tabel partisi dan membuat boot berfungsi).

Dima
sumber
1
Apa yang sebenarnya ingin Anda lakukan? Mengkloning sistem kerja ke perangkat keras baru, dll.? Apakah ketiga partisi dari titik mount berbeda pada satu sistem?
Mike Renfro
Apa tujuannya? Anda dapat menggunakan perangkat loopback untuk bekerja dengan gambar sistem file, tetapi memodifikasi gambar disk daripada gambar partisi / sistem file jauh lebih rumit.
Michael Lowman

Jawaban:

15

Buat gambar disk. Perintah berikut akan membuat gambar jarang 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

Partisi gambar dengan fdisk:

# fdisk mydisk.img

Pastikan Anda membuat partisi yang setidaknya sama besar dengan yang Anda gambar! Untuk contoh ini saya membuat tata letak berikut:

# 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

Gunakan kpartxuntuk membuat perangkat yang sesuai dengan masing-masing partisi:

# 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

Ini akan membuat entri di bawah /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

Sekarang Anda dapat menyalin gambar partisi Anda ke partisi Anda:

# 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

Sekarang hapus pemetaan perangkat:

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

Dan Anda sudah siap!

Catatan

  • Anda juga dapat mencapai hal yang sama dengan menggunakan dddan seekparameter (untuk mulai menulis pada offset yang sesuai dalam file gambar disk Anda) alih-alih menggunakan kpartx, tapi saya pikir menggunakan kpartxlebih sedikit rawan kesalahan.

  • Ini tidak akan menghasilkan gambar yang dapat di-boot. Jika Anda menginginkannya, Anda juga harus menginstal boot loader ke dalamnya.

larsks
sumber