/proc/sys에 디렉터리와 파일을 만드는 것이 가능합니까?

/proc/sys에 디렉터리와 파일을 만드는 것이 가능합니까?

CentOS 6.2를 실행 중이고 내부적으로 "crypto"라는 하위 디렉터리를 만들어야 합니다 /proc/sys. 내부적으로 "1"이라는 값을 포함하는 파일을 /proc/sys/crypto생성해야 합니다 .test

답변1

Ignacio Vazquez Abrams의 답변이 맞습니다./proc: 및 아래의 파일은 /sys커널에서 제공됩니다. 거기에 파일을 추가하려면 커널 모듈을 작성하세요. /proc다음 사이트에서 약간 오래된 프로그래밍 인터페이스 데모를 찾을 수 있습니다 .리눅스 장치 드라이버세 번째 버전.채널 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

이 문제는 커널을 업그레이드하면 해결되며 작동에 거의 필요하지 않지만 검색 엔진에 표시되기 때문에 문제가 됩니다.

관련 정보