Dd ile oluşturulan sd kart görüntüsü nasıl monte edilir?


21

Raspberry Pi SD kartımın bir görüntüsünü kullanarak şunları oluşturdum dd:

sudo dd if=/dev/sdf of=/home/myusername/raspberry-backup-2014-04-10.img

SD kartta, kartı taktığımda otomatik olarak monte edilen iki bölüm (bir vfat, bir ext4) var.

Sorum: Bu bölümleri .img dosyasından nasıl bağlayabilirim?


Daha fazla detay:

$ fdisk -l raspberry-backup-2014-04-10.img 

Disk raspberry-backup-2014-04-10.img: 3974 MB, 3974103040 bytes
255 heads, 63 sectors/track, 483 cylinders, total 7761920 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: 0x000981cb

                          Device Boot      Start         End      Blocks   Id  System
raspberry-backup-2014-04-10.img1            8192      122879       57344    c  W95 FAT32 (LBA)
raspberry-backup-2014-04-10.img2          122880     7761919     3819520   83  Linux

Görüntüyü SD karta yazmadan monte etmek ister misiniz?
OrangeTux

Evet, .img dosyasında kayıtlı dosya sistemine tam erişime sahip olmak istiyorum, böylece kopyalayabilir / değiştirebilir / silebilirim / vb. SD kart olmadan dosyalar
MrD

Belki bu soru size yardımcı olur.
OrangeTux

Ne yazık ki bu işe yaramıyor, her iki denemeyi de denedi. Bunlardan ilki / dev / loop0p1 cihazını yaratmadı. İkincisi (buna göre başlangıç ​​noktasını hesapladım) bir wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other errorsorun
çıkardı

Ayrıca, sudo fdisk -l /dev/loop0iddialar: Disk / dev / loop0 geçerli bir bölüm tablosu içermiyor.
MrD

Yanıtlar:


33

Her bölüm için ayrı görüntüler oluşturma ihtiyacını önlemek veya benzeri bir yardımcı program yüklemek için , komutta kpartxbir belirterek her bölümü ayrı ayrı monte edebilirsiniz .offsetmount

İlk önce görüntü dosyasındaki bölümleri inceleyin ve aşağıdakileri kullanarak ofseti belirleyin fdisk:

$ fdisk -u -l rpi_image280914 

Disk rpi_image280914: 16.0 GB, 16012804096 bytes
255 heads, 63 sectors/track, 1946 cylinders, total 31275008 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: 0x000cdac7

           Device Boot      Start         End      Blocks   Id  System
rpi_image280914p1   *        2048      514047      256000    c  W95 FAT32 (LBA)
rpi_image280914p2          540672    31242239    15350784   83  Linux

İstediğiniz Startbölümün sektörünü alın ve bu değeri Unitsboyuta göre çarpın . Yani ikinci bölümü istiyorsan anlayacaksın 540672 * 512 = 276824064.

Şimdi bir klasör oluşturun ve bölümü bağlayın:

mkdir rpi_partition2
sudo mount -o loop,offset=276824064 rpi_image280914 rpi_partition2/

Bölüm verileriyle ne yapmak istediğinizi tamamladıktan sonra:

sudo umount rpi_partition2/
rm -r rpi_partition2/

17

Bazı ilave testlerden sonra çözümü kendim buldum: kpartx

sudo kpartx -a raspberry-backup-2014-04-10.img

Bu komut /dev/mapper/loop0p1ve oluşturuldu /dev/mapper/loop0p2. Daha sonra bu bölmeler doğrudan öne monte edilebilir:

sudo mount -o rw -t ext4 /dev/mapper/loop0p2 mount_target/

1

Amacınız bir bölümün içeriğini (dosya sistemi) araştırmak veya değiştirmek ise, bu komut satırı sd kartının dosya sistemini my_sdcard_dump.img dosyasını mount_dir dizinine yerleştirecektir .

part_id=2; INFILE=my_sdcard_dump.img; MOUNTPT=mount_dir PARTITION=${part_id}; sudo mount "$INFILE" "$MOUNTPT" -o loop,offset=$[ `/sbin/sfdisk -d "$INFILE" | grep "start=" | head -n $PARTITION | tail -n1 | sed 's/.*start=[ ]*//' | sed 's/,.*//'` * 512 ]

0

Birden fazla bölüme sahip bir diskin görüntüsüyle uğraşmak oldukça zordur . Linux, bir geridöngü cihaza takılı olsa bile, bir bölüm tablosunu normal bir dosyadan okumak için tasarlanmadı, bu yüzden bölümlerin ofsetlerini dikkatlice tanımlamanız ve bunları mountkomuta geçirmeniz gerekir .

Tercih edilen yol, her bölümden ayrı görüntüler oluşturmaktır:

sudo dd if=/dev/sdf1 of=/home/myusername/raspberry-backup-sdf1-2014-04-10.img
sudo dd if=/dev/sdf2 of=/home/myusername/raspberry-backup-sdf2-2014-04-10.img

Artık bu dosyaları kolayca bir disk üzerinde ayrı bölümlermiş gibi ele alabilir, normalde gerçek bir disk bölümü gibi bağlayarak bunları bir döngü aygıtına eşleştirebilirsiniz . Döngü aygıtı veya geri döngü aygıtı, bir dosyayı blok aygıt olarak değerlendirmek için Linux için bir çeviri katmanı sağlayan sanal bir aygıttır (disk veya bölüm gibi).

Döngü cihazları genellikle /dev/loop0geçer /dev/loop8. Kullanılmayan bir döngü cihazını şu losetupkomutla tanımlayın :

$ sudo losetup /dev/loop0
loop: can't get info on device /dev/loop0: No such device or address

Bu yanıt atanmamış bir döngü cihazını gösterir. Artık loop aygıtını görüntü dosyalarımızdan birine atayabiliriz:

$ sudo losetup /dev/loop0 /home/myusername/raspberry-backup-sdf1-2014-04-10.img

Bu komuttan çıkışın olmaması başarıyı gösterir. Şimdi /dev/loop0, çoğu amaç için işlevsel olarak /dev/sdf1SD kartınıza eşdeğerdir ve normalde yaptığınız gibi takabilirsiniz:

sudo mount -t vfat /dev/loop0 /media/sdimage-1

Diğer bölümü monte etmek için başka bir döngü cihazı kullanarak işlemi tekrarlayın. İşiniz bittiğinde, dosya sistemlerini çıkarın ve döngü aygıtlarını atayın:

sudo umount /dev/loop0
sudo losetup -d /dev/loop0

İki resim dosyası oluşturmaktan kaçınmak istiyorum, çünkü - diğer küçük nedenlerin yanı sıra - resmi SD kartlarını başlatmak için kullanabilmeleri için başkalarına da dağıtmak istiyorum. Bu nedenle, / boot vs. gibi farklı bölümler bir dosyada olmalıdır.
MrD
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.