dd-s image mountolása

Fórumok

Üdv!

Nem akarok láma kérdéseket feltenni, de már öregszek.
Egy komplett(!) hdd lett dd-vel image-be lementve. (if=/dev/hda)
Eddig ok. De azon a hdd-n több partició is van.
Na azokat hogy kell mountolni, particiónként ?

Tilla

Hozzászólások

lasd: `man mount`, "the loop device", offset opcio. az `fdisk` progival meg ki tudod irattatni az offset-eket magukat (/sbin/fdisk -l /ide/mentetted/a/hda.t)

Upsz tényleg nem olyan egyszerű, bár kpartx tényleg egyszerűvé tenné csak nekem nem akarja létrehozni az eszközt a mapper alatt...

Aztán olvastam:
map partitions from whole disk image in file
losetup /dev/loop0 file
kpartx -a /dev/loop0
and partitions are accessible in /dev/mapper/loop0p1,p2,...
és működik:


xen:/tmp/a# dd if=/dev/zero of=./a.img bs=1M count=1 seek=100
1+0 beolvasott rekord
1+0 kiírt rekord
1048576 bájt (1,0 MB) másolva, 0,00392722 mp, 267 MB/mp
xen:/tmp/a# losetup /dev/loop0 ./a.img 
xen:/tmp/a# fdisk -l /dev/loop0 

/dev/loop0 lemez: 105 MB, 105906176) bájt
255 fej, 63 szektor, 12 cilinder
Egység: cilinderek 16065 * 512 = 8225280 bájt
Lemezazonosító: 0x00000000

A(z) /dev/loop0 lemez nem tartalmaz érvényes partíciós táblát
xen:/tmp/a# 

xen:/tmp/a# cat ./a.MBR 
# /dev/loop0 partíciós táblája
unit: sectors

/dev/loop0p1 : start=       63, size=   160587, Id=83, bootable
/dev/loop0p2 : start=   160650, size=    32130, Id=82
/dev/loop0p3 : start=        0, size=        0, Id= 0
/dev/loop0p4 : start=        0, size=        0, Id= 0
xen:/tmp/a# 


xen:/tmp/a# sfdisk /dev/loop0 < ./a.MBR 
Ellenőrzésre kerül, hogy pillanatnyilag senki sem használja a lemezt...
BLKRRPART: Érvénytelen paraméter
Rendben
/dev/loop0 lemez: nem kérhető le a geometria

/dev/loop0 lemez: 12 cilinder, 255 fej, 63 szektor sávonként
Régi helyzet:
Egység = 8225280 bájtos cilinderek, 1024 bájtos blokkok, kezdősorszám: 0

  Eszköz Indítás Kezdet Vége    #cill    #blokk   Az  Rendszer
/dev/loop0p1   *      0+      9      10-     80293+  83  Linux
/dev/loop0p2         10      11       2      16065   82  Linux lapozó / Solaris
/dev/loop0p3          0       -       0          0    0  Üres
/dev/loop0p4          0       -       0          0    0  Üres
Új helyzet:
Egység = 512 bájtos szektorok, kezdősorszám: 0

  Eszköz Indítás Kezdet      Vége   #szektor  Az Rendszer
/dev/loop0p1   *        63    160649     160587  83  Linux
/dev/loop0p2        160650    192779      32130  82  Linux lapozó / Solaris
/dev/loop0p3             0         -          0   0  Üres
/dev/loop0p4             0         -          0   0  Üres
Az új partíciós tábla sikeresen kiírva

A partíciós tábla újraolvasása ...
BLKRRPART: Érvénytelen paraméter

Ha DOS partíciót hozott létre vagy módosított, például: /dev/foo7, akkor
használja a dd(1) parancsot az első 512 bájt kinullázáshoz:
dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(Nézze meg az fdisk(8) kézikönyvoldalt)
xen:/tmp/a# 

xen:/tmp/a# losetup /dev/loop0 ./a.img 
xen:/tmp/a# kpartx -a /dev/loop0
xen:/tmp/a# ls -la /dev/mapper/
control         loop0p1         loop0p2
xen:/tmp/a# 

xen:/tmp/a# mke2fs -j /dev/mapper/loop0p1
mke2fs 1.41.3 (12-Oct-2008)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
20080 inodes, 80292 blocks
4014 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
10 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729

Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
xen:/tmp/a# 
xen:/tmp/a# mount /dev/mapper/loop0p1 ./p1
xen:/tmp/a# ls -la ./p1
összesen 17
drwxr-xr-x 3 root root  1024 márc  9 03.20 .
drwxr-xr-x 4 root root  4096 márc  9 03.19 ..
drwx------ 2 root root 12288 márc  9 03.20 lost+found
xen:/tmp/a# 

xen:/tmp/a# umount ./p1
xen:/tmp/a# kpartx -d /dev/loop0
xen:/tmp/a# losetup -d /dev/loop0
xen:/tmp/a# 

Ezzel az offsetezéssel az az icipici bibi, hogy az elejét megadod, de a végét nem. Tehát korrupt fájlrendszer esetén elképzelhető, hogy túlír a partíció végén, bele a következő partícióba, ami rendes /dev/hdaN-et csatolva nem történhet meg.

Valszeg sorx lenti megoldása a teljesen korrekt, azt eddig nem ismertem, de úgy fest, hogy valami vadiúj kernel feature-t használ, ami pont erről szól. (Ja, és a linkelt komment 2.6.26-ot akart említeni 2.2.26 helyett, ha jól sejtem. Tippem szerint util-linux-ból is viszonylag friss verzió szükségeltetik.)

Egy másik lehetőség:

1) leállítod a működő loop eszközöket, ha vannak
2) rmmod loop
3) modprobe loop max_part=63
4) losetup -f disk.img

Ha a max_part=63 opcióval rántod be a loop modult, akkor az losetup kiadásakor létrejönek a partícióknak megfelelő eszközök /dev/loop0p1 -től /dev/loop0p4 -ig, vagy amennyi partíciót talált a disk image-ben a loop modul.

5) mount /dev/loop0p1 dir1

Forrás itt. Keresd a kommentek végén.

---Sorx