Apa perbedaan antara mount dan mount -o loop

28

Saya memiliki file iso bernama ubuntu.iso.

Aku bisa mountdengan perintah: mount ubuntu.iso /mnt. Setelah pemasangan, saya bisa melihatnya dari outout dari perintah df -h: /dev/loop0 825M 825M 0 100% /mnt.

Namun, jika saya menjalankan perintah mount -o loop ubuntu.iso /mnt, saya akan mendapatkan hasil yang sama.

Seperti yang saya tahu, perangkat loop memungkinkan kita untuk mengunjungi file iso sebagai perangkat, saya pikir ini sebabnya kami menambahkan opsi -o loop. Tetapi saya dapat mengunjungi file iso saya meskipun saya hanya mengeksekusi mount ubuntu.iso /mnt.

Jadi saya tidak bisa melihat perbedaan antara mountdan mount -o loop.

Yves
sumber
Yang juga penting adalah kadang-kadang mount tidak dapat mensetup perangkat loopback dengan arugments yang sesuai. Sebagai contoh: mount ubuntu.iso /mntia tidak mensetup perangkat loopback read-only, dan mount /image.squashfs /mntitu tidak mensetup perangkat loopback DIO( losetup --direct-io=on).
buta huruf

Jawaban:

47

Kedua versi menggunakan perangkat loop, dan menghasilkan hasil yang sama; versi singkatnya bergantung pada "kepandaian" yang ditambahkan mountdalam beberapa tahun terakhir. mount -o loopmemberi tahu mountsecara eksplisit untuk menggunakan perangkat loop; itu meninggalkan perangkat loop itu sendiri hingga mount, yang akan mencari perangkat yang tersedia, mengaturnya, dan menggunakannya. (Anda dapat menentukan perangkat juga dengan misalnya mount -o loop=/dev/loop1 .)

Kecerdasannya adalah bahwa, ketika diberikan file untuk dipasang, mountsecara otomatis akan menggunakan perangkat loop untuk memasangnya ketika diperlukan - yaitu , sistem file tidak ditentukan, atau libblkidmenentukan bahwa sistem file hanya didukung pada perangkat blok (dan oleh karena itu perangkat loop diperlukan untuk menerjemahkan file ke perangkat blok).

Bagian perangkat loop pada mounthalaman manual memiliki lebih banyak detail.

Stephen Kitt
sumber
1
Bukan * itu * dahulu kala juga tidak ada opsi "-o loop" di mount dan Anda harus secara manual membuat perangkat loop dengan perintah losetup.
Edheldil
@Edheldil itu tergantung pada gagasan Anda tentang "dulu" ;-). util-linux2,11 didukung mount -o looppada tahun 2001, dan saya pikir 2,10 juga memilikinya, setidaknya setahun sebelumnya.
Stephen Kitt
Ya, tetapi apakah distribusi stabil yang umum digunakan pada tahun 2001 sudah menggunakan util-linux 2.11?
rackandboneman
2
@rackandboneman saya pergi menggali lebih banyak, dan ternyata dukungan untuk -o loopditambahkan antara util-linux2,4 dan 2,5j; Debian 1.1 memiliki yang terakhir dan dirilis pada Juni 1996. Jadi opsi ini telah tersedia dalam distribusi selama lebih dari dua puluh tahun.
Stephen Kitt
Keuntungan dari kepintaran ini: jika / ketika fitur "direct file mount" baru pengembang XFS (tanpa memerlukan perangkat loop) mencapai kernel, mountakan dapat beralih ke mekanisme itu secara transparan (Setidaknya selama 15 menit pertama sampai fitur ternyata itu melanggar shellscript seseorang dan semua orang harus kembali ke perangkat loop) , tidak seperti mount -o loopyang masih secara eksplisit meminta mekanisme lama (saat ini).
grawity
9

The loopperangkat terutama dikendalikan dengan losteupperintah. Jadi losetup -amemberi Anda gambaran tentang perangkat loop yang digunakan dan file yang dilampirkan. The mountperintah dapat me-mount perangkat blok hanya . Perangkat loop dapat membuat perangkat blok virtual dari file (perangkat karakter).

Sebenarnya ada perbedaan besar antara perintah-perintah itu karena pada sistem Linux yang lebih lama mounttidak dapat mengenali file sebagai perangkat yang benar untuk dipasang, tetapi selama ini perintah mount selesai dengan banyak fitur, maka sekarang dapat memutuskan sendiri untuk coba panggil perintah losetup dan pasang hasilnya. Tetapi jika Anda mendapatkan keseluruhan disk image bukan format iso tetapi mis. Dengan MBR di awal, perintah mount tidak dapat mengenalinya dan Anda harus menemukan partisi yang dapat digunakan (mis. Dengan parted disk_image.raw unit B printperintah) yoursef dan kemudian memasangnya dengan opsi lengkap mount comman sebagai :

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

Dalam sintaks ini perangkat loop tidak ditentukan dan diasumsikan sistem memilih bebas pertama ( /dev/loop0, /dev/loop1dll) Di antara fitur-fitur baru dari perintah mount adalah bahwa Anda tidak perlu menentukan tipe sistem file dari perangkat blok yang terpasang (dalam kasus Anda -t iso9660) jika dukungan filesystem diinstal.

schweik
sumber
7

Tidak ada perbedaan antara mount ubuntu.iso /mntdan mount -o loop ubuntu.iso /mnt.

Yang pertama ditangani secara transparan seolah-olah Anda telah menggunakan yang kedua.

Emmanuel Rosa
sumber