mountとmount -o loopの違いは何ですか


28

という名前のisoファイルがありますubuntu.iso

mountのコマンドでできますmount ubuntu.iso /mnt。それをマウントした後、私は、コマンドのoutoutからそれを見ることができますdf -h/dev/loop0 825M 825M 0 100% /mnt

ただし、コマンドを実行するとmount -o loop ubuntu.iso /mnt、同じ結果が得られます。

私が知っているように、ループデバイスを使用すると、isoファイルをデバイスとしてアクセスできます-o loop。これが、オプションを追加する理由だと思います。しかし、実行するだけでもisoファイルにアクセスできますmount ubuntu.iso /mnt

だから私は、違いを見ることができないmountとしますmount -o loop


また、重要なことは、マウントが適切なarugmentsでループバックデバイスをセットアップできない場合があることです。たとえばmount ubuntu.iso /mnt、読み取り専用ループバックデバイスをmount /image.squashfs /mntセットアップせず、DIOlosetup --direct-io=on)ループバックデバイスをセットアップしません。
読み書きのできない

回答:


46

どちらのバージョンもループデバイスを使用し、同じ結果を生成します。ショートバージョンはmount、近年追加された「賢さ」に依存しています。ループデバイスを使用するmount -o loopようmount明示的に指示します。ループデバイス自体をに任せ、mount利用可能なデバイスを探して設定し、それを使用します。(例えば 、デバイスを指定することもできますmount -o loop=/dev/loop1。)

賢いのは、マウントするファイルが与えられるmountと、必要に応じて自動的にループデバイスを使用してマウントすることです。つまり、ファイルシステムが指定されていないかlibblkid、ファイルシステムがブロックデバイスでのみサポートされていると判断します(したがって、ファイルをブロックデバイスに変換するには、ループデバイスが必要です。

mountマニュアルページのループデバイスセクションに詳細があります。


1
昔はマウントにも "-o loop"オプションがなく、losetupコマンドでループデバイスを手動で作成する必要がありました。
エデルディル

「遠い昔」の概念に依存する@Edheldil ;-)。2001年にはutil-linux2.11がサポートさmount -o loopれ、少なくとも1年前には2.10もサポートされていたと思います。
スティーブンキット

ええ、しかし、2001年に一般的に使用されていた安定版はすでにutil-linux 2.11を使用していましたか?
rackandboneman

2
@rackandbonemanもう少し掘り下げてみたところ、サポート-o looputil-linux2.4から2.5jの間に追加されたことがわかりました。Debian 1.1 には後者があり、1996年6月にリリースされました。したがって、このオプションは20年以上にわたってディストリビューションで利用可能です。
スティーブンキット

この賢さの利点:XFS開発者の新しい「直接ファイルマウント」機能(ループデバイスを必要としない)がカーネルに到達した場合、mountそのメカニズムに透過的に切り替えることができます(少なくとも最初の15分間はそれは誰かのシェルスクリプトを壊し、誰もがループデバイスに戻る必要があることが判明します)mount -o loopそれはまだ古い(現在の)メカニズムを明示的に要求しますとは異なります。
-grawity

9

loopデバイスは、主に制御されているlosteupコマンド。そのlosetup -aため、使用されているループデバイスと添付ファイルの概要を説明します。このmountコマンドは、ブロックデバイスのみをマウントできます。ループデバイスは、ファイル(キャラクターデバイス)から仮想ブロックデバイスを作成できます。

実際、古いLinuxシステムではファイルをマウントする正しいデバイスとしてmount認識できなかったため、これらのコマンドには大きな違いがありますが、多くの機能を備えたマウントコマンドが完了したため、 losetupコマンドを呼び出して結果をマウントしてみてください。ただし、iso形式ではなくディスクイメージ全体を取得した場合、たとえばMBRを最初に使用した場合、mountコマンドはそれを認識できず、使用可能なパーティション(parted disk_image.raw unit B printコマンドを使用)yoursefを見つけて、完全なオプションmount commanでマウントする必要がありますとして:

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

この構文では(ループデバイスが指定されていませんし、システムが最初の自由を選択想定し/dev/loop0/dev/loop1マウントコマンドの他の新機能の中など)あなたは(あなたのケースに取り付けられたブロックデバイスのファイルシステムタイプを指定する必要はありませんということです-t iso9660)ファイルシステムのサポートがインストールされている場合。


7

差がないmount ubuntu.iso /mntとはmount -o loop ubuntu.iso /mnt

最初のものは、2番目のものを使用したかのように透過的に処理されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.