Tüm diskin (aygıt) görüntüsünden tek bölüm monte edin

97

Tüm diskin görüntüsünü oluşturdum

dd if=/dev/sda of=/media/external_media/sda.img

Şimdi sorun o diskte bulunan bir ext4 dosya sistemini kurmak istiyorum ama

mount -t ext4 -o loop /media/external_media/sda.img /media/sda_image

Görüntünün tüm diski (MBR, diğer bölümler) içerdiğinden, sadece ihtiyaç duyduğum bölümü içermemesi nedeniyle bir süper blok hatası veriyor. Sanırım disk görüntüsünü /dev/ klasöründe göstermek için bir yol bulmalıyım ...

Bunu nasıl yapacağını bilen var mı?

PS: Her zaman% co_de görüntüyü orijinal diske geri döndürebilirim, ancak bu çok rahatsız edici olurdu (işletim sistemini güncelledim ve olduğu gibi tutmak istiyorum)

    
sordu Nicola Feltrin 19.10.2011 18:36

7 cevap

124

Resmin bölüm düzenini alın

$ sudo fdisk -lu sda.img
...
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
...
  Device Boot      Start         End      Blocks   Id  System
sda.img1   *          56     6400000     3199972+   c  W95 FAT32 (LBA)

Ofsetin başlangıcından bölüm başlangıcına kadar olan ofseti hesaplayın

Sektör boyutu * Başla = (durumda) 512 * 56 = 28672

Uzaklığı kullanarak / dev / loop0 üzerine yerleştirin

sudo losetup -o 28672 /dev/loop0 sda.img

Şimdi bölüm / dev / loop0 konumunda bulunuyor. Fsck , yapabilirsiniz, vb.

sudo fsck -fv /dev/loop0
sudo mount /dev/loop0 /mnt

Unmount

sudo umount /mnt
sudo losetup -d /dev/loop0
    
verilen cevap arrange 19.10.2011 21:55
87

Ubuntu 16.04 Güncellemesi: Yeni losetup ile artık daha kolay:

sudo losetup -Pf disk_image.raw

Ubuntu'nun eski sürümleri için cevabın geri kalanına bakın.

Kolay bir çözüm kpartx kullanıyor: bölüm düzenini belirleyecek ve her birini bir blok aygıtına eşleyecektir. Bundan sonra yapman gereken, istediğini monte etmektir.

Terminali açın, disk görüntüsünü bulun ve şu komutu girin:

$ sudo kpartx -av disk_image.raw 
add map loop0p1 (252:2): 0 3082240 linear /dev/loop0 2048
add map loop0p2 (252:3): 0 17887232 linear /dev/loop0 3084288

Bu, loop0p1 altında loop0p2 ve /dev/mapper oluşturdu. Çıktıdan, bunları tanımlamanıza yardımcı olan bölümlerin boyutlarını görebilirsiniz. İstediğinizi monte edebilirsiniz:

$ sudo mount /dev/mapper/loop0p2 /mnt

Alternatif olarak, blok cihaz Nautilus tarafından algılanır ve onu yan çubuktan bağlayabilirsiniz:

İşiniz bittiğinde, cihaz eşleştirmesini yüklediğiniz ve çıkardığınız öğeleri kaldırın:

$ sudo umount /mnt
$ sudo kpartx -d disk_image.raw
    
verilen cevap Joni 02.10.2013 14:12
22

Düzenle : util-linux & gt; = 2.21 ile çalışır. Ubuntu yazılanlar zamanında 2.20 sürümüne sahip olanlar

Adam kaybından 'den:

       -P, --partscan
          force kernel to scan partition table on newly created loop device

Öyleyse koş.

$ sudo losetup -f --show -P /path/to/image.img

İlk kullanılmayan döngü aygıtında disk resminizin her bölümü için aygıt düğümleri oluşturmak ve bunu stdout'a yazdırmak için. % Co_de% cihazı kullanılıyorsa, her zamanki gibi monte edebileceğiniz en az /dev/loop0 oluşturacaktır.

    
verilen cevap Ludovic Ronsin 11.07.2014 19:29
6

losetup -P otomasyon

