PDA

Visualizza la versione completa : loop device


peppespe
26-06-2007, 17:24
Sto cercando di montare l'immagine di un pendrive (pendrive.iso) in modo tale da analizzare il suo contenuto. Per fare ciņ ho scelto di usare un loop device, senza il quale non potrei montare direttamente il file /home/giuseppe/Backup/pendrive.iso

root@giuseppe-laptop:/home/giuseppe/Backup# losetup /dev/loop0 pendrive.iso
root@giuseppe-laptop:/home/giuseppe/Backup# fdisk -l /dev/loop0

Disk /dev/loop0: 1028 MB, 1028653056 bytes
255 heads, 63 sectors/track, 125 cylinders
Units = cilindri of 16065 * 512 = 8225280 bytes

This doesn't look like a partition table
Probably you selected the wrong device.

Dispositivo Boot Start End Blocks Id System
/dev/loop0p1 ? 116388 126889 84344761 69 Sconosciuto
La partizione 1 ha diversi elementi iniziali fisici/logici (non Linux?):
phys=(68, 13, 10) logico=(116387, 225, 36)
La partizione 1 ha diversi elementi finali fisici/logici:
phys=(288, 115, 43) logico=(126888, 82, 1)
Partition 1 does not end on cylinder boundary.
/dev/loop0p2 ? 105915 222310 934940732+ 73 Sconosciuto
La partizione 2 ha diversi elementi iniziali fisici/logici (non Linux?):
phys=(371, 114, 37) logico=(105914, 175, 47)
La partizione 2 ha diversi elementi finali fisici/logici:
phys=(366, 32, 33) logico=(222309, 108, 57)
Partition 2 does not end on cylinder boundary.
/dev/loop0p3 ? 1 1 0 74 Sconosciuto
La partizione 3 ha diversi elementi iniziali fisici/logici (non Linux?):
phys=(371, 114, 37) logico=(0, 40, 54)
La partizione 3 ha diversi elementi finali fisici/logici:
phys=(372, 97, 50) logico=(0, 40, 53)
Partition 3 does not end on cylinder boundary.
/dev/loop0p4 1 213826 1717556736 0 Vuoto
La partizione 4 ha diversi elementi iniziali fisici/logici (non Linux?):
phys=(0, 0, 0) logico=(0, 0, 1)
La partizione 4 ha diversi elementi finali fisici/logici:
phys=(0, 0, 0) logico=(213825, 235, 42)
Partition 4 does not end on cylinder boundary.

Partition table entries are not in disk order

A tal proposito ho evidenziato una comunicazione ambigua, dalla quale si deduce che il file pendrive.iso non ha una partition table e che quindi probabilmente ho selezionato un dispositivo sbagliato!

Di tale "stranezza" ne ho conferma in sede di mount:

root@giuseppe-laptop:/# mount -o ro,nodev,noexec,noatime,loop,offset=957322938880 /home/giuseppe/Backup/pendrive.iso /mnt
mount: si deve specificare il tipo di filesystem
root@giuseppe-laptop:/# mount -o ro,nodev,noexec,noatime,loop,offset=957322938880 /home/giuseppe/Backup/pendrive.iso /mnt/tmp
mount: il mount point /mnt/tmp non esiste

stai_tranquillo
26-06-2007, 17:34
scusa ma questa immagine come l'hai creata?

peppespe
26-06-2007, 17:59
root@giuseppe-laptop:/# dd if=/dev/sdb of=/home/giuseppe/Backup/pendrive.iso
2009088+0 records in
2009088+0 records out
1028653056 bytes (1,0 GB) copied, 1073,52 seconds, 958 kB/s

vampirodolce
26-06-2007, 18:36
mount -o loop /home/giuseppe/Backup/pendrive.iso /mnt/usb

Mutato
26-06-2007, 18:50
1) assicurati che il mount point esista
mkdir -pv /mnt/loop/usbkey

2) dai un'occhio all'immagine tanto per vedere com'e` fatta la partition table
fdisk -ul /home/giuseppe/Backup/pendrive.iso

3) specifica il filesystem (se non hai dato vari mkfs dovrebbe essere vfat)

4) trova il tuo offset giusto

