Linuxのファイルシステムでループを作成します。
-
06-09-2019 - |
質問
どのように私はLinuxのファイルシステムでループを作成するのですか?私は、Linuxのファイルシステムの非循環有向グラフ(DAG)プロパティを壊したいです。これは可能ですか?私は私のUbuntuでscratchboxクロスコンパイラをインストールしたとき、私は一度、この状態を見てきています。
私は今、それを再現する方法がわからない。
解決
他のいくつかのレスポンダが既にループバックデバイスを使用してマウントを設定する方法を答えていますが、あなたは特に少し異なっているbind
マウント、について尋ねました。あなたがマウントバインドを使用する場合は、あなただけのmountコマンドで--bind
を指定します。たとえばます:
mount --bind /original/path /new/path
これは、ファイルシステムの場所が/original/path
でアクセス/new/path
を通じてアクセス可能な<私>ものようになります。この意志ないに、次のマウントポイントことに注意してください!例えば、私は、次のマウントポイントがあるとします:
/something
/something/underneath/that
今、私はbind
が/something
のためにマウントさせると仮定します:
mount --bind /something /new_something
私はパス/something/myfile
経由/new_something/myfile
のようなファイルにアクセスすることができます。しかし、私ははありませんはパス/something/underneath/that/otherfile
経由/new_something/underneath/that/otherfile
のようにファイルにアクセスすることができます。あなたは、各ファイルシステムのマウント別のbind
を設定する必要があります。あなたが比較的新しいカーネルを持っている場合は、あなたは、がはマウントポイントに従わないこれ、rbind
マウントを使用することができます:
mount --rbind /something /new_something
rbind
マウントについての1つの警告:彼らはrbind
がセットアップされた後、ファイルシステムがマウントされているケースを処理しません。それは、私はこのようなマウントがあるとされます:
/something
それから私は、上記のように、私のrbind
を設定し、<私>そしては私が/something/underneath/that
マウント:rbind
は魔法のように新しいがrbind
場所を通して見えるマウントすることはありません。また、明らかにカーネルのバグが原因で、あなたはrbind
マウントアンマウントできないことに注意してください。
また、念のためにあなたが意味「私は(2)システムコールのマウントを使用してバインドマウントを設定する方法を教えてください」:マウントあなたが定期的にMS_BIND
ためmount.h
を呼び出すときに(mount(2)
で定義された)bind
フラグを指定する必要があります。 rbind
マウントのために、あなたはMS_BIND
と(MS_REC
で定義された)undocument linux/fs.h
フラグを指定する必要があります。
希望のに役立ちます、
エリックMelski
他のヒント
に見えますバインドは
にマウントします。あなたはおそらく発見してきたように、
$ mkdir -p test/test
$ mount --bind test test/test
あなただけがtest/test/test
にアクセスすることができず、それ以上。さえ
$ mount --rbind test test/test
再帰バインドマウント効果的には、ソース上の既存のマウントを見つけ、ターゲットでそれらを結合を経由するため、は、働きます。
バインドマウントはマウントポイントを横断していないので、何を求めてきましたが、できません。あなたが本当にファイルシステムのループをシミュレートしたい場合は、 localfs 。私は自分自身が提供するファイルシステムを読み取ろうとするとき、それがロックアップして、自分自身を試していません。ちょうど今、私はcrossmnt
でNFSツリーをエクスポートし、自身の下でそれをマウントしようとしたが、同様の理由で失敗します。
mount /path/to/device /path/to/mount/location -o loop
/パス/に/デバイスおよび/パス/ /マウントする/場所、マウントしたいパーティション、またはディスクイメージへのパスのいずれかへのパスでマウントしたいフォルダへのパスです
下デバイス/画像あなたも(FAT16 / FAT32を使用しています)ので、のようなファイルシステムの種類を含める必要があります:
mount /path/to/device /path/to/mount/location -o loop -t vfat
また一から作成することもできます:
最初のイメージファイルを作成し、それを初期化します。
dd if=/dev/zero of=/tmp/loop.img bs=1024k count=$IMG_SIZE
次に、お好みのFSタイプを使用して有効なパーティションにする
mkfs.ext3 -F /tmp/loop.img
あなたの新しいイメージをマウントします。
mkdir -p /mnt/image
mount /tmp/loop.img /mnt/image -o loop
これで、ファイルやディレクトリがあなたの新しいイメージにコピー/作成することができます。
楽しみを持って、
Jeach!