23.4.2014

foto Petr Bravenec

Petr Bravenec
Twitter: @BravenecPetr
+420 777 566 384
petr.bravenec@hobrasoft.cz

Zařízení loop používám při práci s Linuxem už dlouhé roky. Zařízení loop je šikovné, pokud potřebuji přimontovat do systému například ISO obraz CD-ROM - ale to je věc, která je dnes už trochu mimo.

Dnes jsem narazil na jiné použití zařízení loop. Pro jednoho zákazníka vytvářím instalační USB disk. Z disku se nabootuje a spustí instalační disk. Celý disk jsem si připravil přímo na flash disku, který jsem předal zákazníkovi. U sebe na disku jsem si nechal jen obraz vytvořený příkazem dd:

dd if=/dev/sde of=instalacni-flash.img

Když jsem potřeboval cosi změnit, automaticky jsem namontoval soubor přes zařízení loop:

losetup /dev/loop instalacni-flash.img

a zjistil jsem, že nevím, jak namontovat první oblast na takovém disku. Fdisk mi prozradil nějaké informace:

# fdisk -l /dev/loop0 

Disk /dev/loop0: 2 002 MB, 2 002 780 160 bajtů, 3 911 680 sektorů
Jednotky = sektorů po 1 * 512 = 512 bajtech
Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů
Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů
Identifikátor disku: 0xe5837737

 Zařízení Zavádět   Začátek       Konec    Bloky    Id  Systém
/dev/loop0p1   *        2048     3911679     1954816   83  Linux

Ale zařízení /dev/loop0p1 neexistuje. Malé pátrání na internetu mi prozradilo řešení. Příkaz mount dokáže použít zařízení až od určité vzdálenosti od začátku media - zde potřebuji posunout montovanou oblast o 2048 jednotek dál od začátku media. Příkaz mount to potřebuje v bajtech. Potřebnou velikost jednotky najdeme na řádku

Jednotky = sektorů po 1 * 512 = 512 bajtech

Velikost je zde 512 bajtů.

Potřebný posun najdeme na řádku

/dev/loop0p1   *        2048     3911679     1954816   83  Linux

Zde je posun 2048 jednotek, vynásobeno velikostí jednotky vychází posun 1048576 bajtů. Můžeme montovat:

mount -t ext4 -o offset=1048576 /dev/loop0 /mnt

Po ukončení práce je potřeba soubor odmontovat a odpojit od zařízení loop:

umount /mnt
losetup -d /dev/loop0
Hobrasoft s.r.o. | Kontakt