Portál AbcLinuxu, 30. dubna 2025 09:10
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
Originál blogu vychází zde: http://www.hobrasoft.cz/cs/blog.
Tiskni
Sdílej:
Co se týče obrazů CD, tak celkem věřím nástrojům jako je ark, mc nebo k3b. Největší pravděpodobnost selhání je stejně při tom vypalování – to CD, které vytáhneš ze šuplíku to má už za sebou, nebo je čočka ve vypalovačce po letech nepoužívání zaprášená a CD se ani nevypálí nebo pak nejde přečíst.
Vzhledem k tomu, že CDemu má emulovat optickou mechaniku, tak bych tipoval, že ne.
Ale na té disketě asi nebude žádná tabulka oddílů, ale rovnou systém souborů. Jaký? Nějaká stará FATka? To by mělo jít normálně připojit.
fuseiso
poslouží pro připojení ISO obrazu stejně dobře, navíc nepotřebuje správcovská práva. :)
mount
umí volby loop
a offset
. První z nich se používá k připojování souborů právě abys nemusel přímo volat losetup
, druhý z nich vidím že používáš. Pokud vím, tak fdisk
zvládá pracovat i přímo se souborem.
Zařízení loop jsem přímo nemusel vytvářet snad nikdy, leda cvičně (asi jsem příliš mladý a začal jsem mount
používat v době, kdy už loopback uměl).
Používal jsem volbu offset
u mount
u, který pak loopback zařízení sám vytvoří. začátek oddílu se zjistí jedním příkazem:
parted soubor.img unit b print
Parted se podívá rovnou do souboru, není potřeba ručně připojovat loopback ani nic násobit.
To je takový klasický postup. Ještě lepší je použít nástroj kpartx
, který si tu tabulku oddílů načte a podle ní vytvoří příslušná zařízení pro jednotlivé oddíly.
Ještě lepší je použít nástroj kpartx, který si tu tabulku oddílů načte a podle ní vytvoří příslušná zařízení pro jednotlivé oddíly.To už ale vyžaduje ten krok s
losetup
, ne?
funguje to i na soubory a hodí se to hlavně, když je tam těch oddílů víc nebo když chceš dělat něco jiného než obyčejný mount (formátování, šifrování, lvm, raid…)
Není jednodušší si to vyzkoušet?
Vytvoří to /dev/loopX
pro celý disk a /dev/mapper/loopXpY
pro jednotlivé oddíly.
celkem rychle to vytvoří prázdný imageJeště existuje
fallocate
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.