Bir sabit sürücünün / bin / dd ile oluşturulmuş bir “img” yi nasıl bağlarım?


19

Kullandığım ddyedekleme a 80GB sürücüye

dd if=/dev/sdb of=~/sdb.img

Şimdi bu sürücüdeki bazı dosyalara erişmem gerekiyor, ancak ".img" dosyasını sürücünün üzerine kopyalamak istemiyorum.

mount ~/sdb.img /mnt/sdbçalışmıyor. Döndürür:

mount: you must specify the filesystem type

İle dosya sistemi türünü bulmaya çalıştım file -s

fox@shoebox $ file -s sdb.img
sdb.img: x86 boot sector; partition 1: ID=0x12, starthead 1, startsector 63, 10233342 sectors; partition 2: ID=0xc, active, starthead 0, startsector 10233405, 72517410 sectors; partition 3: ID=0xc, starthead 0, startsector 82750815, 73545570 sectors, code offset 0xc0

Takmak mümkün mü sdb.imgyoksa ddsürücüyü geri yüklemek için mi kullanmalıyım ?

Yanıtlar:


27

Kullandığınızda ddüzerinde /dev/sdbyerine /dev/sdb1ya /dev/sdb2, kopyalamak tüm bölümleri içine sözü sürücüden biri dosyası.

Her bölümü ayrı ayrı monte etmelisiniz.


To montaj bir bir bölüm dosyası , önce nerede bölümü kahntılannin bu dosyada öğrenmek zorundadır.

Adresinin çıkışı kullanarak file -s sdb.imgbulduğumuz startsectorsher bölüm için:

sdb.img: x86 önyükleme sektörü; bölüm 1 : ID = 0x12, yıldız başı 1, başlangıç ​​63 , 10233342 sektörleri; bölüm 2 : ID = 0xc, aktif, yıldız başı 0, başlangıç ​​10233405 , 72517410 sektörleri; bölüm 3 : ID = 0xc, yıldız başı 0, başlatıcı 82750815 , 73545570 sektörleri, kod ofseti 0xc0

Bölüm      Başlatıcı
1 63
2 10233405
3 82750815

Tek bir bölüm, monte etmek X olduğunu startsector o bölüm çalışmasının:

mount ~/sdb.img /mnt/sdb -o offset=$((X*512))

İkinci bölümü monte etmek için , şunu çalıştırmanız gerekir:

mount ~/sdb.img /mnt/sdb2 -o offset=$((10233405*512))

sidenote:/mnt/sdb2 bunu çalıştırmadan önce var olduğundan emin olun .

İyi eğlenceler!


Güncelleme: Cevapta, sizin için sektör boyutunun imajı olduğunu varsaydım 512, lütfen bunu nasıl hesaplayacağınızla ilgili bu soruya bakın .


Ayrıca, sorularınızı yanıtında belirtildiği şekilde kullanarak yeni başlayanlara tablo biçiminde de ulaşabilirsiniz file -l sdb.img: unix.stackexchange.com/questions/2668/…
öğrenci

@student: Gelecekteki okuyucuları için sadece bir düzeltme: Bu olurdu fdisk -ldeğil file -l.
Runium

Daha fazla açıklama - bu komuta -u seçeneğini ekleyerek 512 bayt sektör sayısını elde edebilirsiniz - bu yüzdenfdisk -u -l sdb.img
Aaron Mason

Sürümünüz varsa filevarsayılan olarak daha az konuşkan, eklemeyi deneyin -kcevap gösterilen çıkışın çeşidini almak için anahtarı - böyle: file -k FILENAME.img.
Christian Pietsch

7

Linux'ta kabul edilen cevap içindeki mount komutları dolaylı olarak bir döngü cihazı oluşturur. Tam disk görüntüsünün doğru bir bölüm tablosu olduğunu varsayarsak (çekirdeğiniz anlayabiliyor), losetup(8)ofsetleri hesaplama zahmetinden tasarruf etmek için doğrudan kullanmayı tercih edebilirsiniz . Ayrıca kpartxbaşka bir cevapta önerildiği gibi ekstra araçlara gerek yoktur . Temel olarak aşağıdakilerle aynı şeyi yapacak:

losetup -Prf sdb.imgilk boş döngü aygıtını ( -f) salt okunur ( -r) olarak resim dosyasıyla ilişkilendirir sdb.img. -PSeçenek kuvvetleri çekirdek bu döngü cihazının bölüm tablosunu taramak ve her bölüm için döngü cihazları yaratacaktır.

Yani şöyle bir şey elde edebilirsiniz:

$ lsblk
NAME      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0       7:0    0 167.7G  1 loop
├─loop0p1 259:0    0   500M  1 loop
└─loop0p2 259:1    0 167.2G  1 loop
...

Artık her bir bölümü, tabii ki, istenen bir bağlama noktasına monte edebilirsiniz.

$ mount -r /dev/loop0p1 /tmp/backup_sdb1

Her şeyi salt okunur tutmak isteğe bağlıdır, ancak yedek bir resim için iyi bir şey olabilir.

update: 2012 -Pyılında util-linux-2.21 ile seçenek eklendi . Bu nedenle, kabul edilen cevap yazıldığı sırada mevcut değildi. Ayrıca bunu ve diğer cevapların linux'a özgü olduğunu unutmayın. OpenBSD ve NetBSD tarafından yönetilen vnode diskleri vnconfig(8)ve FreeBSD tarafından yönetilen bellek diskleri vardır mdconfig(8).


2

Alternatif olarak, adlı güzel bir araç kullanabilirsiniz kpartx. Man sayfasından:

kpartx - Bölüm tablolarından aygıt haritaları oluşturma

Bu, doğrudan img dosyasından cihaz bölümleriyle bir "sözde cihaz" yapabileceğiniz anlamına gelir:

$ kpartx -av sdb.img
add map loop0p1 (254:2): 0 2048 linear /dev/loop0 0
add map loop0p2 (254:3): 0 31162 linear /dev/loop0 2048
$ lsblk
.
.
.
loop0                     7:0    0  16.2M  0 loop
├─loop0p1               254:2    0     1M  0 part
└─loop0p2               254:3    0  15.2M  0 part

Ardından /dev/mapper/loop0p2, örneğin görüntü üzerinde ikinci bölüm istiyorsanız, örneğin monte edebilirsiniz .

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.