Szerelje fel az egy partíciót az egész lemez képéről (eszköz)

99

A teljes lemezemről készítettem képet

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

Most a probléma az, hogy csatolhatok egy ext4 fájlrendszert, amely az adott lemezen volt, de

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

nyilvánvalóan kiváló hibát okoz, mivel a kép tartalmazza az egész lemezt (MBR, egyéb partíciók), nem csak a szükséges partíciót. Szóval úgy gondolom, meg kell találnom egy módot, hogy a lemezkép megjelenjen a/dev/ mappában ...

Tudja valaki, hogyan kell csinálni?

PS: Mindigdd visszaadhatom a képet az eredeti lemezre, de ez nagyon kellemetlen lenne (frissítettem az operációs rendszert, és szeretném megtartani, ahogy van)

    
készlet Nicola Feltrin 19.10.2011 18:36
forrás

7 válasz

126

Szerezd meg a kép partícióelrendezését

$ 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)

Számítsa ki az eltolást a kép kezdetétől a partíció kezdetéig

Szektor méret * Indítás = (ebben az esetben) 512 * 56 = 28672

Szerelje fel a / dev / loop0 az offset használatával

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

Most a partíció a / dev / loop0 -ben található. fsck , mount stb.

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

Leválasztás

sudo umount /mnt
sudo losetup -d /dev/loop0
    
válasz adott arrange 19.10.2011 21:55
forrás
89

Az Ubuntu 16.04 frissítése: Az újlosetup -kal ez most könnyebb:

sudo losetup -Pf disk_image.raw

Nézze meg a válasz többi részét az Ubuntu korábbi verzióihoz.

Egy könnyű megoldás a kpartx használatával: meg fogja találni a partíció elrendezését és térképet egy blokkeszközön. Ezután mindössze annyit kell tennie, amire szüksége van.

Nyissa meg a terminált, keresse meg a lemezképet, és írja be ezt a parancsot:

$ 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

Ez aloop0p1 ésloop0p2 alatt/dev/mapper -ot hozott létre. A kimenetről láthatja a partíciók méretét, amelyek segítenek azonosítani őket. A következőket csatlakoztathatja:

$ sudo mount /dev/mapper/loop0p2 /mnt

Alternatív megoldásként a blokkeszközt a Nautilus észleli, és az oldalsávról is felveheti:

Ha elkészült, szüntesse meg, hogy mit telepített, és távolítsa el az eszköz leképezését:

$ sudo umount /mnt
$ sudo kpartx -d disk_image.raw
    
válasz adott Joni 02.10.2013 14:12
forrás
22

Szerkesztés : util-linux > = 2.21 működik. Abban az időben, amikor csak az 2.20 verziót írta az ubuntu hajókra

A férfi losetup -től:

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

Tehát csak indítsd

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

eszköz-csomópontokat hoz létre a lemezkép minden egyes partíciójára az első nem használt hurokeszközön, és kinyomtatja a stdout-ra. Ha/dev/loop0 eszközt használ, legalább/dev/loop0p1 -ot hoz létre, amelyet a szokásos módon fel tudsz szerelni.

    
válasz adott Ludovic Ronsin 11.07.2014 19:29
forrás
7

Próbálja ki agnome-disk-image-mounter:

elemet
gnome-disk-image-mounter sda.img

Nincssudo szükséges. Telepítve lesz a/media/your_user_name/partition_name -ra, mint az USB-meghajtók.

    
válasz adott Mihai Capotă 24.07.2015 00:02
forrás
6

losetup -P automatizálás

Alosetup -P a legjobb módszer, amely az Ubuntu 16.04-ben kezdődik, amint azt a hivatkozás említi, itt vannak olyan funkciók, amelyek automatizálhatók, ha további . Használat:

$ 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

Forrás:

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"
)

hurokmodul max_part config

Ez egy tisztességes módszer 16.04 előtt.

Aloop egy kernelmodul, amelyet az Ubuntu 14.04 rendszermagba építettek.

Ha helyesen konfigurálja, a Linux automatikusan felosztja az Ön eszközeit.

cat /sys/module/loop/parameters/max_part

azt mondja, hogy hány partícióloop eszköz generálhat.

Az Ubuntu 14.04 alapértelmezés szerint0, ezért nem történik automatikus megosztás.

A változtatáshoz hozzáadhatunk:

options loop max_part=31

a/etc/modprobe, vagy:

fájlra
GRUB_CMDLINE_LINUX="loop.max_part=31"

a következőre:/etc/default/grub, majdsudo update-grub.

A modulparaméter beállítása a következő címen található: A rendszermag modul paramétereinek hozzáadása ?

Az újraindítás után:

sudo losetup -f --show my.img

felveszi a képet egy/dev/loopX eszközre, és automatikusan felveszi a partíciókat a/dev/loopXpY eszközökre.

Tehát ez a legalkalmasabb módszer, ha hajlandó újraindítani.

Lásd még

forrás
4

Használja a losetupot az egész lemezkép csatolásához.

# sudo losetup /dev/loop2 sda.img

Akkor használja az mdadm-ot egy md eszköz létrehozásához, és blokkeszközöket hoz létre az összes partícióhoz.

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

Most látni kell a partíciós eszközöket.

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
    
válasz adott Mike Bappe 10.10.2014 14:45
forrás
2

A legegyszerűbb mód amount -o loop,offset=... használatával a ebben a válaszban a StackOverflowon . Az ötlet a következő:

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

A módszer a legjobb, mert nem szükséges törölni a hurokeszközt a felcsatolt partíció feloldása után.

A feladat egyszerűsítéséhez (ami gyakran szükséges, ha gyakran csinálod), amountimg szkriptet használhatod, hogy mindent megteszek az Ön számára. Kapja meg a linket és így használja:

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

Lehet, hogy megadja a fájlrendszer típusát és bármely más kiegészítő opciót, ha tetszik:

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

Ha befejezte a partíciót, egyszerűen csakumount it:

umount /media/sda_image
    
válasz adott Alexander Amelkin 11.11.2016 11:13
forrás