Как ядро linux узнает местоположение программы / sbin / init во время процесса загрузки? "/ Sbin / init" жестко запрограммирован в исходный код ядра Linux?
Да, /sbin/init
жестко запрограммирован в исходный код. Посмотреть функцию init_post
init/main.c
:
if (execute_command) {
run_init_process(execute_command);
printk(KERN_WARNING "Failed to execute %s. Attempting "
"defaults...\n", execute_command);
}
run_init_process("/sbin/init");
run_init_process("/etc/init");
run_init_process("/bin/init");
run_init_process("/bin/sh");
panic("No init found. Try passing init= option to kernel. "
"See Linux Documentation/init.txt for guidance.");
Программа, запускаемая после завершения загрузки ядра, может быть указана в командной строке загрузки ядра с помощью команды init=/file/name
аргумент.
Если этот параметр не передан, встроенное значение по умолчанию /sbin/init
используется.