/proc/sysにディレクトリとファイルを作成することは可能ですか?

/proc/sysにディレクトリとファイルを作成することは可能ですか?

CentOS 6.2を実行しており、内部的に「crypto」というサブディレクトリを作成する必要があります/proc/sys。内部的には「1」という値を含むファイルを/proc/sys/crypto作成する必要があります。test

答え1

Ignacio Vazquez Abramsの答えが正しいです。/proc: および以下のファイルは/sysカーネルから提供されます。そこにファイルを追加するには、カーネルモジュールを作成してください。/proc次のサイトで少し古いプログラミングインターフェイスのデモを見つけることができます。Linuxデバイスドライバ3番目のバージョン。チャンネル4

技術的には、ファイルが表示されるように/proc/sys/crypto(または実際には別の場所に)複数の手順を実行することが可能です。何かを作るバインドマウントから/proc/sys/cryptoステージングディレクトリに移動して共同設置準備ディレクトリと上書きディレクトリは次のとおり/proc/sys/cryptoです。UnionFS ヒューズ

# mkdir /tmp/original /tmp/overlay
# mount --bind /proc/sys/crypto /tmp/original
# unionfs-fuse -o nonempty /tmp/overlay=RW:/tmp/original=RO /proc/sys/crypto
# echo hello >/proc/sys/crypto/test
# cat /proc/sys/crypto/test
hello
# umount /proc/sys/crypto
# umount /proc/sys/crypto
# cat /tmp/overlay/test
hello

注:私はこの操作によって引き起こされるシステムや脳の損傷について責任を負いません。上記のコマンドは完全に安全ですが、他の領域を操作すると奇妙な動作が発生する可能性/sysがあります。/proc

答え2

/proc仮想ファイルシステムです。適切な構造を作成するには、カーネルモジュールを作成する必要があります。

答え3

おそらくあなたはこれをしたくないでしょう。しかし、もしそうするなら必要/ procにディレクトリを作成するには、これがカーネルモジュールに必要なすべてです。

#include <linux/module.h>
#include <linux/proc_fs.h>

static int procfoo_init(void) {
    proc_mkdir("foo", NULL);
    return 0;
}

module_init(procfoo_init);

/ procにマウントポイントがある場合は、ここに通常のfsパスをバインドし、ユーザースペースディレクトリで必要な操作を実行できます。

mount --bind /var/lib/foo /proc/foo

この問題はカーネルをアップグレードすることで解決され、操作にはほとんど必要ありませんが、検索エンジンに表示されるため問題になります。

関連情報