Fedora 19にさらに/dev/loop*デバイスを追加する方法

Fedora 19にさらに/dev/loop*デバイスを追加する方法

Fedora 19に/dev/loop*デバイスを追加する方法は?私は以下が欲しい:

# uname -r
3.11.2-201.fc19.x86_64
# lsmod |grep loop

# ls /dev/loop*
/dev/loop0  /dev/loop1  /dev/loop2  /dev/loop3  /dev/loop4  /dev/loop5  /dev/loop6  /dev/loop7  /dev/loop-control
# modprobe loop max_loop=128
# ls /dev/loop*
/dev/loop0  /dev/loop1  /dev/loop2  /dev/loop3  /dev/loop4  /dev/loop5  /dev/loop6  /dev/loop7  /dev/loop-control

だから何も変わりませんでした。

答え1

ルートとして実行すると、losetup -f利用可能なループデバイスがない場合は、必要に応じてループデバイスが自動的に作成されます。

mknodしたがって、新しいループデバイスを作成する最も簡単な方法は、直接使用する代わりに使用することですsudo losetup -f。この方法では、既存のループデバイスを無料で提供したり、必要に応じて自動的に新しいデバイスを作成したりできます。

答え2

/devデバイスノードを作成するには、mknodを使用する必要があります。のデバイスノードには、devタイプ(ブロック、文字など)、メジャー番号、マイナー番号があります。次の手順でタイプとキー番号を見つけることができますls -l /dev/loop0

user@foo:/sys# ls -l /dev/loop0
brw-rw---- 1 root disk 7, 0 Oct  8 08:12 /dev/loop0

これは、ループデバイスノードのブロックタイプとメジャー番号が7でなければならないことを意味します。各デバイスノードのマイナー番号は0から始まり1ずつ増加するため、Loop0は0、loop7は7です。

Loop8を作成するには、rootでコマンドを実行しますmknod -m 0660 /dev/loop8 b 7 8。これにより、/dev/loop8スイッチによって指定された権限を持つデバイスノードが作成されます-m(おそらくデスクトップシステムを実行しているため、これは不要ですが、誰もがデバイスノードへの読み取りおよび書き込み権限を付与しないことをお勧めします)。

答え3

ハハ、完了していません:) このスクリプトを使用して新しい/dev/loopsを追加します。数値変更の場合、スクリプトはデフォルトで0〜7を経るため、8番目から始めて63番目を繰り返します。権限は/dev/loop0からコピーされます。 :)

for i in {8..63}; do if [ -e /dev/loop$i ]; then continue; fi; \
mknod /dev/loop$i b 7 $i; chown --reference=/dev/loop0 /dev/loop$i; \
chmod --reference=/dev/loop0 /dev/loop$i; done

ちなみに上記のレシピは2014年のレシピです。 2023年 :) 現在開発されているカーネルは、devfs仮想ファイルシステムを介してすべての/ dev /デバイスを作成します。以前のバージョンとの互換性のために0〜7個のループデバイスを自動的に表示しますが、必要に応じて追加のループデバイスを作成します。現在、1バイトのマイナー番号でエンコードされたループデバイスの数に制限はありません。最新のカーネルは2バイトの補助番号をサポートし、これはデバイス数を65535に制限します。

現在、これはDockerまたはK8Sコンテナ用のフェデレーションファイルシステムで使用されています。

結局、現代システムの秘密は役に立たない

関連情報