Pagina 1 di 1
A proposito di init
Inviato: mer 7 set 2005, 16:19
da TheSnowBoarder
Salve a tutti,
ho una domanda da farvi a proposito del processo init:
all'interno dell'architettura di Linux, init viene realmente eseguito come il primo processo utente, o è un kernel thread mascherato da processo utente ?
Mi è sorto questo dubbio perché ho letto da qualche parte che questo accade per processi come kswapd e similari.
Se qualcuno mi può rispondere mi leva un dubbio !
Inviato: mer 7 set 2005, 16:54
da masalapianta
init viene eseguito nello user space come qualsiasi altro processo utente
Inviato: mer 7 set 2005, 23:06
da useless
il kernel, al termine del boot, forka. il processo padre diventa il gestore dello swapper, kswapd, con pid 0. il figlio fa exec() di init, quindi dovrebbe girare come processo kernel, ma è impossibile. probabilmente droppa i privilegi. cerco nel codice e se trovi qcos riposto

.
Inviato: ven 9 set 2005, 14:51
da TheSnowBoarder
Ho trovato queste righe interessanti,
sono le ultime del kernel 2.6.13 contenute in 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);
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.");
Se al kernel è stato passato tramite lilo il parametro init=/bin/bash,
prova ad eseguirlo come init, altrimenti prova in sequenza ad eseguire
un programma di nome init sotto /sbin, /etc, /bin e poi /bin/sh
Sarebbe simpatico vedere come funziona in effetti run_init_process() !
Inviato: lun 12 set 2005, 2:03
da useless
be', è poco + sopra nello stesso file... fa una banale exec. quel che non capisco e se prima droppa in userspace o no. forse i sorgenti del kernel 0.99 sono +... "didattici"!