'Dd' ile oluşturulan bir sürücü görüntüsünü her bölüm için ayrı dosyalara nasıl bölebilirim?


9

Ben başarısız bir sürücü bir görüntü oluşturdu:

dd if=/dev/sde of=/mnt/image001.dd

Sürücünün sadece iki bölümü vardı:

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1   *           1          13      102400    7  HPFS/NTFS
/dev/sde2              13       60802   488282112    7  HPFS/NTFS

Dosya sistemlerini içine yerleştirebilmem için görüntüyü (image001.dd) iki veya üç dosyaya (1: MBR; 2: Bölüm 1; 3: Bölüm 2) nasıl bölebilirim ?

Benim için işe yaramayacağını bulduğum bir çözüm, splitbirçok 512K dosyası oluşturmak için kullanmaktır , daha sonra catbunları tekrar üç dosyaya (1: 512K, 2: 105M, 3: geri kalanı) dönüştürmek için kullanıyorum. bunun için disk alanı.

Geçmiş:
Görüntünün tamamını yeni bir sürücüye kopyaladım ve önyükleme yapıyor ve çoğunlukla çalışıyor. Görünüşe göre FS eski arızalı sürücüde ddbozuk ve bozuk parçaları (olması gerektiği gibi) kopyaladı ve bunları yeni sürücüye yazdım. Benim çözüm kopyaladığım FS ve kopya sadece dosyaları (kullanarak rsyncya da bir şey) monte böylece umarım ben kötü bit kopyalamak olmaz.

GÜNCELLEME 1 : Denedim dd if=/mnt/image001.dd of=/mnt/image001.part1.dd bs=512 count=204800 skip=1ama mountşikayet NTFS signature is missingediyorum, bu yüzden doğru yapmadığımı düşünüyorum.

Yanıtlar:


17

Bunu hiç bölmenize gerek yok.

partedBölümleme tablosu hakkında ayrıntılı bilgi almak için kullanın :

parted image001.dd

'De parted, komutla bayt birimlerine geçin u, sonra B. Bundan sonra komutu verin print.

Aşağıdaki gibi bir çıktı alırsınız (çıktı bir görüntüden değil gerçek bir sistemden alınır):

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 25165824000B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start         End           Size          Type     File system     Flags
 2      1048576B      400556031B    399507456B    primary  ext4            boot
 3      400556032B    21165506559B  20764950528B  primary  ext4
 1      21165506560B  25164775423B  3999268864B   primary  linux-swap(v1)

StartNumarayı, geri döngü bağlantısı için ofset olarak kullanabilirsiniz :

mount -o loop,ro,offset=400556032 image001.dd /mnt/rescue

adlı üçüncü bölümü bağlar /mnt/rescue.


Hem bu hem kpartxde sorunumu çöz. Bu cevabı seçtim çünkü partedbunun daha yaygın olduğunu düşünürdüm kpartx, ancak kpartxbiraz daha kolay.
Joe A

16

Sadece kpartxaracı kullanmak çok daha iyi .

usage : kpartx [-a|-d|-l] [-v] wholedisk
    -a add partition devmappings
    -d del partition devmappings
    -l list partitions devmappings that would be added by -a
    ...

Misal:

# kpartx -l whole_disk # only listing
loop0p1 : 0 518144 /dev/loop0 2048
loop0p2 : 0 3674112 /dev/loop0 520192
# kpartx -a whole_disk 
# file -sL /dev/mapper/loop0p*
/dev/mapper/loop0p1: Linux/i386 swap file (new style), version 1 (4K pages), size 64767 pages, no label, UUID=e4990860-c87d-4850-9e8d-ecb0a0506516
/dev/mapper/loop0p2: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)

Bu noktada monte edebilirim /dev/mapper/loop0p2.

Bağlantıyı kestikten sonra kpartx -d whole_disktemizlemek için arayın .


1
+1 Bu güzel, bu aracı hiç duymadım.
Sven

Her ikisi de bu bir SvenW'nin cevabı çok iyi çalışıyor! Her ikisi de sürücü görüntüsünün içine bir bölüm takmama izin veriyor.
Joe A
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.