losetup -P , Ubuntu 16.04'ten başlayarak İşte de belirtildiği gibi en iyi yöntemdir. . Kullanımı:

$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2

$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there

$ sudo losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                                                                      DIO
/dev/loop1         0      0         0  0 /full/path/to/my.img

$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0

Kaynak:

los() (
  img=""
  dev="$(sudo losetup --show -f -P "$img")"
  echo "$dev"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    echo "$dst"
    sudo mkdir -p "$dst"
    sudo mount "$part" "$dst"
  done
)
losd() (
  dev="/dev/loop"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    sudo umount "$dst"
  done
  sudo losetup -d "$dev"
)

döngü modülü max_part yapılandırması

Bu, 16.04'ten önce iyi bir yöntemdir.

loop , Ubuntu 14.04'te çekirdeğe yerleştirilmiş bir çekirdek modüldür.

Doğru yapılandırırsanız, Linux otomatik olarak sizin için cihazları ayırır.

cat /sys/module/loop/parameters/max_part

, loop cihazının kaç bölüm oluşturduğunu söylüyor.

Ubuntu 14.04'te varsayılan olarak 0 'dir, bu yüzden otomatik bölünme gerçekleşmez.

Değiştirmek için şunu ekleyebiliriz:

options loop max_part=31

/etc/modprobe dosyasındaki bir dosyaya veya:

GRUB_CMDLINE_LINUX="loop.max_part=31"

/etc/default/grub ve sonra sudo update-grub .

Bir modül parametresi nasıl ayarlanır ?: Çekirdek modül parametreleri nasıl eklenir? ?

Yeniden başlatmanın ardından, yaptığınız zaman:

sudo losetup -f --show my.img

Resmi /dev/loopX cihazına bağlar ve bölümleri otomatik olarak /dev/loopXpY cihazına bağlar.

Yani yeniden başlatmaya istekli iseniz bu en uygun yöntemdir.

Ayrıca bakın

6

gnome-disk-image-mounter deneyin:

gnome-disk-image-mounter sda.img

sudo gerekli değil. Sadece USB sürücüler gibi /media/your_user_name/partition_name 'ye monte edilecektir.

    
verilen cevap Mihai Capotă 24.07.2015 00:02
4

Tüm disk görüntüsünü eklemek için losetup kullanın.

# sudo losetup /dev/loop2 sda.img

Daha sonra bir md aygıtı oluşturmak için mdadm'ı kullanın ve tüm bölümler için aygıtları engelleyin.

# sudo mdadm --build --level=0 --force --raid-devices=1 /dev/md2 /dev/loop2
mdadm: array /dev/md2 built and started.

Şimdi bölüm cihazlarını görmelisiniz.

nile-172-b0fef38-76:/mnt/sdb1 # ls -l /dev/md2*
brw-rw---- 1 root disk   9, 2 Oct 10 12:37 /dev/md2
brw-rw---- 1 root disk 259, 0 Oct 10 12:37 /dev/md2p1
    
verilen cevap Mike Bappe 10.10.2014 14:45
2

Benim düşünceme göre, en basit yol, bu yanıtta belirtildiği gibi mount -o loop,offset=... kullanıyor StackOverflow üzerinde. Fikir şu şekildedir:

fdisk -l $IMAGE
# calculate the offset in bytes
mount -o loop,offset=$OFFSET $IMAGE $MOUNTPOINT

Yöntem en iyisidir çünkü takılı bölümü umduktan sonra döngü aygıtını silmeyi gerektirmez.

Görevi daha da kolaylaştırmak için (ki bunu sık sık yaparsanız), sizin için her şeyi yapmak için mountimg komut dosyasını kullanabilirsin. Sadece İşte ’den edinin ve bunun gibi kullanın:

mountimg /media/external_media/sda.img 2 /media/sda_image

İsterseniz dosya sistemi türünü ve diğer ek mount seçeneklerini de belirtebilirsiniz:

mountimg /media/external_media/sda.img 2 /media/sda_image -t vfat -o codepage=866,iocharset=utf-8

Bölüm ile işiniz bittiğinde, umount 'si:

umount /media/sda_image
    
verilen cevap Alexander Amelkin 11.11.2016 11:13

Etiketlerdeki diğer soruları oku