/ proc / sys 및 / sys / modules / mod / parameter 수 echo

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

/proc/sys/하드에만 관련된 모듈의 매개 변수 가 커널에 적합합니까? 또는로드 가능한 커널 모듈에 대한 매개 변수가있을 수 있습니까?

커널 실행에로드 된 LKM은에서 매개 변수를 표시 /sys/modules/module/paraeter/params합니다. 커널로 컴파일 된 모듈에 대한 매개 변수가 없다는 것을 의미합니까?

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



답변

커널 인터페이스와 이름의 일치라는 사실 /proc/sys과 는 관계가 없습니다 /sys.

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

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

커널에로드 된 구성 요소는 커널 명령 줄에서 매개 변수를 읽습니다. 이러한 매개 변수는 런타임에 설정할 수 없습니다 (적어도 자동 생성 된 인터페이스를 통해 /sys/module구성 요소를 구성 할 수 없음).


답변

Patrick Mochel의 ” sysfs Filesystem ” 이라는 논문 /sys은이 상자에 들어있는 것보다 목적과 역사에 대해 훨씬 더 나은 개요를 제공합니다 . 초록 인용 :

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
…

내 시스템에서 73 개의로드 가능한 모듈 중 73 개에 해당 항목이 있음을 보여줍니다 /sys/module.


답변