for ((i=0 ; $i < 10000 ; i=$i + 1)) ; do
mount -o loop,offset=$(($i * 512)) -t vfat /home/giuseppe/Backup/pendrive.iso /mnt/loop/usbkey && break
done

dettagli:
http://www.openclose.it/wiki/?qq=creare_e_usare_un_disco_immagine
http://edseek.com/~jasonb/articles/linux_loopback.html

:ciauz:

peppespe
26-06-2007, 19:02
Originariamente inviato da vampirodolce
mount -o loop /home/giuseppe/Backup/pendrive.iso /mnt/usb

root@giuseppe-laptop:/# mount -o loop /home/giuseppe/Backup/pendrive.iso /mnt/usb
mount: il mount point /mnt/usb non esiste

Mutato
26-06-2007, 19:05
Originariamente inviato da peppespe
mount: il mount point /mnt/usb non esiste

Punto 1 del mio intervento.

mkdir -p /mnt/usb

prima di usarlo devi crearlo il mount point!!!!!!!!!

peppespe
26-06-2007, 19:33
Originariamente inviato da Mutato
1) assicurati che il mount point esista
mkdir -pv /mnt/loop/usbkey

2) dai un'occhio all'immagine tanto per vedere com'e` fatta la partition table
fdisk -ul /home/giuseppe/Backup/pendrive.iso


root@giuseppe-laptop:/# fdisk -ul /dev/loop0

Disk /dev/loop0: 1028 MB, 1028653056 bytes
255 heads, 63 sectors/track, 125 cylinders, total 2009088 sectors
Units = settori of 1 * 512 = 512 bytes

This doesn't look like a partition table
Probably you selected the wrong device.

Dispositivo Boot Start End Blocks Id System
/dev/loop0p1 ? 1869771365 2038460886 84344761 69 Sconosciuto
La partizione 1 ha diversi elementi iniziali fisici/logici (non Linux?):
phys=(68, 13, 10) logico=(116387, 225, 36)
La partizione 1 ha diversi elementi finali fisici/logici:
phys=(288, 115, 43) logico=(126888, 82, 1)
Partition 1 does not end on cylinder boundary.
/dev/loop0p2 ? 1701519481 3571400945 934940732+ 73 Sconosciuto
La partizione 2 ha diversi elementi iniziali fisici/logici (non Linux?):
phys=(371, 114, 37) logico=(105914, 175, 47)
La partizione 2 ha diversi elementi finali fisici/logici:
phys=(366, 32, 33) logico=(222309, 108, 57)
Partition 2 does not end on cylinder boundary.
/dev/loop0p3 ? 2573 2573 0 74 Sconosciuto
La partizione 3 ha diversi elementi iniziali fisici/logici (non Linux?):
phys=(371, 114, 37) logico=(0, 40, 54)
La partizione 3 ha diversi elementi finali fisici/logici:
phys=(372, 97, 50) logico=(0, 40, 53)
Partition 3 does not end on cylinder boundary.
/dev/loop0p4 0 3435113471 1717556736 0 Vuoto
La partizione 4 ha diversi elementi iniziali fisici/logici (non Linux?):
phys=(0, 0, 0) logico=(0, 0, 1)
La partizione 4 ha diversi elementi finali fisici/logici:
phys=(0, 0, 0) logico=(213825, 235, 42)
Partition 4 does not end on cylinder boundary.

Partition table entries are not in disk order



3) specifica il filesystem (se non hai dato vari mkfs dovrebbe essere vfat)

4) trova il tuo offset giusto

for ((i=0 ; $i < 10000 ; i=$i + 1)) ; do
mount -o loop,offset=$(($i * 512)) -t vfat /home/giuseppe/Backup/pendrive.iso /mnt/loop/usbkey && break
done

Ho risolto diversamente:

root@giuseppe-laptop:/# bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1869771365*512
957322938880
quit




dettagli:
http://www.openclose.it/wiki/?qq=creare_e_usare_un_disco_immagine
http://edseek.com/~jasonb/articles/linux_loopback.html

:ciauz:

per il mount ci sono ancora problemi con il FS:

root@giuseppe-laptop:/# mount -o ro,nodev,noexec,noatime,loop,offset=957322938880 -t vfat /home/giuseppe/Backup/pendrive.iso /mnt/loop/usbke
mount: wrong fs type, bad option, bad superblock on /dev/loop1,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

Loading