Portál AbcLinuxu, 10. května 2025 16:43

Dotaz: Připojení image souboru

20.11.2010 20:52 irobot
Připojení image souboru
Přečteno: 873×
Odpovědět | Admin

Snažím se o připojení obrazu SD karty. Mám ho v image.bin souboru.

Info o souboru:

$ file image.bin
image.bin: x86 boot sector, code offset 0x3c, OEM-ID "MSWIN4.1", 
sectors/cluster 64, reserved sectors 6308, Media descriptor 0xf8, heads 255, 
sectors 7720832 (volumes > 32 MB) , FAT (32 bit), sectors/FAT 942, 
reserved3 0x800000, serial number 0x74c022ac, label: "           "

Připojím ho jako blokové zařízení:

$ sudo losetup -o $((63 * 512)) /dev/loop0 image.bin

Mountnu ho:

$ sudo mount /dev/loop0 ~/image -t vfat

Problém je, že dostávám v dmesg:VFS: Can't find a valid FAT filesystem on dev loop0. Image file je ok. Protože když ho přes dd nakopíruju na sd kartu, kterou připojím tak normálně funguje. Co mi vrtá hlavou je, jak zjistit startsector. Našel jsem podobný příklad kde byl sektor 63 (proto ten $((63 * 512))). Bohužel to nejde ani bez -o $((63 * 512)).


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.11.2010 21:19 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Připojení image souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Problém je zda tam máš nebo nemáš udělané oddíly, zda je tam MBR a tabulka oddílů a nebo je to pouze bez oddílů, podle toho se musíš začít na správném začátku.
20.11.2010 22:35 irobot
Rozbalit Rozbalit vše Re: Připojení image souboru
Odd9lz tam nejsou - je to obray SD Karty. No MBR je v prvním sektoru ne? Z něj to vypisuje "x86 boot sector, code offset 0x3c, OEM-ID "MSWIN4.1"". Já právě nevím jak ten offset zjistit.
20.11.2010 22:57 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Připojení image souboru
No když tam oddíly nejsou tak offset 0. (pokud jsi skutečně udělal fs od 0)
20.11.2010 23:16 irobot
Rozbalit Rozbalit vše Re: Připojení image souboru
Jasně, že udělal a potom dokonce nahrál na SD kartu, která funguje.

Pokud nezadám offset, dmesg vypíše toto:

FAT: bogus number of reserved sectors
VFS: Can't find a valid FAT filesystem on dev loop0.

Špíš to vypadá jako by to byl poškozený FAT32. Jenže na SD kartě to normálně jede, tak nevím.

20.11.2010 23:56 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Připojení image souboru
No tak nemá být offset 1 ? (přeskočení prvního sektoru)

Nevím nemám to jak vyskoušet.
22.11.2010 00:19 irobot
Rozbalit Rozbalit vše Re: Připojení image souboru
S offsetem 512B (1 sektor) to taky nefunguje stejna chyba. Nejspíše je ten souborový systém nějak podělaný, že funguje na SD kartě, ale Linux ho neumí načíst přes mount.
22.11.2010 10:06 chrono
Rozbalit Rozbalit vše Re: Připojení image souboru
V nejakom hexaeditore (prípadne v MidnightCommander) pozri, kde presne je ten reťazec "MSWIN4.1" (ak sa nemýlim, tak by mal byť 3 bajty za 512 bajtovou hranicou a práve tam sa potom začína ten FAT32 oddiel).
24.11.2010 23:00 irobot
Rozbalit Rozbalit vše Re: Připojení image souboru
Je 3 bajty od začátku. Takže FAT32 začíná od offsetu 0, protože SD karta nemá oddíly.
24.11.2010 23:08 chrono
Rozbalit Rozbalit vše Re: Připojení image souboru
V takom prípade by malo fungovať mount image.bin ~/image -o loop -t vfat
24.11.2010 23:21 irobot
Rozbalit Rozbalit vše Re: Připojení image souboru
Funguje! Ale nechápu jak to. Když jsem to zkoušel před 2 dny tak to nešlo.

Jediná změna byla, že jsem restartoval pc a taky jsem dnes jsem nainstaloval updaty. Po nainstalování jsem to zkusil a funguje, že by nějaký update? Moc se mi tomu nechce věřit. Ale hlavní je, že to funguje. Díky za podporu!
22.11.2010 09:39 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Připojení image souboru
A když přimountujete tu kartu, jak se jmenuje zařízení, které se přimountuje? Je to celý disk (např. /dev/sdb) nebo oddíl (např. /dev/sdb1)?
Jendа avatar 20.11.2010 21:36 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Připojení image souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co říká fdisk -l na ten obraz?
20.11.2010 22:31 irobot
Rozbalit Rozbalit vše Re: Připojení image souboru
fdisk říká tohle:

fdisk -l image.bin
You must set cylinders.
You can do this from the extra functions menu.

Disk image.bin: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

    Device Boot      Start         End      Blocks   Id  System
20.11.2010 21:56 MMichal | skóre: 21
Rozbalit Rozbalit vše Re: Připojení image souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkuste partx nebo kpartx
20.11.2010 22:41 irobot
Rozbalit Rozbalit vše Re: Připojení image souboru
$ sudo partx -l /dev/loop0
HDIO_GETGEO: Inappropriate ioctl for device
22.11.2010 15:39 MMichal | skóre: 21
Rozbalit Rozbalit vše Re: Připojení image souboru
A kpartx ?
21.11.2010 00:10 Atrament
Rozbalit Rozbalit vše Re: Připojení image souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
IMHO je tam to losetup nadbytečné, zkusil bych to mountnout

sudo mount -o loop image.bin ~/image

21.11.2010 00:52 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Připojení image souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ještě bych zkusil
$ sudo mount /dev/loop0 -o loop ~/image -t vfat
a nebo jak říká Atrament pouze mount.
21.11.2010 01:12 chrono
Rozbalit Rozbalit vše Re: Připojení image souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Skopíroval som si pár sektorov aj s MBR z flash pamäte a program file píše mierne iné informácie, ak som potom vymazal začiatok a nechal som tam len prvý oddiel, tak sa mi zobrazovali rovnaké informácie ako tebe (takže ten disk asi nemáš rozdelený na oddiely a súborový systém máš na celom disku; v takom prípade by malo fungovať klasické mount image.bin ~/image -o loop -t vfat; teda aspoň mne to tak funguje).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.