init_post()
실행과정: start_kernel() -> init_post() -> run_init_process()->init 프로세스 실행
static int noinline init_post() {
if (exec_command) {
run_init_process(exec_command);
}
run_init_process("/sbin/init");
run_init_process("/etc/init");
run_init_process("/bin/init");
run_init_process("/bin/sh");
}
init_post()함수는 run_init_process()함수를 호출하여 exec_command에 등록된 프로세스 파일의 경로를 가지고 execve() 시스템 콜을 호출, 즉 경로에 있는 프로세스를 실행한다.
init 프로세스를 정상적으로 실행하기 위해서는 커널의 부팅옵션이 "init=/init"이여야한다.
커널 패닉: 루트 파일 시스템의 최상위 디렉터리에 init이 없다 and 부팅옵션이 설정 되지 않았다. and /sbin,/etc,/bin 디렉터레 init이 없다.
0 개의 댓글