Linux 커널은 알 수 없는 커널 매개변수를 어떻게 처리합니까?

Linux 커널은 알 수 없는 커널 매개변수를 어떻게 처리합니까?

예를 들어 커널이 이해하지 못하는 매개변수를 커널에 전달한다고 가정해 보겠습니다. blabla또는 eat=cake커널이 이러한 알 수 없는 매개변수를 어떻게 처리할 것인지에 대해 전통적인 경우는 initLinux 커널이 초기 사용자로 시작하는 경우 알 수 없는 매개변수를 에 전달하는 것입니다. space (initramfs) initramfs로 전달됩니까 /init?

답변1

~에서커널 문서:

커널은 커널 명령줄에서 인수를 구문 분석합니다 --. 인수를 인식하지 못하고 a 가 포함되어 있지 않으면 .인수가 init에 전달됩니다. 인수는 =init의 환경으로 들어가고 다른 인수는 명령줄 인수로 init에 전달됩니다. 그 이후의 모든 내용은 --init에 매개변수로 전달됩니다.

이는 /initinitramfs에도 적용됩니다. 소스 코드에서 initramfs /init와 최종 루트 /sbin/init(또는 다른 곳)는 모두 다음을 통해 호출됩니다.run_init_process동일한 인수를 사용합니다(실행 파일의 경로인 인수 0 제외). 설명서에서 지침을 찾을 수 없지만 커널 인터페이스가 안정적이므로 변경되지 않습니다.

이는 /linuxrcinitrd에서는 작동하지 않습니다. 이 함수는 매개변수 없이 호출되지만 /init및 와 동일한 환경을 사용합니다 /sbin/init. proc 파일 시스템을 마운트하고 /proc/cmdline커널 명령줄 인수를 읽기 위해 읽을 수 있습니다.

관련 정보