Qual è la differenza tra mount e mount -o loop


28

Ho un file ISO chiamato ubuntu.iso.

Posso mountcon il comando: mount ubuntu.iso /mnt. Dopo il montaggio, posso vedere dalla outout del comando df -h: /dev/loop0 825M 825M 0 100% /mnt.

Tuttavia, se eseguo il comando mount -o loop ubuntu.iso /mnt, otterrò lo stesso risultato.

Come so, il dispositivo loop ci consente di visitare il file iso come dispositivo, penso che sia per questo che aggiungiamo l'opzione -o loop. Ma posso visitare il mio file iso anche se eseguo solo mount ubuntu.iso /mnt.

Quindi non riesco a vedere la differenza tra mounte mount -o loop.


Inoltre una cosa importante è che a volte mount non può configurare un dispositivo di loopback con arugment appropriati Ad esempio: mount ubuntu.iso /mntnon imposta un dispositivo di loopback di sola lettura e mount /image.squashfs /mntnon imposta un dispositivo DIO( losetup --direct-io=on) di loopback.
analfabeta

Risposte:


47

Entrambe le versioni utilizzano dispositivi loop e producono lo stesso risultato; la versione breve si basa sulla "intelligenza" aggiunta mountnegli ultimi anni. mount -o loopdice mountesplicitamente di usare un dispositivo loop; lascia il dispositivo loop stesso a mount, che cercherà un dispositivo disponibile, lo configurerà e lo userà. (Puoi specificare anche il dispositivo con es mount -o loop=/dev/loop1 .)

L'intelligenza è che, quando viene fornito un file da montare, mountutilizzerà automaticamente un dispositivo ad anello per montarlo quando necessario - ovvero , il file system non è specificato o libblkiddetermina che il file system è supportato solo su dispositivi a blocchi (e quindi un dispositivo loop è necessario per tradurre il file in un dispositivo a blocchi).

La sezione del dispositivo loop della mountpagina man ha maggiori dettagli.


1
Non * che * molto tempo fa non esisteva l'opzione "-o loop" in mount e avresti dovuto creare manualmente il dispositivo loop con il comando losetup.
Edheldil,

@Edheldil dipende dalla tua idea di "tanto tempo fa" ;-). util-linux2.11 supportato mount -o loopnel 2001, e penso che anche 2.10 lo avesse fatto, almeno un anno prima.
Stephen Kitt,

Sì, ma nel 2001 usavano comunemente distribuzioni stabili già util-linux 2.11?
Rackandboneman,

2
@rackandboneman Sono andato a scavare un po 'di più, e si scopre che il supporto per è -o loopstato aggiunto tra util-linux2.4 e 2.5j; Debian 1.1 aveva quest'ultima ed è stata rilasciata nel giugno 1996. Quindi questa opzione è disponibile nelle distribuzioni da oltre vent'anni.
Stephen Kitt,

Un vantaggio di questa intelligenza: se / quando la nuova funzione "direct file mount" degli sviluppatori XFS (senza la necessità di dispositivi loop) raggiunge il kernel, mountsarà in grado di passare a quel meccanismo in modo trasparente (almeno per i primi 15 minuti fino a quando non si scopre che ha rotto lo shellscript di qualcuno e tutti devono tornare ai dispositivi loop) , a differenza del fatto mount -o loopche richiede ancora esplicitamente il vecchio meccanismo (attuale).
Grawity

9

Il loopdispositivo è principalmente controllato con il losteupcomando. Quindi losetup -aoffre una panoramica dei dispositivi loop utilizzati e dei file allegati. Il mountcomando può montare solo il dispositivo a blocchi . Il dispositivo loop può creare il dispositivo a blocchi virtuale da un file (dispositivo a caratteri).

In effetti c'è una grande differenza tra questi comandi perché sui sistemi Linux più vecchi mountnon potevano riconoscere il file come il dispositivo corretto da montare, ma durante il tempo il comando mount è stato completato con molte funzionalità, quindi ora può decidere autonomamente di prova a chiamare il comando losetup e monta il risultato. Ma se hai un'intera immagine del disco non in formato iso ma ad esempio con MBR all'inizio, il comando mount non è in grado di riconoscerla e devi trovare la partizione utilizzabile (ad esempio con il parted disk_image.raw unit B printcomando) yoursef e poi montarla con l'opzione full mount comman come :

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

In questa sintassi il dispositivo loop non è stato specificato e si presume che il sistema scelga il primo libero ( /dev/loop0, /dev/loop1ecc.) Tra le altre nuove funzionalità del comando mount è che non è necessario specificare il tipo di filesystem del dispositivo a blocchi montato (nel tuo caso -t iso9660) se è stato installato il supporto del filesystem.


7

Non c'è differenza tra mount ubuntu.iso /mnte mount -o loop ubuntu.iso /mnt.

Il primo viene gestito in modo trasparente come se fosse stato utilizzato il secondo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.