Linux'ta çok bölümlü bir disk görüntüsünü nasıl bağlarım?


22

İki bölmeli ham bir SD kart görüntüsü indirdim.

Doğrudan bir SD karta dd çalışırken bazı dosya sistemi hataları neden oldu. Kartın arızalı mı yoksa görüntü mü olduğundan emin değilim.

Bu görüntüyü fiziksel karta yazmadan incelemenin bir yolu var mı? Bölmeleri ayrı monte etmeye çalışmak veya tabloları kontrol etmek gibi mi?

Yanıtlar:


18

Görüntüdeki bölümler için döngü aygıtları oluşturmak için kpartx veya partx'i kullanabilir ve sonra bunları monte edebilirsiniz. Bu yüzden ya:

$ sudo kpartx -v -a file.iso
add map loop0p1 (253:17): 0 8382464 linear 7:1 2048
$ mount /dev/mapper/loop0p1 ./mnt_point
...  do something with the partition  ...
$ umount ./mnt_point
$ kpartx -d -v file.iso
del devmap : loop0p1
loop deleted : /dev/loop0

veya:

$ sudo partx -a -v file.iso
partition: none, disk: file.iso, lower: 0, upper: 0
Trying to use '/dev/loop0' for the loop device
/dev/loop0: partition table type 'dos' detected
range recount: max partno=1, lower=0, upper=0
/dev/loop0: partition #1 added
$ mount /dev/loop0p1 ./mnt_point
...  do something with the partition  ...
$ umount /dev/loop0p1 ./mnt_point
$ sudo partx -d -v /dev/loop0
partition: none, disk: /dev/loop0, lower: 0, upper: 0
/dev/loop0: partition #1 removed

Ayrıca bkz. Bir disk görüntüsünü nasıl bağlayabilirim?


Teşekkürler @ frank-breitling. Düzenleme onu elde etme şansım olmadan yorumcular tarafından reddedildi.
Catskul

13

losetup -Pf util-linux içinde> = 2.21 (Ubuntu 16.04)

sudo losetup -Pf disk.img
sudo mkdir /mnt/loop0p1
sudo mount /dev/loop0p1 /mnt/loop0p1

Bkz losetup (8) man ve ayrıca https://askubuntu.com/questions/69363/mount-single-partition-from-image-of-entire-disk-device/673257#673257

losetup -P otomasyon

İşte daha fazla otomatikleştirmek için fonksiyonlar. 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="$1"
  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$1"
  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"
)

1

Deneyebilirsin:

mount -t tipi -o döngü. / imge / mnt

burada "type" = fs type ve "image" indirilen dosyanızın adıdır


3
Bunun hakkında düşünmek, birden fazla bölüm içeren bir görüntüyle çalışmayabilir.
Tog,

2
"mount -o loop, ro, offset = XXXXXXXX imagefile / mnt" gibi bir
öğeyle

1
Losetup bir mahsup belirtmek için çalışmaz mı?
16:10

Belirleyebileceğiniz losetup'ın bir basitçe mount / dev / loopX / mnt ile monte edilebilen bir döngü cihazı oluşturmak için bölüm ofset ile sen ... haklısın
Bay Shunz

1

ServerFault'daki bu cevap şunları öneriyor:

/ dev / loop almak için losetup kullanılır mı? daha sonra, görüntü dosyasındaki bölümler için dev eşlemeleri oluşturmak üzere üzerinde kpartx kullanın.

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.