połączyć partycje w jeden obraz dysku

13

Mam 3 obrazy. Każdy obraz został wykonany przez klonowanie (przez dd) partycji (te partycje sformatowane przy użyciu systemu plików ext3). Jedną partycję można uruchomić za pomocą GRUB1 (CentOS)

Jak mogę połączyć je w jeden obraz dysku?

(Mogę skopiować obrazy partycji za pomocą polecenia dd, ale nie wiem, jak utworzyć tabelę partycji i uruchomić bootowanie).

Dima
źródło
1
Co naprawdę próbujesz zrobić? Sklonować działający system na nowy sprzęt itp.? Czy trzy partycje z różnych punktów montowania w jednym systemie?
Mike Renfro,
Jaki jest cel możesz używać urządzeń sprzężenia zwrotnego do pracy z obrazami systemu plików, ale modyfikowanie obrazów dysku zamiast obrazów partycji / systemu plików jest o wiele trudniejsze.
Michael Lowman,

Odpowiedzi:

15

Utwórz obraz dysku. Następujące polecenie utworzy rzadki obraz 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

Podziel obraz na partycje za pomocą programu fdisk:

# fdisk mydisk.img

Upewnij się, że tworzysz partycje, które są co najmniej tak duże, jak te, które sfotografowałeś! Dla tego przykładu utworzyłem następujący układ:

# 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

Służy kpartxdo tworzenia urządzeń odpowiadających każdej z partycji:

# 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

Spowoduje to utworzenie wpisów w /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

Teraz możesz skopiować obrazy partycji na swoje partycje:

# 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

Teraz usuń mapowania urządzeń:

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

I wszystko gotowe!

Notatki

  • Możesz również osiągnąć to samo, używając ddi seekparametru (aby rozpocząć zapisywanie z odpowiednim przesunięciem w pliku obrazu dysku) zamiast używać kpartx, ale myślę, że użycie kpartxjest mniej podatne na błędy.

  • Nie spowoduje to obrazu rozruchowego. Jeśli chcesz, musisz również zainstalować na nim moduł ładujący.

Larsks
źródło