Расскажите такую вещь. Допустим загрузилось ядро. Откуда оно узнаёт, что надо сделать дальше? В ядре намертво прописаны пути типа /etc/rc.d, или же это прописывается в каком-то конфиге? Или вообще где?
Ядро обычно загружает /sbin/init. А он init берет инфу с /etc/inittab что и на каком уровне грузить. Допустем при загрузке можно поменять на другую программу. Возмем на пример lilo
Выбераем то что грузим например linux-2.6.15-rc7
linux-2.6.15-rc7 (это из списка lilo) init=/bin/sh (жмем enter)
И у нас после загрузки ядра запускается sh. С правами рута. Можно и пароль сменить есле забыл :).
вот пример кода ядра.
brain@book:/usr/src/linux-2.6.15-rc7/init$ tail -n 18 /usr/src/linux-2.6.15-rc7/init/main.c
/*
* We try each of these until one succeeds.
*
* The Bourne shell can be used instead of init if we are
* trying to recover a really broken machine.
*/
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.");
}
brain@book:/usr/src/linux-2.6.15-rc7/init$