Jaka jest różnica między mount a mount -o loop

28

Mam plik ISO o nazwie ubuntu.iso.

Mogę mountgo za pomocą polecenia: mount ubuntu.iso /mnt. Po jej montażu, widzę go z outout polecenia df -h: /dev/loop0 825M 825M 0 100% /mnt.

Jeśli jednak wykonam polecenie mount -o loop ubuntu.iso /mnt, otrzymam ten sam wynik.

Jak wiem, urządzenie pętli pozwala nam odwiedzić plik ISO jako urządzenie, myślę, że dlatego dodaliśmy tę opcję -o loop. Ale mogę odwiedzić mój plik ISO, nawet jeśli wykonam tylko mount ubuntu.iso /mnt.

Więc nie widzę różnicy między mounti mount -o loop.

Yves
źródło
Ważną rzeczą jest także to, że czasami mount nie może skonfigurować urządzenia sprzężenia zwrotnego z odpowiednimi dodatkami. Na przykład: mount ubuntu.iso /mntnie konfiguruje urządzenia sprzężenia zwrotnego tylko do odczytu i mount /image.squashfs /mntnie konfiguruje urządzenia sprzężenia zwrotnego DIO( losetup --direct-io=on).
niepiśmienny

Odpowiedzi:

47

Obie wersje używają urządzeń pętlowych i dają ten sam rezultat; krótka wersja opiera się na „sprytności” dodanej mountw ostatnich latach. wyraźnie mount -o loopmówi, mountaby użyć urządzenia pętli; pozostawia samo urządzenie pętli mount, które będzie szukało dostępnego urządzenia, konfigurowało je i używało. (Możesz także określić urządzenie za pomocą np mount -o loop=/dev/loop1 .)

Sprytność polega na tym, że po otrzymaniu pliku do zamontowania mountautomatycznie użyje urządzenia pętli, aby zamontować go w razie potrzeby - tzn. System plików nie jest określony lub libblkidokreśla, że ​​system plików jest obsługiwany tylko na urządzeniach blokowych (a zatem urządzenie pętli jest potrzebne do przetłumaczenia pliku na urządzenie blokowe).

Sekcja urządzenia pętli na mountstronie podręcznika zawiera więcej szczegółów.

Stephen Kitt
źródło
1
Nie * też * dawno temu w mount nie było też opcji „-o loop” i trzeba by było ręcznie utworzyć urządzenie pętli za pomocą polecenia losetup.
Edheldil
@Edheldil, który zależy od twojego pojęcia „dawno temu” ;-). util-linux2.11 mount -o loopuzyskało wsparcie w 2001 r. I myślę, że 2.10 miało to również co najmniej rok wcześniej.
Stephen Kitt,
Tak, ale czy powszechnie używane stabilne dystrybucje w 2001 roku używały już util-linux 2.11?
rackandboneman
2
@rackandboneman Zacząłem kopać trochę więcej i okazuje się, że wsparcie dla -o loopzostało dodane między util-linux2,4 a 2,5j; Debian 1.1 miał ten drugi i został wydany w czerwcu 1996 roku. Więc ta opcja jest dostępna w dystrybucji od ponad dwudziestu lat.
Stephen Kitt
Zaleta tej sprytności: jeśli / kiedy nowa funkcja „bezpośredniego montowania plików” deweloperów XFS (bez potrzeby używania urządzeń pętli) dotrze do jądra, mountbędzie mogła przełączyć się na ten mechanizm w sposób przezroczysty (przynajmniej przez pierwsze 15 minut, aż okazuje się, że złamał czyjś skrypt i wszyscy muszą wrócić do urządzeń pętlowych) , w przeciwieństwie do tego, mount -o loopktóry wciąż wyraźnie prosi o stary (obecny) mechanizm.
grawity
9

loopUrządzenie jest kontrolowany głównie z losteuppolecenia. Więc losetup -adaje przegląd o używanych urządzeń pętlowych i załączonych plików. mountPolecenia można zamontować tylko urządzenie blokowe . Urządzenie pętli może utworzyć wirtualne urządzenie blokowe z pliku (urządzenie znakowe).

W rzeczywistości istnieje ogromna różnica między tymi poleceniami, ponieważ w starszych systemach Linux mountnie mógł rozpoznać pliku jako poprawnego urządzenia do zamontowania, ale w czasie, gdy polecenie montowania zostało zakończone z dużą ilością funkcji, dlatego może teraz samodzielnie zdecydować spróbuj wywołać komendę losetup i zamontować wynik. Ale jeśli masz cały obraz dysku nie w formacie ISO, ale np. Z MBR na początku, polecenie mount nie mogło go rozpoznać i musisz znaleźć użyteczną partycję (np. Z parted disk_image.raw unit B printpoleceniem) yoursef, a następnie zamontować ją z pełną opcją mount comman tak jak :

mount disk_image.raw /mntpoint/ -o loop,offset=${OFFSET_of_PARTITION}

W tej składni urządzenie pętla nie została określona i zakłada się system wybrać pierwszy wolny ( /dev/loop0, /dev/loop1etc) Wśród innych nowych cech polecenie montowania jest to, że nie trzeba określić typ systemu plików zamontowanego urządzenia blokowego (w Twoim przypadku -t iso9660) jeśli zainstalowano obsługę systemu plików.

schweik
źródło
7

Nie ma różnicy między mount ubuntu.iso /mnti mount -o loop ubuntu.iso /mnt.

Pierwszy jest obsługiwany w sposób transparentny, jakbyś używał drugiego.

Emmanuel Rosa
źródło