是否可以在/proc/sys中创建目录和文件?

是否可以在/proc/sys中创建目录和文件?

我正在运行 CentOS 6.2,我需要在内部创建一个名为“crypto”的子目录/proc/sys。在内部/proc/sys/crypto,我需要创建一个名为test包含值“1”的文件。

答案1

伊格纳西奥·巴斯克斯·艾布拉姆斯的答案是正确的/proc:和下的文件/sys由内核提供。如果要在那里添加文件,请编写内核模块。您可以/proc在以下位置找到稍微过时的编程接口演示:Linux 设备驱动程序第三版。ch. 4

从技术上讲,可以跳过重重困难使文件出现在/proc/sys/crypto(或其他任何地方,实际上)。做一个绑定挂载from/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

一旦你升级内核,这个问题就会被破坏,而且几乎肯定不是操作所需要的,但它就是这样,因为它出现在搜索引擎中。

相关内容