커널 명령 행에 전달 된 매개 변수는 커널에 의미가 될 필요가 없습니다 : 커널 매개 변수 설명서를 말한다
커널은 커널 명령 행에서“-”까지 매개 변수를 구문 분석합니다. 매개 변수를 인식하지 못하고 '.'를 포함하지 않으면 매개 변수가 init로 전달됩니다. '='인 매개 변수는 init 환경으로 이동하고 다른 매개 변수는 init에 명령 줄 인수로 전달됩니다. “-”뒤의 모든 것은 init에 대한 인수로 전달됩니다.
이 적용되지 않습니다 init와 root정말 커널 매개 변수이며, 커널에 의해 처리한다. 또한 사용자 공간에 표시되기 때문에 사용자 공간에서 작동 할 수 있습니다 /proc/cmdline. (예를 들어 systemd는 quiet커널 매개 변수를 고려하여 출력을 줄입니다.)
커널이 initramfs로 부팅 될 때, root매개 변수는 커널에서 직접 사용 되지 않으며 , 실패한 init경우에만 사용됩니다 rdinit. init시작은에서 처리 kernel_init되며 다음과 같이 작동합니다.
- 접근 가능한 "ramdisk execute command"(
rdinit커널 명령 행에 지정된 값 또는 /init)가 있으면 커널은이를 실행하려고 시도합니다.
- 만약 이것이 실패하고 "실행 명령"(
init커널 명령 행에 주어진 값 )이 있다면, 커널은 그것을 실행하려고 시도하고, 실패하면 패닉을 시도합니다;
- 최후의 수단으로, 커널은 실행하려고
/sbin/init, /etc/init, /bin/init, 그리고 /bin/sh; 실행할 수없는 경우 패닉 상태가 됩니다.
initramfs가 있으면이 모든 것이 발생하며 대상 볼륨은 커널에 의해 마운트되지 않습니다. 커널이 첫 번째 프로그램 (일반적으로 initramfs 의 스크립트)을 실행 한 후 발생 하는 일은 커널이 아닌 프로그램에 달려 있습니다. 파일 시스템이 마운트 된 경우 전달되지 않은 인수를 계속 사용할 수 있습니다 .init/initinit/proc/cmdline/proc
ld-linux.soELF 또는 재귀가 너무 깊은 스크립트를 찾을 수 없거나 실행할 수없는 것이 있으면 어떻게합니까?