/proc/sys 및 /sys/modules/mod/parameter

/proc/sys 및 /sys/modules/mod/parameter

며칠 동안 그것이 정확히 어떻게 작동하는지 궁금했습니다. sysctl을 사용하여 커널 런타임 매개변수를 설정할 수 있지만 echo boolen 1> /proc/sys/module/exactParameter/sys/modules/module/parameters/parameter을 설정할 수도 있습니다.

모듈의 매개변수는 /proc/sys/커널로의 하드 컴파일에만 관련이 있습니까? 아니면 커널 모듈을 로드하는 매개변수도 있나요?

LKM이 실행 중인 커널에 로드됩니다 /sys/modules/module/paraeter/params. 이는 커널에 컴파일된 모듈에 매개변수가 없다는 의미입니까?

두 디렉토리의 차이점은 무엇입니까?

답변1

둘 다 커널 인터페이스이고 이름이 겹치는 점 외에는 둘 사이에는 /proc/sys거의 관계가 없습니다 ./sys

/proc/sys인터페이스이다시스템 제어, 이는 커널 구성 매개변수입니다. 읽기 또는 수정은 /proc/sys/foo/barsysctl 을 가져오거나 설정하는 것과 같습니다 foo.bar. Sysctl 값은 의미 범주로 구성되며 본질적으로 커널 구조와 관련이 없습니다. 많은 sysctl 값은 컴파일된 드라이버나 기능에 관계없이 모든 Linux 시스템에 존재하는 설정입니다. 일부는 선택적 기능(예: 특정 네트워크 프로토콜)과 관련이 있지만 특정 하드웨어 장치와는 관련이 없습니다.

/sys/module이름에서 알 수 있듯이 커널 모듈에 대한 인터페이스입니다. 각 디렉토리는 커널 모듈에 해당합니다. foo모듈의 매개변수에 기록하여 읽을 수 있고 때로는 수정할 수도 있습니다 /sys/module/foo/parameters/*.

커널에 로드된 구성요소는 커널 명령줄에서 해당 매개변수를 읽습니다. 이러한 매개변수는 런타임에 설정할 수 없습니다(적어도 자동 생성된 인터페이스를 통해서는 설정되지 않습니다. 예를 들어 /sys/module구성 요소는 이에 대한 사용자 정의 인터페이스를 노출할 수 있습니다).

답변2

종이"sysfs 파일 시스템/sysPatrick Mochel의 " 이 상자에 있는 것보다 그 목적과 역사에 대해 더 나은 이해를 제공할 것입니다 . 인용 요약:

sysfs는 커널 코드가 메모리 내 파일 시스템을 통해 사용자 프로세스로 정보를 내보낼 수 있도록 하는 Linux 2.6 커널의 기능입니다. 파일 시스템 디렉토리 계층의 구성은 엄격하며 커널 데이터 구조의 내부 구성을 기반으로 합니다. 파일 시스템에서 생성된 파일은 (대부분) ASCII 파일이며, 각 파일은 (일반적으로) 값을 갖습니다. 이러한 기능은 내보낸 정보가 정확하고 쉽게 액세스할 수 있도록 보장하여 sysfs를 2.6 커널의 가장 직관적이고 유용한 기능 중 하나로 만듭니다.

"로드 가능한 커널 모듈이 에 표시됩니까 /sys?"라는 특정 질문에 대답하려면 "모듈 작성자가 인터페이스를 제공하는 경우 예"입니다. 이는 로드된 모듈 수를 표시하여 수행할 수 있습니다./sys/module

$ lsmod | awk '{print $1}' | sort > /tmp/lsmod
$ cd /sys/module ; ls > /tmp/sysmodule
$ comm -12 /tmp/lsmod /tmp/sysmodule
ahci
arc4
ath
ath9k
ath9k_common
ath9k_hw
bluetooth
bnep
cfg80211

내 시스템에서는 /sys/module.

관련 정보