A proposito di init

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
TheSnowBoarder
Linux 1.x
Linux 1.x
Messaggi: 139
Iscritto il: gio 30 giu 2005, 0:00
Località: Catania

A proposito di init

Messaggio 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 !

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Messaggio da masalapianta »

init viene eseguito nello user space come qualsiasi altro processo utente

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio 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 :).

Avatar utente
TheSnowBoarder
Linux 1.x
Linux 1.x
Messaggi: 139
Iscritto il: gio 30 giu 2005, 0:00
Località: Catania

Messaggio 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() !

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio 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"!

Rispondi