런타임 시 커널 매개변수 변경

런타임 시 커널 매개변수 변경

알려지지 않은 하드웨어 버그를 수정하려고 시도하는 동안 누군가 커널에 몇 가지 매개변수를 추가하면 문제를 해결할 수 있다고 제안했습니다.

확실히 할 수 있지만 실행 중인 커널에 이러한 변경을 적용하는 것이 가능한지 알고 싶습니다. 특히 저는 이 사실을 알고 실행 중인 커널을 변경할 수 있는 방법을 procfs제공 sysfs하지만 커널 매개변수 이름을 파일 경로에 매핑하는 방법을 잘 모르겠습니다. (저도 아니라고 생각해요모두설정은 런타임 시 변경될 수 있으며, 시스템이 부팅된 후에는 이러한 특정 매개변수를 구성하지 못할 수도 있습니다. )

내가 관심 있는 특정 매개변수는 다음과 같습니다.

i8042.nomux=1 i8042.reset

실행 중인 시스템에서 재설정 명령을 실행할 수 있는지 확실하지 않습니다.

이러한 매개변수의 경우런타임 시 조정할 수 있습니다. 어디서 찾을 수 있나요?

답변1

커널 매개변수라고 부를 수 있는 것이 세 가지 있습니다.

핵무기커널 매개변수커널 명령줄에 전달되는 옵션입니다. 시작 시에만 전달될 수 있습니다. 그들은에 기록되어 있습니다kernel-parameters.txt(이 파일에는 모듈 매개변수도 나열되어 있습니다. 핵심 커널 매개변수는 없는 매개변수입니다 ..) 이러한 매개변수 중 일부는 시작 시에만 중요합니다(예: root). 런타임에 이를 변경하는 메커니즘이 있을 수도 있고 없을 수도 있습니다. 시스템 수명 전반에 걸쳐 사용되는 메커니즘에 대한 일반적인 규칙은 없습니다.

모듈 매개변수커널 매개변수와 비슷하지만 커널의 특정 구성 요소(일반적으로 특정 드라이버)를 지정합니다. 이름에 관계없이 이러한 매개변수는 해당 드라이버가 커널에서 직접 컴파일되거나 모듈로 컴파일되는지 여부에 따라 적용됩니다. 구성요소가 기본 커널 이미지에 포함된 경우 COMPONENT_NAME.PARAMETER_NAME=VALUE커널 명령줄을 전달해야 합니다. 구성 요소가 PARAMETER_NAME=VALUE모듈 로 로드되면 insmod.

일부 모듈 매개변수를 전달할 수 있습니다.시스템 파일 시스템. 이 디렉토리에는 /sys/module/MODULE_NAME/parameters각 매개변수에 대한 하나의 파일이 포함되어 있습니다. 이 파일을 읽으면 매개변수의 현재 값을 얻을 수 있습니다. 이 파일에 쓰면 매개변수가 수정될 수 있는 경우 설정됩니다. 대부분의 매개변수는 수정할 수 없습니다(따라서 파일은 읽기 전용입니다). 이 디렉토리에는 /sys/module/kernel/parameters일부 핵심 커널 매개변수가 나열되어 있습니다.

모듈 매개변수는 임의로 문서화되어 있으며 그 중 일부는 에 나열되어 있으며 kernel-parameters.txt이 파일에는 일부 모듈에 대한 참조가 포함되어 있습니다. 문서를 찾을 수 없는 경우,소스 검색. 모듈 매개변수는 다음에 의해 선언됩니다.module_param매크로 또는 그 동료 중 하나 module_param_namedmodule_param_cb이 매크로의 마지막 매개변수는 파일 권한을 결정합니다(즉 0600, 루트는 읽고 쓸 S_IRUSR | S_IWUSR수 있지만 다른 사람은 액세스할 수 없습니다). rw-------권한이 0이면 항목이 sysfs에 전혀 표시되지 않습니다.

i8042.nomux이고 i8042.reset매개변수입니다i8042운전사. 소스 코드를 보면 권한이 모두 0이므로 이 두 매개 변수는 런타임에 수정되거나 쿼리될 수도 없습니다. 매개변수는 드라이버가 시작된 후에만 설정할 수 있습니다. 드라이버가 모듈로 컴파일된 경우 모듈을 언로드하고 다시 로드하면 다시 로드할 때 다른 매개변수를 제공할 수 있습니다. 드라이버가 커널에 직접 위치하거나 시스템이 실제로 모듈을 언로드할 수 없도록 구성된 경우 재부팅이 필요합니다.

마지막으로 커널의 또 다른 매개변수는 다음과 같습니다.시스템 제어. 이러한 설정은 다음 명령을 사용하여 확인하고 변경할 수 있습니다.sysctl주문하다또는 /proc/sys.sysctl과 커널 매개변수 간의 구분은 대부분 역사적이라고 생각합니다. 하드웨어 관련 설정은 전통적으로 커널 매개변수이고, 소프트웨어 관련 설정은 전통적으로 sysctl이지만 때로는 구분이 모호할 수 있습니다.

답변2

런타임에 변경할 수 있는 매개변수 목록은 "sudo sysctl -a" 명령을 사용하여 찾을 수 있는 것 같습니다. 시스템에 i8042.nomux가 표시되지 않습니다. 왜 그런지 모르겠어. 어쩌면 당신은 그것을 확인할 수 있고 해당 매개 변수가 보이면 런타임에 수정할 수 있습니다.

관련 정보