<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.linux360.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vladg</id>
		<title>linux360 - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linux360.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vladg"/>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php/Special:Contributions/Vladg"/>
		<updated>2026-04-19T13:28:12Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Vladg&amp;diff=3452</id>
		<title>User:Vladg</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Vladg&amp;diff=3452"/>
				<updated>2007-09-19T08:26:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Metode de contact:''': Email: [mailto:icantfindavaliduserDOTgmail.com icantfindavaliduser'''&amp;amp;#64;'''gmail&amp;lt;small&amp;gt;.&amp;lt;/small&amp;gt;com] | YM: tymmaaah | IRC pseudonim: ecm ( servere: freenode sau oftc ).&lt;br /&gt;
&lt;br /&gt;
[[User:Vladg/incomplete/|Proiectele]] la care lucrez.&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Vladg/incomplete/Demararea_fizic%C3%84%C6%92&amp;diff=3308</id>
		<title>User:Vladg/incomplete/Demararea fizicÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Vladg/incomplete/Demararea_fizic%C3%84%C6%92&amp;diff=3308"/>
				<updated>2006-12-13T17:16:16Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Demararea fizică==&lt;br /&gt;
Procesul de iniţializare al unui computer&amp;lt;ref&amp;gt;vezi [http://dexonline.ro/search.php?cuv=computer computer] versus [http://dexonline.ro/search.php?cuv=calculator calculator]&amp;lt;/ref&amp;gt; este dependent de arhitectura sa.&amp;lt;ref&amp;gt;microprocesorul este o parte esenţială din definiţia unei arhitecturi, dar un anume model de microprocesor nu defineşte ''sine die'' o arhitectură de sistem de calcul&amp;lt;/ref&amp;gt; În cazul de faţă, vom trata particularităţile specifice arhitecturii IBM PC&amp;lt;ref&amp;gt;i386 sau x86 se referă la microprocesor, pe când noi ne referim la toate PC-urile din lumea asta, adică la &amp;quot;''IBM PC &amp;amp; clones/compatibles''&amp;quot;&amp;lt;/ref&amp;gt;. Procesul este unul complex, dar poate fi rezumat în felul următor:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* În momentul imediat următor conectării sistemului la reţea, au loc mai multe procese de natură analogică, cum ar fi (pentru simplificare, presupunem că este vorba de un sistem AT&amp;lt;ref&amp;gt;Advanced Technology&amp;lt;/ref&amp;gt; sau un sistem ATX&amp;lt;ref&amp;gt;AT Extended&amp;lt;/ref&amp;gt; programat să pornească automat la apariţia sau revenirea tensiunii de reţea):&lt;br /&gt;
&lt;br /&gt;
** Sursa de alimentare detectează tensiunea reţelei şi intră în regim de funcţionare stabil. Ca urmare a acestui fapt, la ieşirea sa apar tensiunile nominale necesare alimentării componentelor electronice din sistemul de calcul&lt;br /&gt;
&lt;br /&gt;
** După un interval de timp suficient de lung pentru ca tensiunile de ieşire ale sursei să se fi stabilizat şi intrat în standard, microcontrolerul din sursă pune semnalul PG&amp;lt;ref&amp;gt;Power Good&amp;lt;/ref&amp;gt; pe &amp;quot;1&amp;quot; logic, semnalizând astfel controlerului de alimentare prezent pe placa de bază că tensiunile de alimentare s-au stabilizat şi sunt deci utilizabile în domeniul digital&lt;br /&gt;
&lt;br /&gt;
** Controlerul de alimentare verifică în acest moment la rându-i tensiunile livrate şi, în cazul în care acestea corespund standardelor programate de producător, începe alimentarea diverselor etaje funcţionale de pe placa de bază, de obicei începând cu controlerele de ceas şi periferie&amp;lt;ref name=&amp;quot;southbridge&amp;quot;&amp;gt;South Bridge&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Controlerul de ceas îşi pune în funcţiune rezonatorul cu cuarţ din dotare şi începe să genereze (uneori prin multiplicare şi/sau diviziune) semnalele de tact necesare celorlalte blocuri funcţionale&lt;br /&gt;
&lt;br /&gt;
* În multe sisteme, controlerul de ceas cumulează şi funcţia de controler de pornire aşa că, urmând secvenţa programată de producător, resetează pe rând şi pune în funcţiune blocurile funcţionale şi magistralele legate la acesta&lt;br /&gt;
&lt;br /&gt;
* Controlerul de periferie&amp;lt;ref name=&amp;quot;southbridge&amp;quot;/&amp;gt; îşi execută secvenţa de iniţializare, de cele mai multe ori executându-şi propriul microcod, fără acces la alte memorii. Odată ce ea este executată, acesta iniţializează şi pune în funcţiune controlerul de magistrală&amp;lt;ref name=&amp;quot;northbridge&amp;quot;&amp;gt;North Bridge&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Controlerul de magistrală&amp;lt;ref name=&amp;quot;northbridge&amp;quot;/&amp;gt; pune în funcţiune controlerul de memorie (uneori sunt aceeaşi unitate funcţională, alteori&amp;lt;ref&amp;gt;vezi cazul AMD64&amp;lt;/ref&amp;gt; sunt blocuri diferite) şi procesorul central&lt;br /&gt;
&lt;br /&gt;
* Un standard istoric dictează ca acesta, ca urmare a secvenţei de resetare, va începe să execute cod de la adresa FFFF0h din ROM&amp;lt;ref&amp;gt;Read only memory&amp;lt;/ref&amp;gt; (memoria RAM&amp;lt;ref&amp;gt;Random access memory&amp;lt;/ref&amp;gt; fiind goală la pornirea computerului). Această adresă este situată in proximitatea zonei de extremă a memoriei, şi conţine o instrucţiune JMP&amp;lt;ref&amp;gt; o instrucţiune specifică limbajului de asamblare pentru arhitecutrile x86, prin intermediul căruia fluxul de execuţie poate sări (engl. JUMP) către o alta zonă a memorie şi işi poate continua execuţia de acolo.&amp;lt;/ref&amp;gt; către zona de memorie care conţine microcodul BIOS-ului&amp;lt;ref&amp;gt;basic input/output system&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* BIOS-ul este încărcat in memoria RAM şi executat. Acesta efectuează mai multe operaţii, printre care: POST&amp;lt;ref&amp;gt;power on self test&amp;lt;/ref&amp;gt;, inventarul şi iniţializarea unor dispozive [incomplet]&lt;br /&gt;
&lt;br /&gt;
* La un moment dat, BIOS-ul caută o unitate de disc de pe care să demareze. De obicei, această unitate de disc este selecţionată în prealabil de către utilizator şi poate fi un CD-ROM, o unitate de dischete, un hard disc ...&lt;br /&gt;
&lt;br /&gt;
* Odată ce unitatea de disc demarabilă este identificată, o anumită porţiune din memoria acesteia este încărcată în memorie şi executată, BIOS-ul predandu-i controlul asupra computerului. Această zonă a memoriei diferă în funcţie de unitatea de disc de pe care se demarează. Cel mai adesea, această unitate de disc este un hard disc, caz în care BIOS-ul îi spune microprocesorului să încarce în memorie şi să execute primul sector al hard discului (primii 512 octeţi). Această zonă a memoriei hard discului poartă numele de MBR&amp;lt;ref&amp;gt;master boot record&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User_talk:Vladg/incomplete/Demararea_fizic%C3%84%C6%92&amp;diff=3304</id>
		<title>User talk:Vladg/incomplete/Demararea fizicÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User_talk:Vladg/incomplete/Demararea_fizic%C3%84%C6%92&amp;diff=3304"/>
				<updated>2006-12-11T05:09:07Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Vladg|vladgl]] pentru [[User:Csdexter|@Dexter]]:&lt;br /&gt;
&lt;br /&gt;
E ... ceva si asta! Da, formatul/stilul este mult mai fain, mai ales ca vad ca ai luat-o de la 0 barat. Eu, sincer sa fiu, nici n-aveam habar de anumite cestiuni detaliate aici!:~) Da, ai dreptate ( am obiceiul sa dau dreptate omului cand are, nu neaparat ca sa-l fac sa se simta bine, mai ales ca deseori stie ca are dreptate:) --na, poate fi luat ca si un 'sunt de acord..' ), am gresit cu alegerea termenilor din introducere. MMM... sa vad acum cum sa urmez formatul... vad ca te-ai oprit cam de unde-am pornit eu, dar acum o sa modific ce-am scris, ca sa nu se simta diferenta..&lt;br /&gt;
&lt;br /&gt;
Nu stiu de ce am impresia c-ai urmat electronica sau ceva de genul. :~)&lt;br /&gt;
&lt;br /&gt;
De poimaine ma pun iarasi pe treaba...pana atunci noapte buna:-), si multumesc pentru corecturi si introducere -- si la mai multe ca-s tare binevenite. :~)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Csdexter|@Dexter]]: pentru [[User:Vladg|vladg]]&lt;br /&gt;
&lt;br /&gt;
Am ales acest scurt fragment pentru a-ti da o idee despre stilul intentionat aici:&lt;br /&gt;
&lt;br /&gt;
'''Iniţializarea unui sistem de calcul'''&lt;br /&gt;
&lt;br /&gt;
Procesul de iniţializare al unui computer&amp;lt;ref&amp;gt;vezi [http://dexonline.ro/search.php?cuv=computer computer] versus [http://dexonline.ro/search.php?cuv=calculator calculator]&amp;lt;/ref&amp;gt; este dependent de arhitectura sa.&amp;lt;ref&amp;gt;microprocesorul este o parte esenţială din definiţia unei arhitecturi, dar un anume model de microprocesor nu defineşte ''sine die'' o arhitectură de sistem de calcul&amp;lt;/ref&amp;gt; În cazul de faţă, vom trata particularităţile specifice arhitecturii IBM PC&amp;lt;ref&amp;gt;i386 sau x86 se referă la procesor pe când noi ne referim la toate PC-urile din lumea asta, adică la &amp;quot;''IBM PC &amp;amp; clones/compatibles''&amp;quot;&amp;lt;/ref&amp;gt;. Procesul este unul complex, dar poate fi rezumat în felul următor:&lt;br /&gt;
&lt;br /&gt;
* În momentul imediat următor conectării sistemului la reţea au loc mai multe procese de natură analogică, cum ar fi (pentru simplificare, presupunem că este vorba de un sistem AT&amp;lt;ref&amp;gt;Advanced Technology&amp;lt;/ref&amp;gt; sau un sistem ATX&amp;lt;ref&amp;gt;AT Extended&amp;lt;/ref&amp;gt; programat să pornească automat la apariţia sau revenirea tensiunii de reţea):&lt;br /&gt;
** Sursa de alimentare detectează tensiunea reţelei şi intră în regim de funcţionare stabil, ca urmare a acestui fapt, la ieşirea sa apar tensiunile nominale necesare alimentării componentelor electronice din sistemul de calcul&lt;br /&gt;
** Dupa un interval de timp suficient de lung pentru ca tensiunile de ieşire ale sursei să se fi stabilizat şi intrat în standard, microcontrolerul din sursa pune semnalul PG&amp;lt;ref&amp;gt;Power Good&amp;lt;/ref&amp;gt; pe &amp;quot;1&amp;quot; logic semnalizând astfel controlerului de alimentare prezent pe placa de bază ca tensiunile de alimentare s-au stabilizat şi sunt deci utilizabile în domeniul digital&lt;br /&gt;
** Controlerul de alimentare verifică în acest moment la rându-i tensiunile livrate şi, în cazul în care acestea corespund standardelor programate de producător, începe alimentarea diverselor etaje funcţionale de pe placa de bază, de obicei începând cu controlerele de ceas şi periferie&amp;lt;ref name=&amp;quot;southbridge&amp;quot;&amp;gt;South Bridge&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Controlerul de ceas îşi pune în funcţiune rezonatorul cu cuarţ din dotare şi începe să genereze (uneori prin multiplicare şi/sau diviziune) semnalele de tact necesare celorlalte blocuri funcţionale&lt;br /&gt;
* În multe sisteme, controlerul de ceas cumulează şi funcţia de controler de pornire aşa că, urmând secvenţa programată de producător, resetează pe rând şi pune în funcţiune blocurile funcţionale şi magistralele legate la acesta&lt;br /&gt;
* Controlerul de periferie&amp;lt;ref name=&amp;quot;southbridge&amp;quot;/&amp;gt; îşi execută secvenţa de iniţializare, de cele mai multe ori executându-şi propriul microcod, fără acces la alte memorii. Odată ce ea este executată, acesta iniţializează şi pune în funcţiune controlerul de magistrală&amp;lt;ref name=&amp;quot;northbridge&amp;quot;&amp;gt;North Bridge&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Controlerul de magistrală&amp;lt;ref name=&amp;quot;northbridge&amp;quot;/&amp;gt; pune în funcţiune controlerul de memorie (uneori sunt aceeaşi unitate funcţională, alteori&amp;lt;ref&amp;gt;vezi cazul AMD64&amp;lt;/ref&amp;gt; sunt blocuri diferite) şi procesorul central&lt;br /&gt;
* Un standard istoric dictează ca acesta, ca urmare a secvenţei de resetare, va începe să execute cod de la adresa &lt;br /&gt;
&lt;br /&gt;
(to be continued, mai scriu si maine)&lt;br /&gt;
&lt;br /&gt;
La pornirea sursei de alimentare, memoria primară a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goală, aşa că microprocesorul este programat să execute instrucţiunile situate într-o zonă rezervată(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe bază(engl.presc. BIOS). Scopul acestei zone este de a direcţiona microprocesorul către locaţia unde se află programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odată ce BIOSul este încărcat în memorie, acesta efectuează mai multe operaţii: autotestarea la punerea în funcţiune(engl. presc. POST), initializarea/inventar al dispozitivelor ş.a.&lt;br /&gt;
&lt;br /&gt;
* Către final, BIOSul caută o unitate de disc de pe care să demareze. De obicei, această unitate de disc este selecţionată în prealabil de către utilizator şi poate fi un CD-ROM, o unitate de dischete, un hard disc..&lt;br /&gt;
&lt;br /&gt;
* Când găseşte unitatea de disc, îi încarcă şi execută sectorul de demarare(engl. boot sector), care, în cazul unui hard disc, poartă numele de MBR(Master Boot Record) şi este localizat în primul sector al hard discului(primii 512 octeţi). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Vladg/incomplete/Demararea_fizic%C3%84%C6%92&amp;diff=3299</id>
		<title>User:Vladg/incomplete/Demararea fizicÄƒ</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Vladg/incomplete/Demararea_fizic%C3%84%C6%92&amp;diff=3299"/>
				<updated>2006-12-09T22:25:26Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Procesul de demarare fizică al unui calculator este dependent de arhitectura microprocesorului. În cazul de faţă, această arhitectură va fi x86/x86-compatibilă. Procesul este unul complex, dar poate fi rezumat în felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primară a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goală, aşa că microprocesorul este programat să execute instrucţiunile situate într-o zonă rezervată(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe bază(engl.presc. BIOS). Scopul acestei zone este de a direcţiona microprocesorul către locaţia unde se află programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odată ce BIOSul este încărcat în memorie, acesta efectuează mai multe operaţii: autotestarea la punerea în funcţiune(engl. presc. POST), initializarea/inventar al dispozitivelor ş.a.&lt;br /&gt;
&lt;br /&gt;
* Către final, BIOSul caută o unitate de disc de pe care să demareze. De obicei, această unitate de disc este selecţionată în prealabil de către utilizator şi poate fi un CD-ROM, o unitate de dischete, un hard disc..&lt;br /&gt;
&lt;br /&gt;
* Când găseşte unitatea de disc, îi încarcă şi execută sectorul de demarare(engl. boot sector), care, în cazul unui hard disc, poartă numele de MBR(Master Boot Record) şi este localizat în primul sector al hard discului(primii 512 octeţi). Din momentul acesta, controlul este predat codului din MBR.&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Vladg/incomplete/Ini%C3%85%C2%A3ializarea_unui_sistem&amp;diff=3281</id>
		<title>User:Vladg/incomplete/IniÅ£ializarea unui sistem</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Vladg/incomplete/Ini%C3%85%C2%A3ializarea_unui_sistem&amp;diff=3281"/>
				<updated>2006-12-06T16:31:05Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prin '''procesul de iniţializare al unui sistem''' se inţelege totalitatea paşilor ce trebuiesc efectuaţi, din momentul pornirii sursei de alimentare, până la incărcarea [[Sistem de Operare|sistemului de operare]] şi iniţializarea serviciilor oferite de acesta.&lt;br /&gt;
&lt;br /&gt;
Deşi procesul de iniţializare al unui sistem este fluid în execuţie, rareori fiind nevoită o intervenţie manuală, şi diferă în funcţie de arhitectura [[Microprocesor|microprocesorului]] şi sistemul de operare, el poate fi impărţit în mai multe stagii.&lt;br /&gt;
&lt;br /&gt;
==Stagiile procesului de iniţializare==&lt;br /&gt;
===Demararea fizică (firmware)===&lt;br /&gt;
Stagiul de [[User:Vladg/Demararea fizică|demarare fizică]] este dependent de arhitectura [[Microprocesor|microprocesorului]], dar scopul său principal este încărcarea în memorie a încărcătorului de sistem şi executarea acestuia.&lt;br /&gt;
===Încărcătorul de sistem===&lt;br /&gt;
Odată cu incheierea stagiului de demarare fizică, [[User:Vladg/Încărcătorul de sistem|încărcătorul de sistem]] este executat. Unul din scopurile principale ale unui încărcător de nucleu este încărcarea în memorie a unui [[Nucleul|nucleu]] si executarea acestuia.&lt;br /&gt;
===Iniţializarea nucleului===&lt;br /&gt;
După ce nucleul este incărcat în memorie şi executat, acesta efectuează mai mule operaţii ce constituie stagiul de [[User:Vladg/Iniţializarea nucleului|iniţializare al nucleului]].&lt;br /&gt;
===Configurarea sistemului şi iniţializarea serviciilor===&lt;br /&gt;
Către finalul stagiului îniţializării nucleului, nucleul are grija ca stagiul [[Configurarea sistemului şi iniţializarea serviciilor|configurării sistemului şi iniţializării serviciilor]] să fie pornit.&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Vladg&amp;diff=3280</id>
		<title>User:Vladg</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Vladg&amp;diff=3280"/>
				<updated>2006-12-06T11:36:49Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Metode de contact:''': Email: [mailto:icantfindavaliduserDOTgmail.com icantfindavaliduser'''&amp;amp;#64;'''gmail&amp;lt;small&amp;gt;.&amp;lt;/small&amp;gt;com] | YM: snshq | IRC pseudonim: ecm ( servere: freenode sau oftc ).&lt;br /&gt;
&lt;br /&gt;
[[User:Vladg/incomplete/|Proiectele]] la care lucrez.&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Vladg/incomplete/&amp;diff=3279</id>
		<title>User:Vladg/incomplete/</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Vladg/incomplete/&amp;diff=3279"/>
				<updated>2006-12-06T11:27:26Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Această pagină se doreşte a fi un portal către toate proiectele &amp;lt;ref&amp;gt;Prin proiect se inţelege orice articol, ghid, tutorial ... pe scurt: orice pagină.&amp;lt;/ref&amp;gt; neterminate la care lucrez. Deşi toate lucrările găsite aici sunt în curs de scriere, corecturile, sfaturile sau propunerile sunt binevenite. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Lista Proiectelor==&lt;br /&gt;
===[[User:Vladg/incomplete/Iniţializarea unui sistem|Iniţializarea unui sistem]]===&lt;br /&gt;
Detalii generale despre paşii care trebuiesc efectuaţi pentru a iniţializa un sistem.&lt;br /&gt;
===[[User:Vladg/incomplete/Demararea fizică|Demararea fizică]]===&lt;br /&gt;
Detalierea demarării fizice pentru arhitectura x86.&lt;br /&gt;
===[[User:Vladg/incomplete/Încarcătorul de sistem|Încarcătorul de sistem]]===&lt;br /&gt;
Detalierea rolului unui încărcător de sistem, precum şi expunerea, pe scurt, a paşilor efectuaţi de acesta.&lt;br /&gt;
===[[User:Vladg/incomplete/sysvinit|sysvinit]]===&lt;br /&gt;
Detalierea rolului suitei de utilitare sysvinit precum si întrebuinţarea acesteia.&lt;br /&gt;
===[[User:Vladg/incomplete/Iniţializarea unui sistem GNU/Slackware|Iniţializarea unui sistem GNU/Slackware]]===&lt;br /&gt;
Detalierea procesului de iniţializare al distribuţiei Slackware.&lt;br /&gt;
&lt;br /&gt;
==Lucruri de ştiut despre formatul articolelor la care lucrez==&lt;br /&gt;
* Nu voi forţa traducerea termenilor englezeşti tehnici în termeni româneşti, dacă termenul ce se doreşte a fi tradus nu are un echivalent românesc sau dacă traducerea s-ar efectua intr-un mod nenatural. Dacă ştiti cum ar putea fi ocolit sau tradus un anumit termen întrebuinţat, vă rog să interveniţi! &lt;br /&gt;
&lt;br /&gt;
* Pe cât posibil, voi încerca înglobarea unor cuvinte sau expresii -- ce caracterizează un serviciu&amp;lt;ref&amp;gt;Prin serviciu să se înteleagă ''orice program sau proces independent de distribuţia folosită''&amp;lt;/ref&amp;gt; găsit pe sistemele de operare GNU/Linux -- în legături ce duc spre un articol, existent sau nu, ce ar detalia acel serviciu.&lt;br /&gt;
==Note==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Vladg/incomplete/&amp;diff=3278</id>
		<title>User:Vladg/incomplete/</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Vladg/incomplete/&amp;diff=3278"/>
				<updated>2006-12-06T11:05:38Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Această pagină se doreşte a fi un portal către toate proiectele &amp;lt;ref&amp;gt;Prin proiect se inţelege orice articol, ghid, tutorial ... pe scurt: orice pagină.&amp;lt;/ref&amp;gt; neterminate la care lucrez. Deşi toate lucrările găsite aici sunt în curs de scriere, corecturile, sfaturile sau propunerile sunt binevenite. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Lista Proiectelor==&lt;br /&gt;
===[[User:Vladg/incomplete/Iniţializarea unui sistem|Iniţializarea unui sistem]]===&lt;br /&gt;
Detalii generale despre paşii care trebuiesc efectuaţi pentru a iniţializa un sistem.&lt;br /&gt;
===[[User:Vladg/incomplete/Demararea fizică|Demararea fizică]]===&lt;br /&gt;
Detalierea demarării fizice pentru arhitectura x86.&lt;br /&gt;
===[[User:Vladg/incomplete/Încarcătorul de sistem|Încarcătorul de sistem]]===&lt;br /&gt;
Detalierea rolului unui încărcător de sistem, precum şi expunerea, pe scurt, a paşilor efectuaţi de acesta.&lt;br /&gt;
===[[User:Vladg/incomplete/sysvinit|sysvinit]]===&lt;br /&gt;
Detalierea rolului suitei de utilitare sysvinit precum si întrebuinţarea acesteia.&lt;br /&gt;
===[[User:Vladg/incomplete/Iniţializarea unui sistem GNU/Slackware|Iniţializarea unui sistem GNU/Slackware]]===&lt;br /&gt;
Detalierea procesului de iniţializare al distribuţiei Slackware.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Introducere_in_criptografie_cu_GNU/Linux&amp;diff=3268</id>
		<title>Talk:Introducere in criptografie cu GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Introducere_in_criptografie_cu_GNU/Linux&amp;diff=3268"/>
				<updated>2006-12-04T02:58:41Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Orice fel de contributii sint apreciate.&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Introducere_in_criptografie_cu_GNU/Linux&amp;diff=3267</id>
		<title>Introducere in criptografie cu GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Introducere_in_criptografie_cu_GNU/Linux&amp;diff=3267"/>
				<updated>2006-12-04T02:58:02Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In curs de scriere.&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3266</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3266"/>
				<updated>2006-12-04T02:52:27Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum observam, init este primul(chiar unicul) program executat de catre nucleu. De fapt, nucleul nu executa _programul_ init, ci programul care are calea absoluta /sbin/init, /etc/init, /bin/init sau /bin/sh, asta in cazul in care nucleului nu-i este specificat ca parametru de executie(init= -- deobicei specificat prin intermediul lui LILO sau altui program de incarcare) altceva(execute_command).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mai observam ca dupa 3 incercari de a executa programul &amp;quot;init&amp;quot;, nucleul isi incearca pentru ultima oara norocul cu /bin/sh. Pe Slackware (si nu numai), fisierul cu aceasta cale absoluta este o legatura cu interpretorul de comenzi BASH. Asta inseamna ca, in cazul in care celelalte trei cai nu sint valide, ne vom trezi cu un interpretor de comenzi pentru suprautilizator si un sistem neconfigurat. Acesta este unul dintre riscurile de securitate despre care vorbeam in subcapitolul legat de programele de incarcare, datorita faptului ca prin intermediul lor se poate forta nucleul sa execute calea /bin/sh, sau a oricarui alt executabil preprogramat. Folosindu-ne de cunostintele acumulate pe parcursul ghidului, voi arata, catre final, in capitolul [inca nu i-am gasit un nume] cum se poate configura si pune in picioare in mod manual un sistem folosindu-ne doar de interpetatorul de comenzi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Tot procesul descris pana in acest moment ar trebui sa fie independent de distributia folosita. In schimb, odata cu executia programului cu una dintre cele 3 cai enumerate mai devreme, lucrurile tind sa devina specifice (dar nu exagerat) distributiei, sau, mai exact, specifice unui stil de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Lumea tinde sa-i atribuie lui Slackware si derivatelor sale stilul &amp;quot;BSD&amp;quot;, iar distributiilor ca Fedora Core, SuSe, Mandriva s.a. stilul &amp;quot;System V&amp;quot;. BSD si System V au fost, acum multi ani, niste versiuni de UNIX care, dupa cum se vede, au influentat sistemele de operare actuale. Ele isi mai continua si astazi existenta prin rudele lor de grad I, cum ar fi, in cazul lui System V, UnixWare, iar, in cazul lui BSD, Open/Net/FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta categorisire, in schimb, daca este luata la puricat, nu este tocmai corecta. Slackware se foloseste de stilul de initializare &amp;quot;System V&amp;quot;, doar ca il abordeaza intr-o maniera 'mai BSD', simplificandu-l, dupa cum vom vedea. Nu am sa intru detalii legate de diferentele de abordare a initializarii de catre, sa zicem, Mandriva si Slackware, nu asta este scopul ghidului. In schimb, la final, odata inteles modul in care Slackware 'vede lumea', cititorul se poate folosi de cunostiintele acumulate pentru a compara toate distributiile GNU/Linux, daca doreste :~)&lt;br /&gt;
&lt;br /&gt;
====sysvinit====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Slackware, ca si majoritatea celorlalte distributii, se foloseste de suita de utilitare sysvinit (instalata prestabilit). O scurta descriere a pachetului, insotita de o lista cu programele incluse in el, ar fi urmatoarea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ echo -e \\n &amp;quot;Descriere:&amp;quot;; head -n14 /var/log/packages/sysvinit-2.84-i486-69; \&lt;br /&gt;
echo -e \\n\\n &amp;quot;Lista cu programe:&amp;quot;; grep -e [18].gz$ /var/log/packages/sysinit-2.84-i486-69 | \&lt;br /&gt;
awk -F/ ' { print $4 } ' | awk -F. ' { print $1 } '&lt;br /&gt;
&lt;br /&gt;
Descriere:&lt;br /&gt;
PACKAGE NAME:     sysvinit-2.84-i486-69&lt;br /&gt;
COMPRESSED PACKAGE SIZE:     296 K&lt;br /&gt;
UNCOMPRESSED PACKAGE SIZE:     650 K&lt;br /&gt;
PACKAGE LOCATION: /var/log/mount/slackware/a/sysvinit-2.84-i486-69.tgz&lt;br /&gt;
PACKAGE DESCRIPTION:&lt;br /&gt;
sysvinit: sysvinit (init, the parent of all processes)&lt;br /&gt;
sysvinit:&lt;br /&gt;
sysvinit: System V style init programs by Miquel van Smoorenburg that control&lt;br /&gt;
sysvinit: the booting and shutdown of your system.  These support a number of&lt;br /&gt;
sysvinit: system runlevels, each with a specific set of utilities spawned.&lt;br /&gt;
sysvinit: For example, the normal system runlevel is 3, which starts agetty&lt;br /&gt;
sysvinit: on virtual consoles tty1 - tty6.  Runlevel 4 starts xdm.&lt;br /&gt;
sysvinit: Runlevel 0 shuts the system down.&lt;br /&gt;
sysvinit:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lista cu programe:&lt;br /&gt;
last&lt;br /&gt;
runlevel&lt;br /&gt;
killall5&lt;br /&gt;
shutdown&lt;br /&gt;
poweroff&lt;br /&gt;
init&lt;br /&gt;
halt&lt;br /&gt;
pidof&lt;br /&gt;
reboot&lt;br /&gt;
telinit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observam ca unul dintre programele incluse in pachet poarta denumirea de init. II aflam calea absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ su -c 'which init'&lt;br /&gt;
Password:&lt;br /&gt;
/sbin/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Avand respectiva cale, inseamna ca ar trebui sa fie primul program executat de nucleu. Ne putem convinge de acest lucru folosind comanda pstree(1), care ne va afisa un arbore de procese.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ pstree -np&lt;br /&gt;
init(1)-+-keventd(2)&lt;br /&gt;
        |-ksoftirqd_CPU0(3)&lt;br /&gt;
        |-kswapd(4)&lt;br /&gt;
        |-bdflush(5)&lt;br /&gt;
        |-kupdated(6)&lt;br /&gt;
        |-khubd(7)&lt;br /&gt;
        |-syslogd(72)&lt;br /&gt;
        |-klogd(75)&lt;br /&gt;
        |-inetd(631)&lt;br /&gt;
        |-dhcpcd(635)&lt;br /&gt;
        |-sshd(639)&lt;br /&gt;
        |-crond(652)&lt;br /&gt;
        |-atd(654)&lt;br /&gt;
        |-gpm(664)&lt;br /&gt;
        |-agetty(667)&lt;br /&gt;
        |-agetty(668)&lt;br /&gt;
        |-agetty(669)&lt;br /&gt;
        |-agetty(670)&lt;br /&gt;
        |-agetty(671)&lt;br /&gt;
        |-bash(860)---startx(958)---xinit(974)-+-X(975)&lt;br /&gt;
        |                                      `-xinitrc(979)---startkde(980)---kwrapper(1020)&lt;br /&gt;
        |-kdeinit(1008)-+-kdeinit(1013)&lt;br /&gt;
        [...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Uitandu-ne la arbore, observam ca, pe langa faptul ca init este primul proces si are pid'ul(tradus?) 1, restul proceselor tind sa izvoreasca din el. Consultandu-i pagina manual (init(8)), aflam niste detalii importante, printre care:&lt;br /&gt;
&lt;br /&gt;
* Init este tatal tuturor proceselor. Este primul program executat de catre nucleul la sfarsitul secventei de initializare al acestuia, fiindu-i atribuit pid-ul cu valoarea 1. ( de mentionat ca nucleul n-are pid'ul 1, ci 0. )&lt;br /&gt;
&lt;br /&gt;
* Printre scopurile sale se numara: Initializarea tuturor celorlalte procese, colectarea proceselor moarte(zombi) si regenerarea unor procese fiu la terminarea lor; Inspectarea, la initializare, a fisierului /etc/inittab, pentru configurarea sistemului.&lt;br /&gt;
&lt;br /&gt;
* Acceptare unor parametrii de executie, de obicei setati prin intermediul unui program de incarcare, care, daca sint specificati, ii pot schimba cursul firesc al derularii.&lt;br /&gt;
&lt;br /&gt;
* Captarea unor semnale si reactionarea la ele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Restul capacitatilor vor fi descrise spre finalul ghidului.&lt;br /&gt;
&lt;br /&gt;
=====/etc/inittab=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum s-a specificat mai sus, init,la executare, va citi fisierul /etc/inittab pentru a sti cum sa configureze sistemul. Conform paginii manual inittab(5), formatul fisierului /etc/inittab este urmatorul:&lt;br /&gt;
&lt;br /&gt;
id:niveluri de rulare:actiune:proces&lt;br /&gt;
&lt;br /&gt;
* Campul id: Trebuie sa contina un sir unic de maximum 4 caractere alfanumerice. Este folosit pentru a identifica fiecare intrare din fisier.&lt;br /&gt;
&lt;br /&gt;
* Niveluri de rulare: In primul rand, nivelul de rulare, conform paginii manual init(8), reprezinta o configuratie software a sistemului care, printre altele, specifica ce procese trebuiesc pornite de catre init. Configuratia se realizeaza prin intermediul unor scripturi BASH, fiecarui nivel de rulare atribuindu-se cel putin unul. Pot exista mai multe niveluri de executie. In Slackware, cele prestabilite sint urmatoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# These are the default runlevels in Slackware:&lt;br /&gt;
#   0 = halt&lt;br /&gt;
#   1 = single user mode&lt;br /&gt;
#   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
#   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
#   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   6 = reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In fisierul /etc/inittab, campul dedicat nivelurilor de rulare trebuie sa contina o lista de niveluri de rulare pentru care trebuie executata o actiune ce, in majoritatea cazurilor. Vom vedea imediat ce inseamna toate acestea.&lt;br /&gt;
&lt;br /&gt;
* Campul actiune: Descrie actiunea pe care init o sa o realizeze pentru o lista de niveluri de rulare. Exista mai multe tipuri de actiuni, printre care:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''respawn''': lanseaza o noua instanta a unui proces, daca acesta isi termina executia&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''wait''': procesul va fi pornit odata cu intrarea in nivelul de rulare, iar init va astepta pana acesta se incheie.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''once''': procesul va fi executat o singura data, de indata ce se va intra in nivelul de rulare&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''sysinit''': intrarea ce contine aceasta actiune specifica procesul ce trebuie executat in timpul initializarii sistemului de catre init. De obicei, acest, dupa cum vom vedea, scriptul BASH /etc/rc.S.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''initdefault''': intrarea ce contine aceasta actiune specifica si nivel de rulare care va fi executat de catre init, imediat dupa ce sistemul a fost initializat (prin intermediul scriptului rc.S.)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''ctrlaltdel''': procesul va fi executat atunci cand init va primi semnalul SIGINIT. Semnalul SIGINIT este trimis atunci cand sint apasate tastele CTRL-ALT-DELETE. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum se observa, majoritatea actiunilor merg mana in mana cu un proces. Procesul este specificat in campul proces.&lt;br /&gt;
&lt;br /&gt;
* Campul proces: Specifica un proces ce trebuie executat la intrarea intr-un nivel de rulare. Procesul poate fi o comanda sau un script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ca sa intelegem mai bine ce inseamna toate acestea, vom analiza un fisier /etc/inittab.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/inittab&lt;br /&gt;
     1  #&lt;br /&gt;
     2  # inittab       This file describes how the INIT process should set up&lt;br /&gt;
     3  #               the system in a certain run-level.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Version:      @(#)inittab             2.04    17/05/93        MvS&lt;br /&gt;
     6  #                                       2.10    02/10/95        PV&lt;br /&gt;
     7  #                                       3.00    02/06/1999      PV&lt;br /&gt;
     8  #                                       4.00    04/10/2002      PV&lt;br /&gt;
     9  #&lt;br /&gt;
    10  # Author:       Miquel van Smoorenburg, &amp;lt;miquels@drinkel.nl.mugnet.org&amp;gt;&lt;br /&gt;
    11  # Modified by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
    12  #&lt;br /&gt;
    13&lt;br /&gt;
    14  # These are the default runlevels in Slackware:&lt;br /&gt;
    15  #   0 = halt&lt;br /&gt;
    16  #   1 = single user mode&lt;br /&gt;
    17  #   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    18  #   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
    19  #   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
    20  #   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    21  #   6 = reboot&lt;br /&gt;
    22&lt;br /&gt;
    23  # Default runlevel. (Do not set to 0 or 6)&lt;br /&gt;
    24  id:3:initdefault:&lt;br /&gt;
    25&lt;br /&gt;
    26  # System initialization (runs when system boots).&lt;br /&gt;
    27  si:S:sysinit:/etc/rc.d/rc.S&lt;br /&gt;
    28&lt;br /&gt;
    29  # Script to run when going single user (runlevel 1).&lt;br /&gt;
    30  su:1S:wait:/etc/rc.d/rc.K&lt;br /&gt;
    31&lt;br /&gt;
    32  # Script to run when going multi user.&lt;br /&gt;
    33  rc:2345:wait:/etc/rc.d/rc.M&lt;br /&gt;
    34&lt;br /&gt;
    35  # What to do at the &amp;quot;Three Finger Salute&amp;quot;.&lt;br /&gt;
    36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&lt;br /&gt;
    37&lt;br /&gt;
    38  # Runlevel 0 halts the system.&lt;br /&gt;
    39  l0:0:wait:/etc/rc.d/rc.0&lt;br /&gt;
    40&lt;br /&gt;
    41  # Runlevel 6 reboots the system.&lt;br /&gt;
    42  l6:6:wait:/etc/rc.d/rc.6&lt;br /&gt;
    43&lt;br /&gt;
    44  # These are the standard console login getties in multiuser mode:&lt;br /&gt;
    45  c1:1235:respawn:/sbin/agetty 38400 tty1 linux&lt;br /&gt;
    46  c2:1235:respawn:/sbin/agetty 38400 tty2 linux&lt;br /&gt;
    47  c3:1235:respawn:/sbin/agetty 38400 tty3 linux&lt;br /&gt;
    48  c4:1235:respawn:/sbin/agetty 38400 tty4 linux&lt;br /&gt;
    49  c5:1235:respawn:/sbin/agetty 38400 tty5 linux&lt;br /&gt;
    50  c6:12345:respawn:/sbin/agetty 38400 tty6 linux&lt;br /&gt;
    51&lt;br /&gt;
    52  # Runlevel 4 used to be for an X window only system, until we discovered&lt;br /&gt;
    53  # that it throws init into a loop that keeps your load avg at least 1 all&lt;br /&gt;
    54  # the time. Thus, there is now one getty opened on tty6. Hopefully no one&lt;br /&gt;
    55  # will notice. ;^)&lt;br /&gt;
    56  # It might not be bad to have one text console anyway, in case something&lt;br /&gt;
    57  # happens to X.&lt;br /&gt;
    58  x1:4:respawn:/etc/rc.d/rc.4&lt;br /&gt;
    59&lt;br /&gt;
    60  # End of /etc/inittab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Vom analiza fiecare intrare, explicand-o.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Prima intrare, cea de la linia 24, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;id&amp;quot; (datorita campului id, faptul ca valoare campului coincide cu numele acestuia nu are vreo importanta). Campul nivelului de rulare este ocupat de caracterul &amp;quot;3&amp;quot;. Campul actiunii este ocupat de 'initdefault', ceea ce inseamna ca init va intra in nivelul de rulare specificat de catre acest camp, adica, in cazul nostru, &amp;quot;3&amp;quot;. Campul proces lipseste doarece intrarea, continand actiunea 'initdefault', nu necesita un proces, acesta fiind oricum ignorat daca ar fi specificat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A doua intrare, cea de la linia 27, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;si&amp;quot;. Campul nivelului de rulare este ocupat de caracterul &amp;quot;S&amp;quot;.Campul actiunii este ocupat de  catre &amp;quot;sysinit&amp;quot;, iar procesul este scriptul /etc/rc.d/rc.S. Faptul ca &amp;quot;sysinit&amp;quot; ocupa campul actiune ii spune lui init sa execute procesul din campul proces (in cazul acest, ii spune lui init sa execute scriptul /etc/rc.d/rc.S) inainte de a intra in vreun nivel de rulare(nivelul &amp;quot;3&amp;quot;, in cazul nostru ^^).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treia intrare, cea de la linia 30, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;su&amp;quot;. Campul nivelului de rulare este &amp;quot;1S&amp;quot;, ceea ce-nseamna ca intrarea se aplica atat nivelului de rulare &amp;quot;1&amp;quot;, cat si nivelului de rulare &amp;quot;S&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.K. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A patra intrare, cea de la linia 33, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;rc&amp;quot;. Campul nivelelor de rulare este &amp;quot;2345&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelelor de rulare &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot; si &amp;quot;5&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.M. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A cincea intrare, cea de la linia 36, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;ca&amp;quot;. Campul nivelelor de rulare este gol. Campul actiunii este ocupat de catre &amp;quot;ctrlaltdel&amp;quot;, iar procesul de catre comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Faptul ca &amp;quot;ctrlaltdel&amp;quot; ocupa campul actiune ii spune lui init ca, atunci cand sint apasate tastele CTRL+ALT+DELETE la consola, sa execute procesul din campul proces, in cazul nostru comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Aceasta actiune nu necesita un nivel de rulare, presupunandu-se ca, daca ajungem la o consola sa apasam cele trei taste mai devreme mentionate, sintem deja intr-un nivel de rulare cu un sistem mai mult sau mai putin configurat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A sasea intrare, cea de la linia 39, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l0&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;0&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;0&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.0. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.0 atunci cand va intra in nivelul de rulare &amp;quot;0&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A saptea intrare, cea de la linia 42, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l6&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;6&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;6&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.6. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.6 atunci cand va intra in nivelul de rulare &amp;quot;6&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmatoarele 5 intrari -- de la linia 45 la linia 49 -- sint aproape identice, singurele lucruri care le deosebesc fiind campul care le identifica( oare de ce?:-) ) si penultimul parametru de executie al comenzii din campul proces. Toate au la campul nivelurilor de rulare caracterele &amp;quot;1235&amp;quot;. Toate au in campul actiunii &amp;quot;respawn&amp;quot;, iar la proces comanda &amp;quot;/sbin/agetty 38400 tty&amp;lt;x&amp;gt; linux&amp;quot;, &amp;lt;x&amp;gt; diferind de la intrare la intrare. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa regenereze procesul din campul proces, cand acesta isi termina executia. In cazul nostru, init va regenera o sesiune de identificare(engl. login prompt) in cazul in care aceasta se va sfarsi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treisprezecea intrare, cea de la linia 50, este are aceleasi proprietati ca si ultimele 5 intrari, doar ca intrarea este aplicata si nivelului de rulare &amp;quot;4&amp;quot;, spre deosebire de precedentele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ultima intrare, cea de la linia 58, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;x1&amp;quot;. Campul nivelurilor de rulare este ocupat de catre caracterul &amp;quot;4&amp;quot;. Campul actiune este ocupat de catre &amp;quot;respawn&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.4. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa reexecute scriptul /etc/rc.d/rc.4, cand acesta se va termina.&lt;br /&gt;
&lt;br /&gt;
=====Lamuriri necesare pentru a continua. Mica erata a ceea ce a fost expus pana acum.=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Probabil ca se observa niste neconcordante intre anumite lucruri ce-au fost descrise pana acum. De exemplu: Inainte sa depanam fisierul /etc/inittab, s-a spus ca valoarea din campul proces reprezinta un proces (ce, dupa cum am observat, poate fi o comanda sau un script) care va fi executat de catre init _l-a intrarea intr-un nivel de rulare_, dar noi am observat ca intr-unele intrari campul nivelurilor de rulare este gol, pe cand campul proces contine o valoare. De ce am spus asta? Pai, in primul rand, ca este mai usor de inteles un lucru partial adevarat, urmat de o lamurire, decat daca as intra in detalii de la bun inceput; si, in plus, explicatiile detaliate duc, dupa cum se pare, la exprimari tautologice ( ca sa fiu delicat :~) ), datorita unor termeni care nu se impac intr-o expresie/propozitie... Bun. Revenind.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Init, pe langa faptul ca este primul program executat, mai este si ultimul, -- asta in cazul in care procesul de oprire al calculatorului se deruleaza normal si corect. Ce ne spune acest lucru? Pai ne spune mai multe lucruri. Ne spune, de exemplu, ca pe parcursul timpului de executie al lui init, sistemul este 1. configurat 2. intretinut 3. deconfigurat. Vom urma in detaliu stagiile (1) si (3), dar hai sa spunem cateva lucruri despre fiecare in parte, chiar daca voi prelua anumite idei ce-au fost deja expuse.&lt;br /&gt;
&lt;br /&gt;
* (1) Nucleul nu-l arunca pe init intr-un mediu complet configurat. De fapt, luat in mare, nu il lasa decat cu un sistem de fisiere radacina montat cu proprietatea de numai-citire, dupa care se retrage linistit in fundal, unde isi vede de treaba, printre altele punand la dispozitia programelor o suita de apeluri de sistem prin intermediu carora acestea comunica cu el. Pana ajungem noi sa ne autentificam, init are mult de munca. De fapt, prea il elogiez, caci el nu face toata treaba de unul singur, ci mai degraba o coordoneaza. Am observat ca el citeste fisierul /etc/inittab si ca de acolo afla, printre altele, ce scripturi sa execute pentru configurarea sistemului. Comenzile din acele scripturi, de fapt, pun in picioare sistemul, iar unul dintre rolurile lui init este sa ruleze aceste scripturi. Acest lucru ofera o mare flexibilitate administratorului sistemului, deoarece scripturile sint mai usor de inteles si de schimbat. Va imaginati ce-ar fi insemnat ca init sa faca toata treaba de unul singur, fara sa apeleze la BASH sau alt interpretor de comenzi? Ar fi insemnat ca init sa fie foarte complex, ar fi insemnat ca administratorul de sistem sa ii umble prin codul sursa, daca ar vrea sa schimbe ceva -- orice, dupa care sa-l recompileze s.a.m.d. Ca sa inchei scurta introducere a acestui stagiu, nu mai spun decat ca, in Slackware si derivatele sale, TOATE scripturile de care se foloseste init se afla in directorul /etc/rc.d/. Acest lucru nu este batut in cuie, putand foarte lejer sa schimbam asta prin modificarea campului proces al intrarilor din /etc/inittab, dar este o conventie utila si bine gandita, asa mai bine nu am schimba-o. De asemenea, vom urmari indeaproape fiecare script in parte.&lt;br /&gt;
&lt;br /&gt;
* (2) Cum sta treaba cu intretinerea sistemului? Pai e lesne de imaginat ca, fiind primul program pornit si ruland _mereu_, chiar si dupa ce sistemul a fost configurat si noi deja ne bucuram de facilitile unui client de posta electronica, init nu sta degeaba. S-a specificat mai devreme, cand au fost enumerate unele dintre scopurile sale, ca se ocupa cu initializarea tuturor celorlalte procese, colectarea proceselor moarte s.a. Nu s-a specificat, in schimb, o proprietate specifica tuturor programelor ( a se citi proceselor ) unui sistem compatibil cu standardele ANSI/POSIX. Aceasta proprietate este aceea de a capta semnale. Probabil ca toti stim ce este un semnal, deoarece toti am folosit comanda kill. Stim ca programele pot fi programate(...) sa capteze anumite semnale, si sa interactioneze intr-un anume fel la primirea acestora. Asa face si init, dar spre deosebire de alte programe, ii poate fi specificat si cum sa reactioneze la primirea anumitor semnale. Cum ii specificam asta? Pai cum faceam si pana acum, cand voiam sa-i modelam comportamentul: folosindu-ne de fisierul /etc/inittab. Acum ajungem la acele neconcordante despre care vorbeam mai devreme, anume intrarile din fisierul /etc/inittab care contin nu contin un nivel de rulare, dar contin un proces.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;S-a specificat ca aceasta intrare are urmatoarea influenta asupra lui init: cand init primeste semnalul SIGINIT (care ii este trimis cand sint apasate, la consola, tastele CTRL+ALT+DELETE), acesta executa comanda /sbin/shutdown -t5 -r now. Faptul ca nu este specificat un nivel de rulare nu are vreo importanta, caci intrarea cu aceasta actiune se aplica oricarui 'nivel de rulare'( de fapt, daca init este pornit, nu conteaza daca sistemul este configurat sau ba, daca sintem intr-un nivel de rulare sau nu, va reactiona cum am spus mai devreme. ). Aceasta nu este singura actiune care ii spune lui init sa reactioneze cumva la primirea unui semnal. Distributia vine cu un fisier /etc/inittab care contine inca 2 intrari cu actiuni asemanatoare, anume powerfail si powerokwait, care reactioneaza la semnale primite de la sursa de alimentare neintreruptibila(engl. presc. UPS).&lt;br /&gt;
&lt;br /&gt;
* (3) Despre acest stagiu nu s-a scris deloc pana acum. Pe scurt, deconfigurarea sistemului se face prin configurarea unor nivele de rulare pentru acest scop, nivele de rulare care sa execute anumite scripturi care sa faca, in mare parte, opusul scriptului de initializare + oprirea serviciilor specifice nivelului de rulare in care sintem. Aceste scripturi, in cazul de fata -- si in cazul unei distributii Slackware nemodificate --, sint /etc/rc.0 si /etc/rc.6, specifice nivelurilor de executie &amp;quot;0&amp;quot; si &amp;quot;6&amp;quot;. Le vom urmari indeaproape.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In cele ce urmeaza, vom analiza stagiul (2), mai exact scripturile executate de catre init, folosindu-ne de fisierul /etc/inittab postat aici. Scripturile pe care le vom analiza sint cele care vin cu distributia, mai putin /etc/inittab, caruia i-au fost scoase 2 intrari care oricum n-au sa faca mare diferenta. Vom lua scripturile in ordinea executarii lor de catre init.&lt;br /&gt;
&lt;br /&gt;
=====/etc/rc.S=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Are urmatoarele calitati:&lt;br /&gt;
&lt;br /&gt;
* 1. Este primul script executat de catre init.&lt;br /&gt;
&lt;br /&gt;
* 2. Este rulat inainte de executarea oricarui script specific vreunui nivel de rulare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Scriptul este voluminos. In cele ce urmeaza, continutul sau va fi postat in varianta originala. Nu voi scoate comentariile, acestea fiind de ajutor daca stiti ceva 'engleza tehnica'; daca nu stiti, sau nu intelegeti, oricum voi repeta (si adauga) explicatii in limba romana, pentru fiecare instructiune sau bloc de instructiuni.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatie: Am pornit de la bun inceput de la premiza ca aveti ceva cunostinte legate de interpretorul de comenzi BASH si despre mediul GNU/Linux (comenzi elementare, machetarea fisierelor s.a.m.d.), intr-atat incat sa intelegeti o buna parte din toate cele ce-ar urma, chiar daca doar semantic. Daca nu aveti experienta cu cele mai sus enumerate, puteti profita de rigurozitatea cu care se va incerca explicarea scripturilor si, impreuna cu tutorialele/indrumarele specificate la finalul ghidului, sa analizati mecanismele acestea folosite in viata reala.&lt;br /&gt;
&lt;br /&gt;
======Continut======&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/rc.d/rc.S&lt;br /&gt;
     1  #!/bin/sh&lt;br /&gt;
     2  #&lt;br /&gt;
     3  # /etc/rc.d/rc.S:  System initialization script.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Mostly written by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
     6  #&lt;br /&gt;
     7&lt;br /&gt;
     8  PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
     9&lt;br /&gt;
    10  # Mount /proc right away:&lt;br /&gt;
    11  /sbin/mount -v proc /proc -n -t proc&lt;br /&gt;
    12&lt;br /&gt;
    13  # If 'nohotplug' was given at boot, or rc.hotplug has been turned off&lt;br /&gt;
    14  # (and a 2.4.x kernel is running), then shut off hotplugging in the&lt;br /&gt;
    15  # kernel now.  Realize that if you turn off hotplugging support that&lt;br /&gt;
    16  # you will have to load all the kernel modules that you need yourself&lt;br /&gt;
    17  # (possibly in /etc/rc.d/rc.modules, which does not promise to list&lt;br /&gt;
    18  # all of them), and make any additional device nodes that you need in&lt;br /&gt;
    19  # the /dev directory.&lt;br /&gt;
    20  if [ -w /proc/sys/kernel/hotplug ]; then&lt;br /&gt;
    21    # Kernel command line option 'nohotplug' given, so we will shut off&lt;br /&gt;
    22    # hotplugging even if it is not a good idea.  Sometimes it *is* a&lt;br /&gt;
    23    # good idea, especially when you're trying to figure out which&lt;br /&gt;
    24    # kernel module is crashing the machine and needs to be added to&lt;br /&gt;
    25    # your /etc/modprobe.d/blacklist (2.6+ kernels) and/or your&lt;br /&gt;
    26    # /etc/hotplug/blacklist (2.4.x kernels).&lt;br /&gt;
    27    if grep -wq nohotplug /proc/cmdline ; then&lt;br /&gt;
    28      echo &amp;quot;/dev/null&amp;quot; &amp;gt; /proc/sys/kernel/hotplug&lt;br /&gt;
    29    elif [ ! -x /etc/rc.d/rc.hotplug ]; then&lt;br /&gt;
    30      # Ignore /etc/rc.d/rc.hotplug on kernels newer than 2.4.x:&lt;br /&gt;
    31      if [ ! &amp;quot;$(uname -r | cut -f 1,2 -d .)&amp;quot; = &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
    32        # We must be running a 2.4.x kernel, so turn off hotplug:&lt;br /&gt;
    33        echo &amp;quot;/dev/null&amp;quot; &amp;gt; /proc/sys/kernel/hotplug&lt;br /&gt;
    34      fi&lt;br /&gt;
    35    fi&lt;br /&gt;
    36  fi&lt;br /&gt;
    37&lt;br /&gt;
    38  # Start devfsd if necessary.  On newer kernels, udev should be used instead.&lt;br /&gt;
    39  if [ -x /etc/rc.d/rc.devfsd ]; then&lt;br /&gt;
    40    /etc/rc.d/rc.devfsd start&lt;br /&gt;
    41  fi&lt;br /&gt;
    42&lt;br /&gt;
    43  # Mount sysfs next, if the kernel supports it:&lt;br /&gt;
    44  if [ -d /sys ]; then&lt;br /&gt;
    45    if cat /proc/filesystems | grep -wq sysfs ; then&lt;br /&gt;
    46      if ! cat /proc/mounts | grep -wq sysfs ; then&lt;br /&gt;
    47        /sbin/mount -v sysfs /sys -n -t sysfs&lt;br /&gt;
    48      fi&lt;br /&gt;
    49    fi&lt;br /&gt;
    50  fi&lt;br /&gt;
    51&lt;br /&gt;
    52  # Enable swapping:&lt;br /&gt;
    53  /sbin/swapon -a&lt;br /&gt;
    54&lt;br /&gt;
    55  # Test to see if the root partition is read-only, like it ought to be.&lt;br /&gt;
    56  READWRITE=no&lt;br /&gt;
    57  if touch /fsrwtestfile 2&amp;gt;/dev/null; then&lt;br /&gt;
    58    rm -f /fsrwtestfile&lt;br /&gt;
    59    READWRITE=yes&lt;br /&gt;
    60  else&lt;br /&gt;
    61    echo &amp;quot;Testing root filesystem status:  read-only filesystem&amp;quot;&lt;br /&gt;
    62  fi&lt;br /&gt;
    63&lt;br /&gt;
    64  # See if a forced filesystem check was requested at shutdown:&lt;br /&gt;
    65  if [ -r /etc/forcefsck ]; then&lt;br /&gt;
    66    FORCEFSCK=&amp;quot;-f&amp;quot;&lt;br /&gt;
    67  fi&lt;br /&gt;
    68&lt;br /&gt;
    69  # Check the root filesystem:&lt;br /&gt;
    70  if [ ! $READWRITE = yes ]; then&lt;br /&gt;
    71    RETVAL=0&lt;br /&gt;
    72    if [ ! -r /etc/fastboot ]; then&lt;br /&gt;
    73      echo &amp;quot;Checking root filesystem:&amp;quot;&lt;br /&gt;
    74      /sbin/fsck $FORCEFSCK -C -a /&lt;br /&gt;
    75      RETVAL=$?&lt;br /&gt;
    76    fi&lt;br /&gt;
    77    # An error code of 2 or higher will require a reboot.&lt;br /&gt;
    78    if [ $RETVAL -ge 2 ]; then&lt;br /&gt;
    79      # An error code equal to or greater than 4 means that some errors&lt;br /&gt;
    80      # could not be corrected.  This requires manual attention, so we&lt;br /&gt;
    81      # offer a chance to try to fix the problem in single-user mode:&lt;br /&gt;
    82      if [ $RETVAL -ge 4 ]; then&lt;br /&gt;
    83        echo&lt;br /&gt;
    84        echo &amp;quot;***********************************************************&amp;quot;&lt;br /&gt;
    85        echo &amp;quot;*** An error occurred during the root filesystem check. ***&amp;quot;&lt;br /&gt;
    86        echo &amp;quot;*** You will now be given a chance to log into the      ***&amp;quot;&lt;br /&gt;
    87        echo &amp;quot;*** system in single-user mode to fix the problem.      ***&amp;quot;&lt;br /&gt;
    88        echo &amp;quot;***                                                     ***&amp;quot;&lt;br /&gt;
    89        echo &amp;quot;*** If you are using the ext2 filesystem, running       ***&amp;quot;&lt;br /&gt;
    90        echo &amp;quot;*** 'e2fsck -v -y &amp;lt;partition&amp;gt;' might help.              ***&amp;quot;&lt;br /&gt;
    91        echo &amp;quot;***********************************************************&amp;quot;&lt;br /&gt;
    92        echo&lt;br /&gt;
    93        echo &amp;quot;Once you exit the single-user shell, the system will reboot.&amp;quot;&lt;br /&gt;
    94        echo&lt;br /&gt;
    95        PS1=&amp;quot;(Repair filesystem) \#&amp;quot;; export PS1&lt;br /&gt;
    96        sulogin&lt;br /&gt;
    97      else # With an error code of 2 or 3, reboot the machine automatically:&lt;br /&gt;
    98        echo&lt;br /&gt;
    99        echo &amp;quot;***********************************&amp;quot;&lt;br /&gt;
   100        echo &amp;quot;*** The filesystem was changed. ***&amp;quot;&lt;br /&gt;
   101        echo &amp;quot;*** The system will now reboot. ***&amp;quot;&lt;br /&gt;
   102        echo &amp;quot;***********************************&amp;quot;&lt;br /&gt;
   103        echo&lt;br /&gt;
   104      fi&lt;br /&gt;
   105      echo &amp;quot;Unmounting file systems.&amp;quot;&lt;br /&gt;
   106      /sbin/umount -a -r&lt;br /&gt;
   107      /sbin/mount -n -o remount,ro /&lt;br /&gt;
   108      echo &amp;quot;Rebooting system.&amp;quot;&lt;br /&gt;
   109      sleep 2&lt;br /&gt;
   110      reboot -f&lt;br /&gt;
   111    fi&lt;br /&gt;
   112    # Remount the root filesystem in read-write mode&lt;br /&gt;
   113    echo &amp;quot;Remounting root device with read-write enabled.&amp;quot;&lt;br /&gt;
   114    /sbin/mount -w -v -n -o remount /&lt;br /&gt;
   115    if [ $? -gt 0 ] ; then&lt;br /&gt;
   116      echo&lt;br /&gt;
   117      echo &amp;quot;Attempt to remount root device as read-write failed!  This is going to&amp;quot;&lt;br /&gt;
   118      echo &amp;quot;cause serious problems.&amp;quot;&lt;br /&gt;
   119      echo&lt;br /&gt;
   120      echo &amp;quot;If you're using the UMSDOS filesystem, you **MUST** mount the root partition&amp;quot;&lt;br /&gt;
   121      echo &amp;quot;read-write!  You can make sure the root filesystem is getting mounted &amp;quot;&lt;br /&gt;
   122      echo &amp;quot;read-write with the 'rw' flag to Loadlin:&amp;quot;&lt;br /&gt;
   123      echo&lt;br /&gt;
   124      echo &amp;quot;loadlin vmlinuz root=/dev/hda1 rw   (replace /dev/hda1 with your root device)&amp;quot;&lt;br /&gt;
   125      echo&lt;br /&gt;
   126      echo &amp;quot;Normal bootdisks can be made to mount a system read-write with the rdev command:&amp;quot;&lt;br /&gt;
   127      echo&lt;br /&gt;
   128      echo &amp;quot;rdev -R /dev/fd0 0&amp;quot;&lt;br /&gt;
   129      echo&lt;br /&gt;
   130      echo &amp;quot;You can also get into your system by using a boot disk with a command like this&amp;quot;&lt;br /&gt;
   131      echo &amp;quot;on the LILO prompt line:  (change the root partition name as needed)&amp;quot;&lt;br /&gt;
   132      echo&lt;br /&gt;
   133      echo &amp;quot;LILO: mount root=/dev/hda1 rw&amp;quot;&lt;br /&gt;
   134      echo&lt;br /&gt;
   135      echo &amp;quot;Please press ENTER to continue, then reboot and use one of the above methods to&amp;quot;&lt;br /&gt;
   136      echo -n &amp;quot;get into your machine and start looking for the problem. &amp;quot;&lt;br /&gt;
   137      read junk;&lt;br /&gt;
   138    fi&lt;br /&gt;
   139  else&lt;br /&gt;
   140    echo &amp;quot;Testing root filesystem status:  read-write filesystem&amp;quot;&lt;br /&gt;
   141    if cat /etc/fstab | grep ' / ' | grep -wq umsdos ; then&lt;br /&gt;
   142      ROOTTYPE=&amp;quot;umsdos&amp;quot;&lt;br /&gt;
   143    fi&lt;br /&gt;
   144    if [ ! &amp;quot;$ROOTTYPE&amp;quot; = &amp;quot;umsdos&amp;quot; ]; then # no warn for UMSDOS&lt;br /&gt;
   145      echo&lt;br /&gt;
   146      echo &amp;quot;*** ERROR: Root partition has already been mounted read-write. Cannot check!&amp;quot;&lt;br /&gt;
   147      echo&lt;br /&gt;
   148      echo &amp;quot;For filesystem checking to work properly, your system must initially mount&amp;quot;&lt;br /&gt;
   149      echo &amp;quot;the root partition as read only. Please modify your kernel with 'rdev' so that&amp;quot;&lt;br /&gt;
   150      echo &amp;quot;it does this. If you're booting with LILO, add a line:&amp;quot;&lt;br /&gt;
   151      echo&lt;br /&gt;
   152      echo &amp;quot;   read-only&amp;quot;&lt;br /&gt;
   153      echo&lt;br /&gt;
   154      echo &amp;quot;to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it.&amp;quot;&lt;br /&gt;
   155      echo&lt;br /&gt;
   156      echo &amp;quot;If you boot from a kernel on a floppy disk, put it in the drive and type:&amp;quot;&lt;br /&gt;
   157      echo &amp;quot;   rdev -R /dev/fd0 1&amp;quot;&lt;br /&gt;
   158      echo&lt;br /&gt;
   159      echo &amp;quot;If you boot from a bootdisk, or with Loadlin, you can add the 'ro' flag.&amp;quot;&lt;br /&gt;
   160      echo&lt;br /&gt;
   161      echo &amp;quot;This will fix the problem *AND* eliminate this annoying message. :^)&amp;quot;&lt;br /&gt;
   162      echo&lt;br /&gt;
   163      echo -n &amp;quot;Press ENTER to continue. &amp;quot;&lt;br /&gt;
   164      read junk;&lt;br /&gt;
   165    fi&lt;br /&gt;
   166  fi # Done checking root filesystem&lt;br /&gt;
   167&lt;br /&gt;
   168  # Any /etc/mtab that exists here is old, so we delete it to start over:&lt;br /&gt;
   169  /bin/rm -f /etc/mtab*&lt;br /&gt;
   170  # Remounting the / partition will initialize the new /etc/mtab:&lt;br /&gt;
   171  /sbin/mount -w -o remount /&lt;br /&gt;
   172&lt;br /&gt;
   173  # Fix /etc/mtab to list sys and proc if they were not yet entered in&lt;br /&gt;
   174  # /etc/mtab because / was still mounted read-only:&lt;br /&gt;
   175  if [ -d /proc/sys ]; then&lt;br /&gt;
   176    /sbin/mount -f proc /proc -t proc&lt;br /&gt;
   177  fi&lt;br /&gt;
   178  if [ -d /sys/bus ]; then&lt;br /&gt;
   179    /sbin/mount -f sysfs /sys -t sysfs&lt;br /&gt;
   180  fi&lt;br /&gt;
   181&lt;br /&gt;
   182  # Initialize udev to manage /dev entries and hotplugging for 2.6.x kernels.&lt;br /&gt;
   183  # You may turn off udev by making the /etc/rc.d/rc.udev file non-executable,&lt;br /&gt;
   184  # but in the 2.6.x+ kernels udev has taken over the job of hotplug (finding&lt;br /&gt;
   185  # hardware and loading the kernel modules for it, as well as creating device&lt;br /&gt;
   186  # nodes in /dev).  Realize that if you turn off udev that you will have to&lt;br /&gt;
   187  # load all the kernel modules that you need yourself (possibly in&lt;br /&gt;
   188  # /etc/rc.d/rc.modules, which does not promise to list all of them), and&lt;br /&gt;
   189  # make any additional device nodes that you need in the /dev directory.&lt;br /&gt;
   190  # Even USB and IEEE1394 devices will need to have the modules loaded by&lt;br /&gt;
   191  # hand if udev is not used with a 2.6 kernel.  So use it.  :-)&lt;br /&gt;
   192  if cat /proc/mounts | grep -wq sysfs &amp;amp;&amp;amp; cat /proc/filesystems | grep -wq tmpfs ; then&lt;br /&gt;
   193    if ! grep -wq nohotplug /proc/cmdline ; then&lt;br /&gt;
   194      if [ -x /etc/rc.d/rc.udev ]; then&lt;br /&gt;
   195        /bin/sh /etc/rc.d/rc.udev start&lt;br /&gt;
   196        /bin/sh /lib/udev/udev.count_events.sh&lt;br /&gt;
   197      fi&lt;br /&gt;
   198    fi&lt;br /&gt;
   199  fi&lt;br /&gt;
   200&lt;br /&gt;
   201  # Set the system time from the hardware clock using hwclock --hctosys.&lt;br /&gt;
   202  if [ -x /sbin/hwclock ]; then&lt;br /&gt;
   203    # Check for a broken motherboard RTC clock (where ioports for rtc are&lt;br /&gt;
   204    # unknown) to prevent hwclock causing a hang:&lt;br /&gt;
   205    if ! grep -q -w rtc /proc/ioports ; then&lt;br /&gt;
   206      CLOCK_OPT=&amp;quot;--directisa&amp;quot;&lt;br /&gt;
   207    fi&lt;br /&gt;
   208    if grep -wq &amp;quot;^UTC&amp;quot; /etc/hardwareclock ; then&lt;br /&gt;
   209      echo &amp;quot;Setting system time from the hardware clock (UTC).&amp;quot;&lt;br /&gt;
   210      /sbin/hwclock $CLOCK_OPT --utc --hctosys&lt;br /&gt;
   211    else&lt;br /&gt;
   212      echo &amp;quot;Setting system time from the hardware clock (localtime).&amp;quot;&lt;br /&gt;
   213      /sbin/hwclock $CLOCK_OPT --localtime --hctosys&lt;br /&gt;
   214    fi&lt;br /&gt;
   215  fi&lt;br /&gt;
   216&lt;br /&gt;
   217  # Configure ISA Plug-and-Play devices:&lt;br /&gt;
   218  if [ -r /etc/isapnp.conf ]; then&lt;br /&gt;
   219    if [ -x /sbin/isapnp ]; then&lt;br /&gt;
   220      /sbin/isapnp /etc/isapnp.conf&lt;br /&gt;
   221    fi&lt;br /&gt;
   222  fi&lt;br /&gt;
   223&lt;br /&gt;
   224  # This loads any kernel modules that are needed.  These might be required to&lt;br /&gt;
   225  # use your ethernet card, sound card, or other optional hardware.&lt;br /&gt;
   226  # Priority is given first to a script named &amp;quot;rc.modules.local&amp;quot;, then&lt;br /&gt;
   227  # to &amp;quot;rc.modules-$FULL_KERNEL_VERSION&amp;quot;, and finally to the plain &amp;quot;rc.modules&amp;quot;.&lt;br /&gt;
   228  # Note that if /etc/rc.d/rc.modules.local is found, then that will be the ONLY&lt;br /&gt;
   229  # rc.modules script the machine will run, so make sure it has everything in&lt;br /&gt;
   230  # it that you need.&lt;br /&gt;
   231  if [ -x /etc/rc.d/rc.modules.local -a -r /proc/modules ]; then&lt;br /&gt;
   232    echo &amp;quot;Running /etc/rc.d/rc.modules.local:&amp;quot;&lt;br /&gt;
   233    /bin/sh /etc/rc.d/rc.modules.local&lt;br /&gt;
   234  elif [ -x /etc/rc.d/rc.modules-$(uname -r) -a -r /proc/modules ]; then&lt;br /&gt;
   235    echo &amp;quot;Running /etc/rc.d/rc.modules-$(uname -r):&amp;quot;&lt;br /&gt;
   236    . /etc/rc.d/rc.modules-$(uname -r)&lt;br /&gt;
   237  elif [ -x /etc/rc.d/rc.modules -a -r /proc/modules -a -L /etc/rc.d/rc.modules ]; then&lt;br /&gt;
   238    echo &amp;quot;Running /etc/rc.d/rc.modules -&amp;gt; $(readlink /etc/rc.d/rc.modules):&amp;quot;&lt;br /&gt;
   239    . /etc/rc.d/rc.modules&lt;br /&gt;
   240  elif [ -x /etc/rc.d/rc.modules -a -r /proc/modules ]; then&lt;br /&gt;
   241    echo &amp;quot;Running /etc/rc.d/rc.modules:&amp;quot;&lt;br /&gt;
   242    . /etc/rc.d/rc.modules&lt;br /&gt;
   243  fi&lt;br /&gt;
   244&lt;br /&gt;
   245  # Configure runtime kernel parameters:&lt;br /&gt;
   246  if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then&lt;br /&gt;
   247    /sbin/sysctl -e -p /etc/sysctl.conf&lt;br /&gt;
   248  fi&lt;br /&gt;
   249&lt;br /&gt;
   250  # Initialize the Logical Volume Manager.&lt;br /&gt;
   251  # This won't start unless we find /etc/lvmtab (LVM1) or&lt;br /&gt;
   252  # /etc/lvm/backup/ (LVM2).  This is created by /sbin/vgscan, so to&lt;br /&gt;
   253  # use LVM you must run /sbin/vgscan yourself the first time (and&lt;br /&gt;
   254  # create some VGs and LVs).&lt;br /&gt;
   255  if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then&lt;br /&gt;
   256    echo &amp;quot;Initializing LVM (Logical Volume Manager):&amp;quot;&lt;br /&gt;
   257    # Check for device-mapper support.&lt;br /&gt;
   258    if ! cat /proc/devices | grep -wq device-mapper ; then&lt;br /&gt;
   259      # If device-mapper exists as a module, try to load it.&lt;br /&gt;
   260      if [ -r /lib/modules/$(/bin/uname -r)/kernel/drivers/md/dm-mod.ko ]; then&lt;br /&gt;
   261        insmod /lib/modules/$(/bin/uname -r)/kernel/drivers/md/dm-mod.ko&lt;br /&gt;
   262      fi&lt;br /&gt;
   263    fi&lt;br /&gt;
   264    # Scan for new volume groups:&lt;br /&gt;
   265    KERNEL_VERSION=$(/bin/uname -r | /bin/cut -d . -f 1,2)&lt;br /&gt;
   266    if [ &amp;quot;$KERNEL_VERSION&amp;quot; == &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
   267      /sbin/vgscan 2&amp;gt; /dev/null&lt;br /&gt;
   268    else&lt;br /&gt;
   269      /sbin/vgscan --ignorelockingfailure 2&amp;gt; /dev/null&lt;br /&gt;
   270    fi&lt;br /&gt;
   271    if [ $? = 0 ]; then&lt;br /&gt;
   272      # Make volume groups available to the kernel.&lt;br /&gt;
   273      # This should also make logical volumes available.&lt;br /&gt;
   274      if [ &amp;quot;$KERNEL_VERSION&amp;quot; == &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
   275        /sbin/vgchange -ay&lt;br /&gt;
   276      else&lt;br /&gt;
   277        /sbin/vgchange -ay --ignorelockingfailure&lt;br /&gt;
   278      fi&lt;br /&gt;
   279      # Enable swapping again in case any LVs are used for swap.  Ignore previous error.  :-)&lt;br /&gt;
   280      /sbin/swapon -a&lt;br /&gt;
   281    fi&lt;br /&gt;
   282  fi&lt;br /&gt;
   283&lt;br /&gt;
   284  # Check all the non-root filesystems:&lt;br /&gt;
   285  if [ ! -r /etc/fastboot ]; then&lt;br /&gt;
   286    echo &amp;quot;Checking non-root filesystems:&amp;quot;&lt;br /&gt;
   287    /sbin/fsck $FORCEFSCK -C -R -A -a&lt;br /&gt;
   288  fi&lt;br /&gt;
   289&lt;br /&gt;
   290  # Mount usbfs if we're not using hotplug:&lt;br /&gt;
   291  if grep -wq usbfs /proc/filesystems; then&lt;br /&gt;
   292    if /bin/grep -wq nohotplug /proc/cmdline || /bin/test ! -x /etc/rc.d/rc.hotplug ; then&lt;br /&gt;
   293      if ! cat /proc/mounts | grep -wq usbfs ; then&lt;br /&gt;
   294        /sbin/mount -v usbfs /proc/bus/usb -t usbfs&lt;br /&gt;
   295      fi&lt;br /&gt;
   296    fi&lt;br /&gt;
   297  fi&lt;br /&gt;
   298&lt;br /&gt;
   299  # Mount non-root file systems in fstab, but not NFS or SMB&lt;br /&gt;
   300  # because TCP/IP is not yet configured, and not proc or sysfs&lt;br /&gt;
   301  # because those have already been mounted.  Also check that&lt;br /&gt;
   302  # devpts is not already mounted before attempting to mount&lt;br /&gt;
   303  # it.  With 2.4.x kernels devpts is mounted from an fstab&lt;br /&gt;
   304  # entry while with a 2.6.x or newer kernel udev mounts it.&lt;br /&gt;
   305  # We also need to wait a little bit to let USB and other&lt;br /&gt;
   306  # hotplugged devices settle (sorry to slow down the boot):&lt;br /&gt;
   307  echo &amp;quot;Mounting non-root local filesystems:&amp;quot;&lt;br /&gt;
   308  sleep 3&lt;br /&gt;
   309  if /bin/grep -wq devpts /proc/mounts ; then&lt;br /&gt;
   310    /sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs,nodevpts&lt;br /&gt;
   311  else&lt;br /&gt;
   312    /sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs&lt;br /&gt;
   313  fi&lt;br /&gt;
   314&lt;br /&gt;
   315  # Enable swapping again.  This is needed in case a swapfile is used,&lt;br /&gt;
   316  # as it can't be enabled until the filesystem it resides on has been&lt;br /&gt;
   317  # mounted read-write.&lt;br /&gt;
   318  /sbin/swapon -a&lt;br /&gt;
   319&lt;br /&gt;
   320  # Clean up some temporary files:&lt;br /&gt;
   321  ( cd /var/log/setup/tmp &amp;amp;&amp;amp; rm -rf * )&lt;br /&gt;
   322  /bin/rm -f /var/run/utmp /var/run/*pid /etc/nologin /var/run/lpd* \&lt;br /&gt;
   323    /var/run/ppp* /etc/dhcpc/*.pid /etc/forcefsck /etc/fastboot \&lt;br /&gt;
   324    /var/state/saslauthd/saslauthd.pid&lt;br /&gt;
   325&lt;br /&gt;
   326  # Create /tmp/{.ICE-unix,.X11-unix} if they are not present:&lt;br /&gt;
   327  if [ ! -e /tmp/.ICE-unix ]; then&lt;br /&gt;
   328    mkdir -p /tmp/.ICE-unix&lt;br /&gt;
   329    chmod 1777 /tmp/.ICE-unix&lt;br /&gt;
   330  fi&lt;br /&gt;
   331  if [ ! -e /tmp/.X11-unix ]; then&lt;br /&gt;
   332    mkdir -p /tmp/.X11-unix&lt;br /&gt;
   333    chmod 1777 /tmp/.X11-unix&lt;br /&gt;
   334  fi&lt;br /&gt;
   335&lt;br /&gt;
   336  # Attempt to umount and remove any leftover /initrd:&lt;br /&gt;
   337  if [ -d /initrd ]; then&lt;br /&gt;
   338    umount /initrd/proc 2&amp;gt; /dev/null&lt;br /&gt;
   339    /sbin/umount /initrd 2&amp;gt; /dev/null&lt;br /&gt;
   340    rmdir /initrd 2&amp;gt; /dev/null&lt;br /&gt;
   341    blockdev --flushbufs /dev/ram0 2&amp;gt; /dev/null&lt;br /&gt;
   342  fi&lt;br /&gt;
   343&lt;br /&gt;
   344  # Create a fresh utmp file:&lt;br /&gt;
   345  touch /var/run/utmp&lt;br /&gt;
   346  chown root:utmp /var/run/utmp&lt;br /&gt;
   347  chmod 664 /var/run/utmp&lt;br /&gt;
   348&lt;br /&gt;
   349  if [ &amp;quot;$ROOTTYPE&amp;quot; = &amp;quot;umsdos&amp;quot; ]; then # we need to update any files added in DOS:&lt;br /&gt;
   350    echo &amp;quot;Synchronizing UMSDOS directory structure:&amp;quot;&lt;br /&gt;
   351    echo &amp;quot;  /sbin/umssync -r99 -v- /&amp;quot;&lt;br /&gt;
   352    /sbin/umssync -r99 -v- /&lt;br /&gt;
   353  fi&lt;br /&gt;
   354&lt;br /&gt;
   355  # Setup the /etc/motd to reflect the current kernel level:&lt;br /&gt;
   356  # THIS WIPES ANY CHANGES YOU MAKE TO /ETC/MOTD WITH EACH BOOT.&lt;br /&gt;
   357  # COMMENT THIS OUT IF YOU WANT TO MAKE A CUSTOM VERSION.&lt;br /&gt;
   358  echo &amp;quot;$(/bin/uname -sr).&amp;quot; &amp;gt; /etc/motd&lt;br /&gt;
   359&lt;br /&gt;
   360  # If there are SystemV init scripts for this runlevel, run them.&lt;br /&gt;
   361  if [ -x /etc/rc.d/rc.sysvinit ]; then&lt;br /&gt;
   362    . /etc/rc.d/rc.sysvinit&lt;br /&gt;
   363  fi&lt;br /&gt;
   364&lt;br /&gt;
   365  # Run serial port setup script:&lt;br /&gt;
   366  # CAREFUL!  This can make some systems hang if the rc.serial script isn't&lt;br /&gt;
   367  # set up correctly.  If this happens, you may have to edit the file from a&lt;br /&gt;
   368  # boot disk, and/or set it as non-executable:&lt;br /&gt;
   369  if [ -x /etc/rc.d/rc.serial ]; then&lt;br /&gt;
   370    sh /etc/rc.d/rc.serial start&lt;br /&gt;
   371  fi&lt;br /&gt;
   372&lt;br /&gt;
   373  # Carry an entropy pool between reboots to improve randomness.&lt;br /&gt;
   374  if [ -f /etc/random-seed ]; then&lt;br /&gt;
   375    echo &amp;quot;Using /etc/random-seed to initialize /dev/urandom.&amp;quot;&lt;br /&gt;
   376    cat /etc/random-seed &amp;gt; /dev/urandom&lt;br /&gt;
   377  fi&lt;br /&gt;
   378  # Use the pool size from /proc, or 512 bytes:&lt;br /&gt;
   379  if [ -r /proc/sys/kernel/random/poolsize ]; then&lt;br /&gt;
   380    dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2&amp;gt; /dev/null&lt;br /&gt;
   381  else&lt;br /&gt;
   382    dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2&amp;gt; /dev/null&lt;br /&gt;
   383  fi&lt;br /&gt;
   384  chmod 600 /etc/random-seed&lt;br /&gt;
   385&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Explicarea continutului======&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Preferabil sa deschideti de doua ori pagina, ca sa va fie mai comoda orientarea.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;linie/i&amp;gt;: &amp;lt;explicatie&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;8: Este setata variabila de mediu PATH. PATH are urmatoarea forma: director:director:director[:director...] si urmatoarea calitate: Ii spune interpretorului in ce directoare sa se uite pentru fisierele executabile care nu au calea absoluta specificata.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;11: Este montat sistemul de fisiere virtual procfs. Folosindu-ne acest sistem de fisiere, vom putea afla informatii ce reflecta starea curenta a nucleului. Vom vedea imediat despre ce este vorba.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;20-36: Se verifica daca fisierul /proc/sys/kernel/hotplug exista si poate fi modificat ( [ -w ] ). Existenta acestui fisier inseamna ca nucleul are suport pentru subsistemul hotplug(traducere?), un sistem de configurare dinamica a componentelor hard. Vom intra in detalii mai tarziu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa aceasta, in cazul in care nucleul are suport pentru hotplug, se verifica daca nucleului i-a fost trimis parametrul de executie &amp;quot;nohotplug&amp;quot;. Aceasta verificare are loc prin inspectarea continutului fisierului /proc/cmdline, fisier ce contine toti parametrii trimisi nucleului de catre programul de incarcare. In cazul in care nucleului i-a fost trimis parametrul de executie &amp;quot;nohotplug&amp;quot;, atunci continutul fisierului /proc/sys/kernel/hotplug este schimbat in &amp;quot;/dev/null&amp;quot;. Continutul fisierului /proc/sys/kernel/hotplug reprezinta calea catre programul care va fi instintat de catre nucleu, cand va avea loc un eveniment(in cazul acesta, cand o componenta hard va fi cuplata). Prin schimbarea continutului fisierului /proc/sys/kernel/hotplug in &amp;quot;/dev/null&amp;quot;, sistemul hotplug este dezactivat, deoarece orice instintare a nucleului cu privire la evenimente hotplug va fi iignorata.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca nucleului n-a fost pornit cu parametrul de executie &amp;quot;nohotplug&amp;quot;, se va verifica daca scriptul /etc/rc.d/rc.hotplug este neexecutabil [ ! -x ], caz in care se verifica daca nucleul NU face parte din bransa 2.4.x, caz in care se dezactiveaza sistemul hotplug, schimbandu-se continutul fisierului /proc/sys/kernel/hotplug in &amp;quot;/dev/null&amp;quot;. Scriptul /etc/rc.d/rc.hotplug porneste sistemul hotplug, asa ca mai devreme a fost verificat pentru a vedea daca este activat de catre administrator. Daca acesta este activat, adica este executabil, va fi rulat de catre nivelele de rulare care vor avea suport pentru hotplug. Vom analiza scriptul /etc/rc.d/rc.hotplug atunci cand ne vom intalni cu executarea acestuia.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;39-41: Se verifica daca scriptul /etc/rc.d/rc.devfsd este prezent si executabil, caz in care scriptul este executat. Scriptul porneste si configureaza, prin intermediul lui defvsd, fisierele /dev. Aceste intrari probabil ca inca mai exista in /etc/rc.S din motive istorice, caci devfs a fost scos din Slackware inca de la versiunea 10.0. Daca doriti sa scadeti cu cateva milisecunde din timpul de initializare, puteti sa stergeti intrarile.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;44-50: Se verifica daca exista directorul /sys [ -d ], caz in care se verifica daca nucleul suporta sistemul de fisiere virtual sysfs. Aceasta verificare se face prin inspectarea fisierului /proc/filesystems, care contine o lista cu sistemele de fisere suportate de nucleu. Daca exista, atunci este verificat fisierul /proc/mounts, pentru a vedea daca sistemul de fisiere sysfs nu este deja montat. /proc/mounts contine o lista cu sistemele de fisiere deja montate. Daca sysfs nu este deja montat, este montat.(...)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Sysfs este un sistem virtual de fisiere, ca si procfs, care ofera informatii despre driverele nucleului. Nucleul din bransa 2.4.x nu are suport pentru acest sistem de fisiere virtual, asa ca daca nu o sa treceti pe 2.6.x, puteti sa stergeti aceste intrari, de doriti cateva milisecunde scazute din timpul de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;56-62: Variabila READWRITE este initializata cu valoarea &amp;quot;no&amp;quot;, ce reflecta starea in care ar trebui sa fie in mod normal montat sistemul de fisiere radacina de catre nucleu, adica cu optiunea de numai-citire. Prin incercarea crearii unui fisier pe sistemul de fisiere radacina, se verifica daca se poate scrie pe acesta, caz in care fisierul test este sters, iar valoarea variabilei READWRITE este schimbata in &amp;quot;yes&amp;quot;, cat sa reflecte adevarata stare a sistemului de fisiere radacina.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;65-67: Se verifica daca exista fisierul citabil /etc/forcefsck, caz in care este initializata variabila FORCEFSK cu valoarea &amp;quot;-f&amp;quot;. Aceasta variabila va fi folosita ca parametru optional pentru comanda fsck.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;70-166: Se verifica daca sistemul de fisiere radacina nu este montat cu optiunea numai-citire, caz in care au loc urmatorii pasi:&lt;br /&gt;
&lt;br /&gt;
* Variabila RETVAL este initializata cu valoarea 0.&lt;br /&gt;
&lt;br /&gt;
* Se verifica daca nu exista fisierul citabil /etc/fastboot, caz in care se verifica integritatea sistemului de fisiere radacina prin intermediul comenzii fsck.&lt;br /&gt;
&lt;br /&gt;
* RETVAL isi schimba continutul in valoarea returnata de catre comanda fsck.&lt;br /&gt;
&lt;br /&gt;
* Se verifica daca valoarea lui RETVAL este mai mare sau egala cu 2, caz in care sa verifica daca valoarea lui RETVAL este mai mare sau egala cu 4, caz in care sintem avertizati de anumite erori ce-au avut loc pe parcursul inspectarii lui fsck si sintem aruncati in modul utilizator-unic, pentru a depana problemele aparute. Altfel, daca valoarea lui RETVAL este intre 2 si 4, sint demontate sistemele de fisiere, iar calculatorul este repornit. &lt;br /&gt;
&lt;br /&gt;
* Daca valoarea lui RETVAL este 0 sau 1, atunci se incearca remontarea sistemului de fisiere radacina cu optiunea de citire-scriere, prin intermediul comenzii mount.&lt;br /&gt;
&lt;br /&gt;
* Valoarea returnata de catre comanda mount este verificata daca este mai mare decat 0, caz in care sintem intampinati cu niste erori si indemnati sa repornim calculatorul, folosindu-ne de sfaturile din avertizari. In schimb, daca valoarea returnata de mount este 0 [...]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;169-171: Este sters fisierul /etc/mtab, iar sistemul de fisiere radacina si sistemele virtuale de fisiere procfs si sysfs sint remontate. Acesti pasi sint facuti pentru ca fisierul /etc/mtab este vechi, de la ultima initializare a sistemului, si trebuie refacut. Fisierul /etc/mtab contine o lista cu sistemele de fisiere montate montate in acest moment.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;192-199: Se incearca pornirea lui udev, care este un inlocuitor al lui hotplug, pentru nucleele din bransa 2.6.x. Intai se verifica daca este montat sistemul virtual de fisiere sysfs si daca nucleul suporta sistemul virtual de fisiere tmpfs, caz in care se verifica daca nucleul n-a fost pornit cu parametrul de executie &amp;quot;nohotplug&amp;quot;, caz in care se verifica daca scriptul /etc/rc.d/rc.udev exista si este executabil, caz in care acest script este executat impreuna cu /lib/udev/udev.count_events.sh.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;202-215: Este setata ora sistemului, folosindu-se de comanda hwclock cu parametrul sau de executie --hctosys. Intai se verifica daca exista executabilul /sbin/hwclock. Daca exista, se verifica intrarile din /proc/ioports (fisier ce contina o lista cu conectorii de intrare-iesire activi) pentru rtc ( real time clock — ceas in timp real, un ceas care continua sa functioneze chiar si atunci cand calculatorul este oprit ). Daca se gaseste o asemenea intrare, variabila CLOCK_OPT este initializata cu valoarea &amp;quot;--directisa&amp;quot;. Se verifica daca fisierul /etc/hardwareclock contine o intrare care incepe cu sirul de caractere &amp;quot;UTC&amp;quot;, caz in care se executa comanta /hwclock, insotita de parametrii $CLOCK_OPT, --utc si --hctosys, altfel se executa aceeasi comanda, dar in loc de --utc se foloseste --localtime.[erm, detaliere..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;218-22: Se verifica daca fisierul /etc/isapnp.conf si este modificabil, caz in se verifica existenta fisierului executabil /sbin/isapnp, caz in care comanda /sbin/isapnp este rulata cu parametrul de executie /etc/isapnp.conf. Programul isapnp face parte din suita de utilitare isapnptools, care se ocupa cu configurarea dispozitivelor ISA autoconfigurabile(engl. ISA Plug and Play devices). Daca n-aveti asemenea dispozitive, puteti sa stergeti intrarile, de doriti cateva milisecunde in plus la initializare. Chiar mai mult, de la nucleele din bransa 2.4. Ba mai mult, daca folositi nuclee din bransa 2.6, ati putea sterge aceste intrari chiar daca aveti dispozitive ISA autoconfigurabile, deoarece nucleul nu va mai fi nevoit sa comunice cu isapnp, driverele(?) dispozitivelor facandu-si suficient de bine treaba.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;231-243: Se va verifica existenta unor scripturi executabile prin intermediul carora vor fi incarcate anumite module ale nucleului. Pasii sint urmatorii: Se verifica existenta scriptului executabil /etc/rc.d/rc.modules.local, cat si existenta fisierului modificabil /proc/modules (care contine o lista cu modulele incarcate in acest moment), iar daca acestea exista, se scrie pe ecran ca scriptul va fi executat, dupa care acesta este executat. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca acestea nu exista, se verifica existenta fisierului executabil /etc/rc.d/rc.modules-(versiune nucleu), cat si existenta fisierului modificabil /proc/modules, iar daca acestea exista, se scrie pe ecran ca scriptul va fi executat, dupa care acesta este executat. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca nici de data aceasta scriptul sau /proc/modules nu este gasit, se verifica existenta scriptului executabil /etc/rc.d, existenta fisierului modificabil /proc/modules, cat si daca scriptul /etc/rc.d este un link(?) simbolic [ -L ], caz in care se scrie pe ecran ca scriptul va fi executat (se afiseaza si catre ce indica linkul simbolic, prin intermediul comenzii readlink), iar scriptul este executat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca nici acum nu s-au validat conditiile, atunci se repeta ultimii pasi, mai putin cu verificarea scriptului pentru calitatea de link simbolic.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa atatea 'daca'-uri, se trage concluzia ca la prima validare a unui script, acesta este executat, restul intrarilor fiind ignorate. Asa ca este indicat sa ne asiguram ca specificam intr-un singur script toate modulele ce ar trebui incarcate, iar daca tot facem acest lucru, putem sa stergem restul intrarilor, daca dorim cateva de milisecunde scazute din perioada deinitializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;246-248: Se verifica existenta fisierului executabil /sbin/sysctl si a fisierului modificabil, iar daca acestea exista, este rulata comanda /sbin/sysctl. Prin intermediul lui /sbin/sysctl, putem sa setam anumiti parametrii ai nucleului in timp ce acesta ruleaza. Daca nu avem de gand sa-i trimitem niste parametrii de rulare nucleului pe parcursul procesului de initializare, putem sa stergem aceste intrari, daca dorim cateva milisecunde scazute din perioada de initializare.&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;255-282: Aceste intrari pornesc si configureaza LVM. LVM este unul din visurile devenite realitate ale administratorului de sistem sau al utilizatorului care s-a saturat sa gandeasca un sistem optim de partitionare a dispozitivelor de stocare! Este un serviciu foarte folositor, pus la dispozitie de nucleu, prin intermediul caruia partitiile fizice sint combinate in 'partitii virtuale'(care sint denumite volume logice in nomenclatura LVM'ului), in asa fel  se pot realiza anumite operatii cu partiile care altfel ar fi imposibil fara stergerea unitatii de stocare si repartitionarea sa. De exemplu, in cazul in care s-a umplut o partitie, aceasta poate fi marita prin 'imprumutarea' spatiului de pe alta partitie; sau daca se adauga un o noua unitate de disk, spatiul acesteia poate fi alocat unei partitii sau unui grup de partitii deja existenta pe discul actual. Revenind, sa urmarim cum are loc initializarea LVM'ului:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Intai se verifica daca exista fisierul modificabil /etc/lvm1(folosit de versiuna 1 a LVM) sau directorul /etc/lvm/backup(folosit de versiunea 2 a LVM). Faptul ca aceste fisiere nu exista acum nu inseamna neaparat ca nu avem suport pentru LVM, ci doar ca n-au fost create. Ele trebuiesc create manual, iar pentru acest lucru este folosita comanda vgscan(8). Spun &amp;quot;ele&amp;quot;, dar de fapt nu se creaza decat 1 singur fisier/director, in functie de versiunea LVM. Bun, in caz de au fost create, se continua procesul.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ni se specifica faptul ca LVM va fi pornit. Se verifica daca fisierul /proc/devices NU contine o intrare &amp;quot;device-mapper&amp;quot;, caz in care se verifica existenta modului &amp;quot;dm-mod.ko&amp;quot;, iar, daca acesta exista, este incarcat. Fisierul /proc/devices contine o lista cu driverele(?) dispozitivelor care sint momentan incarcate in nucleu. &amp;quot;device-mapper&amp;quot; este o componenta noua a nucleelor din bransa 2.6.x, dar poate fi folosit si cu nuclee din bransa 2.4.x, daca acestea sint corectate(engl. patched), asa ca intrarea poate fi stearsa, daca nu se va folosi un nucleu ce suporta aceasta facilitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa ce este incarcat modului &amp;quot;dm-mod.ko&amp;quot;, variabila KERNEL_VERSION este initializata cu valoarea primelor 2 numere din versiunea actuala a nucleului. Se verifica daca valoarea variabilei KERNEL_VERSION este egala cu &amp;quot;2.4&amp;quot;, caz in care se executa comanda /sbin/vgscan, iar erorile acestei comenzi sint redirectionate catre /dev/null (2&amp;gt;). Daca valoarea variabilei KERNEL_VERSION nu este &amp;quot;2.4&amp;quot;, atunci se executa comanta /sbin/vgscan --ignorelockingfailure, iar erorile acestei comenzi sint redirectionate catre /dev/null.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Se verifica daca valoarea returnata de catre comanda vgscan este egala cu zero (0 este returnat in caz ca totul s-a efectuat cu succes), caz in care se verifica inca o data daca versiunea nucleului este din bransa 2.4, caz in care se executa comanda /sbin/vgchange -ay. Daca nucleul nu face parte din bransa 2.4, se executa comanda /sbin/vgchange -ay --ignorelockingfailure. Comanda /sbin/vgchange -ay activeaza toate grupele volum din sistem. De mentionat ca, daca se verifica paginile manual cat si codul sursa al programelor carora le este trimis parametrul --ignorelockingfailure, se va observa ca acestea n-au suport pentru o optiune cu acest nume, asa ca folosirea lui este redundanta, ceea ce inseamna ca se pot scoate verificarile versiunii nucleului care conditioneaza folosirea acestor comenzi. Desigur, daca nu configuram nucleul cu suport pentru LVM, putem sa scoatem toate aceste intrari, daca dorim cateva milisecunde scazute din timpul de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;321-324: Se sterg niste fisiere (posibil) lasate in de la repornirea calculatorului. Directorul /var/log/setup/tmp este folosit de pkgtool(cu precadere de catre installpkg). Fisierul /var/run/utmp contine informatii despre cine este autentificat in momentul acesta (este folosit de programe ca login). Fisierele din /var/run care se termina cu *pid sint, conform FHS, fisiere identificatoare ale proceselor (engl. presc. PID files), care contin PID'ul unor servicii ce ruleaza acum. Fisierul /etc/nologin, daca ar exista, i-ar spune lui login sa permita doar superutilizatorului sa se autentifice, asa ca daca doriti aceasta optiune stergeti intrarea. Fisierele /var/run/ppp* contin diverse informatii despre serviciile care pun la dispozitie conexiunea ppp. La fel si cu fisierele /etc/dhcpc/*.pid, doar ca ofera informatii despre serviciile dhcp. Fisierul /etc/forcefsck, dupa cum am observat, daca este existent, este folosit ca parametru &amp;quot;-f&amp;quot; de executare pentru fsck. Fisierul /etc/fastboot, daca exista, specifica lui /etc/rc.S sa treaca peste verificarea integritatii discului. Fisierul /var/state/saslauthd/saslauthd.pid contine informatii cu privire la PID'ul demonului salsd, daca acesta ruleaza. Pot fi sterse intrarile care se stiu ca nu vor fi folosite.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;327-334: Se verifica daca NU exista directoarele /tmp/.ICE-unix si /tmp.X11-unix, caz in care acestea sint create. Aceste directoare contin informatii cu privire la serverul/sesiunile X actual/e.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;336-342: Se demonteaza initrd'ul (ro. discul virtual; engl. initial ram disk), care este un sistem de fisiere montat in memoria cu acces aleatoriu de catre nucleu, inainte ca acesta sa monteze sistemul de fisiere radacina.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Intai se verifica daca acesta a fost montat, prin verificarea existentei directorului /initrd. Daca acesta a fost montat, se demonteaza intai sistemul procfs din cadrul initrd, prin comanda umount /initrd/proc. Se demonteaza initrd cu comanda /sbin/umount /initrd, dupa care se sterge directorul /initrd. Se goleste memoria tampon folosita de dicul virtual /dev/ram0.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;345-347: Se creaza un fisier /var/run/utmp nou, fisier despre care am mai vorbit. Fisierului /var/run/utmp este pus in grupa &amp;quot;utmp&amp;quot; si este setat in asa fel incat sa fie modificat si citit de catre toti utilizatorii, dar modificat doar de catre stapan(superutilizator) sau membrii grupei &amp;quot;utpm&amp;quot; [644]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;358: Continutul fisierului /etc/motd este inlocuit cu numele nucleului si versiunea acestuia. Stergeti sau comentati aceasta intrare, daca doriti ca schimbarile facute in /etc/motd sa nu fie modificate la initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;361-362: Daca exista scriptul executabil /etc/rc.d/rc.sysvinit, atunci acesta este executat. Daca nu aveti de gand sa folositi scripturi compatibile cu 'stilul System V', atunci puteti sterge aceste intrari, daca doriti cateva milisecunde scazute din perioada de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;369-370: Se verfica existenta scriptului executabil /etc/rc.d/rc.serial. Daca acesta exista, este executat. Scriptul se ocupa cu configurarea porturilor serial. Odata cu instalarea distributiei, el nu este setat ca fiind executabil, datorita faptului ca ar putea bloca procesul de initializare. Oricum, in cele mai multe cazuri, nici nu este folosit, asa ca daca nu stiti sigur ca aveti nevoie de el, puteti sa stergeti aceasta intrare, daca doriti cateva milisecunde scazute din perioada de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;374-384: Se verifica daca exista fisierul /etc/random-seed, caz in care continutul fisierului /dev/urandom este schimbat in continutul fisierului /etc-random seed.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Se verifica daca fisierul /proc/sys/kernel/random/poolsize exista si poate fi citit, caz in care continutul fisierului /etc/random-seed este umplut de catre /dev/urandom cu numarul de byti speficicati in fisierul /proc/sys/kernel/random/poolsize.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Explicarea acestui proces ar fi prea complexa, asa ca daca doriti sa va faceti o idee despre ce inseamna aceste intrari, consultati pagina manual random(4). Sau daca doriti sa intelegeti mai multe despre criptorafie, printre procesul detaliat in aceasta intrare, cititi  [[Introducere in criptografie cu GNU/Linux|acest]] articol.&lt;br /&gt;
&lt;br /&gt;
======Ce este important de observat. Ce urmeaza?======&lt;br /&gt;
&lt;br /&gt;
[...]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3260</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3260"/>
				<updated>2006-12-02T14:17:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum observam, init este primul(chiar unicul) program executat de catre nucleu. De fapt, nucleul nu executa _programul_ init, ci programul care are calea absoluta /sbin/init, /etc/init, /bin/init sau /bin/sh, asta in cazul in care nucleului nu-i este specificat ca parametru de executie(init= -- deobicei specificat prin intermediul lui LILO sau altui program de incarcare) altceva(execute_command).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mai observam ca dupa 3 incercari de a executa programul &amp;quot;init&amp;quot;, nucleul isi incearca pentru ultima oara norocul cu /bin/sh. Pe Slackware (si nu numai), fisierul cu aceasta cale absoluta este o legatura cu interpretorul de comenzi BASH. Asta inseamna ca, in cazul in care celelalte trei cai nu sint valide, ne vom trezi cu un interpretor de comenzi pentru suprautilizator si un sistem neconfigurat. Acesta este unul dintre riscurile de securitate despre care vorbeam in subcapitolul legat de programele de incarcare, datorita faptului ca prin intermediul lor se poate forta nucleul sa execute calea /bin/sh, sau a oricarui alt executabil preprogramat. Folosindu-ne de cunostintele acumulate pe parcursul ghidului, voi arata, catre final, in capitolul [inca nu i-am gasit un nume] cum se poate configura si pune in picioare in mod manual un sistem folosindu-ne doar de interpetatorul de comenzi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Tot procesul descris pana in acest moment ar trebui sa fie independent de distributia folosita. In schimb, odata cu executia programului cu una dintre cele 3 cai enumerate mai devreme, lucrurile tind sa devina specifice (dar nu exagerat) distributiei, sau, mai exact, specifice unui stil de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Lumea tinde sa-i atribuie lui Slackware si derivatelor sale stilul &amp;quot;BSD&amp;quot;, iar distributiilor ca Fedora Core, SuSe, Mandriva s.a. stilul &amp;quot;System V&amp;quot;. BSD si System V au fost, acum multi ani, niste versiuni de UNIX care, dupa cum se vede, au influentat sistemele de operare actuale. Ele isi mai continua si astazi existenta prin rudele lor de grad I, cum ar fi, in cazul lui System V, UnixWare, iar, in cazul lui BSD, Open/Net/FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta categorisire, in schimb, daca este luata la puricat, nu este tocmai corecta. Slackware se foloseste de stilul de initializare &amp;quot;System V&amp;quot;, doar ca il abordeaza intr-o maniera 'mai BSD', simplificandu-l, dupa cum vom vedea. Nu am sa intru detalii legate de diferentele de abordare a initializarii de catre, sa zicem, Mandriva si Slackware, nu asta este scopul ghidului. In schimb, la final, odata inteles modul in care Slackware 'vede lumea', cititorul se poate folosi de cunostiintele acumulate pentru a compara toate distributiile GNU/Linux, daca doreste :~)&lt;br /&gt;
&lt;br /&gt;
====sysvinit====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Slackware, ca si majoritatea celorlalte distributii, se foloseste de suita de utilitare sysvinit (instalata prestabilit). O scurta descriere a pachetului, insotita de o lista cu programele incluse in el, ar fi urmatoarea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ echo -e \\n &amp;quot;Descriere:&amp;quot;; head -n14 /var/log/packages/sysvinit-2.84-i486-69; \&lt;br /&gt;
echo -e \\n\\n &amp;quot;Lista cu programe:&amp;quot;; grep -e [18].gz$ /var/log/packages/sysinit-2.84-i486-69 | \&lt;br /&gt;
awk -F/ ' { print $4 } ' | awk -F. ' { print $1 } '&lt;br /&gt;
&lt;br /&gt;
Descriere:&lt;br /&gt;
PACKAGE NAME:     sysvinit-2.84-i486-69&lt;br /&gt;
COMPRESSED PACKAGE SIZE:     296 K&lt;br /&gt;
UNCOMPRESSED PACKAGE SIZE:     650 K&lt;br /&gt;
PACKAGE LOCATION: /var/log/mount/slackware/a/sysvinit-2.84-i486-69.tgz&lt;br /&gt;
PACKAGE DESCRIPTION:&lt;br /&gt;
sysvinit: sysvinit (init, the parent of all processes)&lt;br /&gt;
sysvinit:&lt;br /&gt;
sysvinit: System V style init programs by Miquel van Smoorenburg that control&lt;br /&gt;
sysvinit: the booting and shutdown of your system.  These support a number of&lt;br /&gt;
sysvinit: system runlevels, each with a specific set of utilities spawned.&lt;br /&gt;
sysvinit: For example, the normal system runlevel is 3, which starts agetty&lt;br /&gt;
sysvinit: on virtual consoles tty1 - tty6.  Runlevel 4 starts xdm.&lt;br /&gt;
sysvinit: Runlevel 0 shuts the system down.&lt;br /&gt;
sysvinit:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lista cu programe:&lt;br /&gt;
last&lt;br /&gt;
runlevel&lt;br /&gt;
killall5&lt;br /&gt;
shutdown&lt;br /&gt;
poweroff&lt;br /&gt;
init&lt;br /&gt;
halt&lt;br /&gt;
pidof&lt;br /&gt;
reboot&lt;br /&gt;
telinit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observam ca unul dintre programele incluse in pachet poarta denumirea de init. II aflam calea absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ su -c 'which init'&lt;br /&gt;
Password:&lt;br /&gt;
/sbin/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Avand respectiva cale, inseamna ca ar trebui sa fie primul program executat de nucleu. Ne putem convinge de acest lucru folosind comanda pstree(1), care ne va afisa un arbore de procese.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ pstree -np&lt;br /&gt;
init(1)-+-keventd(2)&lt;br /&gt;
        |-ksoftirqd_CPU0(3)&lt;br /&gt;
        |-kswapd(4)&lt;br /&gt;
        |-bdflush(5)&lt;br /&gt;
        |-kupdated(6)&lt;br /&gt;
        |-khubd(7)&lt;br /&gt;
        |-syslogd(72)&lt;br /&gt;
        |-klogd(75)&lt;br /&gt;
        |-inetd(631)&lt;br /&gt;
        |-dhcpcd(635)&lt;br /&gt;
        |-sshd(639)&lt;br /&gt;
        |-crond(652)&lt;br /&gt;
        |-atd(654)&lt;br /&gt;
        |-gpm(664)&lt;br /&gt;
        |-agetty(667)&lt;br /&gt;
        |-agetty(668)&lt;br /&gt;
        |-agetty(669)&lt;br /&gt;
        |-agetty(670)&lt;br /&gt;
        |-agetty(671)&lt;br /&gt;
        |-bash(860)---startx(958)---xinit(974)-+-X(975)&lt;br /&gt;
        |                                      `-xinitrc(979)---startkde(980)---kwrapper(1020)&lt;br /&gt;
        |-kdeinit(1008)-+-kdeinit(1013)&lt;br /&gt;
        [...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Uitandu-ne la arbore, observam ca, pe langa faptul ca init este primul proces si are pid'ul(tradus?) 1, restul proceselor tind sa izvoreasca din el. Consultandu-i pagina manual (init(8)), aflam niste detalii importante, printre care:&lt;br /&gt;
&lt;br /&gt;
* Init este tatal tuturor proceselor. Este primul program executat de catre nucleul la sfarsitul secventei de initializare al acestuia, fiindu-i atribuit pid-ul cu valoarea 1. ( de mentionat ca nucleul n-are pid'ul 1, ci 0. )&lt;br /&gt;
&lt;br /&gt;
* Printre scopurile sale se numara: Initializarea tuturor celorlalte procese, colectarea proceselor moarte(zombi) si regenerarea unor procese fiu la terminarea lor; Inspectarea, la initializare, a fisierului /etc/inittab, pentru configurarea sistemului.&lt;br /&gt;
&lt;br /&gt;
* Acceptare unor parametrii de executie, de obicei setati prin intermediul unui program de incarcare, care, daca sint specificati, ii pot schimba cursul firesc al derularii.&lt;br /&gt;
&lt;br /&gt;
* Captarea unor semnale si reactionarea la ele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Restul capacitatilor vor fi descrise spre finalul ghidului.&lt;br /&gt;
&lt;br /&gt;
=====/etc/inittab=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum s-a specificat mai sus, init,la executare, va citi fisierul /etc/inittab pentru a sti cum sa configureze sistemul. Conform paginii manual inittab(5), formatul fisierului /etc/inittab este urmatorul:&lt;br /&gt;
&lt;br /&gt;
id:niveluri de rulare:actiune:proces&lt;br /&gt;
&lt;br /&gt;
* Campul id: Trebuie sa contina un sir unic de maximum 4 caractere alfanumerice. Este folosit pentru a identifica fiecare intrare din fisier.&lt;br /&gt;
&lt;br /&gt;
* Niveluri de rulare: In primul rand, nivelul de rulare, conform paginii manual init(8), reprezinta o configuratie software a sistemului care, printre altele, specifica ce procese trebuiesc pornite de catre init. Configuratia se realizeaza prin intermediul unor scripturi BASH, fiecarui nivel de rulare atribuindu-se cel putin unul. Pot exista mai multe niveluri de executie. In Slackware, cele prestabilite sint urmatoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# These are the default runlevels in Slackware:&lt;br /&gt;
#   0 = halt&lt;br /&gt;
#   1 = single user mode&lt;br /&gt;
#   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
#   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
#   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   6 = reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In fisierul /etc/inittab, campul dedicat nivelurilor de rulare trebuie sa contina o lista de niveluri de rulare pentru care trebuie executata o actiune ce, in majoritatea cazurilor. Vom vedea imediat ce inseamna toate acestea.&lt;br /&gt;
&lt;br /&gt;
* Campul actiune: Descrie actiunea pe care init o sa o realizeze pentru o lista de niveluri de rulare. Exista mai multe tipuri de actiuni, printre care:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''respawn''': lanseaza o noua instanta a unui proces, daca acesta isi termina executia&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''wait''': procesul va fi pornit odata cu intrarea in nivelul de rulare, iar init va astepta pana acesta se incheie.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''once''': procesul va fi executat o singura data, de indata ce se va intra in nivelul de rulare&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''sysinit''': intrarea ce contine aceasta actiune specifica procesul ce trebuie executat in timpul initializarii sistemului de catre init. De obicei, acest, dupa cum vom vedea, scriptul BASH /etc/rc.S.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''initdefault''': intrarea ce contine aceasta actiune specifica si nivel de rulare care va fi executat de catre init, imediat dupa ce sistemul a fost initializat (prin intermediul scriptului rc.S.)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''ctrlaltdel''': procesul va fi executat atunci cand init va primi semnalul SIGINIT. Semnalul SIGINIT este trimis atunci cand sint apasate tastele CTRL-ALT-DELETE. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum se observa, majoritatea actiunilor merg mana in mana cu un proces. Procesul este specificat in campul proces.&lt;br /&gt;
&lt;br /&gt;
* Campul proces: Specifica un proces ce trebuie executat la intrarea intr-un nivel de rulare. Procesul poate fi o comanda sau un script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ca sa intelegem mai bine ce inseamna toate acestea, vom analiza un fisier /etc/inittab.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/inittab&lt;br /&gt;
     1  #&lt;br /&gt;
     2  # inittab       This file describes how the INIT process should set up&lt;br /&gt;
     3  #               the system in a certain run-level.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Version:      @(#)inittab             2.04    17/05/93        MvS&lt;br /&gt;
     6  #                                       2.10    02/10/95        PV&lt;br /&gt;
     7  #                                       3.00    02/06/1999      PV&lt;br /&gt;
     8  #                                       4.00    04/10/2002      PV&lt;br /&gt;
     9  #&lt;br /&gt;
    10  # Author:       Miquel van Smoorenburg, &amp;lt;miquels@drinkel.nl.mugnet.org&amp;gt;&lt;br /&gt;
    11  # Modified by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
    12  #&lt;br /&gt;
    13&lt;br /&gt;
    14  # These are the default runlevels in Slackware:&lt;br /&gt;
    15  #   0 = halt&lt;br /&gt;
    16  #   1 = single user mode&lt;br /&gt;
    17  #   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    18  #   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
    19  #   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
    20  #   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    21  #   6 = reboot&lt;br /&gt;
    22&lt;br /&gt;
    23  # Default runlevel. (Do not set to 0 or 6)&lt;br /&gt;
    24  id:3:initdefault:&lt;br /&gt;
    25&lt;br /&gt;
    26  # System initialization (runs when system boots).&lt;br /&gt;
    27  si:S:sysinit:/etc/rc.d/rc.S&lt;br /&gt;
    28&lt;br /&gt;
    29  # Script to run when going single user (runlevel 1).&lt;br /&gt;
    30  su:1S:wait:/etc/rc.d/rc.K&lt;br /&gt;
    31&lt;br /&gt;
    32  # Script to run when going multi user.&lt;br /&gt;
    33  rc:2345:wait:/etc/rc.d/rc.M&lt;br /&gt;
    34&lt;br /&gt;
    35  # What to do at the &amp;quot;Three Finger Salute&amp;quot;.&lt;br /&gt;
    36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&lt;br /&gt;
    37&lt;br /&gt;
    38  # Runlevel 0 halts the system.&lt;br /&gt;
    39  l0:0:wait:/etc/rc.d/rc.0&lt;br /&gt;
    40&lt;br /&gt;
    41  # Runlevel 6 reboots the system.&lt;br /&gt;
    42  l6:6:wait:/etc/rc.d/rc.6&lt;br /&gt;
    43&lt;br /&gt;
    44  # These are the standard console login getties in multiuser mode:&lt;br /&gt;
    45  c1:1235:respawn:/sbin/agetty 38400 tty1 linux&lt;br /&gt;
    46  c2:1235:respawn:/sbin/agetty 38400 tty2 linux&lt;br /&gt;
    47  c3:1235:respawn:/sbin/agetty 38400 tty3 linux&lt;br /&gt;
    48  c4:1235:respawn:/sbin/agetty 38400 tty4 linux&lt;br /&gt;
    49  c5:1235:respawn:/sbin/agetty 38400 tty5 linux&lt;br /&gt;
    50  c6:12345:respawn:/sbin/agetty 38400 tty6 linux&lt;br /&gt;
    51&lt;br /&gt;
    52  # Runlevel 4 used to be for an X window only system, until we discovered&lt;br /&gt;
    53  # that it throws init into a loop that keeps your load avg at least 1 all&lt;br /&gt;
    54  # the time. Thus, there is now one getty opened on tty6. Hopefully no one&lt;br /&gt;
    55  # will notice. ;^)&lt;br /&gt;
    56  # It might not be bad to have one text console anyway, in case something&lt;br /&gt;
    57  # happens to X.&lt;br /&gt;
    58  x1:4:respawn:/etc/rc.d/rc.4&lt;br /&gt;
    59&lt;br /&gt;
    60  # End of /etc/inittab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Vom analiza fiecare intrare, explicand-o.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Prima intrare, cea de la linia 24, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;id&amp;quot; (datorita campului id, faptul ca valoare campului coincide cu numele acestuia nu are vreo importanta). Campul nivelului de rulare este ocupat de caracterul &amp;quot;3&amp;quot;. Campul actiunii este ocupat de 'initdefault', ceea ce inseamna ca init va intra in nivelul de rulare specificat de catre acest camp, adica, in cazul nostru, &amp;quot;3&amp;quot;. Campul proces lipseste doarece intrarea, continand actiunea 'initdefault', nu necesita un proces, acesta fiind oricum ignorat daca ar fi specificat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A doua intrare, cea de la linia 27, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;si&amp;quot;. Campul nivelului de rulare este ocupat de caracterul &amp;quot;S&amp;quot;.Campul actiunii este ocupat de  catre &amp;quot;sysinit&amp;quot;, iar procesul este scriptul /etc/rc.d/rc.S. Faptul ca &amp;quot;sysinit&amp;quot; ocupa campul actiune ii spune lui init sa execute procesul din campul proces (in cazul acest, ii spune lui init sa execute scriptul /etc/rc.d/rc.S) inainte de a intra in vreun nivel de rulare(nivelul &amp;quot;3&amp;quot;, in cazul nostru ^^).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treia intrare, cea de la linia 30, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;su&amp;quot;. Campul nivelului de rulare este &amp;quot;1S&amp;quot;, ceea ce-nseamna ca intrarea se aplica atat nivelului de rulare &amp;quot;1&amp;quot;, cat si nivelului de rulare &amp;quot;S&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.K. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A patra intrare, cea de la linia 33, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;rc&amp;quot;. Campul nivelelor de rulare este &amp;quot;2345&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelelor de rulare &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot; si &amp;quot;5&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.M. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A cincea intrare, cea de la linia 36, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;ca&amp;quot;. Campul nivelelor de rulare este gol. Campul actiunii este ocupat de catre &amp;quot;ctrlaltdel&amp;quot;, iar procesul de catre comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Faptul ca &amp;quot;ctrlaltdel&amp;quot; ocupa campul actiune ii spune lui init ca, atunci cand sint apasate tastele CTRL+ALT+DELETE la consola, sa execute procesul din campul proces, in cazul nostru comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Aceasta actiune nu necesita un nivel de rulare, presupunandu-se ca, daca ajungem la o consola sa apasam cele trei taste mai devreme mentionate, sintem deja intr-un nivel de rulare cu un sistem mai mult sau mai putin configurat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A sasea intrare, cea de la linia 39, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l0&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;0&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;0&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.0. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.0 atunci cand va intra in nivelul de rulare &amp;quot;0&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A saptea intrare, cea de la linia 42, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l6&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;6&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;6&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.6. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.6 atunci cand va intra in nivelul de rulare &amp;quot;6&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmatoarele 5 intrari -- de la linia 45 la linia 49 -- sint aproape identice, singurele lucruri care le deosebesc fiind campul care le identifica( oare de ce?:-) ) si penultimul parametru de executie al comenzii din campul proces. Toate au la campul nivelurilor de rulare caracterele &amp;quot;1235&amp;quot;. Toate au in campul actiunii &amp;quot;respawn&amp;quot;, iar la proces comanda &amp;quot;/sbin/agetty 38400 tty&amp;lt;x&amp;gt; linux&amp;quot;, &amp;lt;x&amp;gt; diferind de la intrare la intrare. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa regenereze procesul din campul proces, cand acesta isi termina executia. In cazul nostru, init va regenera o sesiune de identificare(engl. login prompt) in cazul in care aceasta se va sfarsi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treisprezecea intrare, cea de la linia 50, este are aceleasi proprietati ca si ultimele 5 intrari, doar ca intrarea este aplicata si nivelului de rulare &amp;quot;4&amp;quot;, spre deosebire de precedentele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ultima intrare, cea de la linia 58, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;x1&amp;quot;. Campul nivelurilor de rulare este ocupat de catre caracterul &amp;quot;4&amp;quot;. Campul actiune este ocupat de catre &amp;quot;respawn&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.4. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa reexecute scriptul /etc/rc.d/rc.4, cand acesta se va termina.&lt;br /&gt;
&lt;br /&gt;
=====Lamuriri necesare pentru a continua. Mica erata a ceea ce a fost expus pana acum.=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Probabil ca se observa niste neconcordante intre anumite lucruri ce-au fost descrise pana acum. De exemplu: Inainte sa depanam fisierul /etc/inittab, s-a spus ca valoarea din campul proces reprezinta un proces (ce, dupa cum am observat, poate fi o comanda sau un script) care va fi executat de catre init _l-a intrarea intr-un nivel de rulare_, dar noi am observat ca intr-unele intrari campul nivelurilor de rulare este gol, pe cand campul proces contine o valoare. De ce am spus asta? Pai, in primul rand, ca este mai usor de inteles un lucru partial adevarat, urmat de o lamurire, decat daca as intra in detalii de la bun inceput; si, in plus, explicatiile detaliate duc, dupa cum se pare, la exprimari tautologice ( ca sa fiu delicat :~) ), datorita unor termeni care nu se impac intr-o expresie/propozitie... Bun. Revenind.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Init, pe langa faptul ca este primul program executat, mai este si ultimul, -- asta in cazul in care procesul de oprire al calculatorului se deruleaza normal si corect. Ce ne spune acest lucru? Pai ne spune mai multe lucruri. Ne spune, de exemplu, ca pe parcursul timpului de executie al lui init, sistemul este 1. configurat 2. intretinut 3. deconfigurat. Vom urma in detaliu stagiile (1) si (3), dar hai sa spunem cateva lucruri despre fiecare in parte, chiar daca voi prelua anumite idei ce-au fost deja expuse.&lt;br /&gt;
&lt;br /&gt;
* (1) Nucleul nu-l arunca pe init intr-un mediu complet configurat. De fapt, luat in mare, nu il lasa decat cu un sistem de fisiere radacina montat cu proprietatea de numai-citire, dupa care se retrage linistit in fundal, unde isi vede de treaba, printre altele punand la dispozitia programelor o suita de apeluri de sistem prin intermediu carora acestea comunica cu el. Pana ajungem noi sa ne autentificam, init are mult de munca. De fapt, prea il elogiez, caci el nu face toata treaba de unul singur, ci mai degraba o coordoneaza. Am observat ca el citeste fisierul /etc/inittab si ca de acolo afla, printre altele, ce scripturi sa execute pentru configurarea sistemului. Comenzile din acele scripturi, de fapt, pun in picioare sistemul, iar unul dintre rolurile lui init este sa ruleze aceste scripturi. Acest lucru ofera o mare flexibilitate administratorului sistemului, deoarece scripturile sint mai usor de inteles si de schimbat. Va imaginati ce-ar fi insemnat ca init sa faca toata treaba de unul singur, fara sa apeleze la BASH sau alt interpretor de comenzi? Ar fi insemnat ca init sa fie foarte complex, ar fi insemnat ca administratorul de sistem sa ii umble prin codul sursa, daca ar vrea sa schimbe ceva -- orice, dupa care sa-l recompileze s.a.m.d. Ca sa inchei scurta introducere a acestui stagiu, nu mai spun decat ca, in Slackware si derivatele sale, TOATE scripturile de care se foloseste init se afla in directorul /etc/rc.d/. Acest lucru nu este batut in cuie, putand foarte lejer sa schimbam asta prin modificarea campului proces al intrarilor din /etc/inittab, dar este o conventie utila si bine gandita, asa mai bine nu am schimba-o. De asemenea, vom urmari indeaproape fiecare script in parte.&lt;br /&gt;
&lt;br /&gt;
* (2) Cum sta treaba cu intretinerea sistemului? Pai e lesne de imaginat ca, fiind primul program pornit si ruland _mereu_, chiar si dupa ce sistemul a fost configurat si noi deja ne bucuram de facilitile unui client de posta electronica, init nu sta degeaba. S-a specificat mai devreme, cand au fost enumerate unele dintre scopurile sale, ca se ocupa cu initializarea tuturor celorlalte procese, colectarea proceselor moarte s.a. Nu s-a specificat, in schimb, o proprietate specifica tuturor programelor ( a se citi proceselor ) unui sistem compatibil cu standardele ANSI/POSIX. Aceasta proprietate este aceea de a capta semnale. Probabil ca toti stim ce este un semnal, deoarece toti am folosit comanda kill. Stim ca programele pot fi programate(...) sa capteze anumite semnale, si sa interactioneze intr-un anume fel la primirea acestora. Asa face si init, dar spre deosebire de alte programe, ii poate fi specificat si cum sa reactioneze la primirea anumitor semnale. Cum ii specificam asta? Pai cum faceam si pana acum, cand voiam sa-i modelam comportamentul: folosindu-ne de fisierul /etc/inittab. Acum ajungem la acele neconcordante despre care vorbeam mai devreme, anume intrarile din fisierul /etc/inittab care contin nu contin un nivel de rulare, dar contin un proces.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;S-a specificat ca aceasta intrare are urmatoarea influenta asupra lui init: cand init primeste semnalul SIGINIT (care ii este trimis cand sint apasate, la consola, tastele CTRL+ALT+DELETE), acesta executa comanda /sbin/shutdown -t5 -r now. Faptul ca nu este specificat un nivel de rulare nu are vreo importanta, caci intrarea cu aceasta actiune se aplica oricarui 'nivel de rulare'( de fapt, daca init este pornit, nu conteaza daca sistemul este configurat sau ba, daca sintem intr-un nivel de rulare sau nu, va reactiona cum am spus mai devreme. ). Aceasta nu este singura actiune care ii spune lui init sa reactioneze cumva la primirea unui semnal. Distributia vine cu un fisier /etc/inittab care contine inca 2 intrari cu actiuni asemanatoare, anume powerfail si powerokwait, care reactioneaza la semnale primite de la sursa de alimentare neintreruptibila(engl. presc. UPS).&lt;br /&gt;
&lt;br /&gt;
* (3) Despre acest stagiu nu s-a scris deloc pana acum. Pe scurt, deconfigurarea sistemului se face prin configurarea unor nivele de rulare pentru acest scop, nivele de rulare care sa execute anumite scripturi care sa faca, in mare parte, opusul scriptului de initializare + oprirea serviciilor specifice nivelului de rulare in care sintem. Aceste scripturi, in cazul de fata -- si in cazul unei distributii Slackware nemodificate --, sint /etc/rc.0 si /etc/rc.6, specifice nivelurilor de executie &amp;quot;0&amp;quot; si &amp;quot;6&amp;quot;. Le vom urmari indeaproape.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In cele ce urmeaza, vom analiza stagiul (2), mai exact scripturile executate de catre init, folosindu-ne de fisierul /etc/inittab postat aici. Scripturile pe care le vom analiza sint cele care vin cu distributia, mai putin /etc/inittab, caruia i-au fost scoase 2 intrari care oricum n-au sa faca mare diferenta. Vom lua scripturile in ordinea executarii lor de catre init.&lt;br /&gt;
&lt;br /&gt;
=====/etc/rc.S=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Are urmatoarele calitati:&lt;br /&gt;
&lt;br /&gt;
* 1. Este primul script executat de catre init.&lt;br /&gt;
&lt;br /&gt;
* 2. Este rulat inainte de executarea oricarui script specific vreunui nivel de rulare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Scriptul este voluminos. In cele ce urmeaza, continutul sau va fi postat in varianta originala. Nu voi scoate comentariile, acestea fiind de ajutor daca stiti ceva 'engleza tehnica'; daca nu stiti, sau nu intelegeti, oricum voi repeta (si adauga) explicatii in limba romana, pentru fiecare instructiune sau bloc de instructiuni.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatie: Am pornit de la bun inceput de la premiza ca aveti ceva cunostinte legate de interpretorul de comenzi BASH si despre mediul GNU/Linux (comenzi elementare, machetarea fisierelor s.a.m.d.), intr-atat incat sa intelegeti o buna parte din toate cele ce-ar urma, chiar daca doar semantic. Daca nu aveti experienta cu cele mai sus enumerate, puteti profita de rigurozitatea cu care se va incerca explicarea scripturilor si, impreuna cu tutorialele/indrumarele specificate la finalul ghidului, sa analizati mecanismele acestea folosite in viata reala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/rc.d/rc.S&lt;br /&gt;
     1  #!/bin/sh&lt;br /&gt;
     2  #&lt;br /&gt;
     3  # /etc/rc.d/rc.S:  System initialization script.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Mostly written by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
     6  #&lt;br /&gt;
     7&lt;br /&gt;
     8  PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
     9&lt;br /&gt;
    10  # Mount /proc right away:&lt;br /&gt;
    11  /sbin/mount -v proc /proc -n -t proc&lt;br /&gt;
    12&lt;br /&gt;
    13  # If 'nohotplug' was given at boot, or rc.hotplug has been turned off&lt;br /&gt;
    14  # (and a 2.4.x kernel is running), then shut off hotplugging in the&lt;br /&gt;
    15  # kernel now.  Realize that if you turn off hotplugging support that&lt;br /&gt;
    16  # you will have to load all the kernel modules that you need yourself&lt;br /&gt;
    17  # (possibly in /etc/rc.d/rc.modules, which does not promise to list&lt;br /&gt;
    18  # all of them), and make any additional device nodes that you need in&lt;br /&gt;
    19  # the /dev directory.&lt;br /&gt;
    20  if [ -w /proc/sys/kernel/hotplug ]; then&lt;br /&gt;
    21    # Kernel command line option 'nohotplug' given, so we will shut off&lt;br /&gt;
    22    # hotplugging even if it is not a good idea.  Sometimes it *is* a&lt;br /&gt;
    23    # good idea, especially when you're trying to figure out which&lt;br /&gt;
    24    # kernel module is crashing the machine and needs to be added to&lt;br /&gt;
    25    # your /etc/modprobe.d/blacklist (2.6+ kernels) and/or your&lt;br /&gt;
    26    # /etc/hotplug/blacklist (2.4.x kernels).&lt;br /&gt;
    27    if grep -wq nohotplug /proc/cmdline ; then&lt;br /&gt;
    28      echo &amp;quot;/dev/null&amp;quot; &amp;gt; /proc/sys/kernel/hotplug&lt;br /&gt;
    29    elif [ ! -x /etc/rc.d/rc.hotplug ]; then&lt;br /&gt;
    30      # Ignore /etc/rc.d/rc.hotplug on kernels newer than 2.4.x:&lt;br /&gt;
    31      if [ ! &amp;quot;$(uname -r | cut -f 1,2 -d .)&amp;quot; = &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
    32        # We must be running a 2.4.x kernel, so turn off hotplug:&lt;br /&gt;
    33        echo &amp;quot;/dev/null&amp;quot; &amp;gt; /proc/sys/kernel/hotplug&lt;br /&gt;
    34      fi&lt;br /&gt;
    35    fi&lt;br /&gt;
    36  fi&lt;br /&gt;
    37&lt;br /&gt;
    38  # Start devfsd if necessary.  On newer kernels, udev should be used instead.&lt;br /&gt;
    39  if [ -x /etc/rc.d/rc.devfsd ]; then&lt;br /&gt;
    40    /etc/rc.d/rc.devfsd start&lt;br /&gt;
    41  fi&lt;br /&gt;
    42&lt;br /&gt;
    43  # Mount sysfs next, if the kernel supports it:&lt;br /&gt;
    44  if [ -d /sys ]; then&lt;br /&gt;
    45    if cat /proc/filesystems | grep -wq sysfs ; then&lt;br /&gt;
    46      if ! cat /proc/mounts | grep -wq sysfs ; then&lt;br /&gt;
    47        /sbin/mount -v sysfs /sys -n -t sysfs&lt;br /&gt;
    48      fi&lt;br /&gt;
    49    fi&lt;br /&gt;
    50  fi&lt;br /&gt;
    51&lt;br /&gt;
    52  # Enable swapping:&lt;br /&gt;
    53  /sbin/swapon -a&lt;br /&gt;
    54&lt;br /&gt;
    55  # Test to see if the root partition is read-only, like it ought to be.&lt;br /&gt;
    56  READWRITE=no&lt;br /&gt;
    57  if touch /fsrwtestfile 2&amp;gt;/dev/null; then&lt;br /&gt;
    58    rm -f /fsrwtestfile&lt;br /&gt;
    59    READWRITE=yes&lt;br /&gt;
    60  else&lt;br /&gt;
    61    echo &amp;quot;Testing root filesystem status:  read-only filesystem&amp;quot;&lt;br /&gt;
    62  fi&lt;br /&gt;
    63&lt;br /&gt;
    64  # See if a forced filesystem check was requested at shutdown:&lt;br /&gt;
    65  if [ -r /etc/forcefsck ]; then&lt;br /&gt;
    66    FORCEFSCK=&amp;quot;-f&amp;quot;&lt;br /&gt;
    67  fi&lt;br /&gt;
    68&lt;br /&gt;
    69  # Check the root filesystem:&lt;br /&gt;
    70  if [ ! $READWRITE = yes ]; then&lt;br /&gt;
    71    RETVAL=0&lt;br /&gt;
    72    if [ ! -r /etc/fastboot ]; then&lt;br /&gt;
    73      echo &amp;quot;Checking root filesystem:&amp;quot;&lt;br /&gt;
    74      /sbin/fsck $FORCEFSCK -C -a /&lt;br /&gt;
    75      RETVAL=$?&lt;br /&gt;
    76    fi&lt;br /&gt;
    77    # An error code of 2 or higher will require a reboot.&lt;br /&gt;
    78    if [ $RETVAL -ge 2 ]; then&lt;br /&gt;
    79      # An error code equal to or greater than 4 means that some errors&lt;br /&gt;
    80      # could not be corrected.  This requires manual attention, so we&lt;br /&gt;
    81      # offer a chance to try to fix the problem in single-user mode:&lt;br /&gt;
    82      if [ $RETVAL -ge 4 ]; then&lt;br /&gt;
    83        echo&lt;br /&gt;
    84        echo &amp;quot;***********************************************************&amp;quot;&lt;br /&gt;
    85        echo &amp;quot;*** An error occurred during the root filesystem check. ***&amp;quot;&lt;br /&gt;
    86        echo &amp;quot;*** You will now be given a chance to log into the      ***&amp;quot;&lt;br /&gt;
    87        echo &amp;quot;*** system in single-user mode to fix the problem.      ***&amp;quot;&lt;br /&gt;
    88        echo &amp;quot;***                                                     ***&amp;quot;&lt;br /&gt;
    89        echo &amp;quot;*** If you are using the ext2 filesystem, running       ***&amp;quot;&lt;br /&gt;
    90        echo &amp;quot;*** 'e2fsck -v -y &amp;lt;partition&amp;gt;' might help.              ***&amp;quot;&lt;br /&gt;
    91        echo &amp;quot;***********************************************************&amp;quot;&lt;br /&gt;
    92        echo&lt;br /&gt;
    93        echo &amp;quot;Once you exit the single-user shell, the system will reboot.&amp;quot;&lt;br /&gt;
    94        echo&lt;br /&gt;
    95        PS1=&amp;quot;(Repair filesystem) \#&amp;quot;; export PS1&lt;br /&gt;
    96        sulogin&lt;br /&gt;
    97      else # With an error code of 2 or 3, reboot the machine automatically:&lt;br /&gt;
    98        echo&lt;br /&gt;
    99        echo &amp;quot;***********************************&amp;quot;&lt;br /&gt;
   100        echo &amp;quot;*** The filesystem was changed. ***&amp;quot;&lt;br /&gt;
   101        echo &amp;quot;*** The system will now reboot. ***&amp;quot;&lt;br /&gt;
   102        echo &amp;quot;***********************************&amp;quot;&lt;br /&gt;
   103        echo&lt;br /&gt;
   104      fi&lt;br /&gt;
   105      echo &amp;quot;Unmounting file systems.&amp;quot;&lt;br /&gt;
   106      /sbin/umount -a -r&lt;br /&gt;
   107      /sbin/mount -n -o remount,ro /&lt;br /&gt;
   108      echo &amp;quot;Rebooting system.&amp;quot;&lt;br /&gt;
   109      sleep 2&lt;br /&gt;
   110      reboot -f&lt;br /&gt;
   111    fi&lt;br /&gt;
   112    # Remount the root filesystem in read-write mode&lt;br /&gt;
   113    echo &amp;quot;Remounting root device with read-write enabled.&amp;quot;&lt;br /&gt;
   114    /sbin/mount -w -v -n -o remount /&lt;br /&gt;
   115    if [ $? -gt 0 ] ; then&lt;br /&gt;
   116      echo&lt;br /&gt;
   117      echo &amp;quot;Attempt to remount root device as read-write failed!  This is going to&amp;quot;&lt;br /&gt;
   118      echo &amp;quot;cause serious problems.&amp;quot;&lt;br /&gt;
   119      echo&lt;br /&gt;
   120      echo &amp;quot;If you're using the UMSDOS filesystem, you **MUST** mount the root partition&amp;quot;&lt;br /&gt;
   121      echo &amp;quot;read-write!  You can make sure the root filesystem is getting mounted &amp;quot;&lt;br /&gt;
   122      echo &amp;quot;read-write with the 'rw' flag to Loadlin:&amp;quot;&lt;br /&gt;
   123      echo&lt;br /&gt;
   124      echo &amp;quot;loadlin vmlinuz root=/dev/hda1 rw   (replace /dev/hda1 with your root device)&amp;quot;&lt;br /&gt;
   125      echo&lt;br /&gt;
   126      echo &amp;quot;Normal bootdisks can be made to mount a system read-write with the rdev command:&amp;quot;&lt;br /&gt;
   127      echo&lt;br /&gt;
   128      echo &amp;quot;rdev -R /dev/fd0 0&amp;quot;&lt;br /&gt;
   129      echo&lt;br /&gt;
   130      echo &amp;quot;You can also get into your system by using a boot disk with a command like this&amp;quot;&lt;br /&gt;
   131      echo &amp;quot;on the LILO prompt line:  (change the root partition name as needed)&amp;quot;&lt;br /&gt;
   132      echo&lt;br /&gt;
   133      echo &amp;quot;LILO: mount root=/dev/hda1 rw&amp;quot;&lt;br /&gt;
   134      echo&lt;br /&gt;
   135      echo &amp;quot;Please press ENTER to continue, then reboot and use one of the above methods to&amp;quot;&lt;br /&gt;
   136      echo -n &amp;quot;get into your machine and start looking for the problem. &amp;quot;&lt;br /&gt;
   137      read junk;&lt;br /&gt;
   138    fi&lt;br /&gt;
   139  else&lt;br /&gt;
   140    echo &amp;quot;Testing root filesystem status:  read-write filesystem&amp;quot;&lt;br /&gt;
   141    if cat /etc/fstab | grep ' / ' | grep -wq umsdos ; then&lt;br /&gt;
   142      ROOTTYPE=&amp;quot;umsdos&amp;quot;&lt;br /&gt;
   143    fi&lt;br /&gt;
   144    if [ ! &amp;quot;$ROOTTYPE&amp;quot; = &amp;quot;umsdos&amp;quot; ]; then # no warn for UMSDOS&lt;br /&gt;
   145      echo&lt;br /&gt;
   146      echo &amp;quot;*** ERROR: Root partition has already been mounted read-write. Cannot check!&amp;quot;&lt;br /&gt;
   147      echo&lt;br /&gt;
   148      echo &amp;quot;For filesystem checking to work properly, your system must initially mount&amp;quot;&lt;br /&gt;
   149      echo &amp;quot;the root partition as read only. Please modify your kernel with 'rdev' so that&amp;quot;&lt;br /&gt;
   150      echo &amp;quot;it does this. If you're booting with LILO, add a line:&amp;quot;&lt;br /&gt;
   151      echo&lt;br /&gt;
   152      echo &amp;quot;   read-only&amp;quot;&lt;br /&gt;
   153      echo&lt;br /&gt;
   154      echo &amp;quot;to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it.&amp;quot;&lt;br /&gt;
   155      echo&lt;br /&gt;
   156      echo &amp;quot;If you boot from a kernel on a floppy disk, put it in the drive and type:&amp;quot;&lt;br /&gt;
   157      echo &amp;quot;   rdev -R /dev/fd0 1&amp;quot;&lt;br /&gt;
   158      echo&lt;br /&gt;
   159      echo &amp;quot;If you boot from a bootdisk, or with Loadlin, you can add the 'ro' flag.&amp;quot;&lt;br /&gt;
   160      echo&lt;br /&gt;
   161      echo &amp;quot;This will fix the problem *AND* eliminate this annoying message. :^)&amp;quot;&lt;br /&gt;
   162      echo&lt;br /&gt;
   163      echo -n &amp;quot;Press ENTER to continue. &amp;quot;&lt;br /&gt;
   164      read junk;&lt;br /&gt;
   165    fi&lt;br /&gt;
   166  fi # Done checking root filesystem&lt;br /&gt;
   167&lt;br /&gt;
   168  # Any /etc/mtab that exists here is old, so we delete it to start over:&lt;br /&gt;
   169  /bin/rm -f /etc/mtab*&lt;br /&gt;
   170  # Remounting the / partition will initialize the new /etc/mtab:&lt;br /&gt;
   171  /sbin/mount -w -o remount /&lt;br /&gt;
   172&lt;br /&gt;
   173  # Fix /etc/mtab to list sys and proc if they were not yet entered in&lt;br /&gt;
   174  # /etc/mtab because / was still mounted read-only:&lt;br /&gt;
   175  if [ -d /proc/sys ]; then&lt;br /&gt;
   176    /sbin/mount -f proc /proc -t proc&lt;br /&gt;
   177  fi&lt;br /&gt;
   178  if [ -d /sys/bus ]; then&lt;br /&gt;
   179    /sbin/mount -f sysfs /sys -t sysfs&lt;br /&gt;
   180  fi&lt;br /&gt;
   181&lt;br /&gt;
   182  # Initialize udev to manage /dev entries and hotplugging for 2.6.x kernels.&lt;br /&gt;
   183  # You may turn off udev by making the /etc/rc.d/rc.udev file non-executable,&lt;br /&gt;
   184  # but in the 2.6.x+ kernels udev has taken over the job of hotplug (finding&lt;br /&gt;
   185  # hardware and loading the kernel modules for it, as well as creating device&lt;br /&gt;
   186  # nodes in /dev).  Realize that if you turn off udev that you will have to&lt;br /&gt;
   187  # load all the kernel modules that you need yourself (possibly in&lt;br /&gt;
   188  # /etc/rc.d/rc.modules, which does not promise to list all of them), and&lt;br /&gt;
   189  # make any additional device nodes that you need in the /dev directory.&lt;br /&gt;
   190  # Even USB and IEEE1394 devices will need to have the modules loaded by&lt;br /&gt;
   191  # hand if udev is not used with a 2.6 kernel.  So use it.  :-)&lt;br /&gt;
   192  if cat /proc/mounts | grep -wq sysfs &amp;amp;&amp;amp; cat /proc/filesystems | grep -wq tmpfs ; then&lt;br /&gt;
   193    if ! grep -wq nohotplug /proc/cmdline ; then&lt;br /&gt;
   194      if [ -x /etc/rc.d/rc.udev ]; then&lt;br /&gt;
   195        /bin/sh /etc/rc.d/rc.udev start&lt;br /&gt;
   196        /bin/sh /lib/udev/udev.count_events.sh&lt;br /&gt;
   197      fi&lt;br /&gt;
   198    fi&lt;br /&gt;
   199  fi&lt;br /&gt;
   200&lt;br /&gt;
   201  # Set the system time from the hardware clock using hwclock --hctosys.&lt;br /&gt;
   202  if [ -x /sbin/hwclock ]; then&lt;br /&gt;
   203    # Check for a broken motherboard RTC clock (where ioports for rtc are&lt;br /&gt;
   204    # unknown) to prevent hwclock causing a hang:&lt;br /&gt;
   205    if ! grep -q -w rtc /proc/ioports ; then&lt;br /&gt;
   206      CLOCK_OPT=&amp;quot;--directisa&amp;quot;&lt;br /&gt;
   207    fi&lt;br /&gt;
   208    if grep -wq &amp;quot;^UTC&amp;quot; /etc/hardwareclock ; then&lt;br /&gt;
   209      echo &amp;quot;Setting system time from the hardware clock (UTC).&amp;quot;&lt;br /&gt;
   210      /sbin/hwclock $CLOCK_OPT --utc --hctosys&lt;br /&gt;
   211    else&lt;br /&gt;
   212      echo &amp;quot;Setting system time from the hardware clock (localtime).&amp;quot;&lt;br /&gt;
   213      /sbin/hwclock $CLOCK_OPT --localtime --hctosys&lt;br /&gt;
   214    fi&lt;br /&gt;
   215  fi&lt;br /&gt;
   216&lt;br /&gt;
   217  # Configure ISA Plug-and-Play devices:&lt;br /&gt;
   218  if [ -r /etc/isapnp.conf ]; then&lt;br /&gt;
   219    if [ -x /sbin/isapnp ]; then&lt;br /&gt;
   220      /sbin/isapnp /etc/isapnp.conf&lt;br /&gt;
   221    fi&lt;br /&gt;
   222  fi&lt;br /&gt;
   223&lt;br /&gt;
   224  # This loads any kernel modules that are needed.  These might be required to&lt;br /&gt;
   225  # use your ethernet card, sound card, or other optional hardware.&lt;br /&gt;
   226  # Priority is given first to a script named &amp;quot;rc.modules.local&amp;quot;, then&lt;br /&gt;
   227  # to &amp;quot;rc.modules-$FULL_KERNEL_VERSION&amp;quot;, and finally to the plain &amp;quot;rc.modules&amp;quot;.&lt;br /&gt;
   228  # Note that if /etc/rc.d/rc.modules.local is found, then that will be the ONLY&lt;br /&gt;
   229  # rc.modules script the machine will run, so make sure it has everything in&lt;br /&gt;
   230  # it that you need.&lt;br /&gt;
   231  if [ -x /etc/rc.d/rc.modules.local -a -r /proc/modules ]; then&lt;br /&gt;
   232    echo &amp;quot;Running /etc/rc.d/rc.modules.local:&amp;quot;&lt;br /&gt;
   233    /bin/sh /etc/rc.d/rc.modules.local&lt;br /&gt;
   234  elif [ -x /etc/rc.d/rc.modules-$(uname -r) -a -r /proc/modules ]; then&lt;br /&gt;
   235    echo &amp;quot;Running /etc/rc.d/rc.modules-$(uname -r):&amp;quot;&lt;br /&gt;
   236    . /etc/rc.d/rc.modules-$(uname -r)&lt;br /&gt;
   237  elif [ -x /etc/rc.d/rc.modules -a -r /proc/modules -a -L /etc/rc.d/rc.modules ]; then&lt;br /&gt;
   238    echo &amp;quot;Running /etc/rc.d/rc.modules -&amp;gt; $(readlink /etc/rc.d/rc.modules):&amp;quot;&lt;br /&gt;
   239    . /etc/rc.d/rc.modules&lt;br /&gt;
   240  elif [ -x /etc/rc.d/rc.modules -a -r /proc/modules ]; then&lt;br /&gt;
   241    echo &amp;quot;Running /etc/rc.d/rc.modules:&amp;quot;&lt;br /&gt;
   242    . /etc/rc.d/rc.modules&lt;br /&gt;
   243  fi&lt;br /&gt;
   244&lt;br /&gt;
   245  # Configure runtime kernel parameters:&lt;br /&gt;
   246  if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then&lt;br /&gt;
   247    /sbin/sysctl -e -p /etc/sysctl.conf&lt;br /&gt;
   248  fi&lt;br /&gt;
   249&lt;br /&gt;
   250  # Initialize the Logical Volume Manager.&lt;br /&gt;
   251  # This won't start unless we find /etc/lvmtab (LVM1) or&lt;br /&gt;
   252  # /etc/lvm/backup/ (LVM2).  This is created by /sbin/vgscan, so to&lt;br /&gt;
   253  # use LVM you must run /sbin/vgscan yourself the first time (and&lt;br /&gt;
   254  # create some VGs and LVs).&lt;br /&gt;
   255  if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then&lt;br /&gt;
   256    echo &amp;quot;Initializing LVM (Logical Volume Manager):&amp;quot;&lt;br /&gt;
   257    # Check for device-mapper support.&lt;br /&gt;
   258    if ! cat /proc/devices | grep -wq device-mapper ; then&lt;br /&gt;
   259      # If device-mapper exists as a module, try to load it.&lt;br /&gt;
   260      if [ -r /lib/modules/$(/bin/uname -r)/kernel/drivers/md/dm-mod.ko ]; then&lt;br /&gt;
   261        insmod /lib/modules/$(/bin/uname -r)/kernel/drivers/md/dm-mod.ko&lt;br /&gt;
   262      fi&lt;br /&gt;
   263    fi&lt;br /&gt;
   264    # Scan for new volume groups:&lt;br /&gt;
   265    KERNEL_VERSION=$(/bin/uname -r | /bin/cut -d . -f 1,2)&lt;br /&gt;
   266    if [ &amp;quot;$KERNEL_VERSION&amp;quot; == &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
   267      /sbin/vgscan 2&amp;gt; /dev/null&lt;br /&gt;
   268    else&lt;br /&gt;
   269      /sbin/vgscan --ignorelockingfailure 2&amp;gt; /dev/null&lt;br /&gt;
   270    fi&lt;br /&gt;
   271    if [ $? = 0 ]; then&lt;br /&gt;
   272      # Make volume groups available to the kernel.&lt;br /&gt;
   273      # This should also make logical volumes available.&lt;br /&gt;
   274      if [ &amp;quot;$KERNEL_VERSION&amp;quot; == &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
   275        /sbin/vgchange -ay&lt;br /&gt;
   276      else&lt;br /&gt;
   277        /sbin/vgchange -ay --ignorelockingfailure&lt;br /&gt;
   278      fi&lt;br /&gt;
   279      # Enable swapping again in case any LVs are used for swap.  Ignore previous error.  :-)&lt;br /&gt;
   280      /sbin/swapon -a&lt;br /&gt;
   281    fi&lt;br /&gt;
   282  fi&lt;br /&gt;
   283&lt;br /&gt;
   284  # Check all the non-root filesystems:&lt;br /&gt;
   285  if [ ! -r /etc/fastboot ]; then&lt;br /&gt;
   286    echo &amp;quot;Checking non-root filesystems:&amp;quot;&lt;br /&gt;
   287    /sbin/fsck $FORCEFSCK -C -R -A -a&lt;br /&gt;
   288  fi&lt;br /&gt;
   289&lt;br /&gt;
   290  # Mount usbfs if we're not using hotplug:&lt;br /&gt;
   291  if grep -wq usbfs /proc/filesystems; then&lt;br /&gt;
   292    if /bin/grep -wq nohotplug /proc/cmdline || /bin/test ! -x /etc/rc.d/rc.hotplug ; then&lt;br /&gt;
   293      if ! cat /proc/mounts | grep -wq usbfs ; then&lt;br /&gt;
   294        /sbin/mount -v usbfs /proc/bus/usb -t usbfs&lt;br /&gt;
   295      fi&lt;br /&gt;
   296    fi&lt;br /&gt;
   297  fi&lt;br /&gt;
   298&lt;br /&gt;
   299  # Mount non-root file systems in fstab, but not NFS or SMB&lt;br /&gt;
   300  # because TCP/IP is not yet configured, and not proc or sysfs&lt;br /&gt;
   301  # because those have already been mounted.  Also check that&lt;br /&gt;
   302  # devpts is not already mounted before attempting to mount&lt;br /&gt;
   303  # it.  With 2.4.x kernels devpts is mounted from an fstab&lt;br /&gt;
   304  # entry while with a 2.6.x or newer kernel udev mounts it.&lt;br /&gt;
   305  # We also need to wait a little bit to let USB and other&lt;br /&gt;
   306  # hotplugged devices settle (sorry to slow down the boot):&lt;br /&gt;
   307  echo &amp;quot;Mounting non-root local filesystems:&amp;quot;&lt;br /&gt;
   308  sleep 3&lt;br /&gt;
   309  if /bin/grep -wq devpts /proc/mounts ; then&lt;br /&gt;
   310    /sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs,nodevpts&lt;br /&gt;
   311  else&lt;br /&gt;
   312    /sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs&lt;br /&gt;
   313  fi&lt;br /&gt;
   314&lt;br /&gt;
   315  # Enable swapping again.  This is needed in case a swapfile is used,&lt;br /&gt;
   316  # as it can't be enabled until the filesystem it resides on has been&lt;br /&gt;
   317  # mounted read-write.&lt;br /&gt;
   318  /sbin/swapon -a&lt;br /&gt;
   319&lt;br /&gt;
   320  # Clean up some temporary files:&lt;br /&gt;
   321  ( cd /var/log/setup/tmp &amp;amp;&amp;amp; rm -rf * )&lt;br /&gt;
   322  /bin/rm -f /var/run/utmp /var/run/*pid /etc/nologin /var/run/lpd* \&lt;br /&gt;
   323    /var/run/ppp* /etc/dhcpc/*.pid /etc/forcefsck /etc/fastboot \&lt;br /&gt;
   324    /var/state/saslauthd/saslauthd.pid&lt;br /&gt;
   325&lt;br /&gt;
   326  # Create /tmp/{.ICE-unix,.X11-unix} if they are not present:&lt;br /&gt;
   327  if [ ! -e /tmp/.ICE-unix ]; then&lt;br /&gt;
   328    mkdir -p /tmp/.ICE-unix&lt;br /&gt;
   329    chmod 1777 /tmp/.ICE-unix&lt;br /&gt;
   330  fi&lt;br /&gt;
   331  if [ ! -e /tmp/.X11-unix ]; then&lt;br /&gt;
   332    mkdir -p /tmp/.X11-unix&lt;br /&gt;
   333    chmod 1777 /tmp/.X11-unix&lt;br /&gt;
   334  fi&lt;br /&gt;
   335&lt;br /&gt;
   336  # Attempt to umount and remove any leftover /initrd:&lt;br /&gt;
   337  if [ -d /initrd ]; then&lt;br /&gt;
   338    umount /initrd/proc 2&amp;gt; /dev/null&lt;br /&gt;
   339    /sbin/umount /initrd 2&amp;gt; /dev/null&lt;br /&gt;
   340    rmdir /initrd 2&amp;gt; /dev/null&lt;br /&gt;
   341    blockdev --flushbufs /dev/ram0 2&amp;gt; /dev/null&lt;br /&gt;
   342  fi&lt;br /&gt;
   343&lt;br /&gt;
   344  # Create a fresh utmp file:&lt;br /&gt;
   345  touch /var/run/utmp&lt;br /&gt;
   346  chown root:utmp /var/run/utmp&lt;br /&gt;
   347  chmod 664 /var/run/utmp&lt;br /&gt;
   348&lt;br /&gt;
   349  if [ &amp;quot;$ROOTTYPE&amp;quot; = &amp;quot;umsdos&amp;quot; ]; then # we need to update any files added in DOS:&lt;br /&gt;
   350    echo &amp;quot;Synchronizing UMSDOS directory structure:&amp;quot;&lt;br /&gt;
   351    echo &amp;quot;  /sbin/umssync -r99 -v- /&amp;quot;&lt;br /&gt;
   352    /sbin/umssync -r99 -v- /&lt;br /&gt;
   353  fi&lt;br /&gt;
   354&lt;br /&gt;
   355  # Setup the /etc/motd to reflect the current kernel level:&lt;br /&gt;
   356  # THIS WIPES ANY CHANGES YOU MAKE TO /ETC/MOTD WITH EACH BOOT.&lt;br /&gt;
   357  # COMMENT THIS OUT IF YOU WANT TO MAKE A CUSTOM VERSION.&lt;br /&gt;
   358  echo &amp;quot;$(/bin/uname -sr).&amp;quot; &amp;gt; /etc/motd&lt;br /&gt;
   359&lt;br /&gt;
   360  # If there are SystemV init scripts for this runlevel, run them.&lt;br /&gt;
   361  if [ -x /etc/rc.d/rc.sysvinit ]; then&lt;br /&gt;
   362    . /etc/rc.d/rc.sysvinit&lt;br /&gt;
   363  fi&lt;br /&gt;
   364&lt;br /&gt;
   365  # Run serial port setup script:&lt;br /&gt;
   366  # CAREFUL!  This can make some systems hang if the rc.serial script isn't&lt;br /&gt;
   367  # set up correctly.  If this happens, you may have to edit the file from a&lt;br /&gt;
   368  # boot disk, and/or set it as non-executable:&lt;br /&gt;
   369  if [ -x /etc/rc.d/rc.serial ]; then&lt;br /&gt;
   370    sh /etc/rc.d/rc.serial start&lt;br /&gt;
   371  fi&lt;br /&gt;
   372&lt;br /&gt;
   373  # Carry an entropy pool between reboots to improve randomness.&lt;br /&gt;
   374  if [ -f /etc/random-seed ]; then&lt;br /&gt;
   375    echo &amp;quot;Using /etc/random-seed to initialize /dev/urandom.&amp;quot;&lt;br /&gt;
   376    cat /etc/random-seed &amp;gt; /dev/urandom&lt;br /&gt;
   377  fi&lt;br /&gt;
   378  # Use the pool size from /proc, or 512 bytes:&lt;br /&gt;
   379  if [ -r /proc/sys/kernel/random/poolsize ]; then&lt;br /&gt;
   380    dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2&amp;gt; /dev/null&lt;br /&gt;
   381  else&lt;br /&gt;
   382    dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2&amp;gt; /dev/null&lt;br /&gt;
   383  fi&lt;br /&gt;
   384  chmod 600 /etc/random-seed&lt;br /&gt;
   385&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Preferabil sa deschideti de doua ori pagina, ca sa va fie mai comoda orientarea.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;linie/i&amp;gt;: &amp;lt;explicatie&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;8: Este setata variabila de mediu PATH. PATH are urmatoarea forma: director:director:director[:director...] si urmatoarea calitate: Ii spune interpretorului in ce directoare sa se uite pentru fisierele executabile care nu au calea absoluta specificata.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;11: Este montat sistemul de fisiere virtual procfs. Folosindu-ne acest sistem de fisiere, vom putea afla informatii ce reflecta starea curenta a nucleului. Vom vedea imediat despre ce este vorba.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;20-36: Se verifica daca fisierul /proc/sys/kernel/hotplug exista si poate fi modificat ( [ -w ] ). Existenta acestui fisier inseamna ca nucleul are suport pentru subsistemul hotplug(traducere?), un sistem de configurare dinamica a componentelor hard. Vom intra in detalii mai tarziu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa aceasta, in cazul in care nucleul are suport pentru hotplug, se verifica daca nucleului i-a fost trimis parametrul de executie &amp;quot;nohotplug&amp;quot;. Aceasta verificare are loc prin inspectarea continutului fisierului /proc/cmdline, fisier ce contine toti parametrii trimisi nucleului de catre programul de incarcare. In cazul in care nucleului i-a fost trimis parametrul de executie &amp;quot;nohotplug&amp;quot;, atunci continutul fisierului /proc/sys/kernel/hotplug este schimbat in &amp;quot;/dev/null&amp;quot;. Continutul fisierului /proc/sys/kernel/hotplug reprezinta calea catre programul care va fi instintat de catre nucleu, cand va avea loc un eveniment(in cazul acesta, cand o componenta hard va fi cuplata). Prin schimbarea continutului fisierului /proc/sys/kernel/hotplug in &amp;quot;/dev/null&amp;quot;, sistemul hotplug este dezactivat, deoarece orice instintare a nucleului cu privire la evenimente hotplug va fi iignorata.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca nucleului n-a fost pornit cu parametrul de executie &amp;quot;nohotplug&amp;quot;, se va verifica daca scriptul /etc/rc.d/rc.hotplug este neexecutabil [ ! -x ], caz in care se verifica daca nucleul NU face parte din bransa 2.4.x, caz in care se dezactiveaza sistemul hotplug, schimbandu-se continutul fisierului /proc/sys/kernel/hotplug in &amp;quot;/dev/null&amp;quot;. Scriptul /etc/rc.d/rc.hotplug porneste sistemul hotplug, asa ca mai devreme a fost verificat pentru a vedea daca este activat de catre administrator. Daca acesta este activat, adica este executabil, va fi rulat de catre nivelele de rulare care vor avea suport pentru hotplug. Vom analiza scriptul /etc/rc.d/rc.hotplug atunci cand ne vom intalni cu executarea acestuia.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;39-41: Se verifica daca scriptul /etc/rc.d/rc.devfsd este prezent si executabil, caz in care scriptul este executat. Scriptul porneste si configureaza, prin intermediul lui defvsd, fisierele /dev. Aceste intrari probabil ca inca mai exista in /etc/rc.S din motive istorice, caci devfs a fost scos din Slackware inca de la versiunea 10.0. Daca doriti sa scadeti cu cateva milisecunde din timpul de initializare, puteti sa stergeti intrarile.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;44-50: Se verifica daca exista directorul /sys [ -d ], caz in care se verifica daca nucleul suporta sistemul de fisiere virtual sysfs. Aceasta verificare se face prin inspectarea fisierului /proc/filesystems, care contine o lista cu sistemele de fisere suportate de nucleu. Daca exista, atunci este verificat fisierul /proc/mounts, pentru a vedea daca sistemul de fisiere sysfs nu este deja montat. /proc/mounts contine o lista cu sistemele de fisiere deja montate. Daca sysfs nu este deja montat, este montat.(...)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Sysfs este un sistem virtual de fisiere, ca si procfs, care ofera informatii despre driverele nucleului. Nucleul din bransa 2.4.x nu are suport pentru acest sistem de fisiere virtual, asa ca daca nu o sa treceti pe 2.6.x, puteti sa stergeti aceste intrari, de doriti cateva milisecunde scazute din timpul de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;56-62: Variabila READWRITE este initializata cu valoarea &amp;quot;no&amp;quot;, ce reflecta starea in care ar trebui sa fie in mod normal montat sistemul de fisiere radacina de catre nucleu, adica cu optiunea de numai-citire. Prin incercarea crearii unui fisier pe sistemul de fisiere radacina, se verifica daca se poate scrie pe acesta, caz in care fisierul test este sters, iar valoarea variabilei READWRITE este schimbata in &amp;quot;yes&amp;quot;, cat sa reflecte adevarata stare a sistemului de fisiere radacina.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;65-67: Se verifica daca exista fisierul citabil /etc/forcefsck, caz in care este initializata variabila FORCEFSK cu valoarea &amp;quot;-f&amp;quot;. Aceasta variabila va fi folosita ca parametru optional pentru comanda fsck.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;70-166: Se verifica daca sistemul de fisiere radacina nu este montat cu optiunea numai-citire, caz in care au loc urmatorii pasi:&lt;br /&gt;
&lt;br /&gt;
* Variabila RETVAL este initializata cu valoarea 0.&lt;br /&gt;
&lt;br /&gt;
* Se verifica daca nu exista fisierul citabil /etc/fastboot, caz in care se verifica integritatea sistemului de fisiere radacina prin intermediul comenzii fsck.&lt;br /&gt;
&lt;br /&gt;
* RETVAL isi schimba continutul in valoarea returnata de catre comanda fsck.&lt;br /&gt;
&lt;br /&gt;
* Se verifica daca valoarea lui RETVAL este mai mare sau egala cu 2, caz in care sa verifica daca valoarea lui RETVAL este mai mare sau egala cu 4, caz in care sintem avertizati de anumite erori ce-au avut loc pe parcursul inspectarii lui fsck si sintem aruncati in modul utilizator-unic, pentru a depana problemele aparute. Altfel, daca valoarea lui RETVAL este intre 2 si 4, sint demontate sistemele de fisiere, iar calculatorul este repornit. &lt;br /&gt;
&lt;br /&gt;
* Daca valoarea lui RETVAL este 0 sau 1, atunci se incearca remontarea sistemului de fisiere radacina cu optiunea de citire-scriere, prin intermediul comenzii mount.&lt;br /&gt;
&lt;br /&gt;
* Valoarea returnata de catre comanda mount este verificata daca este mai mare decat 0, caz in care sintem intampinati cu niste erori si indemnati sa repornim calculatorul, folosindu-ne de sfaturile din avertizari. In schimb, daca valoarea returnata de mount este 0 [...]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;169-171: Este sters fisierul /etc/mtab, iar sistemul de fisiere radacina si sistemele virtuale de fisiere procfs si sysfs sint remontate. Acesti pasi sint facuti pentru ca fisierul /etc/mtab este vechi, de la ultima initializare a sistemului, si trebuie refacut. Fisierul /etc/mtab contine o lista cu sistemele de fisiere montate montate in acest moment.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;192-199: Se incearca pornirea lui udev, care este un inlocuitor al lui hotplug, pentru nucleele din bransa 2.6.x. Intai se verifica daca este montat sistemul virtual de fisiere sysfs si daca nucleul suporta sistemul virtual de fisiere tmpfs, caz in care se verifica daca nucleul n-a fost pornit cu parametrul de executie &amp;quot;nohotplug&amp;quot;, caz in care se verifica daca scriptul /etc/rc.d/rc.udev exista si este executabil, caz in care acest script este executat impreuna cu /lib/udev/udev.count_events.sh.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;202-215: Este setata ora sistemului, folosindu-se de comanda hwclock cu parametrul sau de executie --hctosys. Intai se verifica daca exista executabilul /sbin/hwclock. Daca exista, se verifica intrarile din /proc/ioports (fisier ce contina o lista cu conectorii de intrare-iesire activi) pentru rtc ( real time clock — ceas in timp real, un ceas care continua sa functioneze chiar si atunci cand calculatorul este oprit ). Daca se gaseste o asemenea intrare, variabila CLOCK_OPT este initializata cu valoarea &amp;quot;--directisa&amp;quot;. Se verifica daca fisierul /etc/hardwareclock contine o intrare care incepe cu sirul de caractere &amp;quot;UTC&amp;quot;, caz in care se executa comanta /hwclock, insotita de parametrii $CLOCK_OPT, --utc si --hctosys, altfel se executa aceeasi comanda, dar in loc de --utc se foloseste --localtime.[erm, detaliere..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;218-22: Se verifica daca fisierul /etc/isapnp.conf si este modificabil, caz in se verifica existenta fisierului executabil /sbin/isapnp, caz in care comanda /sbin/isapnp este rulata cu parametrul de executie /etc/isapnp.conf. Programul isapnp face parte din suita de utilitare isapnptools, care se ocupa cu configurarea dispozitivelor ISA autoconfigurabile(engl. ISA Plug and Play devices). Daca n-aveti asemenea dispozitive, puteti sa stergeti intrarile, de doriti cateva milisecunde in plus la initializare. Chiar mai mult, de la nucleele din bransa 2.4. Ba mai mult, daca folositi nuclee din bransa 2.6, ati putea sterge aceste intrari chiar daca aveti dispozitive ISA autoconfigurabile, deoarece nucleul nu va mai fi nevoit sa comunice cu isapnp, driverele(?) dispozitivelor facandu-si suficient de bine treaba.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;231-243: Se va verifica existenta unor scripturi executabile prin intermediul carora vor fi incarcate anumite module ale nucleului. Pasii sint urmatorii: Se verifica existenta scriptului executabil /etc/rc.d/rc.modules.local, cat si existenta fisierului modificabil /proc/modules (care contine o lista cu modulele incarcate in acest moment), iar daca acestea exista, se scrie pe ecran ca scriptul va fi executat, dupa care acesta este executat. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca acestea nu exista, se verifica existenta fisierului executabil /etc/rc.d/rc.modules-(versiune nucleu), cat si existenta fisierului modificabil /proc/modules, iar daca acestea exista, se scrie pe ecran ca scriptul va fi executat, dupa care acesta este executat. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca nici de data aceasta scriptul sau /proc/modules nu este gasit, se verifica existenta scriptului executabil /etc/rc.d, existenta fisierului modificabil /proc/modules, cat si daca scriptul /etc/rc.d este un link(?) simbolic [ -L ], caz in care se scrie pe ecran ca scriptul va fi executat (se afiseaza si catre ce indica linkul simbolic, prin intermediul comenzii readlink), iar scriptul este executat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca nici acum nu s-au validat conditiile, atunci se repeta ultimii pasi, mai putin cu verificarea scriptului pentru calitatea de link simbolic.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa atatea 'daca'-uri, se trage concluzia ca la prima validare a unui script, acesta este executat, restul intrarilor fiind ignorate. Asa ca este indicat sa ne asiguram ca specificam intr-un singur script toate modulele ce ar trebui incarcate, iar daca tot facem acest lucru, putem sa stergem restul intrarilor, daca dorim cateva de milisecunde scazute din perioada deinitializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;246-248: Se verifica existenta fisierului executabil /sbin/sysctl si a fisierului modificabil, iar daca acestea exista, este rulata comanda /sbin/sysctl. Prin intermediul lui /sbin/sysctl, putem sa setam anumiti parametrii ai nucleului in timp ce acesta ruleaza. Daca nu avem de gand sa-i trimitem niste parametrii de rulare nucleului pe parcursul procesului de initializare, putem sa stergem aceste intrari, daca dorim cateva milisecunde scazute din perioada de initializare.&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;255-282: Aceste intrari pornesc si configureaza LVM. LVM este unul din visurile devenite realitate ale administratorului de sistem sau al utilizatorului care s-a saturat sa gandeasca un sistem optim de partitionare a dispozitivelor de stocare! Este un serviciu foarte folositor, pus la dispozitie de nucleu, prin intermediul caruia partitiile fizice sint combinate in 'partitii virtuale'(care sint denumite volume logice in nomenclatura LVM'ului), in asa fel  se pot realiza anumite operatii cu partiile care altfel ar fi imposibil fara stergerea unitatii de stocare si repartitionarea sa. De exemplu, in cazul in care s-a umplut o partitie, aceasta poate fi marita prin 'imprumutarea' spatiului de pe alta partitie; sau daca se adauga un o noua unitate de disk, spatiul acesteia poate fi alocat unei partitii sau unui grup de partitii deja existenta pe discul actual. Revenind, sa urmarim cum are loc initializarea LVM'ului:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Intai se verifica daca exista fisierul modificabil /etc/lvm1(folosit de versiuna 1 a LVM) sau directorul /etc/lvm/backup(folosit de versiunea 2 a LVM). Faptul ca aceste fisiere nu exista acum nu inseamna neaparat ca nu avem suport pentru LVM, ci doar ca n-au fost create. Ele trebuiesc create manual, iar pentru acest lucru este folosita comanda vgscan(8). Spun &amp;quot;ele&amp;quot;, dar de fapt nu se creaza decat 1 singur fisier/director, in functie de versiunea LVM. Bun, in caz de au fost create, se continua procesul.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ni se specifica faptul ca LVM va fi pornit. Se verifica daca fisierul /proc/devices NU contine o intrare &amp;quot;device-mapper&amp;quot;, caz in care se verifica existenta modului &amp;quot;dm-mod.ko&amp;quot;, iar, daca acesta exista, este incarcat. Fisierul /proc/devices contine o lista cu driverele(?) dispozitivelor care sint momentan incarcate in nucleu. &amp;quot;device-mapper&amp;quot; este o componenta noua a nucleelor din bransa 2.6.x, dar poate fi folosit si cu nuclee din bransa 2.4.x, daca acestea sint corectate(engl. patched), asa ca intrarea poate fi stearsa, daca nu se va folosi un nucleu ce suporta aceasta facilitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa ce este incarcat modului &amp;quot;dm-mod.ko&amp;quot;, variabila KERNEL_VERSION este initializata cu valoarea primelor 2 numere din versiunea actuala a nucleului. Se verifica daca valoarea variabilei KERNEL_VERSION este egala cu &amp;quot;2.4&amp;quot;, caz in care se executa comanda /sbin/vgscan, iar erorile acestei comenzi sint redirectionate catre /dev/null (2&amp;gt;). Daca valoarea variabilei KERNEL_VERSION nu este &amp;quot;2.4&amp;quot;, atunci se executa comanta /sbin/vgscan --ignorelockingfailure, iar erorile acestei comenzi sint redirectionate catre /dev/null.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Se verifica daca valoarea returnata de catre comanda vgscan este egala cu zero (0 este returnat in caz ca totul s-a efectuat cu succes), caz in care se verifica inca o data daca versiunea nucleului este din bransa 2.4, caz in care se executa comanda /sbin/vgchange -ay. Daca nucleul nu face parte din bransa 2.4, se executa comanda /sbin/vgchange -ay --ignorelockingfailure. Comanda /sbin/vgchange -ay activeaza toate grupele volum din sistem. De mentionat ca, daca se verifica paginile manual cat si codul sursa al programelor carora le este trimis parametrul --ignorelockingfailure, se va observa ca acestea n-au suport pentru o optiune cu acest nume, asa ca folosirea lui este redundanta, ceea ce inseamna ca se pot scoate verificarile versiunii nucleului care conditioneaza folosirea acestor comenzi. Desigur, daca nu configuram nucleul cu suport pentru LVM, putem sa scoatem toate aceste intrari, daca dorim cateva milisecunde scazute din timpul de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;321-324: Se sterg niste fisiere (posibil) lasate in de la repornirea calculatorului. Directorul /var/log/setup/tmp este folosit de pkgtool(cu precadere de catre installpkg). Fisierul /var/run/utmp contine informatii despre cine este autentificat in momentul acesta (este folosit de programe ca login). Fisierele din /var/run care se termina cu *pid sint, conform FHS, fisiere identificatoare ale proceselor (engl. presc. PID files), care contin PID'ul unor servicii ce ruleaza acum. Fisierul /etc/nologin, daca ar exista, i-ar spune lui login sa permita doar superutilizatorului sa se autentifice, asa ca daca doriti aceasta optiune stergeti intrarea. Fisierele /var/run/ppp* contin diverse informatii despre serviciile care pun la dispozitie conexiunea ppp. La fel si cu fisierele /etc/dhcpc/*.pid, doar ca ofera informatii despre serviciile dhcp. Fisierul /etc/forcefsck, dupa cum am observat, daca este existent, este folosit ca parametru &amp;quot;-f&amp;quot; de executare pentru fsck. Fisierul /etc/fastboot, daca exista, specifica lui /etc/rc.S sa treaca peste verificarea integritatii discului. Fisierul /var/state/saslauthd/saslauthd.pid contine informatii cu privire la PID'ul demonului salsd, daca acesta ruleaza. Pot fi sterse intrarile care se stiu ca nu vor fi folosite.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;327-334: Se verifica daca NU exista directoarele /tmp/.ICE-unix si /tmp.X11-unix, caz in care acestea sint create. Aceste directoare contin informatii cu privire la serverul/sesiunile X actual/e.&lt;br /&gt;
&lt;br /&gt;
[...]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3255</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3255"/>
				<updated>2006-12-02T02:17:27Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum observam, init este primul(chiar unicul) program executat de catre nucleu. De fapt, nucleul nu executa _programul_ init, ci programul care are calea absoluta /sbin/init, /etc/init, /bin/init sau /bin/sh, asta in cazul in care nucleului nu-i este specificat ca parametru de executie(init= -- deobicei specificat prin intermediul lui LILO sau altui program de incarcare) altceva(execute_command).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mai observam ca dupa 3 incercari de a executa programul &amp;quot;init&amp;quot;, nucleul isi incearca pentru ultima oara norocul cu /bin/sh. Pe Slackware (si nu numai), fisierul cu aceasta cale absoluta este o legatura cu interpretorul de comenzi BASH. Asta inseamna ca, in cazul in care celelalte trei cai nu sint valide, ne vom trezi cu un interpretor de comenzi pentru suprautilizator si un sistem neconfigurat. Acesta este unul dintre riscurile de securitate despre care vorbeam in subcapitolul legat de programele de incarcare, datorita faptului ca prin intermediul lor se poate forta nucleul sa execute calea /bin/sh, sau a oricarui alt executabil preprogramat. Folosindu-ne de cunostintele acumulate pe parcursul ghidului, voi arata, catre final, in capitolul [inca nu i-am gasit un nume] cum se poate configura si pune in picioare in mod manual un sistem folosindu-ne doar de interpetatorul de comenzi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Tot procesul descris pana in acest moment ar trebui sa fie independent de distributia folosita. In schimb, odata cu executia programului cu una dintre cele 3 cai enumerate mai devreme, lucrurile tind sa devina specifice (dar nu exagerat) distributiei, sau, mai exact, specifice unui stil de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Lumea tinde sa-i atribuie lui Slackware si derivatelor sale stilul &amp;quot;BSD&amp;quot;, iar distributiilor ca Fedora Core, SuSe, Mandriva s.a. stilul &amp;quot;System V&amp;quot;. BSD si System V au fost, acum multi ani, niste versiuni de UNIX care, dupa cum se vede, au influentat sistemele de operare actuale. Ele isi mai continua si astazi existenta prin rudele lor de grad I, cum ar fi, in cazul lui System V, UnixWare, iar, in cazul lui BSD, Open/Net/FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta categorisire, in schimb, daca este luata la puricat, nu este tocmai corecta. Slackware se foloseste de stilul de initializare &amp;quot;System V&amp;quot;, doar ca il abordeaza intr-o maniera 'mai BSD', simplificandu-l, dupa cum vom vedea. Nu am sa intru detalii legate de diferentele de abordare a initializarii de catre, sa zicem, Mandriva si Slackware, nu asta este scopul ghidului. In schimb, la final, odata inteles modul in care Slackware 'vede lumea', cititorul se poate folosi de cunostiintele acumulate pentru a compara toate distributiile GNU/Linux, daca doreste :~)&lt;br /&gt;
&lt;br /&gt;
====sysvinit====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Slackware, ca si majoritatea celorlalte distributii, se foloseste de suita de utilitare sysvinit (instalata prestabilit). O scurta descriere a pachetului, insotita de o lista cu programele incluse in el, ar fi urmatoarea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ echo -e \\n &amp;quot;Descriere:&amp;quot;; head -n14 /var/log/packages/sysvinit-2.84-i486-69; \&lt;br /&gt;
echo -e \\n\\n &amp;quot;Lista cu programe:&amp;quot;; grep -e [18].gz$ /var/log/packages/sysinit-2.84-i486-69 | \&lt;br /&gt;
awk -F/ ' { print $4 } ' | awk -F. ' { print $1 } '&lt;br /&gt;
&lt;br /&gt;
Descriere:&lt;br /&gt;
PACKAGE NAME:     sysvinit-2.84-i486-69&lt;br /&gt;
COMPRESSED PACKAGE SIZE:     296 K&lt;br /&gt;
UNCOMPRESSED PACKAGE SIZE:     650 K&lt;br /&gt;
PACKAGE LOCATION: /var/log/mount/slackware/a/sysvinit-2.84-i486-69.tgz&lt;br /&gt;
PACKAGE DESCRIPTION:&lt;br /&gt;
sysvinit: sysvinit (init, the parent of all processes)&lt;br /&gt;
sysvinit:&lt;br /&gt;
sysvinit: System V style init programs by Miquel van Smoorenburg that control&lt;br /&gt;
sysvinit: the booting and shutdown of your system.  These support a number of&lt;br /&gt;
sysvinit: system runlevels, each with a specific set of utilities spawned.&lt;br /&gt;
sysvinit: For example, the normal system runlevel is 3, which starts agetty&lt;br /&gt;
sysvinit: on virtual consoles tty1 - tty6.  Runlevel 4 starts xdm.&lt;br /&gt;
sysvinit: Runlevel 0 shuts the system down.&lt;br /&gt;
sysvinit:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lista cu programe:&lt;br /&gt;
last&lt;br /&gt;
runlevel&lt;br /&gt;
killall5&lt;br /&gt;
shutdown&lt;br /&gt;
poweroff&lt;br /&gt;
init&lt;br /&gt;
halt&lt;br /&gt;
pidof&lt;br /&gt;
reboot&lt;br /&gt;
telinit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observam ca unul dintre programele incluse in pachet poarta denumirea de init. II aflam calea absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ su -c 'which init'&lt;br /&gt;
Password:&lt;br /&gt;
/sbin/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Avand respectiva cale, inseamna ca ar trebui sa fie primul program executat de nucleu. Ne putem convinge de acest lucru folosind comanda pstree(1), care ne va afisa un arbore de procese.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ pstree -np&lt;br /&gt;
init(1)-+-keventd(2)&lt;br /&gt;
        |-ksoftirqd_CPU0(3)&lt;br /&gt;
        |-kswapd(4)&lt;br /&gt;
        |-bdflush(5)&lt;br /&gt;
        |-kupdated(6)&lt;br /&gt;
        |-khubd(7)&lt;br /&gt;
        |-syslogd(72)&lt;br /&gt;
        |-klogd(75)&lt;br /&gt;
        |-inetd(631)&lt;br /&gt;
        |-dhcpcd(635)&lt;br /&gt;
        |-sshd(639)&lt;br /&gt;
        |-crond(652)&lt;br /&gt;
        |-atd(654)&lt;br /&gt;
        |-gpm(664)&lt;br /&gt;
        |-agetty(667)&lt;br /&gt;
        |-agetty(668)&lt;br /&gt;
        |-agetty(669)&lt;br /&gt;
        |-agetty(670)&lt;br /&gt;
        |-agetty(671)&lt;br /&gt;
        |-bash(860)---startx(958)---xinit(974)-+-X(975)&lt;br /&gt;
        |                                      `-xinitrc(979)---startkde(980)---kwrapper(1020)&lt;br /&gt;
        |-kdeinit(1008)-+-kdeinit(1013)&lt;br /&gt;
        [...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Uitandu-ne la arbore, observam ca, pe langa faptul ca init este primul proces si are pid'ul(tradus?) 1, restul proceselor tind sa izvoreasca din el. Consultandu-i pagina manual (init(8)), aflam niste detalii importante, printre care:&lt;br /&gt;
&lt;br /&gt;
* Init este tatal tuturor proceselor. Este primul program executat de catre nucleul la sfarsitul secventei de initializare al acestuia, fiindu-i atribuit pid-ul cu valoarea 1. ( de mentionat ca nucleul n-are pid'ul 1, ci 0. )&lt;br /&gt;
&lt;br /&gt;
* Printre scopurile sale se numara: Initializarea tuturor celorlalte procese, colectarea proceselor moarte(zombi) si regenerarea unor procese fiu la terminarea lor; Inspectarea, la initializare, a fisierului /etc/inittab, pentru configurarea sistemului.&lt;br /&gt;
&lt;br /&gt;
* Acceptare unor parametrii de executie, de obicei setati prin intermediul unui program de incarcare, care, daca sint specificati, ii pot schimba cursul firesc al derularii.&lt;br /&gt;
&lt;br /&gt;
* Captarea unor semnale si reactionarea la ele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Restul capacitatilor vor fi descrise spre finalul ghidului.&lt;br /&gt;
&lt;br /&gt;
=====/etc/inittab=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum s-a specificat mai sus, init,la executare, va citi fisierul /etc/inittab pentru a sti cum sa configureze sistemul. Conform paginii manual inittab(5), formatul fisierului /etc/inittab este urmatorul:&lt;br /&gt;
&lt;br /&gt;
id:niveluri de rulare:actiune:proces&lt;br /&gt;
&lt;br /&gt;
* Campul id: Trebuie sa contina un sir unic de maximum 4 caractere alfanumerice. Este folosit pentru a identifica fiecare intrare din fisier.&lt;br /&gt;
&lt;br /&gt;
* Niveluri de rulare: In primul rand, nivelul de rulare, conform paginii manual init(8), reprezinta o configuratie software a sistemului care, printre altele, specifica ce procese trebuiesc pornite de catre init. Configuratia se realizeaza prin intermediul unor scripturi BASH, fiecarui nivel de rulare atribuindu-se cel putin unul. Pot exista mai multe niveluri de executie. In Slackware, cele prestabilite sint urmatoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# These are the default runlevels in Slackware:&lt;br /&gt;
#   0 = halt&lt;br /&gt;
#   1 = single user mode&lt;br /&gt;
#   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
#   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
#   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   6 = reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In fisierul /etc/inittab, campul dedicat nivelurilor de rulare trebuie sa contina o lista de niveluri de rulare pentru care trebuie executata o actiune ce, in majoritatea cazurilor. Vom vedea imediat ce inseamna toate acestea.&lt;br /&gt;
&lt;br /&gt;
* Campul actiune: Descrie actiunea pe care init o sa o realizeze pentru o lista de niveluri de rulare. Exista mai multe tipuri de actiuni, printre care:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''respawn''': lanseaza o noua instanta a unui proces, daca acesta isi termina executia&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''wait''': procesul va fi pornit odata cu intrarea in nivelul de rulare, iar init va astepta pana acesta se incheie.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''once''': procesul va fi executat o singura data, de indata ce se va intra in nivelul de rulare&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''sysinit''': intrarea ce contine aceasta actiune specifica procesul ce trebuie executat in timpul initializarii sistemului de catre init. De obicei, acest, dupa cum vom vedea, scriptul BASH /etc/rc.S.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''initdefault''': intrarea ce contine aceasta actiune specifica si nivel de rulare care va fi executat de catre init, imediat dupa ce sistemul a fost initializat (prin intermediul scriptului rc.S.)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''ctrlaltdel''': procesul va fi executat atunci cand init va primi semnalul SIGINIT. Semnalul SIGINIT este trimis atunci cand sint apasate tastele CTRL-ALT-DELETE. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum se observa, majoritatea actiunilor merg mana in mana cu un proces. Procesul este specificat in campul proces.&lt;br /&gt;
&lt;br /&gt;
* Campul proces: Specifica un proces ce trebuie executat la intrarea intr-un nivel de rulare. Procesul poate fi o comanda sau un script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ca sa intelegem mai bine ce inseamna toate acestea, vom analiza un fisier /etc/inittab.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/inittab&lt;br /&gt;
     1  #&lt;br /&gt;
     2  # inittab       This file describes how the INIT process should set up&lt;br /&gt;
     3  #               the system in a certain run-level.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Version:      @(#)inittab             2.04    17/05/93        MvS&lt;br /&gt;
     6  #                                       2.10    02/10/95        PV&lt;br /&gt;
     7  #                                       3.00    02/06/1999      PV&lt;br /&gt;
     8  #                                       4.00    04/10/2002      PV&lt;br /&gt;
     9  #&lt;br /&gt;
    10  # Author:       Miquel van Smoorenburg, &amp;lt;miquels@drinkel.nl.mugnet.org&amp;gt;&lt;br /&gt;
    11  # Modified by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
    12  #&lt;br /&gt;
    13&lt;br /&gt;
    14  # These are the default runlevels in Slackware:&lt;br /&gt;
    15  #   0 = halt&lt;br /&gt;
    16  #   1 = single user mode&lt;br /&gt;
    17  #   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    18  #   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
    19  #   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
    20  #   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    21  #   6 = reboot&lt;br /&gt;
    22&lt;br /&gt;
    23  # Default runlevel. (Do not set to 0 or 6)&lt;br /&gt;
    24  id:3:initdefault:&lt;br /&gt;
    25&lt;br /&gt;
    26  # System initialization (runs when system boots).&lt;br /&gt;
    27  si:S:sysinit:/etc/rc.d/rc.S&lt;br /&gt;
    28&lt;br /&gt;
    29  # Script to run when going single user (runlevel 1).&lt;br /&gt;
    30  su:1S:wait:/etc/rc.d/rc.K&lt;br /&gt;
    31&lt;br /&gt;
    32  # Script to run when going multi user.&lt;br /&gt;
    33  rc:2345:wait:/etc/rc.d/rc.M&lt;br /&gt;
    34&lt;br /&gt;
    35  # What to do at the &amp;quot;Three Finger Salute&amp;quot;.&lt;br /&gt;
    36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&lt;br /&gt;
    37&lt;br /&gt;
    38  # Runlevel 0 halts the system.&lt;br /&gt;
    39  l0:0:wait:/etc/rc.d/rc.0&lt;br /&gt;
    40&lt;br /&gt;
    41  # Runlevel 6 reboots the system.&lt;br /&gt;
    42  l6:6:wait:/etc/rc.d/rc.6&lt;br /&gt;
    43&lt;br /&gt;
    44  # These are the standard console login getties in multiuser mode:&lt;br /&gt;
    45  c1:1235:respawn:/sbin/agetty 38400 tty1 linux&lt;br /&gt;
    46  c2:1235:respawn:/sbin/agetty 38400 tty2 linux&lt;br /&gt;
    47  c3:1235:respawn:/sbin/agetty 38400 tty3 linux&lt;br /&gt;
    48  c4:1235:respawn:/sbin/agetty 38400 tty4 linux&lt;br /&gt;
    49  c5:1235:respawn:/sbin/agetty 38400 tty5 linux&lt;br /&gt;
    50  c6:12345:respawn:/sbin/agetty 38400 tty6 linux&lt;br /&gt;
    51&lt;br /&gt;
    52  # Runlevel 4 used to be for an X window only system, until we discovered&lt;br /&gt;
    53  # that it throws init into a loop that keeps your load avg at least 1 all&lt;br /&gt;
    54  # the time. Thus, there is now one getty opened on tty6. Hopefully no one&lt;br /&gt;
    55  # will notice. ;^)&lt;br /&gt;
    56  # It might not be bad to have one text console anyway, in case something&lt;br /&gt;
    57  # happens to X.&lt;br /&gt;
    58  x1:4:respawn:/etc/rc.d/rc.4&lt;br /&gt;
    59&lt;br /&gt;
    60  # End of /etc/inittab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Vom analiza fiecare intrare, explicand-o.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Prima intrare, cea de la linia 24, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;id&amp;quot; (datorita campului id, faptul ca valoare campului coincide cu numele acestuia nu are vreo importanta). Campul nivelului de rulare este ocupat de caracterul &amp;quot;3&amp;quot;. Campul actiunii este ocupat de 'initdefault', ceea ce inseamna ca init va intra in nivelul de rulare specificat de catre acest camp, adica, in cazul nostru, &amp;quot;3&amp;quot;. Campul proces lipseste doarece intrarea, continand actiunea 'initdefault', nu necesita un proces, acesta fiind oricum ignorat daca ar fi specificat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A doua intrare, cea de la linia 27, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;si&amp;quot;. Campul nivelului de rulare este ocupat de caracterul &amp;quot;S&amp;quot;.Campul actiunii este ocupat de  catre &amp;quot;sysinit&amp;quot;, iar procesul este scriptul /etc/rc.d/rc.S. Faptul ca &amp;quot;sysinit&amp;quot; ocupa campul actiune ii spune lui init sa execute procesul din campul proces (in cazul acest, ii spune lui init sa execute scriptul /etc/rc.d/rc.S) inainte de a intra in vreun nivel de rulare(nivelul &amp;quot;3&amp;quot;, in cazul nostru ^^).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treia intrare, cea de la linia 30, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;su&amp;quot;. Campul nivelului de rulare este &amp;quot;1S&amp;quot;, ceea ce-nseamna ca intrarea se aplica atat nivelului de rulare &amp;quot;1&amp;quot;, cat si nivelului de rulare &amp;quot;S&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.K. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A patra intrare, cea de la linia 33, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;rc&amp;quot;. Campul nivelelor de rulare este &amp;quot;2345&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelelor de rulare &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot; si &amp;quot;5&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.M. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A cincea intrare, cea de la linia 36, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;ca&amp;quot;. Campul nivelelor de rulare este gol. Campul actiunii este ocupat de catre &amp;quot;ctrlaltdel&amp;quot;, iar procesul de catre comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Faptul ca &amp;quot;ctrlaltdel&amp;quot; ocupa campul actiune ii spune lui init ca, atunci cand sint apasate tastele CTRL+ALT+DELETE la consola, sa execute procesul din campul proces, in cazul nostru comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Aceasta actiune nu necesita un nivel de rulare, presupunandu-se ca, daca ajungem la o consola sa apasam cele trei taste mai devreme mentionate, sintem deja intr-un nivel de rulare cu un sistem mai mult sau mai putin configurat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A sasea intrare, cea de la linia 39, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l0&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;0&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;0&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.0. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.0 atunci cand va intra in nivelul de rulare &amp;quot;0&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A saptea intrare, cea de la linia 42, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l6&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;6&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;6&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.6. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.6 atunci cand va intra in nivelul de rulare &amp;quot;6&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmatoarele 5 intrari -- de la linia 45 la linia 49 -- sint aproape identice, singurele lucruri care le deosebesc fiind campul care le identifica( oare de ce?:-) ) si penultimul parametru de executie al comenzii din campul proces. Toate au la campul nivelurilor de rulare caracterele &amp;quot;1235&amp;quot;. Toate au in campul actiunii &amp;quot;respawn&amp;quot;, iar la proces comanda &amp;quot;/sbin/agetty 38400 tty&amp;lt;x&amp;gt; linux&amp;quot;, &amp;lt;x&amp;gt; diferind de la intrare la intrare. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa regenereze procesul din campul proces, cand acesta isi termina executia. In cazul nostru, init va regenera o sesiune de identificare(engl. login prompt) in cazul in care aceasta se va sfarsi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treisprezecea intrare, cea de la linia 50, este are aceleasi proprietati ca si ultimele 5 intrari, doar ca intrarea este aplicata si nivelului de rulare &amp;quot;4&amp;quot;, spre deosebire de precedentele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ultima intrare, cea de la linia 58, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;x1&amp;quot;. Campul nivelurilor de rulare este ocupat de catre caracterul &amp;quot;4&amp;quot;. Campul actiune este ocupat de catre &amp;quot;respawn&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.4. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa reexecute scriptul /etc/rc.d/rc.4, cand acesta se va termina.&lt;br /&gt;
&lt;br /&gt;
=====Lamuriri necesare pentru a continua. Mica erata a ceea ce a fost expus pana acum.=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Probabil ca se observa niste neconcordante intre anumite lucruri ce-au fost descrise pana acum. De exemplu: Inainte sa depanam fisierul /etc/inittab, s-a spus ca valoarea din campul proces reprezinta un proces (ce, dupa cum am observat, poate fi o comanda sau un script) care va fi executat de catre init _l-a intrarea intr-un nivel de rulare_, dar noi am observat ca intr-unele intrari campul nivelurilor de rulare este gol, pe cand campul proces contine o valoare. De ce am spus asta? Pai, in primul rand, ca este mai usor de inteles un lucru partial adevarat, urmat de o lamurire, decat daca as intra in detalii de la bun inceput; si, in plus, explicatiile detaliate duc, dupa cum se pare, la exprimari tautologice ( ca sa fiu delicat :~) ), datorita unor termeni care nu se impac intr-o expresie/propozitie... Bun. Revenind.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Init, pe langa faptul ca este primul program executat, mai este si ultimul, -- asta in cazul in care procesul de oprire al calculatorului se deruleaza normal si corect. Ce ne spune acest lucru? Pai ne spune mai multe lucruri. Ne spune, de exemplu, ca pe parcursul timpului de executie al lui init, sistemul este 1. configurat 2. intretinut 3. deconfigurat. Vom urma in detaliu stagiile (1) si (3), dar hai sa spunem cateva lucruri despre fiecare in parte, chiar daca voi prelua anumite idei ce-au fost deja expuse.&lt;br /&gt;
&lt;br /&gt;
* (1) Nucleul nu-l arunca pe init intr-un mediu complet configurat. De fapt, luat in mare, nu il lasa decat cu un sistem de fisiere radacina montat cu proprietatea de numai-citire, dupa care se retrage linistit in fundal, unde isi vede de treaba, printre altele punand la dispozitia programelor o suita de apeluri de sistem prin intermediu carora acestea comunica cu el. Pana ajungem noi sa ne autentificam, init are mult de munca. De fapt, prea il elogiez, caci el nu face toata treaba de unul singur, ci mai degraba o coordoneaza. Am observat ca el citeste fisierul /etc/inittab si ca de acolo afla, printre altele, ce scripturi sa execute pentru configurarea sistemului. Comenzile din acele scripturi, de fapt, pun in picioare sistemul, iar unul dintre rolurile lui init este sa ruleze aceste scripturi. Acest lucru ofera o mare flexibilitate administratorului sistemului, deoarece scripturile sint mai usor de inteles si de schimbat. Va imaginati ce-ar fi insemnat ca init sa faca toata treaba de unul singur, fara sa apeleze la BASH sau alt interpretor de comenzi? Ar fi insemnat ca init sa fie foarte complex, ar fi insemnat ca administratorul de sistem sa ii umble prin codul sursa, daca ar vrea sa schimbe ceva -- orice, dupa care sa-l recompileze s.a.m.d. Ca sa inchei scurta introducere a acestui stagiu, nu mai spun decat ca, in Slackware si derivatele sale, TOATE scripturile de care se foloseste init se afla in directorul /etc/rc.d/. Acest lucru nu este batut in cuie, putand foarte lejer sa schimbam asta prin modificarea campului proces al intrarilor din /etc/inittab, dar este o conventie utila si bine gandita, asa mai bine nu am schimba-o. De asemenea, vom urmari indeaproape fiecare script in parte.&lt;br /&gt;
&lt;br /&gt;
* (2) Cum sta treaba cu intretinerea sistemului? Pai e lesne de imaginat ca, fiind primul program pornit si ruland _mereu_, chiar si dupa ce sistemul a fost configurat si noi deja ne bucuram de facilitile unui client de posta electronica, init nu sta degeaba. S-a specificat mai devreme, cand au fost enumerate unele dintre scopurile sale, ca se ocupa cu initializarea tuturor celorlalte procese, colectarea proceselor moarte s.a. Nu s-a specificat, in schimb, o proprietate specifica tuturor programelor ( a se citi proceselor ) unui sistem compatibil cu standardele ANSI/POSIX. Aceasta proprietate este aceea de a capta semnale. Probabil ca toti stim ce este un semnal, deoarece toti am folosit comanda kill. Stim ca programele pot fi programate(...) sa capteze anumite semnale, si sa interactioneze intr-un anume fel la primirea acestora. Asa face si init, dar spre deosebire de alte programe, ii poate fi specificat si cum sa reactioneze la primirea anumitor semnale. Cum ii specificam asta? Pai cum faceam si pana acum, cand voiam sa-i modelam comportamentul: folosindu-ne de fisierul /etc/inittab. Acum ajungem la acele neconcordante despre care vorbeam mai devreme, anume intrarile din fisierul /etc/inittab care contin nu contin un nivel de rulare, dar contin un proces.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;S-a specificat ca aceasta intrare are urmatoarea influenta asupra lui init: cand init primeste semnalul SIGINIT (care ii este trimis cand sint apasate, la consola, tastele CTRL+ALT+DELETE), acesta executa comanda /sbin/shutdown -t5 -r now. Faptul ca nu este specificat un nivel de rulare nu are vreo importanta, caci intrarea cu aceasta actiune se aplica oricarui 'nivel de rulare'( de fapt, daca init este pornit, nu conteaza daca sistemul este configurat sau ba, daca sintem intr-un nivel de rulare sau nu, va reactiona cum am spus mai devreme. ). Aceasta nu este singura actiune care ii spune lui init sa reactioneze cumva la primirea unui semnal. Distributia vine cu un fisier /etc/inittab care contine inca 2 intrari cu actiuni asemanatoare, anume powerfail si powerokwait, care reactioneaza la semnale primite de la sursa de alimentare neintreruptibila(engl. presc. UPS).&lt;br /&gt;
&lt;br /&gt;
* (3) Despre acest stagiu nu s-a scris deloc pana acum. Pe scurt, deconfigurarea sistemului se face prin configurarea unor nivele de rulare pentru acest scop, nivele de rulare care sa execute anumite scripturi care sa faca, in mare parte, opusul scriptului de initializare + oprirea serviciilor specifice nivelului de rulare in care sintem. Aceste scripturi, in cazul de fata -- si in cazul unei distributii Slackware nemodificate --, sint /etc/rc.0 si /etc/rc.6, specifice nivelurilor de executie &amp;quot;0&amp;quot; si &amp;quot;6&amp;quot;. Le vom urmari indeaproape.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In cele ce urmeaza, vom analiza stagiul (2), mai exact scripturile executate de catre init, folosindu-ne de fisierul /etc/inittab postat aici. Scripturile pe care le vom analiza sint cele care vin cu distributia, mai putin /etc/inittab, caruia i-au fost scoase 2 intrari care oricum n-au sa faca mare diferenta. Vom lua scripturile in ordinea executarii lor de catre init.&lt;br /&gt;
&lt;br /&gt;
=====/etc/rc.S=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Are urmatoarele calitati:&lt;br /&gt;
&lt;br /&gt;
* 1. Este primul script executat de catre init.&lt;br /&gt;
&lt;br /&gt;
* 2. Este rulat inainte de executarea oricarui script specific vreunui nivel de rulare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Scriptul este voluminos. In cele ce urmeaza, continutul sau va fi postat in varianta originala. Nu voi scoate comentariile, acestea fiind de ajutor daca stiti ceva 'engleza tehnica'; daca nu stiti, sau nu intelegeti, oricum voi repeta (si adauga) explicatii in limba romana, pentru fiecare instructiune sau bloc de instructiuni.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatie: Am pornit de la bun inceput de la premiza ca aveti ceva cunostinte legate de interpretorul de comenzi BASH si despre mediul GNU/Linux (comenzi elementare, machetarea fisierelor s.a.m.d.), intr-atat incat sa intelegeti o buna parte din toate cele ce-ar urma, chiar daca doar semantic. Daca nu aveti experienta cu cele mai sus enumerate, puteti profita de rigurozitatea cu care se va incerca explicarea scripturilor si, impreuna cu tutorialele/indrumarele specificate la finalul ghidului, sa analizati mecanismele acestea folosite in viata reala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/rc.d/rc.S&lt;br /&gt;
     1  #!/bin/sh&lt;br /&gt;
     2  #&lt;br /&gt;
     3  # /etc/rc.d/rc.S:  System initialization script.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Mostly written by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
     6  #&lt;br /&gt;
     7&lt;br /&gt;
     8  PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
     9&lt;br /&gt;
    10  # Mount /proc right away:&lt;br /&gt;
    11  /sbin/mount -v proc /proc -n -t proc&lt;br /&gt;
    12&lt;br /&gt;
    13  # If 'nohotplug' was given at boot, or rc.hotplug has been turned off&lt;br /&gt;
    14  # (and a 2.4.x kernel is running), then shut off hotplugging in the&lt;br /&gt;
    15  # kernel now.  Realize that if you turn off hotplugging support that&lt;br /&gt;
    16  # you will have to load all the kernel modules that you need yourself&lt;br /&gt;
    17  # (possibly in /etc/rc.d/rc.modules, which does not promise to list&lt;br /&gt;
    18  # all of them), and make any additional device nodes that you need in&lt;br /&gt;
    19  # the /dev directory.&lt;br /&gt;
    20  if [ -w /proc/sys/kernel/hotplug ]; then&lt;br /&gt;
    21    # Kernel command line option 'nohotplug' given, so we will shut off&lt;br /&gt;
    22    # hotplugging even if it is not a good idea.  Sometimes it *is* a&lt;br /&gt;
    23    # good idea, especially when you're trying to figure out which&lt;br /&gt;
    24    # kernel module is crashing the machine and needs to be added to&lt;br /&gt;
    25    # your /etc/modprobe.d/blacklist (2.6+ kernels) and/or your&lt;br /&gt;
    26    # /etc/hotplug/blacklist (2.4.x kernels).&lt;br /&gt;
    27    if grep -wq nohotplug /proc/cmdline ; then&lt;br /&gt;
    28      echo &amp;quot;/dev/null&amp;quot; &amp;gt; /proc/sys/kernel/hotplug&lt;br /&gt;
    29    elif [ ! -x /etc/rc.d/rc.hotplug ]; then&lt;br /&gt;
    30      # Ignore /etc/rc.d/rc.hotplug on kernels newer than 2.4.x:&lt;br /&gt;
    31      if [ ! &amp;quot;$(uname -r | cut -f 1,2 -d .)&amp;quot; = &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
    32        # We must be running a 2.4.x kernel, so turn off hotplug:&lt;br /&gt;
    33        echo &amp;quot;/dev/null&amp;quot; &amp;gt; /proc/sys/kernel/hotplug&lt;br /&gt;
    34      fi&lt;br /&gt;
    35    fi&lt;br /&gt;
    36  fi&lt;br /&gt;
    37&lt;br /&gt;
    38  # Start devfsd if necessary.  On newer kernels, udev should be used instead.&lt;br /&gt;
    39  if [ -x /etc/rc.d/rc.devfsd ]; then&lt;br /&gt;
    40    /etc/rc.d/rc.devfsd start&lt;br /&gt;
    41  fi&lt;br /&gt;
    42&lt;br /&gt;
    43  # Mount sysfs next, if the kernel supports it:&lt;br /&gt;
    44  if [ -d /sys ]; then&lt;br /&gt;
    45    if cat /proc/filesystems | grep -wq sysfs ; then&lt;br /&gt;
    46      if ! cat /proc/mounts | grep -wq sysfs ; then&lt;br /&gt;
    47        /sbin/mount -v sysfs /sys -n -t sysfs&lt;br /&gt;
    48      fi&lt;br /&gt;
    49    fi&lt;br /&gt;
    50  fi&lt;br /&gt;
    51&lt;br /&gt;
    52  # Enable swapping:&lt;br /&gt;
    53  /sbin/swapon -a&lt;br /&gt;
    54&lt;br /&gt;
    55  # Test to see if the root partition is read-only, like it ought to be.&lt;br /&gt;
    56  READWRITE=no&lt;br /&gt;
    57  if touch /fsrwtestfile 2&amp;gt;/dev/null; then&lt;br /&gt;
    58    rm -f /fsrwtestfile&lt;br /&gt;
    59    READWRITE=yes&lt;br /&gt;
    60  else&lt;br /&gt;
    61    echo &amp;quot;Testing root filesystem status:  read-only filesystem&amp;quot;&lt;br /&gt;
    62  fi&lt;br /&gt;
    63&lt;br /&gt;
    64  # See if a forced filesystem check was requested at shutdown:&lt;br /&gt;
    65  if [ -r /etc/forcefsck ]; then&lt;br /&gt;
    66    FORCEFSCK=&amp;quot;-f&amp;quot;&lt;br /&gt;
    67  fi&lt;br /&gt;
    68&lt;br /&gt;
    69  # Check the root filesystem:&lt;br /&gt;
    70  if [ ! $READWRITE = yes ]; then&lt;br /&gt;
    71    RETVAL=0&lt;br /&gt;
    72    if [ ! -r /etc/fastboot ]; then&lt;br /&gt;
    73      echo &amp;quot;Checking root filesystem:&amp;quot;&lt;br /&gt;
    74      /sbin/fsck $FORCEFSCK -C -a /&lt;br /&gt;
    75      RETVAL=$?&lt;br /&gt;
    76    fi&lt;br /&gt;
    77    # An error code of 2 or higher will require a reboot.&lt;br /&gt;
    78    if [ $RETVAL -ge 2 ]; then&lt;br /&gt;
    79      # An error code equal to or greater than 4 means that some errors&lt;br /&gt;
    80      # could not be corrected.  This requires manual attention, so we&lt;br /&gt;
    81      # offer a chance to try to fix the problem in single-user mode:&lt;br /&gt;
    82      if [ $RETVAL -ge 4 ]; then&lt;br /&gt;
    83        echo&lt;br /&gt;
    84        echo &amp;quot;***********************************************************&amp;quot;&lt;br /&gt;
    85        echo &amp;quot;*** An error occurred during the root filesystem check. ***&amp;quot;&lt;br /&gt;
    86        echo &amp;quot;*** You will now be given a chance to log into the      ***&amp;quot;&lt;br /&gt;
    87        echo &amp;quot;*** system in single-user mode to fix the problem.      ***&amp;quot;&lt;br /&gt;
    88        echo &amp;quot;***                                                     ***&amp;quot;&lt;br /&gt;
    89        echo &amp;quot;*** If you are using the ext2 filesystem, running       ***&amp;quot;&lt;br /&gt;
    90        echo &amp;quot;*** 'e2fsck -v -y &amp;lt;partition&amp;gt;' might help.              ***&amp;quot;&lt;br /&gt;
    91        echo &amp;quot;***********************************************************&amp;quot;&lt;br /&gt;
    92        echo&lt;br /&gt;
    93        echo &amp;quot;Once you exit the single-user shell, the system will reboot.&amp;quot;&lt;br /&gt;
    94        echo&lt;br /&gt;
    95        PS1=&amp;quot;(Repair filesystem) \#&amp;quot;; export PS1&lt;br /&gt;
    96        sulogin&lt;br /&gt;
    97      else # With an error code of 2 or 3, reboot the machine automatically:&lt;br /&gt;
    98        echo&lt;br /&gt;
    99        echo &amp;quot;***********************************&amp;quot;&lt;br /&gt;
   100        echo &amp;quot;*** The filesystem was changed. ***&amp;quot;&lt;br /&gt;
   101        echo &amp;quot;*** The system will now reboot. ***&amp;quot;&lt;br /&gt;
   102        echo &amp;quot;***********************************&amp;quot;&lt;br /&gt;
   103        echo&lt;br /&gt;
   104      fi&lt;br /&gt;
   105      echo &amp;quot;Unmounting file systems.&amp;quot;&lt;br /&gt;
   106      /sbin/umount -a -r&lt;br /&gt;
   107      /sbin/mount -n -o remount,ro /&lt;br /&gt;
   108      echo &amp;quot;Rebooting system.&amp;quot;&lt;br /&gt;
   109      sleep 2&lt;br /&gt;
   110      reboot -f&lt;br /&gt;
   111    fi&lt;br /&gt;
   112    # Remount the root filesystem in read-write mode&lt;br /&gt;
   113    echo &amp;quot;Remounting root device with read-write enabled.&amp;quot;&lt;br /&gt;
   114    /sbin/mount -w -v -n -o remount /&lt;br /&gt;
   115    if [ $? -gt 0 ] ; then&lt;br /&gt;
   116      echo&lt;br /&gt;
   117      echo &amp;quot;Attempt to remount root device as read-write failed!  This is going to&amp;quot;&lt;br /&gt;
   118      echo &amp;quot;cause serious problems.&amp;quot;&lt;br /&gt;
   119      echo&lt;br /&gt;
   120      echo &amp;quot;If you're using the UMSDOS filesystem, you **MUST** mount the root partition&amp;quot;&lt;br /&gt;
   121      echo &amp;quot;read-write!  You can make sure the root filesystem is getting mounted &amp;quot;&lt;br /&gt;
   122      echo &amp;quot;read-write with the 'rw' flag to Loadlin:&amp;quot;&lt;br /&gt;
   123      echo&lt;br /&gt;
   124      echo &amp;quot;loadlin vmlinuz root=/dev/hda1 rw   (replace /dev/hda1 with your root device)&amp;quot;&lt;br /&gt;
   125      echo&lt;br /&gt;
   126      echo &amp;quot;Normal bootdisks can be made to mount a system read-write with the rdev command:&amp;quot;&lt;br /&gt;
   127      echo&lt;br /&gt;
   128      echo &amp;quot;rdev -R /dev/fd0 0&amp;quot;&lt;br /&gt;
   129      echo&lt;br /&gt;
   130      echo &amp;quot;You can also get into your system by using a boot disk with a command like this&amp;quot;&lt;br /&gt;
   131      echo &amp;quot;on the LILO prompt line:  (change the root partition name as needed)&amp;quot;&lt;br /&gt;
   132      echo&lt;br /&gt;
   133      echo &amp;quot;LILO: mount root=/dev/hda1 rw&amp;quot;&lt;br /&gt;
   134      echo&lt;br /&gt;
   135      echo &amp;quot;Please press ENTER to continue, then reboot and use one of the above methods to&amp;quot;&lt;br /&gt;
   136      echo -n &amp;quot;get into your machine and start looking for the problem. &amp;quot;&lt;br /&gt;
   137      read junk;&lt;br /&gt;
   138    fi&lt;br /&gt;
   139  else&lt;br /&gt;
   140    echo &amp;quot;Testing root filesystem status:  read-write filesystem&amp;quot;&lt;br /&gt;
   141    if cat /etc/fstab | grep ' / ' | grep -wq umsdos ; then&lt;br /&gt;
   142      ROOTTYPE=&amp;quot;umsdos&amp;quot;&lt;br /&gt;
   143    fi&lt;br /&gt;
   144    if [ ! &amp;quot;$ROOTTYPE&amp;quot; = &amp;quot;umsdos&amp;quot; ]; then # no warn for UMSDOS&lt;br /&gt;
   145      echo&lt;br /&gt;
   146      echo &amp;quot;*** ERROR: Root partition has already been mounted read-write. Cannot check!&amp;quot;&lt;br /&gt;
   147      echo&lt;br /&gt;
   148      echo &amp;quot;For filesystem checking to work properly, your system must initially mount&amp;quot;&lt;br /&gt;
   149      echo &amp;quot;the root partition as read only. Please modify your kernel with 'rdev' so that&amp;quot;&lt;br /&gt;
   150      echo &amp;quot;it does this. If you're booting with LILO, add a line:&amp;quot;&lt;br /&gt;
   151      echo&lt;br /&gt;
   152      echo &amp;quot;   read-only&amp;quot;&lt;br /&gt;
   153      echo&lt;br /&gt;
   154      echo &amp;quot;to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it.&amp;quot;&lt;br /&gt;
   155      echo&lt;br /&gt;
   156      echo &amp;quot;If you boot from a kernel on a floppy disk, put it in the drive and type:&amp;quot;&lt;br /&gt;
   157      echo &amp;quot;   rdev -R /dev/fd0 1&amp;quot;&lt;br /&gt;
   158      echo&lt;br /&gt;
   159      echo &amp;quot;If you boot from a bootdisk, or with Loadlin, you can add the 'ro' flag.&amp;quot;&lt;br /&gt;
   160      echo&lt;br /&gt;
   161      echo &amp;quot;This will fix the problem *AND* eliminate this annoying message. :^)&amp;quot;&lt;br /&gt;
   162      echo&lt;br /&gt;
   163      echo -n &amp;quot;Press ENTER to continue. &amp;quot;&lt;br /&gt;
   164      read junk;&lt;br /&gt;
   165    fi&lt;br /&gt;
   166  fi # Done checking root filesystem&lt;br /&gt;
   167&lt;br /&gt;
   168  # Any /etc/mtab that exists here is old, so we delete it to start over:&lt;br /&gt;
   169  /bin/rm -f /etc/mtab*&lt;br /&gt;
   170  # Remounting the / partition will initialize the new /etc/mtab:&lt;br /&gt;
   171  /sbin/mount -w -o remount /&lt;br /&gt;
   172&lt;br /&gt;
   173  # Fix /etc/mtab to list sys and proc if they were not yet entered in&lt;br /&gt;
   174  # /etc/mtab because / was still mounted read-only:&lt;br /&gt;
   175  if [ -d /proc/sys ]; then&lt;br /&gt;
   176    /sbin/mount -f proc /proc -t proc&lt;br /&gt;
   177  fi&lt;br /&gt;
   178  if [ -d /sys/bus ]; then&lt;br /&gt;
   179    /sbin/mount -f sysfs /sys -t sysfs&lt;br /&gt;
   180  fi&lt;br /&gt;
   181&lt;br /&gt;
   182  # Initialize udev to manage /dev entries and hotplugging for 2.6.x kernels.&lt;br /&gt;
   183  # You may turn off udev by making the /etc/rc.d/rc.udev file non-executable,&lt;br /&gt;
   184  # but in the 2.6.x+ kernels udev has taken over the job of hotplug (finding&lt;br /&gt;
   185  # hardware and loading the kernel modules for it, as well as creating device&lt;br /&gt;
   186  # nodes in /dev).  Realize that if you turn off udev that you will have to&lt;br /&gt;
   187  # load all the kernel modules that you need yourself (possibly in&lt;br /&gt;
   188  # /etc/rc.d/rc.modules, which does not promise to list all of them), and&lt;br /&gt;
   189  # make any additional device nodes that you need in the /dev directory.&lt;br /&gt;
   190  # Even USB and IEEE1394 devices will need to have the modules loaded by&lt;br /&gt;
   191  # hand if udev is not used with a 2.6 kernel.  So use it.  :-)&lt;br /&gt;
   192  if cat /proc/mounts | grep -wq sysfs &amp;amp;&amp;amp; cat /proc/filesystems | grep -wq tmpfs ; then&lt;br /&gt;
   193    if ! grep -wq nohotplug /proc/cmdline ; then&lt;br /&gt;
   194      if [ -x /etc/rc.d/rc.udev ]; then&lt;br /&gt;
   195        /bin/sh /etc/rc.d/rc.udev start&lt;br /&gt;
   196        /bin/sh /lib/udev/udev.count_events.sh&lt;br /&gt;
   197      fi&lt;br /&gt;
   198    fi&lt;br /&gt;
   199  fi&lt;br /&gt;
   200&lt;br /&gt;
   201  # Set the system time from the hardware clock using hwclock --hctosys.&lt;br /&gt;
   202  if [ -x /sbin/hwclock ]; then&lt;br /&gt;
   203    # Check for a broken motherboard RTC clock (where ioports for rtc are&lt;br /&gt;
   204    # unknown) to prevent hwclock causing a hang:&lt;br /&gt;
   205    if ! grep -q -w rtc /proc/ioports ; then&lt;br /&gt;
   206      CLOCK_OPT=&amp;quot;--directisa&amp;quot;&lt;br /&gt;
   207    fi&lt;br /&gt;
   208    if grep -wq &amp;quot;^UTC&amp;quot; /etc/hardwareclock ; then&lt;br /&gt;
   209      echo &amp;quot;Setting system time from the hardware clock (UTC).&amp;quot;&lt;br /&gt;
   210      /sbin/hwclock $CLOCK_OPT --utc --hctosys&lt;br /&gt;
   211    else&lt;br /&gt;
   212      echo &amp;quot;Setting system time from the hardware clock (localtime).&amp;quot;&lt;br /&gt;
   213      /sbin/hwclock $CLOCK_OPT --localtime --hctosys&lt;br /&gt;
   214    fi&lt;br /&gt;
   215  fi&lt;br /&gt;
   216&lt;br /&gt;
   217  # Configure ISA Plug-and-Play devices:&lt;br /&gt;
   218  if [ -r /etc/isapnp.conf ]; then&lt;br /&gt;
   219    if [ -x /sbin/isapnp ]; then&lt;br /&gt;
   220      /sbin/isapnp /etc/isapnp.conf&lt;br /&gt;
   221    fi&lt;br /&gt;
   222  fi&lt;br /&gt;
   223&lt;br /&gt;
   224  # This loads any kernel modules that are needed.  These might be required to&lt;br /&gt;
   225  # use your ethernet card, sound card, or other optional hardware.&lt;br /&gt;
   226  # Priority is given first to a script named &amp;quot;rc.modules.local&amp;quot;, then&lt;br /&gt;
   227  # to &amp;quot;rc.modules-$FULL_KERNEL_VERSION&amp;quot;, and finally to the plain &amp;quot;rc.modules&amp;quot;.&lt;br /&gt;
   228  # Note that if /etc/rc.d/rc.modules.local is found, then that will be the ONLY&lt;br /&gt;
   229  # rc.modules script the machine will run, so make sure it has everything in&lt;br /&gt;
   230  # it that you need.&lt;br /&gt;
   231  if [ -x /etc/rc.d/rc.modules.local -a -r /proc/modules ]; then&lt;br /&gt;
   232    echo &amp;quot;Running /etc/rc.d/rc.modules.local:&amp;quot;&lt;br /&gt;
   233    /bin/sh /etc/rc.d/rc.modules.local&lt;br /&gt;
   234  elif [ -x /etc/rc.d/rc.modules-$(uname -r) -a -r /proc/modules ]; then&lt;br /&gt;
   235    echo &amp;quot;Running /etc/rc.d/rc.modules-$(uname -r):&amp;quot;&lt;br /&gt;
   236    . /etc/rc.d/rc.modules-$(uname -r)&lt;br /&gt;
   237  elif [ -x /etc/rc.d/rc.modules -a -r /proc/modules -a -L /etc/rc.d/rc.modules ]; then&lt;br /&gt;
   238    echo &amp;quot;Running /etc/rc.d/rc.modules -&amp;gt; $(readlink /etc/rc.d/rc.modules):&amp;quot;&lt;br /&gt;
   239    . /etc/rc.d/rc.modules&lt;br /&gt;
   240  elif [ -x /etc/rc.d/rc.modules -a -r /proc/modules ]; then&lt;br /&gt;
   241    echo &amp;quot;Running /etc/rc.d/rc.modules:&amp;quot;&lt;br /&gt;
   242    . /etc/rc.d/rc.modules&lt;br /&gt;
   243  fi&lt;br /&gt;
   244&lt;br /&gt;
   245  # Configure runtime kernel parameters:&lt;br /&gt;
   246  if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then&lt;br /&gt;
   247    /sbin/sysctl -e -p /etc/sysctl.conf&lt;br /&gt;
   248  fi&lt;br /&gt;
   249&lt;br /&gt;
   250  # Initialize the Logical Volume Manager.&lt;br /&gt;
   251  # This won't start unless we find /etc/lvmtab (LVM1) or&lt;br /&gt;
   252  # /etc/lvm/backup/ (LVM2).  This is created by /sbin/vgscan, so to&lt;br /&gt;
   253  # use LVM you must run /sbin/vgscan yourself the first time (and&lt;br /&gt;
   254  # create some VGs and LVs).&lt;br /&gt;
   255  if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then&lt;br /&gt;
   256    echo &amp;quot;Initializing LVM (Logical Volume Manager):&amp;quot;&lt;br /&gt;
   257    # Check for device-mapper support.&lt;br /&gt;
   258    if ! cat /proc/devices | grep -wq device-mapper ; then&lt;br /&gt;
   259      # If device-mapper exists as a module, try to load it.&lt;br /&gt;
   260      if [ -r /lib/modules/$(/bin/uname -r)/kernel/drivers/md/dm-mod.ko ]; then&lt;br /&gt;
   261        insmod /lib/modules/$(/bin/uname -r)/kernel/drivers/md/dm-mod.ko&lt;br /&gt;
   262      fi&lt;br /&gt;
   263    fi&lt;br /&gt;
   264    # Scan for new volume groups:&lt;br /&gt;
   265    KERNEL_VERSION=$(/bin/uname -r | /bin/cut -d . -f 1,2)&lt;br /&gt;
   266    if [ &amp;quot;$KERNEL_VERSION&amp;quot; == &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
   267      /sbin/vgscan 2&amp;gt; /dev/null&lt;br /&gt;
   268    else&lt;br /&gt;
   269      /sbin/vgscan --ignorelockingfailure 2&amp;gt; /dev/null&lt;br /&gt;
   270    fi&lt;br /&gt;
   271    if [ $? = 0 ]; then&lt;br /&gt;
   272      # Make volume groups available to the kernel.&lt;br /&gt;
   273      # This should also make logical volumes available.&lt;br /&gt;
   274      if [ &amp;quot;$KERNEL_VERSION&amp;quot; == &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
   275        /sbin/vgchange -ay&lt;br /&gt;
   276      else&lt;br /&gt;
   277        /sbin/vgchange -ay --ignorelockingfailure&lt;br /&gt;
   278      fi&lt;br /&gt;
   279      # Enable swapping again in case any LVs are used for swap.  Ignore previous error.  :-)&lt;br /&gt;
   280      /sbin/swapon -a&lt;br /&gt;
   281    fi&lt;br /&gt;
   282  fi&lt;br /&gt;
   283&lt;br /&gt;
   284  # Check all the non-root filesystems:&lt;br /&gt;
   285  if [ ! -r /etc/fastboot ]; then&lt;br /&gt;
   286    echo &amp;quot;Checking non-root filesystems:&amp;quot;&lt;br /&gt;
   287    /sbin/fsck $FORCEFSCK -C -R -A -a&lt;br /&gt;
   288  fi&lt;br /&gt;
   289&lt;br /&gt;
   290  # Mount usbfs if we're not using hotplug:&lt;br /&gt;
   291  if grep -wq usbfs /proc/filesystems; then&lt;br /&gt;
   292    if /bin/grep -wq nohotplug /proc/cmdline || /bin/test ! -x /etc/rc.d/rc.hotplug ; then&lt;br /&gt;
   293      if ! cat /proc/mounts | grep -wq usbfs ; then&lt;br /&gt;
   294        /sbin/mount -v usbfs /proc/bus/usb -t usbfs&lt;br /&gt;
   295      fi&lt;br /&gt;
   296    fi&lt;br /&gt;
   297  fi&lt;br /&gt;
   298&lt;br /&gt;
   299  # Mount non-root file systems in fstab, but not NFS or SMB&lt;br /&gt;
   300  # because TCP/IP is not yet configured, and not proc or sysfs&lt;br /&gt;
   301  # because those have already been mounted.  Also check that&lt;br /&gt;
   302  # devpts is not already mounted before attempting to mount&lt;br /&gt;
   303  # it.  With 2.4.x kernels devpts is mounted from an fstab&lt;br /&gt;
   304  # entry while with a 2.6.x or newer kernel udev mounts it.&lt;br /&gt;
   305  # We also need to wait a little bit to let USB and other&lt;br /&gt;
   306  # hotplugged devices settle (sorry to slow down the boot):&lt;br /&gt;
   307  echo &amp;quot;Mounting non-root local filesystems:&amp;quot;&lt;br /&gt;
   308  sleep 3&lt;br /&gt;
   309  if /bin/grep -wq devpts /proc/mounts ; then&lt;br /&gt;
   310    /sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs,nodevpts&lt;br /&gt;
   311  else&lt;br /&gt;
   312    /sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs&lt;br /&gt;
   313  fi&lt;br /&gt;
   314&lt;br /&gt;
   315  # Enable swapping again.  This is needed in case a swapfile is used,&lt;br /&gt;
   316  # as it can't be enabled until the filesystem it resides on has been&lt;br /&gt;
   317  # mounted read-write.&lt;br /&gt;
   318  /sbin/swapon -a&lt;br /&gt;
   319&lt;br /&gt;
   320  # Clean up some temporary files:&lt;br /&gt;
   321  ( cd /var/log/setup/tmp &amp;amp;&amp;amp; rm -rf * )&lt;br /&gt;
   322  /bin/rm -f /var/run/utmp /var/run/*pid /etc/nologin /var/run/lpd* \&lt;br /&gt;
   323    /var/run/ppp* /etc/dhcpc/*.pid /etc/forcefsck /etc/fastboot \&lt;br /&gt;
   324    /var/state/saslauthd/saslauthd.pid&lt;br /&gt;
   325&lt;br /&gt;
   326  # Create /tmp/{.ICE-unix,.X11-unix} if they are not present:&lt;br /&gt;
   327  if [ ! -e /tmp/.ICE-unix ]; then&lt;br /&gt;
   328    mkdir -p /tmp/.ICE-unix&lt;br /&gt;
   329    chmod 1777 /tmp/.ICE-unix&lt;br /&gt;
   330  fi&lt;br /&gt;
   331  if [ ! -e /tmp/.X11-unix ]; then&lt;br /&gt;
   332    mkdir -p /tmp/.X11-unix&lt;br /&gt;
   333    chmod 1777 /tmp/.X11-unix&lt;br /&gt;
   334  fi&lt;br /&gt;
   335&lt;br /&gt;
   336  # Attempt to umount and remove any leftover /initrd:&lt;br /&gt;
   337  if [ -d /initrd ]; then&lt;br /&gt;
   338    umount /initrd/proc 2&amp;gt; /dev/null&lt;br /&gt;
   339    /sbin/umount /initrd 2&amp;gt; /dev/null&lt;br /&gt;
   340    rmdir /initrd 2&amp;gt; /dev/null&lt;br /&gt;
   341    blockdev --flushbufs /dev/ram0 2&amp;gt; /dev/null&lt;br /&gt;
   342  fi&lt;br /&gt;
   343&lt;br /&gt;
   344  # Create a fresh utmp file:&lt;br /&gt;
   345  touch /var/run/utmp&lt;br /&gt;
   346  chown root:utmp /var/run/utmp&lt;br /&gt;
   347  chmod 664 /var/run/utmp&lt;br /&gt;
   348&lt;br /&gt;
   349  if [ &amp;quot;$ROOTTYPE&amp;quot; = &amp;quot;umsdos&amp;quot; ]; then # we need to update any files added in DOS:&lt;br /&gt;
   350    echo &amp;quot;Synchronizing UMSDOS directory structure:&amp;quot;&lt;br /&gt;
   351    echo &amp;quot;  /sbin/umssync -r99 -v- /&amp;quot;&lt;br /&gt;
   352    /sbin/umssync -r99 -v- /&lt;br /&gt;
   353  fi&lt;br /&gt;
   354&lt;br /&gt;
   355  # Setup the /etc/motd to reflect the current kernel level:&lt;br /&gt;
   356  # THIS WIPES ANY CHANGES YOU MAKE TO /ETC/MOTD WITH EACH BOOT.&lt;br /&gt;
   357  # COMMENT THIS OUT IF YOU WANT TO MAKE A CUSTOM VERSION.&lt;br /&gt;
   358  echo &amp;quot;$(/bin/uname -sr).&amp;quot; &amp;gt; /etc/motd&lt;br /&gt;
   359&lt;br /&gt;
   360  # If there are SystemV init scripts for this runlevel, run them.&lt;br /&gt;
   361  if [ -x /etc/rc.d/rc.sysvinit ]; then&lt;br /&gt;
   362    . /etc/rc.d/rc.sysvinit&lt;br /&gt;
   363  fi&lt;br /&gt;
   364&lt;br /&gt;
   365  # Run serial port setup script:&lt;br /&gt;
   366  # CAREFUL!  This can make some systems hang if the rc.serial script isn't&lt;br /&gt;
   367  # set up correctly.  If this happens, you may have to edit the file from a&lt;br /&gt;
   368  # boot disk, and/or set it as non-executable:&lt;br /&gt;
   369  if [ -x /etc/rc.d/rc.serial ]; then&lt;br /&gt;
   370    sh /etc/rc.d/rc.serial start&lt;br /&gt;
   371  fi&lt;br /&gt;
   372&lt;br /&gt;
   373  # Carry an entropy pool between reboots to improve randomness.&lt;br /&gt;
   374  if [ -f /etc/random-seed ]; then&lt;br /&gt;
   375    echo &amp;quot;Using /etc/random-seed to initialize /dev/urandom.&amp;quot;&lt;br /&gt;
   376    cat /etc/random-seed &amp;gt; /dev/urandom&lt;br /&gt;
   377  fi&lt;br /&gt;
   378  # Use the pool size from /proc, or 512 bytes:&lt;br /&gt;
   379  if [ -r /proc/sys/kernel/random/poolsize ]; then&lt;br /&gt;
   380    dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2&amp;gt; /dev/null&lt;br /&gt;
   381  else&lt;br /&gt;
   382    dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2&amp;gt; /dev/null&lt;br /&gt;
   383  fi&lt;br /&gt;
   384  chmod 600 /etc/random-seed&lt;br /&gt;
   385&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Preferabil sa deschideti de doua ori pagina, ca sa va fie mai comoda orientarea.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;linie/i&amp;gt;: &amp;lt;explicatie&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;8: Este setata variabila de mediu PATH. PATH are urmatoarea forma: director:director:director[:director...] si urmatoarea calitate: Ii spune interpretorului in ce directoare sa se uite pentru fisierele executabile care nu au calea absoluta specificata.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;11: Este montat sistemul de fisiere virtual procfs. Folosindu-ne acest sistem de fisiere, vom putea afla informatii ce reflecta starea curenta a nucleului. Vom vedea imediat despre ce este vorba.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;20-36: Se verifica daca fisierul /proc/sys/kernel/hotplug exista si poate fi modificat ( [ -w ] ). Existenta acestui fisier inseamna ca nucleul are suport pentru subsistemul hotplug(traducere?), un sistem de configurare dinamica a componentelor hard. Vom intra in detalii mai tarziu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa aceasta, in cazul in care nucleul are suport pentru hotplug, se verifica daca nucleului i-a fost trimis parametrul de executie &amp;quot;nohotplug&amp;quot;. Aceasta verificare are loc prin inspectarea continutului fisierului /proc/cmdline, fisier ce contine toti parametrii trimisi nucleului de catre programul de incarcare. In cazul in care nucleului i-a fost trimis parametrul de executie &amp;quot;nohotplug&amp;quot;, atunci continutul fisierului /proc/sys/kernel/hotplug este schimbat in &amp;quot;/dev/null&amp;quot;. Continutul fisierului /proc/sys/kernel/hotplug reprezinta calea catre programul care va fi instintat de catre nucleu, cand va avea loc un eveniment(in cazul acesta, cand o componenta hard va fi cuplata). Prin schimbarea continutului fisierului /proc/sys/kernel/hotplug in &amp;quot;/dev/null&amp;quot;, sistemul hotplug este dezactivat, deoarece orice instintare a nucleului cu privire la evenimente hotplug va fi iignorata.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca nucleului n-a fost pornit cu parametrul de executie &amp;quot;nohotplug&amp;quot;, se va verifica daca scriptul /etc/rc.d/rc.hotplug este neexecutabil [ ! -x ], caz in care se verifica daca nucleul NU face parte din bransa 2.4.x, caz in care se dezactiveaza sistemul hotplug, schimbandu-se continutul fisierului /proc/sys/kernel/hotplug in &amp;quot;/dev/null&amp;quot;. Scriptul /etc/rc.d/rc.hotplug porneste sistemul hotplug, asa ca mai devreme a fost verificat pentru a vedea daca este activat de catre administrator. Daca acesta este activat, adica este executabil, va fi rulat de catre nivelele de rulare care vor avea suport pentru hotplug. Vom analiza scriptul /etc/rc.d/rc.hotplug atunci cand ne vom intalni cu executarea acestuia.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;39-41: Se verifica daca scriptul /etc/rc.d/rc.devfsd este prezent si executabil, caz in care scriptul este executat. Scriptul porneste si configureaza, prin intermediul lui defvsd, fisierele /dev. Aceste intrari probabil ca inca mai exista in /etc/rc.S din motive istorice, caci devfs a fost scos din Slackware inca de la versiunea 10.0. Daca doriti sa scadeti cu cateva milisecunde din timpul de initializare, puteti sa stergeti intrarile.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;44-50: Se verifica daca exista directorul /sys [ -d ], caz in care se verifica daca nucleul suporta sistemul de fisiere virtual sysfs. Aceasta verificare se face prin inspectarea fisierului /proc/filesystems, care contine o lista cu sistemele de fisere suportate de nucleu. Daca exista, atunci este verificat fisierul /proc/mounts, pentru a vedea daca sistemul de fisiere sysfs nu este deja montat. /proc/mounts contine o lista cu sistemele de fisiere deja montate. Daca sysfs nu este deja montat, este montat.(...)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Sysfs este un sistem virtual de fisiere, ca si procfs, care ofera informatii despre driverele nucleului. Nucleul din bransa 2.4.x nu are suport pentru acest sistem de fisiere virtual, asa ca daca nu o sa treceti pe 2.6.x, puteti sa stergeti aceste intrari, de doriti cateva milisecunde scazute din timpul de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;56-62: Variabila READWRITE este initializata cu valoarea &amp;quot;no&amp;quot;, ce reflecta starea in care ar trebui sa fie in mod normal montat sistemul de fisiere radacina de catre nucleu, adica cu optiunea de numai-citire. Prin incercarea crearii unui fisier pe sistemul de fisiere radacina, se verifica daca se poate scrie pe acesta, caz in care fisierul test este sters, iar valoarea variabilei READWRITE este schimbata in &amp;quot;yes&amp;quot;, cat sa reflecte adevarata stare a sistemului de fisiere radacina.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;65-67: Se verifica daca exista fisierul citabil /etc/forcefsck, caz in care este initializata variabila FORCEFSK cu valoarea &amp;quot;-f&amp;quot;. Aceasta variabila va fi folosita ca parametru optional pentru comanda fsck.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;70-166: Se verifica daca sistemul de fisiere radacina nu este montat cu optiunea numai-citire, caz in care au loc urmatorii pasi:&lt;br /&gt;
&lt;br /&gt;
* Variabila RETVAL este initializata cu valoarea 0.&lt;br /&gt;
&lt;br /&gt;
* Se verifica daca nu exista fisierul citabil /etc/fastboot, caz in care se verifica integritatea sistemului de fisiere radacina prin intermediul comenzii fsck.&lt;br /&gt;
&lt;br /&gt;
* RETVAL isi schimba continutul in valoarea returnata de catre comanda fsck.&lt;br /&gt;
&lt;br /&gt;
* Se verifica daca valoarea lui RETVAL este mai mare sau egala cu 2, caz in care sa verifica daca valoarea lui RETVAL este mai mare sau egala cu 4, caz in care sintem avertizati de anumite erori ce-au avut loc pe parcursul inspectarii lui fsck si sintem aruncati in modul utilizator-unic, pentru a depana problemele aparute. Altfel, daca valoarea lui RETVAL este intre 2 si 4, sint demontate sistemele de fisiere, iar calculatorul este repornit. &lt;br /&gt;
&lt;br /&gt;
* Daca valoarea lui RETVAL este 0 sau 1, atunci se incearca remontarea sistemului de fisiere radacina cu optiunea de citire-scriere, prin intermediul comenzii mount.&lt;br /&gt;
&lt;br /&gt;
* Valoarea returnata de catre comanda mount este verificata daca este mai mare decat 0, caz in care sintem intampinati cu niste erori si indemnati sa repornim calculatorul, folosindu-ne de sfaturile din avertizari. In schimb, daca valoarea returnata de mount este 0 [...]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;169-171: Este sters fisierul /etc/mtab, iar sistemul de fisiere radacina si sistemele virtuale de fisiere procfs si sysfs sint remontate. Acesti pasi sint facuti pentru ca fisierul /etc/mtab este vechi, de la ultima initializare a sistemului, si trebuie refacut. Fisierul /etc/mtab contine o lista cu sistemele de fisiere montate montate in acest moment.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;192-199: Se incearca pornirea lui udev, care este un inlocuitor al lui hotplug, pentru nucleele din bransa 2.6.x. Intai se verifica daca este montat sistemul virtual de fisiere sysfs si daca nucleul suporta sistemul virtual de fisiere tmpfs, caz in care se verifica daca nucleul n-a fost pornit cu parametrul de executie &amp;quot;nohotplug&amp;quot;, caz in care se verifica daca scriptul /etc/rc.d/rc.udev exista si este executabil, caz in care acest script este executat impreuna cu /lib/udev/udev.count_events.sh.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;202-215: Este setata ora sistemului, folosindu-se de comanda hwclock cu parametrul sau de executie --hctosys. Intai se verifica daca exista executabilul /sbin/hwclock. Daca exista, se verifica intrarile din /proc/ioports (fisier ce contina o lista cu conectorii de intrare-iesire activi) pentru rtc ( real time clock — ceas in timp real, un ceas care continua sa functioneze chiar si atunci cand calculatorul este oprit ). Daca se gaseste o asemenea intrare, variabila CLOCK_OPT este initializata cu valoarea &amp;quot;--directisa&amp;quot;. Se verifica daca fisierul /etc/hardwareclock contine o intrare care incepe cu sirul de caractere &amp;quot;UTC&amp;quot;, caz in care se executa comanta /hwclock, insotita de parametrii $CLOCK_OPT, --utc si --hctosys, altfel se executa aceeasi comanda, dar in loc de --utc se foloseste --localtime.[erm, detaliere..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;218-22: Se verifica daca fisierul /etc/isapnp.conf si este modificabil, caz in se verifica existenta fisierului executabil /sbin/isapnp, caz in care comanda /sbin/isapnp este rulata cu parametrul de executie /etc/isapnp.conf. Programul isapnp face parte din suita de utilitare isapnptools, care se ocupa cu configurarea dispozitivelor ISA autoconfigurabile(engl. ISA Plug and Play devices). Daca n-aveti asemenea dispozitive, puteti sa stergeti intrarile, de doriti cateva milisecunde in plus la initializare. Chiar mai mult, de la nucleele din bransa 2.4. Ba mai mult, daca folositi nuclee din bransa 2.6, ati putea sterge aceste intrari chiar daca aveti dispozitive ISA autoconfigurabile, deoarece nucleul nu va mai fi nevoit sa comunice cu isapnp, driverele(?) dispozitivelor facandu-si suficient de bine treaba.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;231-243: Se va verifica existenta unor scripturi executabile prin intermediul carora vor fi incarcate anumite module ale nucleului. Pasii sint urmatorii: Se verifica existenta scriptului executabil /etc/rc.d/rc.modules.local, cat si existenta fisierului modificabil /proc/modules (care contine o lista cu modulele incarcate in acest moment), iar daca acestea exista, se scrie pe ecran ca scriptul va fi executat, dupa care acesta este executat. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca acestea nu exista, se verifica existenta fisierului executabil /etc/rc.d/rc.modules-(versiune nucleu), cat si existenta fisierului modificabil /proc/modules, iar daca acestea exista, se scrie pe ecran ca scriptul va fi executat, dupa care acesta este executat. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca nici de data aceasta scriptul sau /proc/modules nu este gasit, se verifica existenta scriptului executabil /etc/rc.d, existenta fisierului modificabil /proc/modules, cat si daca scriptul /etc/rc.d este un link(?) simbolic [ -L ], caz in care se scrie pe ecran ca scriptul va fi executat (se afiseaza si catre ce indica linkul simbolic, prin intermediul comenzii readlink), iar scriptul este executat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca nici acum nu s-au validat conditiile, atunci se repeta ultimii pasi, mai putin cu verificarea scriptului pentru calitatea de link simbolic.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa atatea 'daca'-uri, se trage concluzia ca la prima validare a unui script, acesta este executat, restul intrarilor fiind ignorate. Asa ca este indicat sa ne asiguram ca specificam intr-un singur script toate modulele ce ar trebui incarcate, iar daca tot facem acest lucru, putem sa stergem restul intrarilor, daca dorim cateva de milisecunde scazute din perioada deinitializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;246-248: Se verifica existenta fisierului executabil /sbin/sysctl si a fisierului modificabil, iar daca acestea exista, este rulata comanda /sbin/sysctl. Prin intermediul lui /sbin/sysctl, putem sa setam anumiti parametrii ai nucleului in timp ce acesta ruleaza. Daca nu avem de gand sa-i trimitem niste parametrii de rulare nucleului pe parcursul procesului de initializare, putem sa stergem aceste intrari, daca dorim cateva milisecunde scazute din perioada de initializare.&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;255-282: Aceste intrari pornesc si configureaza LVM. LVM este unul din visurile devenite realitate ale administratorului de sistem sau al utilizatorului care s-a saturat sa gandeasca un sistem optim de partitionare a dispozitivelor de stocare! Este un serviciu foarte folositor, pus la dispozitie de nucleu, prin intermediul caruia partitiile fizice sint combinate in 'partitii virtuale'(care sint denumite volume logice in nomenclatura LVM'ului), in asa fel  se pot realiza anumite operatii cu partiile care altfel ar fi imposibil fara stergerea unitatii de stocare si repartitionarea sa. De exemplu, in cazul in care s-a umplut o partitie, aceasta poate fi marita prin 'imprumutarea' spatiului de pe alta partitie; sau daca se adauga un o noua unitate de disk, spatiul acesteia poate fi alocat unei partitii sau unui grup de partitii deja existenta pe discul actual. Revenind, sa urmarim cum are loc initializarea LVM'ului:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Intai se verifica daca exista fisierul modificabil /etc/lvm1(folosit de versiuna 1 a LVM) sau directorul /etc/lvm/backup(folosit de versiunea 2 a LVM). Faptul ca aceste fisiere nu exista acum nu inseamna neaparat ca nu avem suport pentru LVM, ci doar ca n-au fost create. Ele trebuiesc create manual, iar pentru acest lucru este folosita comanda vgscan(8). Spun &amp;quot;ele&amp;quot;, dar de fapt nu se creaza decat 1 singur fisier/director, in functie de versiunea LVM. Bun, in caz de au fost create, se continua procesul.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ni se specifica faptul ca LVM va fi pornit. Se verifica daca fisierul /proc/devices NU contine o intrare &amp;quot;device-mapper&amp;quot;, caz in care se verifica existenta modului &amp;quot;dm-mod.ko&amp;quot;, iar, daca acesta exista, este incarcat. Fisierul /proc/devices contine o lista cu driverele(?) dispozitivelor care sint momentan incarcate in nucleu. &amp;quot;device-mapper&amp;quot; este o componenta noua a nucleelor din bransa 2.6.x, dar poate fi folosit si cu nuclee din bransa 2.4.x, daca acestea sint corectate(engl. patched), asa ca intrarea poate fi stearsa, daca nu se va folosi un nucleu ce suporta aceasta facilitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa ce este incarcat modului &amp;quot;dm-mod.ko&amp;quot;, variabila KERNEL_VERSION este initializata cu valoarea primelor 2 numere din versiunea actuala a nucleului. Se verifica daca valoarea variabilei KERNEL_VERSION este egala cu &amp;quot;2.4&amp;quot;, caz in care se executa comanda /sbin/vgscan, iar erorile acestei comenzi sint redirectionate catre /dev/null (2&amp;gt;). Daca valoarea variabilei KERNEL_VERSION nu este &amp;quot;2.4&amp;quot;, atunci se executa comanta /sbin/vgscan --ignorelockingfailure, iar erorile acestei comenzi sint redirectionate catre /dev/null.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Se verifica daca valoarea returnata de catre comanda vgscan este egala cu zero (0 este returnat in caz ca totul s-a efectuat cu succes), caz in care se verifica inca o data daca versiunea nucleului este din bransa 2.4, caz in care se executa comanda /sbin/vgchange -ay. Daca nucleul nu face parte din bransa 2.4, se executa comanda /sbin/vgchange -ay --ignorelockingfailure. Comanda /sbin/vgchange -ay activeaza toate grupele volum din sistem. De mentionat ca, daca se verifica paginile manual cat si codul sursa al programelor carora le este trimis parametrul --ignorelockingfailure, se va observa ca acestea n-au suport pentru o optiune cu acest nume, asa ca folosirea lui este redundanta, ceea ce inseamna ca se pot scoate verificarile versiunii nucleului care conditioneaza folosirea acestor comenzi. Desigur, daca nu configuram nucleul cu suport pentru LVM, putem sa scoatem toate aceste intrari, daca dorim cateva milisecunde scazute din timpul de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[...]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Slackware_11.0_-_Instalare_%C3%85%C5%B8i_configurare&amp;diff=3248</id>
		<title>Talk:Slackware 11.0 - Instalare ÅŸi configurare</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Slackware_11.0_-_Instalare_%C3%85%C5%B8i_configurare&amp;diff=3248"/>
				<updated>2006-12-01T11:26:11Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Gabel|gabel]] pentru [[User:Vladg|Vladg]]:&lt;br /&gt;
Te rog să nu mai faci reclamă în articolele mele. Voi şterge secţiunea cu configurarea modemului din următoarele motive:&lt;br /&gt;
1. Configurarea modem-ului nu face subiectul articolului. Îţi recomand să-ţi foloseşti propriul articol.&lt;br /&gt;
2. Nu e complet: pentru configurarea modem-ului este nevoie de mult mai mult, inclusiv de drivere, modificarea /etc/rc.modules-2.6.17.13,etc&lt;br /&gt;
3. Reclamă: &amp;quot;pppoe-setup, in caz de vă conectaţi prin PPPoE(această metodă este din ce in ce mai des adoptată de către internet service provideri, cel mai cunoscut dintre aceştia fiind RDS.)&amp;quot;&lt;br /&gt;
4. Greşeli de exprimare:&amp;quot;în caz de vă conectaţi&amp;quot;&lt;br /&gt;
5. Limbaj non-wiki:&amp;quot;probabil că aţi observat că&amp;quot;, &amp;quot;vă şi îndeamna să selectaţi opţiunea&amp;quot;, &amp;quot;Nu este nevoie de firewall&amp;quot;&lt;br /&gt;
6. Ai scris fără diacritice unele fraze.&lt;br /&gt;
&lt;br /&gt;
Am convenit amândoi că fiecare îşi va vedea de articolul lui, până la finalizarea acestora. Acum încerc să scriu cele două articole &amp;quot;în lucru&amp;quot; şi nu am timp să urmăresc modificările pe care le faci tu în articolul meu. În plus, nu ai anunţat modificarea [http://www.linux360.ro/forum/wiki-vt12132.html http://www.linux360.ro/forum/wiki-vt12132.html]&lt;br /&gt;
&lt;br /&gt;
[[User:Vladg|Vladg]] pentru [[User:Gabel|gabel]]:&lt;br /&gt;
Reclama? Caca-m-as pe ei de RDS, nu asta imi era intentia. &lt;br /&gt;
&lt;br /&gt;
In cazul asta: 1. voiam sa explic la ce este folosit (ai obs ca la PPP si SLIP am specificat DIAL-UP). ce, voiai sa explic cum este incapsulat frame-ul PPP in cel de ethernet?heh, parca e pt incepatori articolul. 2. te-ai mira cate lume habar n-are ca se conecteaza prin PPPoE la internet. RDS este ISP'ul cu cei mai multi utilizatori de genul (in continua crestere.), daca specificam RDS, probabil ca multi se sculau si chiar vedeau un rost. repet, pentru incepatori, nu? ma rog.&lt;br /&gt;
&lt;br /&gt;
Cat despre sters, decizia ta. Nu voiam decat sa ajut, caci din cate stiu eu, utilizatorul incepator care trece pe linux ar vrea sa aibe totusi net... si nu toti traiesc intr-o lume cu IP static, retele de cartier si de-alde de-astea.&lt;br /&gt;
&lt;br /&gt;
Da, nu prea folosesc diactritice, asa e, m-am chinuit aici ca sa fiu in ton cu stilul adoptat de tine. Ma rog, nu mai am ce corecta. Multumesc pentru lectia de gramatica, o sa tin cont.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Da, ma bucur ca ai observat pe net (sau la vreo recompilare de kernel) ca ai nevoie de niste cestiuni pt ppp. Bravo. In schimb, rusine sa-ti fie ca ma corectezi in cazul asta, deoarece Slack vine cu modulele necesare pt ppp by default, si programele pe care le-am enumerat eu le incarca .&lt;br /&gt;
&lt;br /&gt;
Bafta in continuare cu articolele. Surle si trambite.&lt;br /&gt;
&lt;br /&gt;
LE: Si da un pppoe-setup, ca sa te dumresti ce voiam sa zic cu &amp;quot;Nu este nevoie de firewall&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Slackware_11.0_-_Instalare_%C3%85%C5%B8i_configurare&amp;diff=3245</id>
		<title>Talk:Slackware 11.0 - Instalare ÅŸi configurare</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Slackware_11.0_-_Instalare_%C3%85%C5%B8i_configurare&amp;diff=3245"/>
				<updated>2006-12-01T11:19:47Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Vladg|Vladg]] pentru [[User:Gabel|gabel]]:&lt;br /&gt;
Reclama? Caca-m-as pe ei de RDS, nu asta imi era intentia. &lt;br /&gt;
&lt;br /&gt;
In cazul asta: 1. voiam sa explic la ce este folosit (ai obs ca la PPP si SLIP am specificat DIAL-UP). ce, voiai sa explic cum este incapsulat frame-ul PPP in cel de ethernet?heh, parca e pt incepatori articolul. 2. te-ai mira cate lume habar n-are ca se conecteaza prin PPPoE la internet. RDS este ISP'ul cu cei mai multi utilizatori de genul (in continua crestere.), daca specificam RDS, probabil ca multi se sculau si chiar vedeau un rost. repet, pentru incepatori, nu? ma rog.&lt;br /&gt;
&lt;br /&gt;
Cat despre sters, decizia ta. Nu voiam decat sa ajut, caci din cate stiu eu, utilizatorul incepator care trece pe linux ar vrea sa aibe totusi net... si nu toti traiesc intr-o lume cu IP static, retele de cartier si de-alde de-astea.&lt;br /&gt;
&lt;br /&gt;
Da, nu prea folosesc diactritice, asa e, m-am chinuit aici ca sa fiu in ton cu stilul adoptat de tine. Ma rog, nu mai am ce corecta. Multumesc pentru lectia de gramatica, o sa tin cont.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Da, ma bucur ca ai observat pe net (sau la vreo recompilare de kernel) ca ai nevoie de niste cestiuni pt ppp. Bravo. In schimb, rusine sa-ti fie ca ma corectezi in cazul asta, deoarece Slack vine cu modulele necesare pt ppp by default, si programele pe care le-am enumerat eu le incarca .&lt;br /&gt;
&lt;br /&gt;
Bafta in continuare cu articolele. Surle si trambite.&lt;br /&gt;
&lt;br /&gt;
[[User:Gabel|gabel]] pentru [[User:Vladg|Vladg]]:&lt;br /&gt;
Te rog să nu mai faci reclamă în articolele mele. Voi şterge secţiunea cu configurarea modemului din următoarele motive:&lt;br /&gt;
1. Configurarea modem-ului nu face subiectul articolului. Îţi recomand să-ţi foloseşti propriul articol.&lt;br /&gt;
2. Nu e complet: pentru configurarea modem-ului este nevoie de mult mai mult, inclusiv de drivere, modificarea /etc/rc.modules-2.6.17.13,etc&lt;br /&gt;
3. Reclamă: &amp;quot;pppoe-setup, in caz de vă conectaţi prin PPPoE(această metodă este din ce in ce mai des adoptată de către internet service provideri, cel mai cunoscut dintre aceştia fiind RDS.)&amp;quot;&lt;br /&gt;
4. Greşeli de exprimare:&amp;quot;în caz de vă conectaţi&amp;quot;&lt;br /&gt;
5. Limbaj non-wiki:&amp;quot;probabil că aţi observat că&amp;quot;, &amp;quot;vă şi îndeamna să selectaţi opţiunea&amp;quot;, &amp;quot;Nu este nevoie de firewall&amp;quot;&lt;br /&gt;
6. Ai scris fără diacritice unele fraze.&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Slackware_11.0_-_Instalare_%C3%85%C5%B8i_configurare&amp;diff=3240</id>
		<title>Slackware 11.0 - Instalare ÅŸi configurare</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Slackware_11.0_-_Instalare_%C3%85%C5%B8i_configurare&amp;diff=3240"/>
				<updated>2006-12-01T10:13:40Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: /* Configurarea interfeţei de reţea */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Motto:''' &amp;quot;I think I named it 'Slackware' because I didn't want people to take it all that seriously at first.&amp;quot; (''Patrick Volkerding, 1994'')&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Distribuţia Slackware Linux==&lt;br /&gt;
Slackware Linux este una dintre cele mai vechi distribuţii Linux şi a fost creată de Patrick J. Volkerding pe baza SLS Linux (Soft Landing Systems), distribuţie pe care acesta a modificat-o, i-a reparat o serie de bug-uri şi apoi a oferit-o celor care aveau probleme cu varianta originală SLS Linux. Văzând că munca sa are succes, pe 16 iulie 1993 Patrick Volkerding anunţa lansarea primei versiuni (v. 1.00) a noii distribuţii - Slackware Linux, disponibilă pe servere ftp.&lt;br /&gt;
&lt;br /&gt;
Caracteristicile principale ale distribuţiei sunt: simplitatea şi stabilitatea. Acestea, combinate cu flexibilitatea şi puterea specifice unei distribuţii Linux, au determinat ca Slackware Linux să devină o distribuţie complexă, rapidă şi sigură, ce poate fi folosită atât pe staţii desktop, cât şi pe servere. Există două ramuri ale distribuţiei: versiunea curentă (în dezvoltare pentru următoarea versiune) şi versiunea stabilă (ultima lansată, cu update-uri pentru rezolvarea problemelor de securitate).&lt;br /&gt;
&lt;br /&gt;
Distribuţia poate fi obţinută plecând de la informaţiile de pe [http://www.slackware.com site-ul oficial], în varianta pe 6 CD-uri sau 1 DVD, astfel:&lt;br /&gt;
*prin download, de pe servere mirrors sau folosind tehnologia BitTorrent;&lt;br /&gt;
*prin comandă, contra unei sume de bani.&lt;br /&gt;
&lt;br /&gt;
==Recomandări înainte de instalare==&lt;br /&gt;
===Variante pentru instalare===&lt;br /&gt;
*Pe un computer virtual creat cu o soluţie de virtualizare (dacă nu aţi mai instalat niciodată o distribuţie Linux);&lt;br /&gt;
*Pe un alt hardisk (dacă nu sunteţi sigur că aţi înteles corect procesul de partiţionare a harddisk-ului);&lt;br /&gt;
*Pe acelaşi harddisk, prin repartiţionarea acestuia (dacă sunteţi absolut sigur că ştiţi ceea ce faceţi):&lt;br /&gt;
**Repartiţionare distructivă (dacă alegeţi calea cea mai simplă)&lt;br /&gt;
***repartiţionarea întregului harddisk prin ştergerea partiţiilor existente şi crearea a minim 2 noi partiţii (una Linux şi una swap);&lt;br /&gt;
***ştergerea unei partiţii existente şi crearea în locul acesteia a celor 2 partiţii necesare distribuţiei Slackware Linux;&lt;br /&gt;
**Repartiţionare nedistructivă (dacă ştiţi că aveţi noroc)&lt;br /&gt;
***redimensionarea partiţiilor existente cu un program specializat şi crearea de spaţiu liber pe hardisk, spaţiu care ulterior va fi realocat pentru cele 2 partiţii (Linux şi swap).&lt;br /&gt;
&lt;br /&gt;
===Cum poate fi evitat un eşec===&lt;br /&gt;
*Salvaţi datele importante de pe calculatorul pe care veţi instala distribuţia;&lt;br /&gt;
*Rulaţi un Live CD/DVD pentru a afla cum detectează o distribuţie Linux componentele hardware din acel calculator;&lt;br /&gt;
*Notaţi denumirea exactă şi principalele caracteristici tehnice ale tuturor componentelor hardware din acel calculator;&lt;br /&gt;
*Notaţi adresele IP, Netmask, Gateway şi Name Server (DNS Server);&lt;br /&gt;
*Verificaţi cu utilitarul &amp;lt;tt&amp;gt;md5sum&amp;lt;/tt&amp;gt; imaginile *.iso ale distribuţiei înainte de inscripţionare şi urmăriţi să nu apară erori pe timpul inscripţionării;&lt;br /&gt;
*Citiţi (eventual, listaţi) următoarele documente: Slackware-HOWTO (de pe CD-ul 1) şi manualul Slackbook (de pe CD-ul 5);&lt;br /&gt;
*Notaţi fiecare opţiune sau comandă pe care aţi folosit-o pe timpul instalării, pentru a nu repeta eventualele greşelile făcute;&lt;br /&gt;
*Nu uitaţi că primul CD (DVD-ul) distribuţiei poate fi folosit şi ca &amp;quot;rescue CD/DVD&amp;quot; - bootaţi calculatorul de pe CD/DVD şi tastaţi:&lt;br /&gt;
&amp;lt;code&amp;gt;bare.i root=/dev/hda1 noinitrd ro&amp;lt;/code&amp;gt; unde &amp;quot;hda1&amp;quot; este partiţia pe care aţi instalat distribuţia Slackware Linux;&lt;br /&gt;
*Reţineţi că fişierele din /var/log conţin informaţii importante despre procesul de încărcare a kernelului, detectarea componentelor hardware, iniţializarea diferitelor servicii şi eventualele erori.&lt;br /&gt;
&lt;br /&gt;
==Instalarea distribuţiei==&lt;br /&gt;
[[Instalarea distribuţiei Slackware Linux|Procesul de instalare în imagini]]&lt;br /&gt;
&lt;br /&gt;
==Configurarea sistemului de operare==&lt;br /&gt;
Dacă doriţi reconfigurarea sistemului, majoritatea utilitarelor folosite în etapa &amp;quot;Configure&amp;quot; a procesului de instalare pot fi rulate separat: &amp;lt;tt&amp;gt;netconfig&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;mouseconfig&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;timeconfig&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;liloconfig&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xwmconfig&amp;lt;/tt&amp;gt;. Dar, ar fi indicat să începeţi cu ceva simplu: citiţi documentaţia care vă interesează din directorul /usr/doc/Linux-HOWTOs, în funcţie de nivelul de cunoştinţe despre Linux pe care îl aveţi.&lt;br /&gt;
&lt;br /&gt;
===Oprirea/pornirea serviciilor===&lt;br /&gt;
Slackware Linux foloseşte scripturi de iniţializare stil BSD, în timp ce alte distribuţii folosesc scripturi System V. Diferenţa este următoarea:&lt;br /&gt;
&lt;br /&gt;
BSD-style &amp;lt;code&amp;gt;/etc/rc.d/rc.sshd start&amp;lt;/code&amp;gt;&lt;br /&gt;
System V &amp;lt;code&amp;gt;/etc/init.d/sshd start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Regula de bază a [[Securitatea sistemului de operare - Reguli de bază|securităţii sistemului de operare]] &amp;lt;sup&amp;gt;(în lucru)&amp;lt;/sup&amp;gt; este închiderea serviciilor care nu sunt necesare. În Slackware Linux, un script de iniţializare este executat dacă are caracteristica &amp;quot;Mode 0755&amp;quot; şi nu este executat dacă are caracteristica &amp;quot;Mode 0644&amp;quot;:&lt;br /&gt;
 -rw-r--r-- 1 0 0 1.2K 2006-05-27 23:24 rc.saslauthd&lt;br /&gt;
 -rwxr-xr-x 1 0 0  967 2006-09-25 11:33 rc.scanluns&lt;br /&gt;
&lt;br /&gt;
Pentru oprirea unui servciu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/rc.d/rc.sshd stop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod 0644 /etc/rc.d/rc.sshd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sau&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod -x /etc/rc.d/rc.sshd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De asemenea, fişierul /etc/inetd.conf conţine o listă comenzi pentru iniţializarea unor servicii (servere, daemoni). Majoritatea nu sunt necesare unei staţii desktop. Până învăţaţi editoarele &amp;lt;tt&amp;gt;vi&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;pico&amp;lt;/tt&amp;gt; sau &amp;lt;tt&amp;gt;emacs&amp;lt;/tt&amp;gt;, managerul de fişiere &amp;lt;tt&amp;gt;mc&amp;lt;/tt&amp;gt; este tot ceea ce aveţi nevoie pentru lucrul cu fişierele de configurare. Puteţi comenta absolut toate liniile din /etc/inetd.conf.&lt;br /&gt;
&lt;br /&gt;
Dacă aveţi nevoie temporar, de exemplu, de serverul &amp;lt;tt&amp;gt;sshd&amp;lt;/tt&amp;gt;, atunci cu următoarea secvenţă de comenzi realizaţi pornirea şi oprirea serviciului:&lt;br /&gt;
&amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;chmod 0755 /etc/rc.d/rc.sshd&amp;lt;/code&amp;gt;&lt;br /&gt;
(sau: &amp;lt;tt&amp;gt;chmod +x /etc/rc.d/rc.sshd&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/rc.d/rc.sshd start&amp;lt;/code&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/rc.d/rc.sshd stop&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;chmod 0644 /etc/rc.d/rc.sshd&amp;lt;/code&amp;gt;&lt;br /&gt;
(sau &amp;lt;tt&amp;gt;chmod -x /etc/rc.d/rc.sshd&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;exit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bineînţeles că acesta este doar un exemplu. În realitate, nu ar trebui să rulaţi nici un serviciu, indiferent de durata de timp, fără a-l configura, securiza şi monitoriza corespunzător.&lt;br /&gt;
&lt;br /&gt;
===Crearea unui cont de utilizator===&lt;br /&gt;
Este absolut necesar să creaţi un cont de utilizator, pentru că este total neindicat utilizarea contului root în afara operaţiilor de administrare a sistemului:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;useradd -m &amp;lt;nume&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sau:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;adduser&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setarea sau schimbarea parolei unui utilizator:&lt;br /&gt;
&amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ştergerea unui utilizator:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;userdel -r &amp;lt;nume&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ca utilizator puteţi rula aplicaţii cu drepturi de root cu ajutorul &amp;lt;tt&amp;gt;sudo&amp;lt;/tt&amp;gt; sau puteţi obţine temporar drepturi de root cu &amp;lt;tt&amp;gt;su&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Despre instalarea pachetelor===&lt;br /&gt;
De multe ori i se reproşează distribuţiei Slackware Linux faptul că nu are un sistem de management a pachetelor, sistem care să verifice dependinţele pachetelor ce urmează a fi instalate, să descarce şi să instaleze automat aceste dependinţe. Acest lucru poate ar fi util, dar nu este în spiritul Slackware şi nici nu este dorit de Patrick Volkerding, singurul care decide asupra evoluţiei distribuţiei. Totuşi, există mai multe utilitare pentru instalarea, dezinstalarea şi upgradarea packetelor: &amp;lt;tt&amp;gt;installpkg&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;removepkg&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;upgradepkg&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;pkgtool&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
În directorul /extra de pe CD-urile 2 şi 3 (de pe DVD) sunt o serie de aplicaţii utile. Exemplu:&lt;br /&gt;
&amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;mount /mnt/dvd&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;pkgtool&amp;lt;/code&amp;gt;&lt;br /&gt;
alegeţi opţiunea &amp;quot;other&amp;quot; şi scrieţi calea către pachetul pe care doriţi să-l instalaţi: /mnt/dvd/extra/k3b&lt;br /&gt;
&amp;lt;code&amp;gt;umount /mnt/dvd&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;exit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upgradarea pachetelor este partea cea mai dificilă, dar citind zilnic ChangeLogs de pe site-ul oficial, aflaţi ce pachete au fost upgradate/updatate şi din ce motive (în special cele marcate cu * Security fix *). Sau puteţi să vă înscrieţi pe cele 2 liste de mail şi veţi fi anunţat de modificările apărute în distribuţie. Urmează să vă decideţi ce pachete noi veţi instala pe sistemul dumneavoastră.&lt;br /&gt;
&lt;br /&gt;
===Instalarea kernelului 2.6.17.13===&lt;br /&gt;
Pentru început citiţi fişierul &amp;quot;README.initrd&amp;quot; din directorul /boot sau /extra/linux-2.6.17.13. Cu ajutorul utilitarului &amp;lt;tt&amp;gt;pkgtool&amp;lt;/tt&amp;gt; instalaţi din directorul /mnt/dvd/extra/linux-2.6.17.13 pachetele:&lt;br /&gt;
*kernel-generic-2.6.17.13-i486-1.tgz&lt;br /&gt;
*kernel-source-2.6.17.13-noarch-1.tgz&lt;br /&gt;
*kernel-modules-2.6.17.13-i486-1.tgz     &lt;br /&gt;
*kernel-headers-2.6.17.13-i386-1.tgz&lt;br /&gt;
&lt;br /&gt;
Apoi, urmaţi succesiunea de comenzi (exemplul este valabil pentru sistemul de fişiere reiserfs):&lt;br /&gt;
&amp;lt;code&amp;gt;cd /boot&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;mkinitrd -c -k 2.6.17.13 -m reiserfs&amp;lt;/code&amp;gt;&lt;br /&gt;
şi editaţi fişierul /etc/lilo.conf:&lt;br /&gt;
 # Linux bootable partition config begins&lt;br /&gt;
 image = /boot/vmlinuz-generic-2.6.17.13&lt;br /&gt;
   initrd = /boot/initrd.gz&lt;br /&gt;
   root = /dev/hda1&lt;br /&gt;
   label = Slackware&lt;br /&gt;
   read-only # Non-UMSDOS filesystems should be mounted read-only for checking&lt;br /&gt;
 # Linux bootable partition config ends&lt;br /&gt;
unde &amp;quot;hda1&amp;quot; este partiţia pe care este instalat sistemul de operare.&lt;br /&gt;
&lt;br /&gt;
În final, rulaţi comanda:&lt;br /&gt;
&amp;lt;code&amp;gt;lilo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configurarea interfeţei de reţea===&lt;br /&gt;
În mod normal, ar trebui să reuşiţi configurarea interfeţei de reţea - în acest caz o placă de reţea - pe timpul instalării sau ulterior, cu comanda &amp;lt;tt&amp;gt;netconfig&amp;lt;/tt&amp;gt;. Pentru a vedea dacă placa de reţea a fost configurată corect, urmăriţi output-ul comenzilor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ifconfig &amp;amp;&amp;amp; route -n&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 eth0      Link encap:Ethernet  HWaddr 00:0C:29:AC:C8:65&lt;br /&gt;
           inet addr:192.168.102.130  Bcast:192.168.102.255  Mask:255.255.255.0&lt;br /&gt;
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:8 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:8 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000&lt;br /&gt;
           RX bytes:661 (661.0 b)  TX bytes:471 (471.0 b)&lt;br /&gt;
           Interrupt:10 Base address:0x1080&lt;br /&gt;
 &lt;br /&gt;
 lo        Link encap:Local Loopback&lt;br /&gt;
           inet addr:127.0.0.1  Mask:255.0.0.0&lt;br /&gt;
           UP LOOPBACK RUNNING  MTU:16436  Metric:1&lt;br /&gt;
           RX packets:8 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:8 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:0&lt;br /&gt;
           RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)&lt;br /&gt;
 &lt;br /&gt;
 Kernel IP routing table&lt;br /&gt;
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface&lt;br /&gt;
 192.168.102.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0&lt;br /&gt;
 127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo&lt;br /&gt;
 0.0.0.0         192.168.102.2   0.0.0.0         UG    1      0        0 eth0&lt;br /&gt;
&lt;br /&gt;
Totul e în regulă, dar - ca exemplu - să spunem că doriţi schimbarea adresei IP a interfeţei eth0. Pentru aceasta:&lt;br /&gt;
*dezactivaţi placa de reţea&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ifconfig eth0 down&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*editaţi /etc/rc.d/rc.inet1.conf&lt;br /&gt;
&lt;br /&gt;
 # Config information for eth0:&lt;br /&gt;
 IPADDR[0]=&amp;quot;192.168.102.131&amp;quot;&lt;br /&gt;
 NETMASK[0]=&amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
 USE_DHCP[0]=&amp;quot;&amp;quot;&lt;br /&gt;
 DHCP_HOSTNAME[0]=&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Default gateway IP address:&lt;br /&gt;
 GATEWAY=&amp;quot;192.168.102.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*verificaţi /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
 nameserver 192.168.102.2&lt;br /&gt;
&lt;br /&gt;
*activaţi placa de reţea&lt;br /&gt;
&amp;lt;code&amp;gt;ifconfig eth0 up&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În loc de editarea fişierului /etc/rc.d/rc.inet1.conf şi activarea plăcii de reţea, puteţi rula direct comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ifconfig eth0 192.168.102.131 netmask 255.255.255.0 up&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*în final, rulaţi comenzile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/rc.d/rc.inet1 restart &amp;amp;&amp;amp; /etc/rc.d/rc.inet2 restart&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dacă vă conectaţi la internet prin PPP sau PPPoE, probabil că aţi observat că &amp;lt;tt&amp;gt;netconfig&amp;lt;/tt&amp;gt; nu vă oferă suport pentru aceaste metode de accesare a internetului, ba mai mult, vă şi îndeamna să selectaţi opţiunea loopback, aceaşi opţiune sugerată celor care nu vor să fie conectaţi vreo reţea.&lt;br /&gt;
&lt;br /&gt;
Asta nu înseamnă că nu aveţi cum să vă mai conectaţi la internet, ci doar că trebuie să vă folosiţi de alte unelte. În cazul nostru, unelte pentru configurarea acestor tipuri de conexiuni sunt:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;pppsetup&amp;lt;/tt&amp;gt;, în caz de vă conectaţi prin PPP/SLIP(dial-up.)&lt;br /&gt;
* &amp;lt;tt&amp;gt;pppoe-setup&amp;lt;/tt&amp;gt;, in caz de vă conectaţi prin PPPoE(această metodă este din ce in ce mai des adoptată de către internet service provideri, cel mai cunoscut dintre aceştia fiind RDS.)&lt;br /&gt;
&lt;br /&gt;
Să le luă pe rând.&lt;br /&gt;
&lt;br /&gt;
Pentru configurarea unei conexiuni PPP sau SLIP, trebuie întâi să vă asiguraţi că sunteţi autentificat ca root, după care să rulaţi comanda &amp;lt;tt&amp;gt;pppsetup&amp;lt;/tt&amp;gt; şi să urmaţi paşii şi sugestiile de acolo. Dupa ce aţi terminat configurarea, puteţi activa conexiunea prin comanda &amp;lt;tt&amp;gt;ppp-on&amp;lt;/tt&amp;gt;, iar când doriţi să o opriţi, folosiţi comanda &amp;lt;tt&amp;gt;ppp-off&amp;lt;/tt&amp;gt;. Ca să nu mai treceţi prin toţi aceşti paşi la fiecare redemarare a calculatorului, puteţi să activaţi conectarea prin editarea fişierului &amp;lt;tt&amp;gt;rc.local&amp;lt;/tt&amp;gt; şi adaugarea comenzii &amp;lt;tt&amp;gt;ppp-on&amp;lt;/tt&amp;gt; la finalul acestuia. Pentru automatizarea opririi conexiunii la inchiderea calculatorului, faceţi acelaşi lucru cu fişierul &amp;lt;tt&amp;gt;rc.local_shutdown&amp;lt;/tt&amp;gt; (dacă nu există, creaţi-l) şi cu comanda &amp;lt;tt&amp;gt;ppp-off&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În cazul în care vă conectaţi prin PPPoE, configurarea conexiunii se face cu comanda &amp;lt;tt&amp;gt;pppoe-setup&amp;lt;/tt&amp;gt;. Legat de opţiunile care vă sunt afişate pe parcursul configurării: în marea majoritate a cazurilor, se folosesc default-urile, mai puţin în cazul când sunteţi întrebaţi de informaţia DNS, unde trebuie să specificaţi &amp;lt;tt&amp;gt;server&amp;lt;/tt&amp;gt;. Nu este nevoie de firewall. Pentru conectare, folosiţi comanda &amp;lt;tt&amp;gt;pppoe-connect&amp;lt;/tt&amp;gt;, pentru deconectare &amp;lt;tt&amp;gt;pppoe-stop&amp;lt;/tt&amp;gt; iar daca doriti automatizarea conectarii si a deconectarii, urmaţi aceeaşi paşii specificaţi mai sus pentru automatizarea conexiunii PPP sau SLIP, dar cu schimbările de rigoare în cazul comenzilor.&lt;br /&gt;
&lt;br /&gt;
===Configurarea plăcii de sunet===&lt;br /&gt;
Placa de sunet se setează cu comanda:&lt;br /&gt;
&amp;lt;code&amp;gt;alsaconf&amp;lt;/code&amp;gt;&lt;br /&gt;
Această comandă detectează şi încarcă modulul de kernel al plăcii de sunet şi scrie liniile de configurare corespunzătoare în fişierul de configurare /etc/modules.conf pentru kernelul 2.4.33.3 sau /etc/modprobe.conf pentru kernelul 2.6.17.13.&lt;br /&gt;
&lt;br /&gt;
Pentru kernelul 2.6.17.13, dacă &amp;lt;tt&amp;gt;alsaconf&amp;lt;/tt&amp;gt; nu găseşte modulul corespunzător plăcii de sunet, atunci editaţi fişierul /etc/rc.d/rc.modules-2.6.17.13, secţiunea &amp;quot;ALSA (Advanced Linux Sound Architecture) support&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Apoi, cu comenzile&lt;br /&gt;
&amp;lt;code&amp;gt;alsamixer&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;alsactl store&amp;lt;/code&amp;gt;&lt;br /&gt;
setaţi volumul şi salvaţi setările în fişierul de configurare (/etc/asound.state).&lt;br /&gt;
&lt;br /&gt;
===Alte fişiere de configurare===&lt;br /&gt;
*/etc/rc.d/rc.modules-2.4.33.3 (2.6.17.13) (încărcarea unor module de kernel pe timpul bootării). Exemplu (fragment):&lt;br /&gt;
 ### USB Host Controllers:&lt;br /&gt;
 # Enhanced Host Controller Interface (USB 2.0)&lt;br /&gt;
 /sbin/modprobe ehci-hcd&lt;br /&gt;
 # Open Host Controller Interface (Compaq/Microsoft/National standard):&lt;br /&gt;
 #/sbin/modprobe ohci-hcd&lt;br /&gt;
 # Universal Host Controller Interface (Intel/Via standard):&lt;br /&gt;
 /sbin/modprobe uhci-hcd&lt;br /&gt;
 &lt;br /&gt;
 # USB Mass Storage support:&lt;br /&gt;
 /sbin/modprobe usb-storage&lt;br /&gt;
 &lt;br /&gt;
 ### Infrared Devices:&lt;br /&gt;
 /sbin/modprobe irda-usb&lt;br /&gt;
 /sbin/modprobe irport&lt;br /&gt;
 /sbin/modprobe irtty-sir&lt;br /&gt;
 /sbin/modprobe sir-dev&lt;br /&gt;
*/etc/rc.d/rc.local (rularea automată a unor scripturi la iniţializarea sistemului de operare);&lt;br /&gt;
*/etc/fstab&lt;br /&gt;
Exemplu: montarea a două unităţi optice şi schimbarea drepturilor de acces a acestora pentru a fi accesibile unui utilizator, fără obţinerea de drepturi de root)&lt;br /&gt;
&lt;br /&gt;
Fişierul /etc/fstab original, imediat după instalare:&lt;br /&gt;
 /dev/cdrom       /mnt/cdrom       auto        noauto,owner,ro  0   0&lt;br /&gt;
&lt;br /&gt;
Fişierul /etc/fstab modificat:&lt;br /&gt;
 /dev/hdc         /mnt/dvd         auto        noauto,user,ro   0   0&lt;br /&gt;
 /dev/hdd         /mnt/cdrom       auto        noauto,user,ro   0   0&lt;br /&gt;
&lt;br /&gt;
*/etc/lilo.conf (fişierul de configurare al LInux LOader). Exemplu (fragment):&lt;br /&gt;
 # LILO configuration file&lt;br /&gt;
 # generated by 'liloconfig'&lt;br /&gt;
 #&lt;br /&gt;
 # Start LILO global section&lt;br /&gt;
 boot = /dev/hda&lt;br /&gt;
 #compact        # faster, but won't work on all systems.&lt;br /&gt;
 prompt&lt;br /&gt;
 timeout = 300&lt;br /&gt;
 #bitmap=/boot/logo64a.bmp&lt;br /&gt;
 #bmp-colors=6,9,0,15,9,0&lt;br /&gt;
 #bmp-table=59,5,1,23,&lt;br /&gt;
 #bmp-timer=66,28,6,8,&lt;br /&gt;
 #install=bmp&lt;br /&gt;
 # Normal VGA console&lt;br /&gt;
 vga = normal&lt;br /&gt;
 # End LILO global section&lt;br /&gt;
 # Linux bootable partition config begins&lt;br /&gt;
 image = /boot/vmlinuz-generic-2.6.17.13&lt;br /&gt;
   initrd = /boot/initrd.gz&lt;br /&gt;
 #  append=&amp;quot;acpi=off&amp;quot;&lt;br /&gt;
   root = /dev/hdb4&lt;br /&gt;
   label = Slackware&lt;br /&gt;
   read-only # Non-UMSDOS filesystems should be mounted read-only for checking&lt;br /&gt;
 # Linux bootable partition config ends&lt;br /&gt;
Nu uitaţi să rulaţi comanda &amp;lt;tt&amp;gt;lilo&amp;lt;/tt&amp;gt; după editarea fişierului /etc/lilo.conf!&lt;br /&gt;
&lt;br /&gt;
===Configurarea serverului grafic===&lt;br /&gt;
Se realizează cu comanda [[Configurarea serverului grafic|xorgconfig]] &amp;lt;sup&amp;gt;(în lucru)&amp;lt;/sup&amp;gt;. Ulterior, dacă apar probleme în iniţializarea sau rularea serverului grafic sau doriţi schimbarea unor opţiuni, puteţi edita fişierul /etc/X11/xorg.conf. Pentru a vedea efectul modificărilor, puteţi compara /var/logfile/Xorg.0.log cu /var/logfile/Xorg.0.log.old:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;diff /var/log/Xorg.0.log /var/log/Xorg.0.log.old&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 14c14&lt;br /&gt;
 &amp;lt; (==) Log file: &amp;quot;/var/log/Xorg.0.log&amp;quot;, Time: Sun Nov 26 19:17:15 2006&lt;br /&gt;
 ---&lt;br /&gt;
 &amp;gt; (==) Log file: &amp;quot;/var/log/Xorg.0.log&amp;quot;, Time: Sun Nov 26 17:35:47 2006&lt;br /&gt;
 810a811&lt;br /&gt;
 &amp;gt; FreeFontPath: FPE &amp;quot;/usr/X11R6/lib/X11/fonts/misc/&amp;quot; refcount is 2, should be 1; fixing.&lt;br /&gt;
adică, în linia 14 este o modificare, iar primul fişier are mai puţin cu o linie (linia 811).&lt;br /&gt;
&lt;br /&gt;
==În loc de încheiere ==&lt;br /&gt;
&amp;quot;There's a lot of good free software out there, but it can't all be added to Slackware, and in my opinion Slackware wouldn't be better if it was&amp;quot;. (''Patrick Volkerding, 2002'')&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Instalarea_distribu%C3%85%C2%A3iei_Slackware_Linux&amp;diff=3239</id>
		<title>Instalarea distribuÅ£iei Slackware Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Instalarea_distribu%C3%85%C2%A3iei_Slackware_Linux&amp;diff=3239"/>
				<updated>2006-12-01T09:36:11Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: /* Configurarea reţelei */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Etapa 1 - Iniţializarea programului de instalare==&lt;br /&gt;
*Bootarea calculatorului de pe primul CD (de pe DVD)&lt;br /&gt;
[[Image:slack_a0.png|center|frame|Welcome to Slackware]]&lt;br /&gt;
*Alegerea imaginii de bootare (F2)&lt;br /&gt;
[[Image:slack_a1.png|center|frame|Kernel Selection Help]]&lt;br /&gt;
*Lista imaginilor de bootare (F3)&lt;br /&gt;
[[Image:slack_a2.png|center|frame|Kernel Image List]]&lt;br /&gt;
*Alegerea tipului tastaturii&lt;br /&gt;
[[Image:slack_a3.png|center|frame|Keyboard Map Selection]]&lt;br /&gt;
*Finalizarea încărcării programului de instalare&lt;br /&gt;
[[Image:slack_a4.png|center|frame|Welcome to the Slackware Linux installation disk]]&lt;br /&gt;
*Logarea ca root&lt;br /&gt;
[[Image:slack_a5.png|center|frame|root@Slackware:/# _]]&lt;br /&gt;
==Etapa 2 - Partiţionarea hardisk-ului==&lt;br /&gt;
===fdisk (în modul text)===&lt;br /&gt;
&amp;lt;code&amp;gt;fdisk /dev/hda&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Image:slack_a7.png|center|frame|Command (m for help): _]]&lt;br /&gt;
Principalele comenzi sunt:&lt;br /&gt;
&lt;br /&gt;
*l (list - afişează tipurile de partiţii cunoscute)&lt;br /&gt;
 Command (m for help): l&lt;br /&gt;
 &lt;br /&gt;
  0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot&lt;br /&gt;
  1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris&lt;br /&gt;
  2  XENIX root      39  Plan 9          82  Linux swap      c1  DRDOS/sec (FAT-&lt;br /&gt;
  3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-&lt;br /&gt;
  4  FAT16 &amp;lt;32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-&lt;br /&gt;
  5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx&lt;br /&gt;
  6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data&lt;br /&gt;
  7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .&lt;br /&gt;
  8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility&lt;br /&gt;
  9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt&lt;br /&gt;
  a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access&lt;br /&gt;
  b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O&lt;br /&gt;
  c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor&lt;br /&gt;
  e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs&lt;br /&gt;
  f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT&lt;br /&gt;
 10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/&lt;br /&gt;
 11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b&lt;br /&gt;
 12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor&lt;br /&gt;
 14  Hidden FAT16 &amp;lt;3 61  SpeedStor       a9  NetBSD          f4  SpeedStor&lt;br /&gt;
 16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary&lt;br /&gt;
 17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto&lt;br /&gt;
 18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep&lt;br /&gt;
 1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT&lt;br /&gt;
 1c  Hidden W95 FAT3 75  PC/IX&lt;br /&gt;
&lt;br /&gt;
*p (partitions - afişează tabela de alocare a partiţiilor)&lt;br /&gt;
 Command (m for help): p&lt;br /&gt;
  Disk /dev/hda: 80.0 GB, 80026361856 bytes&lt;br /&gt;
 255 heads, 63 sectors/track, 9729 cylinders&lt;br /&gt;
 Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;
 &lt;br /&gt;
    Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
 /dev/hda1   *           1        1500    12048718+   7  HPFS/NTFS&lt;br /&gt;
 /dev/hda2            1501        8000    52211250    7  HPFS/NTFS&lt;br /&gt;
 /dev/hda3            8001        9600    12852000   83  Linux&lt;br /&gt;
 /dev/hda4            9601        9729     1036192+  82  Linux swap&lt;br /&gt;
&lt;br /&gt;
*d (delete - şterge o partiţie)&lt;br /&gt;
 Command (m for help): d&lt;br /&gt;
 Partition number (1-4): 4&lt;br /&gt;
&lt;br /&gt;
*n (new - crează o partiţie)&lt;br /&gt;
&lt;br /&gt;
*p (primary - tipul partiţiei = primară)&lt;br /&gt;
 Command (m for help): d&lt;br /&gt;
 Partition number (1-4): 4&lt;br /&gt;
 &lt;br /&gt;
 Command (m for help): n&lt;br /&gt;
 Command action&lt;br /&gt;
    e   extended&lt;br /&gt;
    p   primary partition (1-4)&lt;br /&gt;
 p&lt;br /&gt;
 Selected partition 4&lt;br /&gt;
 First cylinder (9601-9729, default 9601): 9601&lt;br /&gt;
 Last cylinder or +size or +sizeM or +sizeK (9601-9729, default 9729): 9729&lt;br /&gt;
&lt;br /&gt;
*e (extended - tipul partiţiei = extinsă)&lt;br /&gt;
 Command (m for help): p&lt;br /&gt;
 &lt;br /&gt;
 Disk /dev/hda: 80.0 GB, 80026361856 bytes&lt;br /&gt;
 255 heads, 63 sectors/track, 9729 cylinders&lt;br /&gt;
 Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;
 &lt;br /&gt;
    Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
 /dev/hda1   *           1        1500    12048718+   7  HPFS/NTFS&lt;br /&gt;
 /dev/hda2            1501        8000    52211250    7  HPFS/NTFS&lt;br /&gt;
 /dev/hda3            8001        9600    12852000   83  Linux&lt;br /&gt;
 /dev/hda4            9601        9729     1036192+   5  Extended&lt;br /&gt;
  &lt;br /&gt;
 Command (m for help): n&lt;br /&gt;
 First cylinder (9601-9729, default 9601):&lt;br /&gt;
 Using default value 9601&lt;br /&gt;
 Last cylinder or +size or +sizeM or +sizeK (9601-9729, default 9729): 9700&lt;br /&gt;
  &lt;br /&gt;
 Command (m for help): n&lt;br /&gt;
 First cylinder (9701-9729, default 9701):&lt;br /&gt;
 Using default value 9701&lt;br /&gt;
 Last cylinder or +size or +sizeM or +sizeK (9701-9729, default 9729):&lt;br /&gt;
 Using default value 9729&lt;br /&gt;
  &lt;br /&gt;
 Command (m for help): p&lt;br /&gt;
  &lt;br /&gt;
 Disk /dev/hda: 80.0 GB, 80026361856 bytes&lt;br /&gt;
 255 heads, 63 sectors/track, 9729 cylinders&lt;br /&gt;
 Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;
  &lt;br /&gt;
    Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
 /dev/hda1   *           1        1500    12048718+   7  HPFS/NTFS&lt;br /&gt;
 /dev/hda2            1501        8000    52211250    7  HPFS/NTFS&lt;br /&gt;
 /dev/hda3            8001        9600    12852000   83  Linux&lt;br /&gt;
 /dev/hda4            9601        9729     1036192+   5  Extended&lt;br /&gt;
 /dev/hda5            9601        9700      803218+  83  Linux&lt;br /&gt;
 /dev/hda6            9701        9729      232911   83  Linux&lt;br /&gt;
&lt;br /&gt;
* o (crează o nouă tabelă de alocare a partiţiilor)&lt;br /&gt;
 Command (m for help): o&lt;br /&gt;
 Building a new DOS disklabel. Changes will remain in memory only,&lt;br /&gt;
 until you decide to write them. After that, of course, the previous&lt;br /&gt;
 content won't be recoverable.&lt;br /&gt;
 &lt;br /&gt;
 The number of cylinders for this disk is set to 9729.&lt;br /&gt;
 There is nothing wrong with that, but this is larger than 1024,&lt;br /&gt;
 and could in certain setups cause problems with:&lt;br /&gt;
 1) software that runs at boot time (e.g., old versions of LILO)&lt;br /&gt;
 2) booting and partitioning software from other OSs&lt;br /&gt;
    (e.g., DOS FDISK, OS/2 FDISK)&lt;br /&gt;
 Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)&lt;br /&gt;
 &lt;br /&gt;
*a (active - setează partiţia activă)&lt;br /&gt;
 Command (m for help): a&lt;br /&gt;
 Partition number (1-4): 2&lt;br /&gt;
&lt;br /&gt;
*t (type - schimbă ID-ul tipului partiţiei)&lt;br /&gt;
 Command (m for help): t&lt;br /&gt;
 Partition number (1-4): 3&lt;br /&gt;
 Hex code (type L to list codes): 82&lt;br /&gt;
 Changed system type of partition 3 to 82 (Linux swap)&lt;br /&gt;
&lt;br /&gt;
*v (verify - verifică tabela de alocare)&lt;br /&gt;
 Command (m for help): v&lt;br /&gt;
 5165 unallocated sectors&lt;br /&gt;
&lt;br /&gt;
*w (write - scrie în tabela de alocare a partiţiilor)&lt;br /&gt;
&lt;br /&gt;
*q (quit - iese din program fără a salva modificările în tabela de alocare)&lt;br /&gt;
&lt;br /&gt;
===cfdisk (în modul text cu meniuri)===&lt;br /&gt;
&amp;lt;code&amp;gt;cfdisk /dev/sda&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Image:slack_a6.png|center|frame|cfdisk 2.12r]]&lt;br /&gt;
==Etapa 3 - Rularea programului de instalare==&lt;br /&gt;
&amp;lt;code&amp;gt;setup&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Image:slack_a8.png|center|frame|Slackware Linux Setup]]&lt;br /&gt;
===HELP===&lt;br /&gt;
*Explicarea, pe scurt, a instalării distribuţiei Slackware Linux&lt;br /&gt;
[[Image:slack_a9.png|center|frame|Slackware Setup Help]]&lt;br /&gt;
===KEYBOARD===&lt;br /&gt;
*Alegerea tipului tastaturii (altul decât cel implicit - &amp;quot;qwerty&amp;quot;)&lt;br /&gt;
[[Image:slack_b0.png|center|frame|Keyboard Map Selection]]&lt;br /&gt;
===ADDSWAP===&lt;br /&gt;
*Detectarea partiţiei/partiţiilor swap&lt;br /&gt;
[[Image:slack_b1.png|center|frame|Swap space detected]]&lt;br /&gt;
*Alegerea verificării harddisk-ului pe timpul formatării partiţiei swap&lt;br /&gt;
[[Image:slack_b2.png|center|frame|Check swap partitions for bad blocks]]&lt;br /&gt;
*montarea partiţiei swap şi iniţializarea acesteia&lt;br /&gt;
[[Image:slack_b3.png|center|frame|Swap Space Configured]]&lt;br /&gt;
===TARGET===&lt;br /&gt;
*Detectarea partiţiilor Linux şi selectarea partiţiei / (root)&lt;br /&gt;
[[Image:slack_b4.png|center|frame|Select Linux installation partition]]&lt;br /&gt;
*Formatarea partiţiei / (root)&lt;br /&gt;
[[Image:slack_b5.png|center|frame|Format partition /dev/sda1]]&lt;br /&gt;
*Selectarea tipului sistemului de fişiere pentru partiţia /&lt;br /&gt;
[[Image:slack_b6.png|center|frame|Select filesystem for /dev/sda1]]&lt;br /&gt;
*Formatarea (dacă e cazul) altor partiţii Linux şi stabilirea punctului de montare&lt;br /&gt;
*Salvarea informaţiilor în fişierul de configurare /etc/fstab&lt;br /&gt;
[[Image:slack_b7.png|center|frame|Done adding Linux partitions to /etc/fstab]]&lt;br /&gt;
*Detectarea, formatarea (în mod normal nu e cazul) şi stabilirea punctului de montare al partiţiilor non-linux&lt;br /&gt;
===SOURCE===&lt;br /&gt;
*Alegerea sursei pachetelor distribuţiei (de pe CD/DVD, de pe o altă partiţie/director sau prin protocolul Network File System)&lt;br /&gt;
[[Image:slack_b8.png|center|frame|Source Media Selection]]&lt;br /&gt;
*Scanarea şi detectare unităţii optice care conţine CD-ul 1/DVD-ul distribuţiei&lt;br /&gt;
[[Image:slack_b9.png|center|frame|Scan for CD or DVD Drive]]&lt;br /&gt;
===SELECT===&lt;br /&gt;
*Selectarea seriilor de pachete care urmează a fi instalate (toate sunt selectate implicit, mai puţin seria &amp;quot;KDEI&amp;quot;) - ecranul 1&lt;br /&gt;
[[Image:slack_c1.png|center|frame|Packages Series Selection]]&lt;br /&gt;
*Selectarea seriilor de pachete care urmează a fi instalate (toate sunt selectate implicit, mai puţin seria &amp;quot;KDEI&amp;quot;) - ecranul 2&lt;br /&gt;
[[Image:slack_c2.png|center|frame|Packages Series Selection]]&lt;br /&gt;
*Selectarea tipului instalării (recomandat &amp;quot;full&amp;quot; sau &amp;quot;menu&amp;quot;)&lt;br /&gt;
[[Image:slack_c3.png|center|frame|Select Prompting Mode]]&lt;br /&gt;
===INSTALL===&lt;br /&gt;
*Instalarea seriilor de pachete selectate anterior&lt;br /&gt;
===CONFIGURE===&lt;br /&gt;
====Selectarea şi instalarea kernelului====&lt;br /&gt;
*Selectarea sursei kernelului&lt;br /&gt;
[[Image:slack_c4.png|center|frame|Install Linux Kernel]]&lt;br /&gt;
*Alegerea kernelului (recomandat este cel cu care s-a început instalarea)&lt;br /&gt;
[[Image:slack_c5.png|center|frame|Choose Linux Kernel]]&lt;br /&gt;
====Crearea dischetei / dischetelor de boot====&lt;br /&gt;
[[Image:slack_c6.png|center|frame|Make Bootdisk]]&lt;br /&gt;
====Configurarea modemului====&lt;br /&gt;
[[Image:slack_c7.png|center|frame|Modem Configuration]]&lt;br /&gt;
====Activarea/dezactivarea hotplug/udev====&lt;br /&gt;
[[Image:slack_c8.png|center|frame|Enable hotplug/udev subsystem at boot]]&lt;br /&gt;
====Configurarea şi instalarea LILO====&lt;br /&gt;
*Alegerea tipului instalării - &amp;quot;expert&amp;quot;&lt;br /&gt;
[[Image:slack_c9.png|center|frame|Install LILO]]&lt;br /&gt;
*Începerea instalării şi crearea unui nou header&lt;br /&gt;
[[Image:slack_d0.png|center|frame|Expert LILO Installation]]&lt;br /&gt;
*Adăugarea unor extra parametri&lt;br /&gt;
[[Image:slack_d1.png|center|frame|Optional LILO append=&amp;lt;&amp;quot;parametru_de_kernel&amp;gt; Line]]&lt;br /&gt;
*Configurarea LILO pentru a utiliza consola Frame Buffer (recomandat: &amp;quot;standard&amp;quot;, adică fără Frame Buffer)&lt;br /&gt;
[[Image:slack_d2.png|center|frame|Configure LILO to use Frame Buffer Console]]&lt;br /&gt;
*Selectarea locaţiei unde se va instala LILO (chiar dacă e &amp;quot;possibly unsafe&amp;quot;, e totuşi cea mai bună opţiune)&lt;br /&gt;
[[Image:slack_d3.png|center|frame|Select LILO Target Location]]&lt;br /&gt;
*Confirmarea locaţiei (în acest caz /dev/sda)&lt;br /&gt;
[[Image:slack_d4.png|center|frame|Confirm Location To Install LILO]]&lt;br /&gt;
*Setarea timpului de aştepatare; la expirarea acestuia bootează automat primul sistem de operare din /etc/lilo.conf&lt;br /&gt;
[[Image:slack_d5.png|center|frame|Choose LILO Timeout]]&lt;br /&gt;
*Adăugarea unei partiţii Linux&lt;br /&gt;
[[Image:slack_d6.png|center|frame|Select Linux Partition]]&lt;br /&gt;
*Stabilirea numelui care va fi afişat în meniul LILO (atenţie! un singur cuvânt)&lt;br /&gt;
[[Image:slack_d7.png|center|frame|Select Partition Name]]&lt;br /&gt;
*Scrierea efectivă a LILO în locaţia aleasă anterior&lt;br /&gt;
====Alegerea tipului de mouse====&lt;br /&gt;
*Alegerea tipului de mouse&lt;br /&gt;
[[Image:slack_d8.png|center|frame|Mouse Configuration]]&lt;br /&gt;
*Activarea programului serverului de mouse gpm (copy, cut, paste cu mouse-ul în consolă)&lt;br /&gt;
[[Image:slack_d9.png|center|frame|gpm Configuration]]&lt;br /&gt;
====Configurarea reţelei====&lt;br /&gt;
*Setarea hostname&lt;br /&gt;
[[Image:slack_e1.png|center|frame|Enter Hostname]]&lt;br /&gt;
*Setarea domainname&lt;br /&gt;
[[Image:slack_e2.png|center|frame|Enter Domainname]]&lt;br /&gt;
*Modalitatea de alocare a adresei IP.&lt;br /&gt;
[[Image:slack_e3.png|center|frame|Setup IP Address]]&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aici se presupune că aveţi alocat un IP static. Pentru alocarea dinamică a IP-ului, selectaţi dhcp. Dacă, în schimb, vă conectaţi prin modem(PPP) sau prin PPPoE, selectaţi loopback si, după terminarea instalării, consultaţi ghidul configurării unei distribuţii Slackware.&lt;br /&gt;
*Introducerea adresei IP&lt;br /&gt;
[[Image:slack_e4.png|center|frame|Enter IP Address]]&lt;br /&gt;
*Introducerea netmask-ului reţelei&lt;br /&gt;
[[Image:slack_e5.png|center|frame|Enter Netmask For Local Network]]&lt;br /&gt;
*Introducerea adresei Gateway-ului&lt;br /&gt;
[[Image:slack_e6.png|center|frame|Enter Gateway Address]]&lt;br /&gt;
*Dacă folosiţi serviciile unui Name Server (DNS Server), introduceţi adresa IP&lt;br /&gt;
[[Image:slack_e8.png|center|frame|Select Name Server]]&lt;br /&gt;
*Confirmarea setărilor de reţea&lt;br /&gt;
[[Image:slack_e9.png|center|frame|Confirm Network Setup]]&lt;br /&gt;
&lt;br /&gt;
====Stabilirea serviciilor rulate automat====&lt;br /&gt;
[[Image:slack_f0.png|center|frame|Confirm Startup Services To Run]]&lt;br /&gt;
====Configurarea fontului pentru consolă====&lt;br /&gt;
[[Image:slack_f1.png|center|frame|Font Console Configuration]]&lt;br /&gt;
====Setarea fusului orar====&lt;br /&gt;
*Setarea ceasului hardware&lt;br /&gt;
[[Image:slack_f2.png|center|frame|Hardware Clock]]&lt;br /&gt;
*Setarea fusului orar&lt;br /&gt;
[[Image:slack_f3.png|center|frame|Timezone Configuration]]&lt;br /&gt;
====Alegerea managerului pentru desktop====&lt;br /&gt;
[[Image:slack_f4.png|center|frame|Default Desktop Manager]]&lt;br /&gt;
====Stabilirea parolei contului root====&lt;br /&gt;
*Stabilirea şi verificarea parolei contului root&lt;br /&gt;
[[Image:slack_f5.png|center|frame|Warning: No Root Password Detected]]&lt;br /&gt;
*Procesul de instalare şi configurare este complet&lt;br /&gt;
[[Image:slack_f6.png|center|frame|Setup Complete]]&lt;br /&gt;
===EXIT===&lt;br /&gt;
*ieşirea din meniul principal al programului setup.&lt;br /&gt;
[[Image:slack_f7.png|center|frame|Press ctrl-alt-delete to reboot]]&lt;br /&gt;
==Etapa 4 - Rebootarea calculatorului==&lt;br /&gt;
*ctrl-alt-delete and reboot&lt;br /&gt;
==Tocmai aţi instalat Slackware Linux 11.0==&lt;br /&gt;
*LILO Boot Menu&lt;br /&gt;
[[Image:slack_f8.png|center|frame|LILO Boot Menu]]&lt;br /&gt;
*root login&lt;br /&gt;
[[Image:slack_f9.png|center|frame|First Console Root Login]]&lt;br /&gt;
*startx &amp;amp;&amp;amp; good luck&lt;br /&gt;
[[Image:slack_g0.png|center|frame|KDE 3.5.4]]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3174</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3174"/>
				<updated>2006-11-30T15:13:39Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum observam, init este primul(chiar unicul) program executat de catre nucleu. De fapt, nucleul nu executa _programul_ init, ci programul care are calea absoluta /sbin/init, /etc/init, /bin/init sau /bin/sh, asta in cazul in care nucleului nu-i este specificat ca parametru de executie(init= -- deobicei specificat prin intermediul lui LILO sau altui program de incarcare) altceva(execute_command).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mai observam ca dupa 3 incercari de a executa programul &amp;quot;init&amp;quot;, nucleul isi incearca pentru ultima oara norocul cu /bin/sh. Pe Slackware (si nu numai), fisierul cu aceasta cale absoluta este o legatura cu interpretorul de comenzi BASH. Asta inseamna ca, in cazul in care celelalte trei cai nu sint valide, ne vom trezi cu un interpretor de comenzi pentru suprautilizator si un sistem neconfigurat. Acesta este unul dintre riscurile de securitate despre care vorbeam in subcapitolul legat de programele de incarcare, datorita faptului ca prin intermediul lor se poate forta nucleul sa execute calea /bin/sh, sau a oricarui alt executabil preprogramat. Folosindu-ne de cunostintele acumulate pe parcursul ghidului, voi arata, catre final, in capitolul [inca nu i-am gasit un nume] cum se poate configura si pune in picioare in mod manual un sistem folosindu-ne doar de interpetatorul de comenzi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Tot procesul descris pana in acest moment ar trebui sa fie independent de distributia folosita. In schimb, odata cu executia programului cu una dintre cele 3 cai enumerate mai devreme, lucrurile tind sa devina specifice (dar nu exagerat) distributiei, sau, mai exact, specifice unui stil de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Lumea tinde sa-i atribuie lui Slackware si derivatelor sale stilul &amp;quot;BSD&amp;quot;, iar distributiilor ca Fedora Core, SuSe, Mandriva s.a. stilul &amp;quot;System V&amp;quot;. BSD si System V au fost, acum multi ani, niste versiuni de UNIX care, dupa cum se vede, au influentat sistemele de operare actuale. Ele isi mai continua si astazi existenta prin rudele lor de grad I, cum ar fi, in cazul lui System V, UnixWare, iar, in cazul lui BSD, Open/Net/FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta categorisire, in schimb, daca este luata la puricat, nu este tocmai corecta. Slackware se foloseste de stilul de initializare &amp;quot;System V&amp;quot;, doar ca il abordeaza intr-o maniera 'mai BSD', simplificandu-l, dupa cum vom vedea. Nu am sa intru detalii legate de diferentele de abordare a initializarii de catre, sa zicem, Mandriva si Slackware, nu asta este scopul ghidului. In schimb, la final, odata inteles modul in care Slackware 'vede lumea', cititorul se poate folosi de cunostiintele acumulate pentru a compara toate distributiile GNU/Linux, daca doreste :~)&lt;br /&gt;
&lt;br /&gt;
====sysvinit====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Slackware, ca si majoritatea celorlalte distributii, se foloseste de suita de utilitare sysvinit (instalata prestabilit). O scurta descriere a pachetului, insotita de o lista cu programele incluse in el, ar fi urmatoarea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ echo -e \\n &amp;quot;Descriere:&amp;quot;; head -n14 /var/log/packages/sysvinit-2.84-i486-69; \&lt;br /&gt;
echo -e \\n\\n &amp;quot;Lista cu programe:&amp;quot;; grep -e [18].gz$ /var/log/packages/sysinit-2.84-i486-69 | \&lt;br /&gt;
awk -F/ ' { print $4 } ' | awk -F. ' { print $1 } '&lt;br /&gt;
&lt;br /&gt;
Descriere:&lt;br /&gt;
PACKAGE NAME:     sysvinit-2.84-i486-69&lt;br /&gt;
COMPRESSED PACKAGE SIZE:     296 K&lt;br /&gt;
UNCOMPRESSED PACKAGE SIZE:     650 K&lt;br /&gt;
PACKAGE LOCATION: /var/log/mount/slackware/a/sysvinit-2.84-i486-69.tgz&lt;br /&gt;
PACKAGE DESCRIPTION:&lt;br /&gt;
sysvinit: sysvinit (init, the parent of all processes)&lt;br /&gt;
sysvinit:&lt;br /&gt;
sysvinit: System V style init programs by Miquel van Smoorenburg that control&lt;br /&gt;
sysvinit: the booting and shutdown of your system.  These support a number of&lt;br /&gt;
sysvinit: system runlevels, each with a specific set of utilities spawned.&lt;br /&gt;
sysvinit: For example, the normal system runlevel is 3, which starts agetty&lt;br /&gt;
sysvinit: on virtual consoles tty1 - tty6.  Runlevel 4 starts xdm.&lt;br /&gt;
sysvinit: Runlevel 0 shuts the system down.&lt;br /&gt;
sysvinit:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lista cu programe:&lt;br /&gt;
last&lt;br /&gt;
runlevel&lt;br /&gt;
killall5&lt;br /&gt;
shutdown&lt;br /&gt;
poweroff&lt;br /&gt;
init&lt;br /&gt;
halt&lt;br /&gt;
pidof&lt;br /&gt;
reboot&lt;br /&gt;
telinit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observam ca unul dintre programele incluse in pachet poarta denumirea de init. II aflam calea absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ su -c 'which init'&lt;br /&gt;
Password:&lt;br /&gt;
/sbin/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Avand respectiva cale, inseamna ca ar trebui sa fie primul program executat de nucleu. Ne putem convinge de acest lucru folosind comanda pstree(1), care ne va afisa un arbore de procese.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ pstree -np&lt;br /&gt;
init(1)-+-keventd(2)&lt;br /&gt;
        |-ksoftirqd_CPU0(3)&lt;br /&gt;
        |-kswapd(4)&lt;br /&gt;
        |-bdflush(5)&lt;br /&gt;
        |-kupdated(6)&lt;br /&gt;
        |-khubd(7)&lt;br /&gt;
        |-syslogd(72)&lt;br /&gt;
        |-klogd(75)&lt;br /&gt;
        |-inetd(631)&lt;br /&gt;
        |-dhcpcd(635)&lt;br /&gt;
        |-sshd(639)&lt;br /&gt;
        |-crond(652)&lt;br /&gt;
        |-atd(654)&lt;br /&gt;
        |-gpm(664)&lt;br /&gt;
        |-agetty(667)&lt;br /&gt;
        |-agetty(668)&lt;br /&gt;
        |-agetty(669)&lt;br /&gt;
        |-agetty(670)&lt;br /&gt;
        |-agetty(671)&lt;br /&gt;
        |-bash(860)---startx(958)---xinit(974)-+-X(975)&lt;br /&gt;
        |                                      `-xinitrc(979)---startkde(980)---kwrapper(1020)&lt;br /&gt;
        |-kdeinit(1008)-+-kdeinit(1013)&lt;br /&gt;
        [...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Uitandu-ne la arbore, observam ca, pe langa faptul ca init este primul proces si are pid'ul(tradus?) 1, restul proceselor tind sa izvoreasca din el. Consultandu-i pagina manual (init(8)), aflam niste detalii importante, printre care:&lt;br /&gt;
&lt;br /&gt;
* Init este tatal tuturor proceselor. Este primul program executat de catre nucleul la sfarsitul secventei de initializare al acestuia, fiindu-i atribuit pid-ul cu valoarea 1. ( de mentionat ca nucleul n-are pid'ul 1, ci 0. )&lt;br /&gt;
&lt;br /&gt;
* Printre scopurile sale se numara: Initializarea tuturor celorlalte procese, colectarea proceselor moarte(zombi) si regenerarea unor procese fiu la terminarea lor; Inspectarea, la initializare, a fisierului /etc/inittab, pentru configurarea sistemului.&lt;br /&gt;
&lt;br /&gt;
* Acceptare unor parametrii de executie, de obicei setati prin intermediul unui program de incarcare, care, daca sint specificati, ii pot schimba cursul firesc al derularii.&lt;br /&gt;
&lt;br /&gt;
* Captarea unor semnale si reactionarea la ele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Restul capacitatilor vor fi descrise spre finalul ghidului.&lt;br /&gt;
&lt;br /&gt;
=====/etc/inittab=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum s-a specificat mai sus, init,la executare, va citi fisierul /etc/inittab pentru a sti cum sa configureze sistemul. Conform paginii manual inittab(5), formatul fisierului /etc/inittab este urmatorul:&lt;br /&gt;
&lt;br /&gt;
id:niveluri de rulare:actiune:proces&lt;br /&gt;
&lt;br /&gt;
* Campul id: Trebuie sa contina un sir unic de maximum 4 caractere alfanumerice. Este folosit pentru a identifica fiecare intrare din fisier.&lt;br /&gt;
&lt;br /&gt;
* Niveluri de rulare: In primul rand, nivelul de rulare, conform paginii manual init(8), reprezinta o configuratie software a sistemului care, printre altele, specifica ce procese trebuiesc pornite de catre init. Configuratia se realizeaza prin intermediul unor scripturi BASH, fiecarui nivel de rulare atribuindu-se cel putin unul. Pot exista mai multe niveluri de executie. In Slackware, cele prestabilite sint urmatoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# These are the default runlevels in Slackware:&lt;br /&gt;
#   0 = halt&lt;br /&gt;
#   1 = single user mode&lt;br /&gt;
#   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
#   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
#   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   6 = reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In fisierul /etc/inittab, campul dedicat nivelurilor de rulare trebuie sa contina o lista de niveluri de rulare pentru care trebuie executata o actiune ce, in majoritatea cazurilor. Vom vedea imediat ce inseamna toate acestea.&lt;br /&gt;
&lt;br /&gt;
* Campul actiune: Descrie actiunea pe care init o sa o realizeze pentru o lista de niveluri de rulare. Exista mai multe tipuri de actiuni, printre care:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''respawn''': lanseaza o noua instanta a unui proces, daca acesta isi termina executia&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''wait''': procesul va fi pornit odata cu intrarea in nivelul de rulare, iar init va astepta pana acesta se incheie.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''once''': procesul va fi executat o singura data, de indata ce se va intra in nivelul de rulare&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''sysinit''': intrarea ce contine aceasta actiune specifica procesul ce trebuie executat in timpul initializarii sistemului de catre init. De obicei, acest, dupa cum vom vedea, scriptul BASH /etc/rc.S.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''initdefault''': intrarea ce contine aceasta actiune specifica si nivel de rulare care va fi executat de catre init, imediat dupa ce sistemul a fost initializat (prin intermediul scriptului rc.S.)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''ctrlaltdel''': procesul va fi executat atunci cand init va primi semnalul SIGINIT. Semnalul SIGINIT este trimis atunci cand sint apasate tastele CTRL-ALT-DELETE. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum se observa, majoritatea actiunilor merg mana in mana cu un proces. Procesul este specificat in campul proces.&lt;br /&gt;
&lt;br /&gt;
* Campul proces: Specifica un proces ce trebuie executat la intrarea intr-un nivel de rulare. Procesul poate fi o comanda sau un script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ca sa intelegem mai bine ce inseamna toate acestea, vom analiza un fisier /etc/inittab.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/inittab&lt;br /&gt;
     1  #&lt;br /&gt;
     2  # inittab       This file describes how the INIT process should set up&lt;br /&gt;
     3  #               the system in a certain run-level.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Version:      @(#)inittab             2.04    17/05/93        MvS&lt;br /&gt;
     6  #                                       2.10    02/10/95        PV&lt;br /&gt;
     7  #                                       3.00    02/06/1999      PV&lt;br /&gt;
     8  #                                       4.00    04/10/2002      PV&lt;br /&gt;
     9  #&lt;br /&gt;
    10  # Author:       Miquel van Smoorenburg, &amp;lt;miquels@drinkel.nl.mugnet.org&amp;gt;&lt;br /&gt;
    11  # Modified by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
    12  #&lt;br /&gt;
    13&lt;br /&gt;
    14  # These are the default runlevels in Slackware:&lt;br /&gt;
    15  #   0 = halt&lt;br /&gt;
    16  #   1 = single user mode&lt;br /&gt;
    17  #   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    18  #   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
    19  #   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
    20  #   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    21  #   6 = reboot&lt;br /&gt;
    22&lt;br /&gt;
    23  # Default runlevel. (Do not set to 0 or 6)&lt;br /&gt;
    24  id:3:initdefault:&lt;br /&gt;
    25&lt;br /&gt;
    26  # System initialization (runs when system boots).&lt;br /&gt;
    27  si:S:sysinit:/etc/rc.d/rc.S&lt;br /&gt;
    28&lt;br /&gt;
    29  # Script to run when going single user (runlevel 1).&lt;br /&gt;
    30  su:1S:wait:/etc/rc.d/rc.K&lt;br /&gt;
    31&lt;br /&gt;
    32  # Script to run when going multi user.&lt;br /&gt;
    33  rc:2345:wait:/etc/rc.d/rc.M&lt;br /&gt;
    34&lt;br /&gt;
    35  # What to do at the &amp;quot;Three Finger Salute&amp;quot;.&lt;br /&gt;
    36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&lt;br /&gt;
    37&lt;br /&gt;
    38  # Runlevel 0 halts the system.&lt;br /&gt;
    39  l0:0:wait:/etc/rc.d/rc.0&lt;br /&gt;
    40&lt;br /&gt;
    41  # Runlevel 6 reboots the system.&lt;br /&gt;
    42  l6:6:wait:/etc/rc.d/rc.6&lt;br /&gt;
    43&lt;br /&gt;
    44  # These are the standard console login getties in multiuser mode:&lt;br /&gt;
    45  c1:1235:respawn:/sbin/agetty 38400 tty1 linux&lt;br /&gt;
    46  c2:1235:respawn:/sbin/agetty 38400 tty2 linux&lt;br /&gt;
    47  c3:1235:respawn:/sbin/agetty 38400 tty3 linux&lt;br /&gt;
    48  c4:1235:respawn:/sbin/agetty 38400 tty4 linux&lt;br /&gt;
    49  c5:1235:respawn:/sbin/agetty 38400 tty5 linux&lt;br /&gt;
    50  c6:12345:respawn:/sbin/agetty 38400 tty6 linux&lt;br /&gt;
    51&lt;br /&gt;
    52  # Runlevel 4 used to be for an X window only system, until we discovered&lt;br /&gt;
    53  # that it throws init into a loop that keeps your load avg at least 1 all&lt;br /&gt;
    54  # the time. Thus, there is now one getty opened on tty6. Hopefully no one&lt;br /&gt;
    55  # will notice. ;^)&lt;br /&gt;
    56  # It might not be bad to have one text console anyway, in case something&lt;br /&gt;
    57  # happens to X.&lt;br /&gt;
    58  x1:4:respawn:/etc/rc.d/rc.4&lt;br /&gt;
    59&lt;br /&gt;
    60  # End of /etc/inittab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Vom analiza fiecare intrare, explicand-o.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Prima intrare, cea de la linia 24, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;id&amp;quot; (datorita campului id, faptul ca valoare campului coincide cu numele acestuia nu are vreo importanta). Campul nivelului de rulare este ocupat de caracterul &amp;quot;3&amp;quot;. Campul actiunii este ocupat de 'initdefault', ceea ce inseamna ca init va intra in nivelul de rulare specificat de catre acest camp, adica, in cazul nostru, &amp;quot;3&amp;quot;. Campul proces lipseste doarece intrarea, continand actiunea 'initdefault', nu necesita un proces, acesta fiind oricum ignorat daca ar fi specificat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A doua intrare, cea de la linia 27, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;si&amp;quot;. Campul nivelului de rulare este ocupat de caracterul &amp;quot;S&amp;quot;.Campul actiunii este ocupat de  catre &amp;quot;sysinit&amp;quot;, iar procesul este scriptul /etc/rc.d/rc.S. Faptul ca &amp;quot;sysinit&amp;quot; ocupa campul actiune ii spune lui init sa execute procesul din campul proces (in cazul acest, ii spune lui init sa execute scriptul /etc/rc.d/rc.S) inainte de a intra in vreun nivel de rulare(nivelul &amp;quot;3&amp;quot;, in cazul nostru ^^).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treia intrare, cea de la linia 30, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;su&amp;quot;. Campul nivelului de rulare este &amp;quot;1S&amp;quot;, ceea ce-nseamna ca intrarea se aplica atat nivelului de rulare &amp;quot;1&amp;quot;, cat si nivelului de rulare &amp;quot;S&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.K. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A patra intrare, cea de la linia 33, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;rc&amp;quot;. Campul nivelelor de rulare este &amp;quot;2345&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelelor de rulare &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot; si &amp;quot;5&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.M. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A cincea intrare, cea de la linia 36, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;ca&amp;quot;. Campul nivelelor de rulare este gol. Campul actiunii este ocupat de catre &amp;quot;ctrlaltdel&amp;quot;, iar procesul de catre comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Faptul ca &amp;quot;ctrlaltdel&amp;quot; ocupa campul actiune ii spune lui init ca, atunci cand sint apasate tastele CTRL+ALT+DELETE la consola, sa execute procesul din campul proces, in cazul nostru comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Aceasta actiune nu necesita un nivel de rulare, presupunandu-se ca, daca ajungem la o consola sa apasam cele trei taste mai devreme mentionate, sintem deja intr-un nivel de rulare cu un sistem mai mult sau mai putin configurat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A sasea intrare, cea de la linia 39, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l0&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;0&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;0&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.0. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.0 atunci cand va intra in nivelul de rulare &amp;quot;0&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A saptea intrare, cea de la linia 42, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l6&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;6&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;6&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.6. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.6 atunci cand va intra in nivelul de rulare &amp;quot;6&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmatoarele 5 intrari -- de la linia 45 la linia 49 -- sint aproape identice, singurele lucruri care le deosebesc fiind campul care le identifica( oare de ce?:-) ) si penultimul parametru de executie al comenzii din campul proces. Toate au la campul nivelurilor de rulare caracterele &amp;quot;1235&amp;quot;. Toate au in campul actiunii &amp;quot;respawn&amp;quot;, iar la proces comanda &amp;quot;/sbin/agetty 38400 tty&amp;lt;x&amp;gt; linux&amp;quot;, &amp;lt;x&amp;gt; diferind de la intrare la intrare. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa regenereze procesul din campul proces, cand acesta isi termina executia. In cazul nostru, init va regenera o sesiune de identificare(engl. login prompt) in cazul in care aceasta se va sfarsi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treisprezecea intrare, cea de la linia 50, este are aceleasi proprietati ca si ultimele 5 intrari, doar ca intrarea este aplicata si nivelului de rulare &amp;quot;4&amp;quot;, spre deosebire de precedentele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ultima intrare, cea de la linia 58, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;x1&amp;quot;. Campul nivelurilor de rulare este ocupat de catre caracterul &amp;quot;4&amp;quot;. Campul actiune este ocupat de catre &amp;quot;respawn&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.4. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa reexecute scriptul /etc/rc.d/rc.4, cand acesta se va termina.&lt;br /&gt;
&lt;br /&gt;
=====Lamuriri necesare pentru a continua. Mica erata a ceea ce a fost expus pana acum.=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Probabil ca se observa niste neconcordante intre anumite lucruri ce-au fost descrise pana acum. De exemplu: Inainte sa depanam fisierul /etc/inittab, s-a spus ca valoarea din campul proces reprezinta un proces (ce, dupa cum am observat, poate fi o comanda sau un script) care va fi executat de catre init _l-a intrarea intr-un nivel de rulare_, dar noi am observat ca intr-unele intrari campul nivelurilor de rulare este gol, pe cand campul proces contine o valoare. De ce am spus asta? Pai, in primul rand, ca este mai usor de inteles un lucru partial adevarat, urmat de o lamurire, decat daca as intra in detalii de la bun inceput; si, in plus, explicatiile detaliate duc, dupa cum se pare, la exprimari tautologice ( ca sa fiu delicat :~) ), datorita unor termeni care nu se impac intr-o expresie/propozitie... Bun. Revenind.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Init, pe langa faptul ca este primul program executat, mai este si ultimul, -- asta in cazul in care procesul de oprire al calculatorului se deruleaza normal si corect. Ce ne spune acest lucru? Pai ne spune mai multe lucruri. Ne spune, de exemplu, ca pe parcursul timpului de executie al lui init, sistemul este 1. configurat 2. intretinut 3. deconfigurat. Vom urma in detaliu stagiile (1) si (3), dar hai sa spunem cateva lucruri despre fiecare in parte, chiar daca voi prelua anumite idei ce-au fost deja expuse.&lt;br /&gt;
&lt;br /&gt;
* (1) Nucleul nu-l arunca pe init intr-un mediu complet configurat. De fapt, luat in mare, nu il lasa decat cu un sistem de fisiere radacina montat cu proprietatea de numai-citire, dupa care se retrage linistit in fundal, unde isi vede de treaba, printre altele punand la dispozitia programelor o suita de apeluri de sistem prin intermediu carora acestea comunica cu el. Pana ajungem noi sa ne autentificam, init are mult de munca. De fapt, prea il elogiez, caci el nu face toata treaba de unul singur, ci mai degraba o coordoneaza. Am observat ca el citeste fisierul /etc/inittab si ca de acolo afla, printre altele, ce scripturi sa execute pentru configurarea sistemului. Comenzile din acele scripturi, de fapt, pun in picioare sistemul, iar unul dintre rolurile lui init este sa ruleze aceste scripturi. Acest lucru ofera o mare flexibilitate administratorului sistemului, deoarece scripturile sint mai usor de inteles si de schimbat. Va imaginati ce-ar fi insemnat ca init sa faca toata treaba de unul singur, fara sa apeleze la BASH sau alt interpretor de comenzi? Ar fi insemnat ca init sa fie foarte complex, ar fi insemnat ca administratorul de sistem sa ii umble prin codul sursa, daca ar vrea sa schimbe ceva -- orice, dupa care sa-l recompileze s.a.m.d. Ca sa inchei scurta introducere a acestui stagiu, nu mai spun decat ca, in Slackware si derivatele sale, TOATE scripturile de care se foloseste init se afla in directorul /etc/rc.d/. Acest lucru nu este batut in cuie, putand foarte lejer sa schimbam asta prin modificarea campului proces al intrarilor din /etc/inittab, dar este o conventie utila si bine gandita, asa mai bine nu am schimba-o. De asemenea, vom urmari indeaproape fiecare script in parte.&lt;br /&gt;
&lt;br /&gt;
* (2) Cum sta treaba cu intretinerea sistemului? Pai e lesne de imaginat ca, fiind primul program pornit si ruland _mereu_, chiar si dupa ce sistemul a fost configurat si noi deja ne bucuram de facilitile unui client de posta electronica, init nu sta degeaba. S-a specificat mai devreme, cand au fost enumerate unele dintre scopurile sale, ca se ocupa cu initializarea tuturor celorlalte procese, colectarea proceselor moarte s.a. Nu s-a specificat, in schimb, o proprietate specifica tuturor programelor ( a se citi proceselor ) unui sistem compatibil cu standardele ANSI/POSIX. Aceasta proprietate este aceea de a capta semnale. Probabil ca toti stim ce este un semnal, deoarece toti am folosit comanda kill. Stim ca programele pot fi programate(...) sa capteze anumite semnale, si sa interactioneze intr-un anume fel la primirea acestora. Asa face si init, dar spre deosebire de alte programe, ii poate fi specificat si cum sa reactioneze la primirea anumitor semnale. Cum ii specificam asta? Pai cum faceam si pana acum, cand voiam sa-i modelam comportamentul: folosindu-ne de fisierul /etc/inittab. Acum ajungem la acele neconcordante despre care vorbeam mai devreme, anume intrarile din fisierul /etc/inittab care contin nu contin un nivel de rulare, dar contin un proces.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;S-a specificat ca aceasta intrare are urmatoarea influenta asupra lui init: cand init primeste semnalul SIGINIT (care ii este trimis cand sint apasate, la consola, tastele CTRL+ALT+DELETE), acesta executa comanda /sbin/shutdown -t5 -r now. Faptul ca nu este specificat un nivel de rulare nu are vreo importanta, caci intrarea cu aceasta actiune se aplica oricarui 'nivel de rulare'( de fapt, daca init este pornit, nu conteaza daca sistemul este configurat sau ba, daca sintem intr-un nivel de rulare sau nu, va reactiona cum am spus mai devreme. ). Aceasta nu este singura actiune care ii spune lui init sa reactioneze cumva la primirea unui semnal. Distributia vine cu un fisier /etc/inittab care contine inca 2 intrari cu actiuni asemanatoare, anume powerfail si powerokwait, care reactioneaza la semnale primite de la sursa de alimentare neintreruptibila(engl. presc. UPS).&lt;br /&gt;
&lt;br /&gt;
* (3) Despre acest stagiu nu s-a scris deloc pana acum. Pe scurt, deconfigurarea sistemului se face prin configurarea unor nivele de rulare pentru acest scop, nivele de rulare care sa execute anumite scripturi care sa faca, in mare parte, opusul scriptului de initializare + oprirea serviciilor specifice nivelului de rulare in care sintem. Aceste scripturi, in cazul de fata -- si in cazul unei distributii Slackware nemodificate --, sint /etc/rc.0 si /etc/rc.6, specifice nivelurilor de executie &amp;quot;0&amp;quot; si &amp;quot;6&amp;quot;. Le vom urmari indeaproape.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In cele ce urmeaza, vom analiza stagiul (2), mai exact scripturile executate de catre init, folosindu-ne de fisierul /etc/inittab postat aici. Scripturile pe care le vom analiza sint cele care vin cu distributia, mai putin /etc/inittab, caruia i-au fost scoase 2 intrari care oricum n-au sa faca mare diferenta. Vom lua scripturile in ordinea executarii lor de catre init.&lt;br /&gt;
&lt;br /&gt;
=====/etc/rc.S=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Are urmatoarele calitati:&lt;br /&gt;
&lt;br /&gt;
* 1. Este primul script executat de catre init.&lt;br /&gt;
&lt;br /&gt;
* 2. Este rulat inainte de executarea oricarui script specific vreunui nivel de rulare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Scriptul este voluminos. In cele ce urmeaza, continutul sau va fi postat in varianta originala. Nu voi scoate comentariile, acestea fiind de ajutor daca stiti ceva 'engleza tehnica'; daca nu stiti, sau nu intelegeti, oricum voi repeta (si adauga) explicatii in limba romana, pentru fiecare instructiune sau bloc de instructiuni.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatie: Am pornit de la bun inceput de la premiza ca aveti ceva cunostinte legate de interpretorul de comenzi BASH si despre mediul GNU/Linux (comenzi elementare, machetarea fisierelor s.a.m.d.), intr-atat incat sa intelegeti o buna parte din toate cele ce-ar urma, chiar daca doar semantic. Daca nu aveti experienta cu cele mai sus enumerate, puteti profita de rigurozitatea cu care se va incerca explicarea scripturilor si, impreuna cu tutorialele/indrumarele specificate la finalul ghidului, sa analizati mecanismele acestea folosite in viata reala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/rc.d/rc.S&lt;br /&gt;
     1  #!/bin/sh&lt;br /&gt;
     2  #&lt;br /&gt;
     3  # /etc/rc.d/rc.S:  System initialization script.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Mostly written by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
     6  #&lt;br /&gt;
     7&lt;br /&gt;
     8  PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
     9&lt;br /&gt;
    10  # Mount /proc right away:&lt;br /&gt;
    11  /sbin/mount -v proc /proc -n -t proc&lt;br /&gt;
    12&lt;br /&gt;
    13  # If 'nohotplug' was given at boot, or rc.hotplug has been turned off&lt;br /&gt;
    14  # (and a 2.4.x kernel is running), then shut off hotplugging in the&lt;br /&gt;
    15  # kernel now.  Realize that if you turn off hotplugging support that&lt;br /&gt;
    16  # you will have to load all the kernel modules that you need yourself&lt;br /&gt;
    17  # (possibly in /etc/rc.d/rc.modules, which does not promise to list&lt;br /&gt;
    18  # all of them), and make any additional device nodes that you need in&lt;br /&gt;
    19  # the /dev directory.&lt;br /&gt;
    20  if [ -w /proc/sys/kernel/hotplug ]; then&lt;br /&gt;
    21    # Kernel command line option 'nohotplug' given, so we will shut off&lt;br /&gt;
    22    # hotplugging even if it is not a good idea.  Sometimes it *is* a&lt;br /&gt;
    23    # good idea, especially when you're trying to figure out which&lt;br /&gt;
    24    # kernel module is crashing the machine and needs to be added to&lt;br /&gt;
    25    # your /etc/modprobe.d/blacklist (2.6+ kernels) and/or your&lt;br /&gt;
    26    # /etc/hotplug/blacklist (2.4.x kernels).&lt;br /&gt;
    27    if grep -wq nohotplug /proc/cmdline ; then&lt;br /&gt;
    28      echo &amp;quot;/dev/null&amp;quot; &amp;gt; /proc/sys/kernel/hotplug&lt;br /&gt;
    29    elif [ ! -x /etc/rc.d/rc.hotplug ]; then&lt;br /&gt;
    30      # Ignore /etc/rc.d/rc.hotplug on kernels newer than 2.4.x:&lt;br /&gt;
    31      if [ ! &amp;quot;$(uname -r | cut -f 1,2 -d .)&amp;quot; = &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
    32        # We must be running a 2.4.x kernel, so turn off hotplug:&lt;br /&gt;
    33        echo &amp;quot;/dev/null&amp;quot; &amp;gt; /proc/sys/kernel/hotplug&lt;br /&gt;
    34      fi&lt;br /&gt;
    35    fi&lt;br /&gt;
    36  fi&lt;br /&gt;
    37&lt;br /&gt;
    38  # Start devfsd if necessary.  On newer kernels, udev should be used instead.&lt;br /&gt;
    39  if [ -x /etc/rc.d/rc.devfsd ]; then&lt;br /&gt;
    40    /etc/rc.d/rc.devfsd start&lt;br /&gt;
    41  fi&lt;br /&gt;
    42&lt;br /&gt;
    43  # Mount sysfs next, if the kernel supports it:&lt;br /&gt;
    44  if [ -d /sys ]; then&lt;br /&gt;
    45    if cat /proc/filesystems | grep -wq sysfs ; then&lt;br /&gt;
    46      if ! cat /proc/mounts | grep -wq sysfs ; then&lt;br /&gt;
    47        /sbin/mount -v sysfs /sys -n -t sysfs&lt;br /&gt;
    48      fi&lt;br /&gt;
    49    fi&lt;br /&gt;
    50  fi&lt;br /&gt;
    51&lt;br /&gt;
    52  # Enable swapping:&lt;br /&gt;
    53  /sbin/swapon -a&lt;br /&gt;
    54&lt;br /&gt;
    55  # Test to see if the root partition is read-only, like it ought to be.&lt;br /&gt;
    56  READWRITE=no&lt;br /&gt;
    57  if touch /fsrwtestfile 2&amp;gt;/dev/null; then&lt;br /&gt;
    58    rm -f /fsrwtestfile&lt;br /&gt;
    59    READWRITE=yes&lt;br /&gt;
    60  else&lt;br /&gt;
    61    echo &amp;quot;Testing root filesystem status:  read-only filesystem&amp;quot;&lt;br /&gt;
    62  fi&lt;br /&gt;
    63&lt;br /&gt;
    64  # See if a forced filesystem check was requested at shutdown:&lt;br /&gt;
    65  if [ -r /etc/forcefsck ]; then&lt;br /&gt;
    66    FORCEFSCK=&amp;quot;-f&amp;quot;&lt;br /&gt;
    67  fi&lt;br /&gt;
    68&lt;br /&gt;
    69  # Check the root filesystem:&lt;br /&gt;
    70  if [ ! $READWRITE = yes ]; then&lt;br /&gt;
    71    RETVAL=0&lt;br /&gt;
    72    if [ ! -r /etc/fastboot ]; then&lt;br /&gt;
    73      echo &amp;quot;Checking root filesystem:&amp;quot;&lt;br /&gt;
    74      /sbin/fsck $FORCEFSCK -C -a /&lt;br /&gt;
    75      RETVAL=$?&lt;br /&gt;
    76    fi&lt;br /&gt;
    77    # An error code of 2 or higher will require a reboot.&lt;br /&gt;
    78    if [ $RETVAL -ge 2 ]; then&lt;br /&gt;
    79      # An error code equal to or greater than 4 means that some errors&lt;br /&gt;
    80      # could not be corrected.  This requires manual attention, so we&lt;br /&gt;
    81      # offer a chance to try to fix the problem in single-user mode:&lt;br /&gt;
    82      if [ $RETVAL -ge 4 ]; then&lt;br /&gt;
    83        echo&lt;br /&gt;
    84        echo &amp;quot;***********************************************************&amp;quot;&lt;br /&gt;
    85        echo &amp;quot;*** An error occurred during the root filesystem check. ***&amp;quot;&lt;br /&gt;
    86        echo &amp;quot;*** You will now be given a chance to log into the      ***&amp;quot;&lt;br /&gt;
    87        echo &amp;quot;*** system in single-user mode to fix the problem.      ***&amp;quot;&lt;br /&gt;
    88        echo &amp;quot;***                                                     ***&amp;quot;&lt;br /&gt;
    89        echo &amp;quot;*** If you are using the ext2 filesystem, running       ***&amp;quot;&lt;br /&gt;
    90        echo &amp;quot;*** 'e2fsck -v -y &amp;lt;partition&amp;gt;' might help.              ***&amp;quot;&lt;br /&gt;
    91        echo &amp;quot;***********************************************************&amp;quot;&lt;br /&gt;
    92        echo&lt;br /&gt;
    93        echo &amp;quot;Once you exit the single-user shell, the system will reboot.&amp;quot;&lt;br /&gt;
    94        echo&lt;br /&gt;
    95        PS1=&amp;quot;(Repair filesystem) \#&amp;quot;; export PS1&lt;br /&gt;
    96        sulogin&lt;br /&gt;
    97      else # With an error code of 2 or 3, reboot the machine automatically:&lt;br /&gt;
    98        echo&lt;br /&gt;
    99        echo &amp;quot;***********************************&amp;quot;&lt;br /&gt;
   100        echo &amp;quot;*** The filesystem was changed. ***&amp;quot;&lt;br /&gt;
   101        echo &amp;quot;*** The system will now reboot. ***&amp;quot;&lt;br /&gt;
   102        echo &amp;quot;***********************************&amp;quot;&lt;br /&gt;
   103        echo&lt;br /&gt;
   104      fi&lt;br /&gt;
   105      echo &amp;quot;Unmounting file systems.&amp;quot;&lt;br /&gt;
   106      /sbin/umount -a -r&lt;br /&gt;
   107      /sbin/mount -n -o remount,ro /&lt;br /&gt;
   108      echo &amp;quot;Rebooting system.&amp;quot;&lt;br /&gt;
   109      sleep 2&lt;br /&gt;
   110      reboot -f&lt;br /&gt;
   111    fi&lt;br /&gt;
   112    # Remount the root filesystem in read-write mode&lt;br /&gt;
   113    echo &amp;quot;Remounting root device with read-write enabled.&amp;quot;&lt;br /&gt;
   114    /sbin/mount -w -v -n -o remount /&lt;br /&gt;
   115    if [ $? -gt 0 ] ; then&lt;br /&gt;
   116      echo&lt;br /&gt;
   117      echo &amp;quot;Attempt to remount root device as read-write failed!  This is going to&amp;quot;&lt;br /&gt;
   118      echo &amp;quot;cause serious problems.&amp;quot;&lt;br /&gt;
   119      echo&lt;br /&gt;
   120      echo &amp;quot;If you're using the UMSDOS filesystem, you **MUST** mount the root partition&amp;quot;&lt;br /&gt;
   121      echo &amp;quot;read-write!  You can make sure the root filesystem is getting mounted &amp;quot;&lt;br /&gt;
   122      echo &amp;quot;read-write with the 'rw' flag to Loadlin:&amp;quot;&lt;br /&gt;
   123      echo&lt;br /&gt;
   124      echo &amp;quot;loadlin vmlinuz root=/dev/hda1 rw   (replace /dev/hda1 with your root device)&amp;quot;&lt;br /&gt;
   125      echo&lt;br /&gt;
   126      echo &amp;quot;Normal bootdisks can be made to mount a system read-write with the rdev command:&amp;quot;&lt;br /&gt;
   127      echo&lt;br /&gt;
   128      echo &amp;quot;rdev -R /dev/fd0 0&amp;quot;&lt;br /&gt;
   129      echo&lt;br /&gt;
   130      echo &amp;quot;You can also get into your system by using a boot disk with a command like this&amp;quot;&lt;br /&gt;
   131      echo &amp;quot;on the LILO prompt line:  (change the root partition name as needed)&amp;quot;&lt;br /&gt;
   132      echo&lt;br /&gt;
   133      echo &amp;quot;LILO: mount root=/dev/hda1 rw&amp;quot;&lt;br /&gt;
   134      echo&lt;br /&gt;
   135      echo &amp;quot;Please press ENTER to continue, then reboot and use one of the above methods to&amp;quot;&lt;br /&gt;
   136      echo -n &amp;quot;get into your machine and start looking for the problem. &amp;quot;&lt;br /&gt;
   137      read junk;&lt;br /&gt;
   138    fi&lt;br /&gt;
   139  else&lt;br /&gt;
   140    echo &amp;quot;Testing root filesystem status:  read-write filesystem&amp;quot;&lt;br /&gt;
   141    if cat /etc/fstab | grep ' / ' | grep -wq umsdos ; then&lt;br /&gt;
   142      ROOTTYPE=&amp;quot;umsdos&amp;quot;&lt;br /&gt;
   143    fi&lt;br /&gt;
   144    if [ ! &amp;quot;$ROOTTYPE&amp;quot; = &amp;quot;umsdos&amp;quot; ]; then # no warn for UMSDOS&lt;br /&gt;
   145      echo&lt;br /&gt;
   146      echo &amp;quot;*** ERROR: Root partition has already been mounted read-write. Cannot check!&amp;quot;&lt;br /&gt;
   147      echo&lt;br /&gt;
   148      echo &amp;quot;For filesystem checking to work properly, your system must initially mount&amp;quot;&lt;br /&gt;
   149      echo &amp;quot;the root partition as read only. Please modify your kernel with 'rdev' so that&amp;quot;&lt;br /&gt;
   150      echo &amp;quot;it does this. If you're booting with LILO, add a line:&amp;quot;&lt;br /&gt;
   151      echo&lt;br /&gt;
   152      echo &amp;quot;   read-only&amp;quot;&lt;br /&gt;
   153      echo&lt;br /&gt;
   154      echo &amp;quot;to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it.&amp;quot;&lt;br /&gt;
   155      echo&lt;br /&gt;
   156      echo &amp;quot;If you boot from a kernel on a floppy disk, put it in the drive and type:&amp;quot;&lt;br /&gt;
   157      echo &amp;quot;   rdev -R /dev/fd0 1&amp;quot;&lt;br /&gt;
   158      echo&lt;br /&gt;
   159      echo &amp;quot;If you boot from a bootdisk, or with Loadlin, you can add the 'ro' flag.&amp;quot;&lt;br /&gt;
   160      echo&lt;br /&gt;
   161      echo &amp;quot;This will fix the problem *AND* eliminate this annoying message. :^)&amp;quot;&lt;br /&gt;
   162      echo&lt;br /&gt;
   163      echo -n &amp;quot;Press ENTER to continue. &amp;quot;&lt;br /&gt;
   164      read junk;&lt;br /&gt;
   165    fi&lt;br /&gt;
   166  fi # Done checking root filesystem&lt;br /&gt;
   167&lt;br /&gt;
   168  # Any /etc/mtab that exists here is old, so we delete it to start over:&lt;br /&gt;
   169  /bin/rm -f /etc/mtab*&lt;br /&gt;
   170  # Remounting the / partition will initialize the new /etc/mtab:&lt;br /&gt;
   171  /sbin/mount -w -o remount /&lt;br /&gt;
   172&lt;br /&gt;
   173  # Fix /etc/mtab to list sys and proc if they were not yet entered in&lt;br /&gt;
   174  # /etc/mtab because / was still mounted read-only:&lt;br /&gt;
   175  if [ -d /proc/sys ]; then&lt;br /&gt;
   176    /sbin/mount -f proc /proc -t proc&lt;br /&gt;
   177  fi&lt;br /&gt;
   178  if [ -d /sys/bus ]; then&lt;br /&gt;
   179    /sbin/mount -f sysfs /sys -t sysfs&lt;br /&gt;
   180  fi&lt;br /&gt;
   181&lt;br /&gt;
   182  # Initialize udev to manage /dev entries and hotplugging for 2.6.x kernels.&lt;br /&gt;
   183  # You may turn off udev by making the /etc/rc.d/rc.udev file non-executable,&lt;br /&gt;
   184  # but in the 2.6.x+ kernels udev has taken over the job of hotplug (finding&lt;br /&gt;
   185  # hardware and loading the kernel modules for it, as well as creating device&lt;br /&gt;
   186  # nodes in /dev).  Realize that if you turn off udev that you will have to&lt;br /&gt;
   187  # load all the kernel modules that you need yourself (possibly in&lt;br /&gt;
   188  # /etc/rc.d/rc.modules, which does not promise to list all of them), and&lt;br /&gt;
   189  # make any additional device nodes that you need in the /dev directory.&lt;br /&gt;
   190  # Even USB and IEEE1394 devices will need to have the modules loaded by&lt;br /&gt;
   191  # hand if udev is not used with a 2.6 kernel.  So use it.  :-)&lt;br /&gt;
   192  if cat /proc/mounts | grep -wq sysfs &amp;amp;&amp;amp; cat /proc/filesystems | grep -wq tmpfs ; then&lt;br /&gt;
   193    if ! grep -wq nohotplug /proc/cmdline ; then&lt;br /&gt;
   194      if [ -x /etc/rc.d/rc.udev ]; then&lt;br /&gt;
   195        /bin/sh /etc/rc.d/rc.udev start&lt;br /&gt;
   196        /bin/sh /lib/udev/udev.count_events.sh&lt;br /&gt;
   197      fi&lt;br /&gt;
   198    fi&lt;br /&gt;
   199  fi&lt;br /&gt;
   200&lt;br /&gt;
   201  # Set the system time from the hardware clock using hwclock --hctosys.&lt;br /&gt;
   202  if [ -x /sbin/hwclock ]; then&lt;br /&gt;
   203    # Check for a broken motherboard RTC clock (where ioports for rtc are&lt;br /&gt;
   204    # unknown) to prevent hwclock causing a hang:&lt;br /&gt;
   205    if ! grep -q -w rtc /proc/ioports ; then&lt;br /&gt;
   206      CLOCK_OPT=&amp;quot;--directisa&amp;quot;&lt;br /&gt;
   207    fi&lt;br /&gt;
   208    if grep -wq &amp;quot;^UTC&amp;quot; /etc/hardwareclock ; then&lt;br /&gt;
   209      echo &amp;quot;Setting system time from the hardware clock (UTC).&amp;quot;&lt;br /&gt;
   210      /sbin/hwclock $CLOCK_OPT --utc --hctosys&lt;br /&gt;
   211    else&lt;br /&gt;
   212      echo &amp;quot;Setting system time from the hardware clock (localtime).&amp;quot;&lt;br /&gt;
   213      /sbin/hwclock $CLOCK_OPT --localtime --hctosys&lt;br /&gt;
   214    fi&lt;br /&gt;
   215  fi&lt;br /&gt;
   216&lt;br /&gt;
   217  # Configure ISA Plug-and-Play devices:&lt;br /&gt;
   218  if [ -r /etc/isapnp.conf ]; then&lt;br /&gt;
   219    if [ -x /sbin/isapnp ]; then&lt;br /&gt;
   220      /sbin/isapnp /etc/isapnp.conf&lt;br /&gt;
   221    fi&lt;br /&gt;
   222  fi&lt;br /&gt;
   223&lt;br /&gt;
   224  # This loads any kernel modules that are needed.  These might be required to&lt;br /&gt;
   225  # use your ethernet card, sound card, or other optional hardware.&lt;br /&gt;
   226  # Priority is given first to a script named &amp;quot;rc.modules.local&amp;quot;, then&lt;br /&gt;
   227  # to &amp;quot;rc.modules-$FULL_KERNEL_VERSION&amp;quot;, and finally to the plain &amp;quot;rc.modules&amp;quot;.&lt;br /&gt;
   228  # Note that if /etc/rc.d/rc.modules.local is found, then that will be the ONLY&lt;br /&gt;
   229  # rc.modules script the machine will run, so make sure it has everything in&lt;br /&gt;
   230  # it that you need.&lt;br /&gt;
   231  if [ -x /etc/rc.d/rc.modules.local -a -r /proc/modules ]; then&lt;br /&gt;
   232    echo &amp;quot;Running /etc/rc.d/rc.modules.local:&amp;quot;&lt;br /&gt;
   233    /bin/sh /etc/rc.d/rc.modules.local&lt;br /&gt;
   234  elif [ -x /etc/rc.d/rc.modules-$(uname -r) -a -r /proc/modules ]; then&lt;br /&gt;
   235    echo &amp;quot;Running /etc/rc.d/rc.modules-$(uname -r):&amp;quot;&lt;br /&gt;
   236    . /etc/rc.d/rc.modules-$(uname -r)&lt;br /&gt;
   237  elif [ -x /etc/rc.d/rc.modules -a -r /proc/modules -a -L /etc/rc.d/rc.modules ]; then&lt;br /&gt;
   238    echo &amp;quot;Running /etc/rc.d/rc.modules -&amp;gt; $(readlink /etc/rc.d/rc.modules):&amp;quot;&lt;br /&gt;
   239    . /etc/rc.d/rc.modules&lt;br /&gt;
   240  elif [ -x /etc/rc.d/rc.modules -a -r /proc/modules ]; then&lt;br /&gt;
   241    echo &amp;quot;Running /etc/rc.d/rc.modules:&amp;quot;&lt;br /&gt;
   242    . /etc/rc.d/rc.modules&lt;br /&gt;
   243  fi&lt;br /&gt;
   244&lt;br /&gt;
   245  # Configure runtime kernel parameters:&lt;br /&gt;
   246  if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then&lt;br /&gt;
   247    /sbin/sysctl -e -p /etc/sysctl.conf&lt;br /&gt;
   248  fi&lt;br /&gt;
   249&lt;br /&gt;
   250  # Initialize the Logical Volume Manager.&lt;br /&gt;
   251  # This won't start unless we find /etc/lvmtab (LVM1) or&lt;br /&gt;
   252  # /etc/lvm/backup/ (LVM2).  This is created by /sbin/vgscan, so to&lt;br /&gt;
   253  # use LVM you must run /sbin/vgscan yourself the first time (and&lt;br /&gt;
   254  # create some VGs and LVs).&lt;br /&gt;
   255  if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then&lt;br /&gt;
   256    echo &amp;quot;Initializing LVM (Logical Volume Manager):&amp;quot;&lt;br /&gt;
   257    # Check for device-mapper support.&lt;br /&gt;
   258    if ! cat /proc/devices | grep -wq device-mapper ; then&lt;br /&gt;
   259      # If device-mapper exists as a module, try to load it.&lt;br /&gt;
   260      if [ -r /lib/modules/$(/bin/uname -r)/kernel/drivers/md/dm-mod.ko ]; then&lt;br /&gt;
   261        insmod /lib/modules/$(/bin/uname -r)/kernel/drivers/md/dm-mod.ko&lt;br /&gt;
   262      fi&lt;br /&gt;
   263    fi&lt;br /&gt;
   264    # Scan for new volume groups:&lt;br /&gt;
   265    KERNEL_VERSION=$(/bin/uname -r | /bin/cut -d . -f 1,2)&lt;br /&gt;
   266    if [ &amp;quot;$KERNEL_VERSION&amp;quot; == &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
   267      /sbin/vgscan 2&amp;gt; /dev/null&lt;br /&gt;
   268    else&lt;br /&gt;
   269      /sbin/vgscan --ignorelockingfailure 2&amp;gt; /dev/null&lt;br /&gt;
   270    fi&lt;br /&gt;
   271    if [ $? = 0 ]; then&lt;br /&gt;
   272      # Make volume groups available to the kernel.&lt;br /&gt;
   273      # This should also make logical volumes available.&lt;br /&gt;
   274      if [ &amp;quot;$KERNEL_VERSION&amp;quot; == &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
   275        /sbin/vgchange -ay&lt;br /&gt;
   276      else&lt;br /&gt;
   277        /sbin/vgchange -ay --ignorelockingfailure&lt;br /&gt;
   278      fi&lt;br /&gt;
   279      # Enable swapping again in case any LVs are used for swap.  Ignore previous error.  :-)&lt;br /&gt;
   280      /sbin/swapon -a&lt;br /&gt;
   281    fi&lt;br /&gt;
   282  fi&lt;br /&gt;
   283&lt;br /&gt;
   284  # Check all the non-root filesystems:&lt;br /&gt;
   285  if [ ! -r /etc/fastboot ]; then&lt;br /&gt;
   286    echo &amp;quot;Checking non-root filesystems:&amp;quot;&lt;br /&gt;
   287    /sbin/fsck $FORCEFSCK -C -R -A -a&lt;br /&gt;
   288  fi&lt;br /&gt;
   289&lt;br /&gt;
   290  # Mount usbfs if we're not using hotplug:&lt;br /&gt;
   291  if grep -wq usbfs /proc/filesystems; then&lt;br /&gt;
   292    if /bin/grep -wq nohotplug /proc/cmdline || /bin/test ! -x /etc/rc.d/rc.hotplug ; then&lt;br /&gt;
   293      if ! cat /proc/mounts | grep -wq usbfs ; then&lt;br /&gt;
   294        /sbin/mount -v usbfs /proc/bus/usb -t usbfs&lt;br /&gt;
   295      fi&lt;br /&gt;
   296    fi&lt;br /&gt;
   297  fi&lt;br /&gt;
   298&lt;br /&gt;
   299  # Mount non-root file systems in fstab, but not NFS or SMB&lt;br /&gt;
   300  # because TCP/IP is not yet configured, and not proc or sysfs&lt;br /&gt;
   301  # because those have already been mounted.  Also check that&lt;br /&gt;
   302  # devpts is not already mounted before attempting to mount&lt;br /&gt;
   303  # it.  With 2.4.x kernels devpts is mounted from an fstab&lt;br /&gt;
   304  # entry while with a 2.6.x or newer kernel udev mounts it.&lt;br /&gt;
   305  # We also need to wait a little bit to let USB and other&lt;br /&gt;
   306  # hotplugged devices settle (sorry to slow down the boot):&lt;br /&gt;
   307  echo &amp;quot;Mounting non-root local filesystems:&amp;quot;&lt;br /&gt;
   308  sleep 3&lt;br /&gt;
   309  if /bin/grep -wq devpts /proc/mounts ; then&lt;br /&gt;
   310    /sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs,nodevpts&lt;br /&gt;
   311  else&lt;br /&gt;
   312    /sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs&lt;br /&gt;
   313  fi&lt;br /&gt;
   314&lt;br /&gt;
   315  # Enable swapping again.  This is needed in case a swapfile is used,&lt;br /&gt;
   316  # as it can't be enabled until the filesystem it resides on has been&lt;br /&gt;
   317  # mounted read-write.&lt;br /&gt;
   318  /sbin/swapon -a&lt;br /&gt;
   319&lt;br /&gt;
   320  # Clean up some temporary files:&lt;br /&gt;
   321  ( cd /var/log/setup/tmp &amp;amp;&amp;amp; rm -rf * )&lt;br /&gt;
   322  /bin/rm -f /var/run/utmp /var/run/*pid /etc/nologin /var/run/lpd* \&lt;br /&gt;
   323    /var/run/ppp* /etc/dhcpc/*.pid /etc/forcefsck /etc/fastboot \&lt;br /&gt;
   324    /var/state/saslauthd/saslauthd.pid&lt;br /&gt;
   325&lt;br /&gt;
   326  # Create /tmp/{.ICE-unix,.X11-unix} if they are not present:&lt;br /&gt;
   327  if [ ! -e /tmp/.ICE-unix ]; then&lt;br /&gt;
   328    mkdir -p /tmp/.ICE-unix&lt;br /&gt;
   329    chmod 1777 /tmp/.ICE-unix&lt;br /&gt;
   330  fi&lt;br /&gt;
   331  if [ ! -e /tmp/.X11-unix ]; then&lt;br /&gt;
   332    mkdir -p /tmp/.X11-unix&lt;br /&gt;
   333    chmod 1777 /tmp/.X11-unix&lt;br /&gt;
   334  fi&lt;br /&gt;
   335&lt;br /&gt;
   336  # Attempt to umount and remove any leftover /initrd:&lt;br /&gt;
   337  if [ -d /initrd ]; then&lt;br /&gt;
   338    umount /initrd/proc 2&amp;gt; /dev/null&lt;br /&gt;
   339    /sbin/umount /initrd 2&amp;gt; /dev/null&lt;br /&gt;
   340    rmdir /initrd 2&amp;gt; /dev/null&lt;br /&gt;
   341    blockdev --flushbufs /dev/ram0 2&amp;gt; /dev/null&lt;br /&gt;
   342  fi&lt;br /&gt;
   343&lt;br /&gt;
   344  # Create a fresh utmp file:&lt;br /&gt;
   345  touch /var/run/utmp&lt;br /&gt;
   346  chown root:utmp /var/run/utmp&lt;br /&gt;
   347  chmod 664 /var/run/utmp&lt;br /&gt;
   348&lt;br /&gt;
   349  if [ &amp;quot;$ROOTTYPE&amp;quot; = &amp;quot;umsdos&amp;quot; ]; then # we need to update any files added in DOS:&lt;br /&gt;
   350    echo &amp;quot;Synchronizing UMSDOS directory structure:&amp;quot;&lt;br /&gt;
   351    echo &amp;quot;  /sbin/umssync -r99 -v- /&amp;quot;&lt;br /&gt;
   352    /sbin/umssync -r99 -v- /&lt;br /&gt;
   353  fi&lt;br /&gt;
   354&lt;br /&gt;
   355  # Setup the /etc/motd to reflect the current kernel level:&lt;br /&gt;
   356  # THIS WIPES ANY CHANGES YOU MAKE TO /ETC/MOTD WITH EACH BOOT.&lt;br /&gt;
   357  # COMMENT THIS OUT IF YOU WANT TO MAKE A CUSTOM VERSION.&lt;br /&gt;
   358  echo &amp;quot;$(/bin/uname -sr).&amp;quot; &amp;gt; /etc/motd&lt;br /&gt;
   359&lt;br /&gt;
   360  # If there are SystemV init scripts for this runlevel, run them.&lt;br /&gt;
   361  if [ -x /etc/rc.d/rc.sysvinit ]; then&lt;br /&gt;
   362    . /etc/rc.d/rc.sysvinit&lt;br /&gt;
   363  fi&lt;br /&gt;
   364&lt;br /&gt;
   365  # Run serial port setup script:&lt;br /&gt;
   366  # CAREFUL!  This can make some systems hang if the rc.serial script isn't&lt;br /&gt;
   367  # set up correctly.  If this happens, you may have to edit the file from a&lt;br /&gt;
   368  # boot disk, and/or set it as non-executable:&lt;br /&gt;
   369  if [ -x /etc/rc.d/rc.serial ]; then&lt;br /&gt;
   370    sh /etc/rc.d/rc.serial start&lt;br /&gt;
   371  fi&lt;br /&gt;
   372&lt;br /&gt;
   373  # Carry an entropy pool between reboots to improve randomness.&lt;br /&gt;
   374  if [ -f /etc/random-seed ]; then&lt;br /&gt;
   375    echo &amp;quot;Using /etc/random-seed to initialize /dev/urandom.&amp;quot;&lt;br /&gt;
   376    cat /etc/random-seed &amp;gt; /dev/urandom&lt;br /&gt;
   377  fi&lt;br /&gt;
   378  # Use the pool size from /proc, or 512 bytes:&lt;br /&gt;
   379  if [ -r /proc/sys/kernel/random/poolsize ]; then&lt;br /&gt;
   380    dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2&amp;gt; /dev/null&lt;br /&gt;
   381  else&lt;br /&gt;
   382    dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2&amp;gt; /dev/null&lt;br /&gt;
   383  fi&lt;br /&gt;
   384  chmod 600 /etc/random-seed&lt;br /&gt;
   385&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Preferabil sa deschideti de doua ori pagina, ca sa va fie mai comoda orientarea.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;linie/i&amp;gt;: &amp;lt;explicatie&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;8: Este setata variabila de mediu PATH. PATH are urmatoarea forma: director:director:director[:director...] si urmatoarea calitate: Ii spune interpretorului in ce directoare sa se uite pentru fisierele executabile care nu au calea absoluta specificata.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;11: Este montat sistemul de fisiere virtual procfs. Folosindu-ne acest sistem de fisiere, vom putea afla informatii ce reflecta starea curenta a nucleului. Vom vedea imediat despre ce este vorba.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;20-36: Se verifica daca fisierul /proc/sys/kernel/hotplug exista si poate fi modificat ( [ -w ] ). Existenta acestui fisier inseamna ca nucleul are suport pentru subsistemul hotplug(traducere?), un sistem de configurare dinamica a componentelor hard. Vom intra in detalii mai tarziu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa aceasta, in cazul in care nucleul are suport pentru hotplug, se verifica daca nucleului i-a fost trimis parametrul de executie &amp;quot;nohotplug&amp;quot;. Aceasta verificare are loc prin inspectarea continutului fisierului /proc/cmdline, fisier ce contine toti parametrii trimisi nucleului de catre programul de incarcare. In cazul in care nucleului i-a fost trimis parametrul de executie &amp;quot;nohotplug&amp;quot;, atunci continutul fisierului /proc/sys/kernel/hotplug este schimbat in &amp;quot;/dev/null&amp;quot;. Continutul fisierului /proc/sys/kernel/hotplug reprezinta calea catre programul care va fi instintat de catre nucleu, cand va avea loc un eveniment(in cazul acesta, cand o componenta hard va fi cuplata). Prin schimbarea continutului fisierului /proc/sys/kernel/hotplug in &amp;quot;/dev/null&amp;quot;, sistemul hotplug este dezactivat, deoarece orice instintare a nucleului cu privire la evenimente hotplug va fi iignorata.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca nucleului n-a fost pornit cu parametrul de executie &amp;quot;nohotplug&amp;quot;, se va verifica daca scriptul /etc/rc.d/rc.hotplug este neexecutabil [ ! -x ], caz in care se verifica daca nucleul NU face parte din bransa 2.4.x, caz in care se dezactiveaza sistemul hotplug, schimbandu-se continutul fisierului /proc/sys/kernel/hotplug in &amp;quot;/dev/null&amp;quot;. Scriptul /etc/rc.d/rc.hotplug porneste sistemul hotplug, asa ca mai devreme a fost verificat pentru a vedea daca este activat de catre administrator. Daca acesta este activat, adica este executabil, va fi rulat de catre nivelele de rulare care vor avea suport pentru hotplug. Vom analiza scriptul /etc/rc.d/rc.hotplug atunci cand ne vom intalni cu executarea acestuia.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;39-41: Se verifica daca scriptul /etc/rc.d/rc.devfsd este prezent si executabil, caz in care scriptul este executat. Scriptul porneste si configureaza, prin intermediul lui defvsd, fisierele /dev. Aceste intrari probabil ca inca mai exista in /etc/rc.S din motive istorice, caci devfs a fost scos din Slackware inca de la versiunea 10.0. Daca doriti sa scadeti cu cateva milisecunde din timpul de initializare, puteti sa stergeti intrarile.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;44-50: Se verifica daca exista directorul /sys [ -d ], caz in care se verifica daca nucleul suporta sistemul de fisiere virtual sysfs. Aceasta verificare se face prin inspectarea fisierului /proc/filesystems, care contine o lista cu sistemele de fisere suportate de nucleu. Daca exista, atunci este verificat fisierul /proc/mounts, pentru a vedea daca sistemul de fisiere sysfs nu este deja montat. /proc/mounts contine o lista cu sistemele de fisiere deja montate. Daca sysfs nu este deja montat, este montat.(...)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Sysfs este un sistem virtual de fisiere, ca si procfs, care ofera informatii despre driverele nucleului. Nucleul din bransa 2.4.x nu are suport pentru acest sistem de fisiere virtual, asa ca daca nu o sa treceti pe 2.6.x, puteti sa stergeti aceste intrari, de doriti cateva milisecunde scazute din timpul de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;56-62: Variabila READWRITE este initializata cu valoarea &amp;quot;no&amp;quot;, ce reflecta starea in care ar trebui sa fie in mod normal montat sistemul de fisiere radacina de catre nucleu, adica cu optiunea de numai-citire. Prin incercarea crearii unui fisier pe sistemul de fisiere radacina, se verifica daca se poate scrie pe acesta, caz in care fisierul test este sters, iar valoarea variabilei READWRITE este schimbata in &amp;quot;yes&amp;quot;, cat sa reflecte adevarata stare a sistemului de fisiere radacina.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;65-67: Se verifica daca exista fisierul citabil /etc/forcefsck, caz in care este initializata variabila FORCEFSK cu valoarea &amp;quot;-f&amp;quot;. Aceasta variabila va fi folosita ca parametru optional pentru comanda fsck.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;70-166: Se verifica daca sistemul de fisiere radacina nu este montat cu optiunea numai-citire, caz in care au loc urmatorii pasi:&lt;br /&gt;
&lt;br /&gt;
* Variabila RETVAL este initializata cu valoarea 0.&lt;br /&gt;
&lt;br /&gt;
* Se verifica daca nu exista fisierul citabil /etc/fastboot, caz in care se verifica integritatea sistemului de fisiere radacina prin intermediul comenzii fsck.&lt;br /&gt;
&lt;br /&gt;
* RETVAL isi schimba continutul in valoarea returnata de catre comanda fsck.&lt;br /&gt;
&lt;br /&gt;
* Se verifica daca valoarea lui RETVAL este mai mare sau egala cu 2, caz in care sa verifica daca valoarea lui RETVAL este mai mare sau egala cu 4, caz in care sintem avertizati de anumite erori ce-au avut loc pe parcursul inspectarii lui fsck si sintem aruncati in modul utilizator-unic, pentru a depana problemele aparute. Altfel, daca valoarea lui RETVAL este intre 2 si 4, sint demontate sistemele de fisiere, iar calculatorul este repornit. &lt;br /&gt;
&lt;br /&gt;
* Daca valoarea lui RETVAL este 0 sau 1, atunci se incearca remontarea sistemului de fisiere radacina cu optiunea de citire-scriere, prin intermediul comenzii mount.&lt;br /&gt;
&lt;br /&gt;
* Valoarea returnata de catre comanda mount este verificata daca este mai mare decat 0, caz in care sintem intampinati cu niste erori si indemnati sa repornim calculatorul, folosindu-ne de sfaturile din avertizari. In schimb, daca valoarea returnata de mount este 0 [...]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;169-171: Este sters fisierul /etc/mtab, iar sistemul de fisiere radacina si sistemele virtuale de fisiere procfs si sysfs sint remontate. Acesti pasi sint facuti pentru ca fisierul /etc/mtab este vechi, de la ultima initializare a sistemului, si trebuie refacut. Fisierul /etc/mtab contine o lista cu sistemele de fisiere montate montate in acest moment.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;192-199: Se incearca pornirea lui udev, care este un inlocuitor al lui hotplug, pentru nucleele din bransa 2.6.x. Intai se verifica daca este montat sistemul virtual de fisiere sysfs si daca nucleul suporta sistemul virtual de fisiere tmpfs, caz in care se verifica daca nucleul n-a fost pornit cu parametrul de executie &amp;quot;nohotplug&amp;quot;, caz in care se verifica daca scriptul /etc/rc.d/rc.udev exista si este executabil, caz in care acest script este executat impreuna cu /lib/udev/udev.count_events.sh.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;202-215: Este setata ora sistemului, folosindu-se de comanda hwclock cu parametrul sau de executie --hctosys. Intai se verifica daca exista executabilul /sbin/hwclock. Daca exista, se verifica intrarile din /proc/ioports (fisier ce contina o lista cu conectorii de intrare-iesire activi) pentru rtc ( real time clock — ceas in timp real, un ceas care continua sa functioneze chiar si atunci cand calculatorul este oprit ). Daca se gaseste o asemenea intrare, variabila CLOCK_OPT este initializata cu valoarea &amp;quot;--directisa&amp;quot;. Se verifica daca fisierul /etc/hardwareclock contine o intrare care incepe cu sirul de caractere &amp;quot;UTC&amp;quot;, caz in care se executa comanta /hwclock, insotita de parametrii $CLOCK_OPT, --utc si --hctosys, altfel se executa aceeasi comanda, dar in loc de --utc se foloseste --localtime.[erm, detaliere..]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3173</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3173"/>
				<updated>2006-11-30T11:38:28Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum observam, init este primul(chiar unicul) program executat de catre nucleu. De fapt, nucleul nu executa _programul_ init, ci programul care are calea absoluta /sbin/init, /etc/init, /bin/init sau /bin/sh, asta in cazul in care nucleului nu-i este specificat ca parametru de executie(init= -- deobicei specificat prin intermediul lui LILO sau altui program de incarcare) altceva(execute_command).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mai observam ca dupa 3 incercari de a executa programul &amp;quot;init&amp;quot;, nucleul isi incearca pentru ultima oara norocul cu /bin/sh. Pe Slackware (si nu numai), fisierul cu aceasta cale absoluta este o legatura cu interpretorul de comenzi BASH. Asta inseamna ca, in cazul in care celelalte trei cai nu sint valide, ne vom trezi cu un interpretor de comenzi pentru suprautilizator si un sistem neconfigurat. Acesta este unul dintre riscurile de securitate despre care vorbeam in subcapitolul legat de programele de incarcare, datorita faptului ca prin intermediul lor se poate forta nucleul sa execute calea /bin/sh, sau a oricarui alt executabil preprogramat. Folosindu-ne de cunostintele acumulate pe parcursul ghidului, voi arata, catre final, in capitolul [inca nu i-am gasit un nume] cum se poate configura si pune in picioare in mod manual un sistem folosindu-ne doar de interpetatorul de comenzi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Tot procesul descris pana in acest moment ar trebui sa fie independent de distributia folosita. In schimb, odata cu executia programului cu una dintre cele 3 cai enumerate mai devreme, lucrurile tind sa devina specifice (dar nu exagerat) distributiei, sau, mai exact, specifice unui stil de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Lumea tinde sa-i atribuie lui Slackware si derivatelor sale stilul &amp;quot;BSD&amp;quot;, iar distributiilor ca Fedora Core, SuSe, Mandriva s.a. stilul &amp;quot;System V&amp;quot;. BSD si System V au fost, acum multi ani, niste versiuni de UNIX care, dupa cum se vede, au influentat sistemele de operare actuale. Ele isi mai continua si astazi existenta prin rudele lor de grad I, cum ar fi, in cazul lui System V, UnixWare, iar, in cazul lui BSD, Open/Net/FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta categorisire, in schimb, daca este luata la puricat, nu este tocmai corecta. Slackware se foloseste de stilul de initializare &amp;quot;System V&amp;quot;, doar ca il abordeaza intr-o maniera 'mai BSD', simplificandu-l, dupa cum vom vedea. Nu am sa intru detalii legate de diferentele de abordare a initializarii de catre, sa zicem, Mandriva si Slackware, nu asta este scopul ghidului. In schimb, la final, odata inteles modul in care Slackware 'vede lumea', cititorul se poate folosi de cunostiintele acumulate pentru a compara toate distributiile GNU/Linux, daca doreste :~)&lt;br /&gt;
&lt;br /&gt;
====sysvinit====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Slackware, ca si majoritatea celorlalte distributii, se foloseste de suita de utilitare sysvinit (instalata prestabilit). O scurta descriere a pachetului, insotita de o lista cu programele incluse in el, ar fi urmatoarea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ echo -e \\n &amp;quot;Descriere:&amp;quot;; head -n14 /var/log/packages/sysvinit-2.84-i486-69; \&lt;br /&gt;
echo -e \\n\\n &amp;quot;Lista cu programe:&amp;quot;; grep -e [18].gz$ /var/log/packages/sysinit-2.84-i486-69 | \&lt;br /&gt;
awk -F/ ' { print $4 } ' | awk -F. ' { print $1 } '&lt;br /&gt;
&lt;br /&gt;
Descriere:&lt;br /&gt;
PACKAGE NAME:     sysvinit-2.84-i486-69&lt;br /&gt;
COMPRESSED PACKAGE SIZE:     296 K&lt;br /&gt;
UNCOMPRESSED PACKAGE SIZE:     650 K&lt;br /&gt;
PACKAGE LOCATION: /var/log/mount/slackware/a/sysvinit-2.84-i486-69.tgz&lt;br /&gt;
PACKAGE DESCRIPTION:&lt;br /&gt;
sysvinit: sysvinit (init, the parent of all processes)&lt;br /&gt;
sysvinit:&lt;br /&gt;
sysvinit: System V style init programs by Miquel van Smoorenburg that control&lt;br /&gt;
sysvinit: the booting and shutdown of your system.  These support a number of&lt;br /&gt;
sysvinit: system runlevels, each with a specific set of utilities spawned.&lt;br /&gt;
sysvinit: For example, the normal system runlevel is 3, which starts agetty&lt;br /&gt;
sysvinit: on virtual consoles tty1 - tty6.  Runlevel 4 starts xdm.&lt;br /&gt;
sysvinit: Runlevel 0 shuts the system down.&lt;br /&gt;
sysvinit:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lista cu programe:&lt;br /&gt;
last&lt;br /&gt;
runlevel&lt;br /&gt;
killall5&lt;br /&gt;
shutdown&lt;br /&gt;
poweroff&lt;br /&gt;
init&lt;br /&gt;
halt&lt;br /&gt;
pidof&lt;br /&gt;
reboot&lt;br /&gt;
telinit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observam ca unul dintre programele incluse in pachet poarta denumirea de init. II aflam calea absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ su -c 'which init'&lt;br /&gt;
Password:&lt;br /&gt;
/sbin/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Avand respectiva cale, inseamna ca ar trebui sa fie primul program executat de nucleu. Ne putem convinge de acest lucru folosind comanda pstree(1), care ne va afisa un arbore de procese.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ pstree -np&lt;br /&gt;
init(1)-+-keventd(2)&lt;br /&gt;
        |-ksoftirqd_CPU0(3)&lt;br /&gt;
        |-kswapd(4)&lt;br /&gt;
        |-bdflush(5)&lt;br /&gt;
        |-kupdated(6)&lt;br /&gt;
        |-khubd(7)&lt;br /&gt;
        |-syslogd(72)&lt;br /&gt;
        |-klogd(75)&lt;br /&gt;
        |-inetd(631)&lt;br /&gt;
        |-dhcpcd(635)&lt;br /&gt;
        |-sshd(639)&lt;br /&gt;
        |-crond(652)&lt;br /&gt;
        |-atd(654)&lt;br /&gt;
        |-gpm(664)&lt;br /&gt;
        |-agetty(667)&lt;br /&gt;
        |-agetty(668)&lt;br /&gt;
        |-agetty(669)&lt;br /&gt;
        |-agetty(670)&lt;br /&gt;
        |-agetty(671)&lt;br /&gt;
        |-bash(860)---startx(958)---xinit(974)-+-X(975)&lt;br /&gt;
        |                                      `-xinitrc(979)---startkde(980)---kwrapper(1020)&lt;br /&gt;
        |-kdeinit(1008)-+-kdeinit(1013)&lt;br /&gt;
        [...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Uitandu-ne la arbore, observam ca, pe langa faptul ca init este primul proces si are pid'ul(tradus?) 1, restul proceselor tind sa izvoreasca din el. Consultandu-i pagina manual (init(8)), aflam niste detalii importante, printre care:&lt;br /&gt;
&lt;br /&gt;
* Init este tatal tuturor proceselor. Este primul program executat de catre nucleul la sfarsitul secventei de initializare al acestuia, fiindu-i atribuit pid-ul cu valoarea 1. ( de mentionat ca nucleul n-are pid'ul 1, ci 0. )&lt;br /&gt;
&lt;br /&gt;
* Printre scopurile sale se numara: Initializarea tuturor celorlalte procese, colectarea proceselor moarte(zombi) si regenerarea unor procese fiu la terminarea lor; Inspectarea, la initializare, a fisierului /etc/inittab, pentru configurarea sistemului.&lt;br /&gt;
&lt;br /&gt;
* Acceptare unor parametrii de executie, de obicei setati prin intermediul unui program de incarcare, care, daca sint specificati, ii pot schimba cursul firesc al derularii.&lt;br /&gt;
&lt;br /&gt;
* Captarea unor semnale si reactionarea la ele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Restul capacitatilor vor fi descrise spre finalul ghidului.&lt;br /&gt;
&lt;br /&gt;
=====/etc/inittab=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum s-a specificat mai sus, init,la executare, va citi fisierul /etc/inittab pentru a sti cum sa configureze sistemul. Conform paginii manual inittab(5), formatul fisierului /etc/inittab este urmatorul:&lt;br /&gt;
&lt;br /&gt;
id:niveluri de rulare:actiune:proces&lt;br /&gt;
&lt;br /&gt;
* Campul id: Trebuie sa contina un sir unic de maximum 4 caractere alfanumerice. Este folosit pentru a identifica fiecare intrare din fisier.&lt;br /&gt;
&lt;br /&gt;
* Niveluri de rulare: In primul rand, nivelul de rulare, conform paginii manual init(8), reprezinta o configuratie software a sistemului care, printre altele, specifica ce procese trebuiesc pornite de catre init. Configuratia se realizeaza prin intermediul unor scripturi BASH, fiecarui nivel de rulare atribuindu-se cel putin unul. Pot exista mai multe niveluri de executie. In Slackware, cele prestabilite sint urmatoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# These are the default runlevels in Slackware:&lt;br /&gt;
#   0 = halt&lt;br /&gt;
#   1 = single user mode&lt;br /&gt;
#   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
#   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
#   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   6 = reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In fisierul /etc/inittab, campul dedicat nivelurilor de rulare trebuie sa contina o lista de niveluri de rulare pentru care trebuie executata o actiune ce, in majoritatea cazurilor. Vom vedea imediat ce inseamna toate acestea.&lt;br /&gt;
&lt;br /&gt;
* Campul actiune: Descrie actiunea pe care init o sa o realizeze pentru o lista de niveluri de rulare. Exista mai multe tipuri de actiuni, printre care:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''respawn''': lanseaza o noua instanta a unui proces, daca acesta isi termina executia&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''wait''': procesul va fi pornit odata cu intrarea in nivelul de rulare, iar init va astepta pana acesta se incheie.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''once''': procesul va fi executat o singura data, de indata ce se va intra in nivelul de rulare&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''sysinit''': intrarea ce contine aceasta actiune specifica procesul ce trebuie executat in timpul initializarii sistemului de catre init. De obicei, acest, dupa cum vom vedea, scriptul BASH /etc/rc.S.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''initdefault''': intrarea ce contine aceasta actiune specifica si nivel de rulare care va fi executat de catre init, imediat dupa ce sistemul a fost initializat (prin intermediul scriptului rc.S.)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''ctrlaltdel''': procesul va fi executat atunci cand init va primi semnalul SIGINIT. Semnalul SIGINIT este trimis atunci cand sint apasate tastele CTRL-ALT-DELETE. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum se observa, majoritatea actiunilor merg mana in mana cu un proces. Procesul este specificat in campul proces.&lt;br /&gt;
&lt;br /&gt;
* Campul proces: Specifica un proces ce trebuie executat la intrarea intr-un nivel de rulare. Procesul poate fi o comanda sau un script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ca sa intelegem mai bine ce inseamna toate acestea, vom analiza un fisier /etc/inittab.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/inittab&lt;br /&gt;
     1  #&lt;br /&gt;
     2  # inittab       This file describes how the INIT process should set up&lt;br /&gt;
     3  #               the system in a certain run-level.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Version:      @(#)inittab             2.04    17/05/93        MvS&lt;br /&gt;
     6  #                                       2.10    02/10/95        PV&lt;br /&gt;
     7  #                                       3.00    02/06/1999      PV&lt;br /&gt;
     8  #                                       4.00    04/10/2002      PV&lt;br /&gt;
     9  #&lt;br /&gt;
    10  # Author:       Miquel van Smoorenburg, &amp;lt;miquels@drinkel.nl.mugnet.org&amp;gt;&lt;br /&gt;
    11  # Modified by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
    12  #&lt;br /&gt;
    13&lt;br /&gt;
    14  # These are the default runlevels in Slackware:&lt;br /&gt;
    15  #   0 = halt&lt;br /&gt;
    16  #   1 = single user mode&lt;br /&gt;
    17  #   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    18  #   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
    19  #   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
    20  #   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    21  #   6 = reboot&lt;br /&gt;
    22&lt;br /&gt;
    23  # Default runlevel. (Do not set to 0 or 6)&lt;br /&gt;
    24  id:3:initdefault:&lt;br /&gt;
    25&lt;br /&gt;
    26  # System initialization (runs when system boots).&lt;br /&gt;
    27  si:S:sysinit:/etc/rc.d/rc.S&lt;br /&gt;
    28&lt;br /&gt;
    29  # Script to run when going single user (runlevel 1).&lt;br /&gt;
    30  su:1S:wait:/etc/rc.d/rc.K&lt;br /&gt;
    31&lt;br /&gt;
    32  # Script to run when going multi user.&lt;br /&gt;
    33  rc:2345:wait:/etc/rc.d/rc.M&lt;br /&gt;
    34&lt;br /&gt;
    35  # What to do at the &amp;quot;Three Finger Salute&amp;quot;.&lt;br /&gt;
    36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&lt;br /&gt;
    37&lt;br /&gt;
    38  # Runlevel 0 halts the system.&lt;br /&gt;
    39  l0:0:wait:/etc/rc.d/rc.0&lt;br /&gt;
    40&lt;br /&gt;
    41  # Runlevel 6 reboots the system.&lt;br /&gt;
    42  l6:6:wait:/etc/rc.d/rc.6&lt;br /&gt;
    43&lt;br /&gt;
    44  # These are the standard console login getties in multiuser mode:&lt;br /&gt;
    45  c1:1235:respawn:/sbin/agetty 38400 tty1 linux&lt;br /&gt;
    46  c2:1235:respawn:/sbin/agetty 38400 tty2 linux&lt;br /&gt;
    47  c3:1235:respawn:/sbin/agetty 38400 tty3 linux&lt;br /&gt;
    48  c4:1235:respawn:/sbin/agetty 38400 tty4 linux&lt;br /&gt;
    49  c5:1235:respawn:/sbin/agetty 38400 tty5 linux&lt;br /&gt;
    50  c6:12345:respawn:/sbin/agetty 38400 tty6 linux&lt;br /&gt;
    51&lt;br /&gt;
    52  # Runlevel 4 used to be for an X window only system, until we discovered&lt;br /&gt;
    53  # that it throws init into a loop that keeps your load avg at least 1 all&lt;br /&gt;
    54  # the time. Thus, there is now one getty opened on tty6. Hopefully no one&lt;br /&gt;
    55  # will notice. ;^)&lt;br /&gt;
    56  # It might not be bad to have one text console anyway, in case something&lt;br /&gt;
    57  # happens to X.&lt;br /&gt;
    58  x1:4:respawn:/etc/rc.d/rc.4&lt;br /&gt;
    59&lt;br /&gt;
    60  # End of /etc/inittab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Vom analiza fiecare intrare, explicand-o.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Prima intrare, cea de la linia 24, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;id&amp;quot; (datorita campului id, faptul ca valoare campului coincide cu numele acestuia nu are vreo importanta). Campul nivelului de rulare este ocupat de caracterul &amp;quot;3&amp;quot;. Campul actiunii este ocupat de 'initdefault', ceea ce inseamna ca init va intra in nivelul de rulare specificat de catre acest camp, adica, in cazul nostru, &amp;quot;3&amp;quot;. Campul proces lipseste doarece intrarea, continand actiunea 'initdefault', nu necesita un proces, acesta fiind oricum ignorat daca ar fi specificat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A doua intrare, cea de la linia 27, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;si&amp;quot;. Campul nivelului de rulare este ocupat de caracterul &amp;quot;S&amp;quot;.Campul actiunii este ocupat de  catre &amp;quot;sysinit&amp;quot;, iar procesul este scriptul /etc/rc.d/rc.S. Faptul ca &amp;quot;sysinit&amp;quot; ocupa campul actiune ii spune lui init sa execute procesul din campul proces (in cazul acest, ii spune lui init sa execute scriptul /etc/rc.d/rc.S) inainte de a intra in vreun nivel de rulare(nivelul &amp;quot;3&amp;quot;, in cazul nostru ^^).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treia intrare, cea de la linia 30, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;su&amp;quot;. Campul nivelului de rulare este &amp;quot;1S&amp;quot;, ceea ce-nseamna ca intrarea se aplica atat nivelului de rulare &amp;quot;1&amp;quot;, cat si nivelului de rulare &amp;quot;S&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.K. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A patra intrare, cea de la linia 33, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;rc&amp;quot;. Campul nivelelor de rulare este &amp;quot;2345&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelelor de rulare &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot; si &amp;quot;5&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.M. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A cincea intrare, cea de la linia 36, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;ca&amp;quot;. Campul nivelelor de rulare este gol. Campul actiunii este ocupat de catre &amp;quot;ctrlaltdel&amp;quot;, iar procesul de catre comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Faptul ca &amp;quot;ctrlaltdel&amp;quot; ocupa campul actiune ii spune lui init ca, atunci cand sint apasate tastele CTRL+ALT+DELETE la consola, sa execute procesul din campul proces, in cazul nostru comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Aceasta actiune nu necesita un nivel de rulare, presupunandu-se ca, daca ajungem la o consola sa apasam cele trei taste mai devreme mentionate, sintem deja intr-un nivel de rulare cu un sistem mai mult sau mai putin configurat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A sasea intrare, cea de la linia 39, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l0&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;0&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;0&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.0. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.0 atunci cand va intra in nivelul de rulare &amp;quot;0&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A saptea intrare, cea de la linia 42, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l6&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;6&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;6&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.6. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.6 atunci cand va intra in nivelul de rulare &amp;quot;6&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmatoarele 5 intrari -- de la linia 45 la linia 49 -- sint aproape identice, singurele lucruri care le deosebesc fiind campul care le identifica( oare de ce?:-) ) si penultimul parametru de executie al comenzii din campul proces. Toate au la campul nivelurilor de rulare caracterele &amp;quot;1235&amp;quot;. Toate au in campul actiunii &amp;quot;respawn&amp;quot;, iar la proces comanda &amp;quot;/sbin/agetty 38400 tty&amp;lt;x&amp;gt; linux&amp;quot;, &amp;lt;x&amp;gt; diferind de la intrare la intrare. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa regenereze procesul din campul proces, cand acesta isi termina executia. In cazul nostru, init va regenera o sesiune de identificare(engl. login prompt) in cazul in care aceasta se va sfarsi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treisprezecea intrare, cea de la linia 50, este are aceleasi proprietati ca si ultimele 5 intrari, doar ca intrarea este aplicata si nivelului de rulare &amp;quot;4&amp;quot;, spre deosebire de precedentele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ultima intrare, cea de la linia 58, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;x1&amp;quot;. Campul nivelurilor de rulare este ocupat de catre caracterul &amp;quot;4&amp;quot;. Campul actiune este ocupat de catre &amp;quot;respawn&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.4. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa reexecute scriptul /etc/rc.d/rc.4, cand acesta se va termina.&lt;br /&gt;
&lt;br /&gt;
=====Lamuriri necesare pentru a continua. Mica erata a ceea ce a fost expus pana acum.=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Probabil ca se observa niste neconcordante intre anumite lucruri ce-au fost descrise pana acum. De exemplu: Inainte sa depanam fisierul /etc/inittab, s-a spus ca valoarea din campul proces reprezinta un proces (ce, dupa cum am observat, poate fi o comanda sau un script) care va fi executat de catre init _l-a intrarea intr-un nivel de rulare_, dar noi am observat ca intr-unele intrari campul nivelurilor de rulare este gol, pe cand campul proces contine o valoare. De ce am spus asta? Pai, in primul rand, ca este mai usor de inteles un lucru partial adevarat, urmat de o lamurire, decat daca as intra in detalii de la bun inceput; si, in plus, explicatiile detaliate duc, dupa cum se pare, la exprimari tautologice ( ca sa fiu delicat :~) ), datorita unor termeni care nu se impac intr-o expresie/propozitie... Bun. Revenind.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Init, pe langa faptul ca este primul program executat, mai este si ultimul, -- asta in cazul in care procesul de oprire al calculatorului se deruleaza normal si corect. Ce ne spune acest lucru? Pai ne spune mai multe lucruri. Ne spune, de exemplu, ca pe parcursul timpului de executie al lui init, sistemul este 1. configurat 2. intretinut 3. deconfigurat. Vom urma in detaliu stagiile (1) si (3), dar hai sa spunem cateva lucruri despre fiecare in parte, chiar daca voi prelua anumite idei ce-au fost deja expuse.&lt;br /&gt;
&lt;br /&gt;
* (1) Nucleul nu-l arunca pe init intr-un mediu complet configurat. De fapt, luat in mare, nu il lasa decat cu un sistem de fisiere radacina montat cu proprietatea de numai-citire, dupa care se retrage linistit in fundal, unde isi vede de treaba, printre altele punand la dispozitia programelor o suita de apeluri de sistem prin intermediu carora acestea comunica cu el. Pana ajungem noi sa ne autentificam, init are mult de munca. De fapt, prea il elogiez, caci el nu face toata treaba de unul singur, ci mai degraba o coordoneaza. Am observat ca el citeste fisierul /etc/inittab si ca de acolo afla, printre altele, ce scripturi sa execute pentru configurarea sistemului. Comenzile din acele scripturi, de fapt, pun in picioare sistemul, iar unul dintre rolurile lui init este sa ruleze aceste scripturi. Acest lucru ofera o mare flexibilitate administratorului sistemului, deoarece scripturile sint mai usor de inteles si de schimbat. Va imaginati ce-ar fi insemnat ca init sa faca toata treaba de unul singur, fara sa apeleze la BASH sau alt interpretor de comenzi? Ar fi insemnat ca init sa fie foarte complex, ar fi insemnat ca administratorul de sistem sa ii umble prin codul sursa, daca ar vrea sa schimbe ceva -- orice, dupa care sa-l recompileze s.a.m.d. Ca sa inchei scurta introducere a acestui stagiu, nu mai spun decat ca, in Slackware si derivatele sale, TOATE scripturile de care se foloseste init se afla in directorul /etc/rc.d/. Acest lucru nu este batut in cuie, putand foarte lejer sa schimbam asta prin modificarea campului proces al intrarilor din /etc/inittab, dar este o conventie utila si bine gandita, asa mai bine nu am schimba-o. De asemenea, vom urmari indeaproape fiecare script in parte.&lt;br /&gt;
&lt;br /&gt;
* (2) Cum sta treaba cu intretinerea sistemului? Pai e lesne de imaginat ca, fiind primul program pornit si ruland _mereu_, chiar si dupa ce sistemul a fost configurat si noi deja ne bucuram de facilitile unui client de posta electronica, init nu sta degeaba. S-a specificat mai devreme, cand au fost enumerate unele dintre scopurile sale, ca se ocupa cu initializarea tuturor celorlalte procese, colectarea proceselor moarte s.a. Nu s-a specificat, in schimb, o proprietate specifica tuturor programelor ( a se citi proceselor ) unui sistem compatibil cu standardele ANSI/POSIX. Aceasta proprietate este aceea de a capta semnale. Probabil ca toti stim ce este un semnal, deoarece toti am folosit comanda kill. Stim ca programele pot fi programate(...) sa capteze anumite semnale, si sa interactioneze intr-un anume fel la primirea acestora. Asa face si init, dar spre deosebire de alte programe, ii poate fi specificat si cum sa reactioneze la primirea anumitor semnale. Cum ii specificam asta? Pai cum faceam si pana acum, cand voiam sa-i modelam comportamentul: folosindu-ne de fisierul /etc/inittab. Acum ajungem la acele neconcordante despre care vorbeam mai devreme, anume intrarile din fisierul /etc/inittab care contin nu contin un nivel de rulare, dar contin un proces.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;S-a specificat ca aceasta intrare are urmatoarea influenta asupra lui init: cand init primeste semnalul SIGINIT (care ii este trimis cand sint apasate, la consola, tastele CTRL+ALT+DELETE), acesta executa comanda /sbin/shutdown -t5 -r now. Faptul ca nu este specificat un nivel de rulare nu are vreo importanta, caci intrarea cu aceasta actiune se aplica oricarui 'nivel de rulare'( de fapt, daca init este pornit, nu conteaza daca sistemul este configurat sau ba, daca sintem intr-un nivel de rulare sau nu, va reactiona cum am spus mai devreme. ). Aceasta nu este singura actiune care ii spune lui init sa reactioneze cumva la primirea unui semnal. Distributia vine cu un fisier /etc/inittab care contine inca 2 intrari cu actiuni asemanatoare, anume powerfail si powerokwait, care reactioneaza la semnale primite de la sursa de alimentare neintreruptibila(engl. presc. UPS).&lt;br /&gt;
&lt;br /&gt;
* (3) Despre acest stagiu nu s-a scris deloc pana acum. Pe scurt, deconfigurarea sistemului se face prin configurarea unor nivele de rulare pentru acest scop, nivele de rulare care sa execute anumite scripturi care sa faca, in mare parte, opusul scriptului de initializare + oprirea serviciilor specifice nivelului de rulare in care sintem. Aceste scripturi, in cazul de fata -- si in cazul unei distributii Slackware nemodificate --, sint /etc/rc.0 si /etc/rc.6, specifice nivelurilor de executie &amp;quot;0&amp;quot; si &amp;quot;6&amp;quot;. Le vom urmari indeaproape.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In cele ce urmeaza, vom analiza stagiul (2), mai exact scripturile executate de catre init, folosindu-ne de fisierul /etc/inittab postat aici. Scripturile pe care le vom analiza sint cele care vin cu distributia, mai putin /etc/inittab, caruia i-au fost scoase 2 intrari care oricum n-au sa faca mare diferenta. Vom lua scripturile in ordinea executarii lor de catre init.&lt;br /&gt;
&lt;br /&gt;
=====/etc/rc.S=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Are urmatoarele calitati:&lt;br /&gt;
&lt;br /&gt;
* 1. Este primul script executat de catre init.&lt;br /&gt;
&lt;br /&gt;
* 2. Este rulat inainte de executarea oricarui script specific vreunui nivel de rulare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Scriptul este voluminos. In cele ce urmeaza, continutul sau va fi postat in varianta originala. Nu voi scoate comentariile, acestea fiind de ajutor daca stiti ceva 'engleza tehnica'; daca nu stiti, sau nu intelegeti, oricum voi repeta (si adauga) explicatii in limba romana, pentru fiecare instructiune sau bloc de instructiuni.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatie: Am pornit de la bun inceput de la premiza ca aveti ceva cunostinte legate de interpretorul de comenzi BASH si despre mediul GNU/Linux (comenzi elementare, machetarea fisierelor s.a.m.d.), intr-atat incat sa intelegeti o buna parte din toate cele ce-ar urma, chiar daca doar semantic. Daca nu aveti experienta cu cele mai sus enumerate, puteti profita de rigurozitatea cu care se va incerca explicarea scripturilor si, impreuna cu tutorialele/indrumarele specificate la finalul ghidului, sa analizati mecanismele acestea folosite in viata reala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/rc.d/rc.S&lt;br /&gt;
     1  #!/bin/sh&lt;br /&gt;
     2  #&lt;br /&gt;
     3  # /etc/rc.d/rc.S:  System initialization script.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Mostly written by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
     6  #&lt;br /&gt;
     7&lt;br /&gt;
     8  PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
     9&lt;br /&gt;
    10  # Mount /proc right away:&lt;br /&gt;
    11  /sbin/mount -v proc /proc -n -t proc&lt;br /&gt;
    12&lt;br /&gt;
    13  # If 'nohotplug' was given at boot, or rc.hotplug has been turned off&lt;br /&gt;
    14  # (and a 2.4.x kernel is running), then shut off hotplugging in the&lt;br /&gt;
    15  # kernel now.  Realize that if you turn off hotplugging support that&lt;br /&gt;
    16  # you will have to load all the kernel modules that you need yourself&lt;br /&gt;
    17  # (possibly in /etc/rc.d/rc.modules, which does not promise to list&lt;br /&gt;
    18  # all of them), and make any additional device nodes that you need in&lt;br /&gt;
    19  # the /dev directory.&lt;br /&gt;
    20  if [ -w /proc/sys/kernel/hotplug ]; then&lt;br /&gt;
    21    # Kernel command line option 'nohotplug' given, so we will shut off&lt;br /&gt;
    22    # hotplugging even if it is not a good idea.  Sometimes it *is* a&lt;br /&gt;
    23    # good idea, especially when you're trying to figure out which&lt;br /&gt;
    24    # kernel module is crashing the machine and needs to be added to&lt;br /&gt;
    25    # your /etc/modprobe.d/blacklist (2.6+ kernels) and/or your&lt;br /&gt;
    26    # /etc/hotplug/blacklist (2.4.x kernels).&lt;br /&gt;
    27    if grep -wq nohotplug /proc/cmdline ; then&lt;br /&gt;
    28      echo &amp;quot;/dev/null&amp;quot; &amp;gt; /proc/sys/kernel/hotplug&lt;br /&gt;
    29    elif [ ! -x /etc/rc.d/rc.hotplug ]; then&lt;br /&gt;
    30      # Ignore /etc/rc.d/rc.hotplug on kernels newer than 2.4.x:&lt;br /&gt;
    31      if [ ! &amp;quot;$(uname -r | cut -f 1,2 -d .)&amp;quot; = &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
    32        # We must be running a 2.4.x kernel, so turn off hotplug:&lt;br /&gt;
    33        echo &amp;quot;/dev/null&amp;quot; &amp;gt; /proc/sys/kernel/hotplug&lt;br /&gt;
    34      fi&lt;br /&gt;
    35    fi&lt;br /&gt;
    36  fi&lt;br /&gt;
    37&lt;br /&gt;
    38  # Start devfsd if necessary.  On newer kernels, udev should be used instead.&lt;br /&gt;
    39  if [ -x /etc/rc.d/rc.devfsd ]; then&lt;br /&gt;
    40    /etc/rc.d/rc.devfsd start&lt;br /&gt;
    41  fi&lt;br /&gt;
    42&lt;br /&gt;
    43  # Mount sysfs next, if the kernel supports it:&lt;br /&gt;
    44  if [ -d /sys ]; then&lt;br /&gt;
    45    if cat /proc/filesystems | grep -wq sysfs ; then&lt;br /&gt;
    46      if ! cat /proc/mounts | grep -wq sysfs ; then&lt;br /&gt;
    47        /sbin/mount -v sysfs /sys -n -t sysfs&lt;br /&gt;
    48      fi&lt;br /&gt;
    49    fi&lt;br /&gt;
    50  fi&lt;br /&gt;
    51&lt;br /&gt;
    52  # Enable swapping:&lt;br /&gt;
    53  /sbin/swapon -a&lt;br /&gt;
    54&lt;br /&gt;
    55  # Test to see if the root partition is read-only, like it ought to be.&lt;br /&gt;
    56  READWRITE=no&lt;br /&gt;
    57  if touch /fsrwtestfile 2&amp;gt;/dev/null; then&lt;br /&gt;
    58    rm -f /fsrwtestfile&lt;br /&gt;
    59    READWRITE=yes&lt;br /&gt;
    60  else&lt;br /&gt;
    61    echo &amp;quot;Testing root filesystem status:  read-only filesystem&amp;quot;&lt;br /&gt;
    62  fi&lt;br /&gt;
    63&lt;br /&gt;
    64  # See if a forced filesystem check was requested at shutdown:&lt;br /&gt;
    65  if [ -r /etc/forcefsck ]; then&lt;br /&gt;
    66    FORCEFSCK=&amp;quot;-f&amp;quot;&lt;br /&gt;
    67  fi&lt;br /&gt;
    68&lt;br /&gt;
    69  # Check the root filesystem:&lt;br /&gt;
    70  if [ ! $READWRITE = yes ]; then&lt;br /&gt;
    71    RETVAL=0&lt;br /&gt;
    72    if [ ! -r /etc/fastboot ]; then&lt;br /&gt;
    73      echo &amp;quot;Checking root filesystem:&amp;quot;&lt;br /&gt;
    74      /sbin/fsck $FORCEFSCK -C -a /&lt;br /&gt;
    75      RETVAL=$?&lt;br /&gt;
    76    fi&lt;br /&gt;
    77    # An error code of 2 or higher will require a reboot.&lt;br /&gt;
    78    if [ $RETVAL -ge 2 ]; then&lt;br /&gt;
    79      # An error code equal to or greater than 4 means that some errors&lt;br /&gt;
    80      # could not be corrected.  This requires manual attention, so we&lt;br /&gt;
    81      # offer a chance to try to fix the problem in single-user mode:&lt;br /&gt;
    82      if [ $RETVAL -ge 4 ]; then&lt;br /&gt;
    83        echo&lt;br /&gt;
    84        echo &amp;quot;***********************************************************&amp;quot;&lt;br /&gt;
    85        echo &amp;quot;*** An error occurred during the root filesystem check. ***&amp;quot;&lt;br /&gt;
    86        echo &amp;quot;*** You will now be given a chance to log into the      ***&amp;quot;&lt;br /&gt;
    87        echo &amp;quot;*** system in single-user mode to fix the problem.      ***&amp;quot;&lt;br /&gt;
    88        echo &amp;quot;***                                                     ***&amp;quot;&lt;br /&gt;
    89        echo &amp;quot;*** If you are using the ext2 filesystem, running       ***&amp;quot;&lt;br /&gt;
    90        echo &amp;quot;*** 'e2fsck -v -y &amp;lt;partition&amp;gt;' might help.              ***&amp;quot;&lt;br /&gt;
    91        echo &amp;quot;***********************************************************&amp;quot;&lt;br /&gt;
    92        echo&lt;br /&gt;
    93        echo &amp;quot;Once you exit the single-user shell, the system will reboot.&amp;quot;&lt;br /&gt;
    94        echo&lt;br /&gt;
    95        PS1=&amp;quot;(Repair filesystem) \#&amp;quot;; export PS1&lt;br /&gt;
    96        sulogin&lt;br /&gt;
    97      else # With an error code of 2 or 3, reboot the machine automatically:&lt;br /&gt;
    98        echo&lt;br /&gt;
    99        echo &amp;quot;***********************************&amp;quot;&lt;br /&gt;
   100        echo &amp;quot;*** The filesystem was changed. ***&amp;quot;&lt;br /&gt;
   101        echo &amp;quot;*** The system will now reboot. ***&amp;quot;&lt;br /&gt;
   102        echo &amp;quot;***********************************&amp;quot;&lt;br /&gt;
   103        echo&lt;br /&gt;
   104      fi&lt;br /&gt;
   105      echo &amp;quot;Unmounting file systems.&amp;quot;&lt;br /&gt;
   106      /sbin/umount -a -r&lt;br /&gt;
   107      /sbin/mount -n -o remount,ro /&lt;br /&gt;
   108      echo &amp;quot;Rebooting system.&amp;quot;&lt;br /&gt;
   109      sleep 2&lt;br /&gt;
   110      reboot -f&lt;br /&gt;
   111    fi&lt;br /&gt;
   112    # Remount the root filesystem in read-write mode&lt;br /&gt;
   113    echo &amp;quot;Remounting root device with read-write enabled.&amp;quot;&lt;br /&gt;
   114    /sbin/mount -w -v -n -o remount /&lt;br /&gt;
   115    if [ $? -gt 0 ] ; then&lt;br /&gt;
   116      echo&lt;br /&gt;
   117      echo &amp;quot;Attempt to remount root device as read-write failed!  This is going to&amp;quot;&lt;br /&gt;
   118      echo &amp;quot;cause serious problems.&amp;quot;&lt;br /&gt;
   119      echo&lt;br /&gt;
   120      echo &amp;quot;If you're using the UMSDOS filesystem, you **MUST** mount the root partition&amp;quot;&lt;br /&gt;
   121      echo &amp;quot;read-write!  You can make sure the root filesystem is getting mounted &amp;quot;&lt;br /&gt;
   122      echo &amp;quot;read-write with the 'rw' flag to Loadlin:&amp;quot;&lt;br /&gt;
   123      echo&lt;br /&gt;
   124      echo &amp;quot;loadlin vmlinuz root=/dev/hda1 rw   (replace /dev/hda1 with your root device)&amp;quot;&lt;br /&gt;
   125      echo&lt;br /&gt;
   126      echo &amp;quot;Normal bootdisks can be made to mount a system read-write with the rdev command:&amp;quot;&lt;br /&gt;
   127      echo&lt;br /&gt;
   128      echo &amp;quot;rdev -R /dev/fd0 0&amp;quot;&lt;br /&gt;
   129      echo&lt;br /&gt;
   130      echo &amp;quot;You can also get into your system by using a boot disk with a command like this&amp;quot;&lt;br /&gt;
   131      echo &amp;quot;on the LILO prompt line:  (change the root partition name as needed)&amp;quot;&lt;br /&gt;
   132      echo&lt;br /&gt;
   133      echo &amp;quot;LILO: mount root=/dev/hda1 rw&amp;quot;&lt;br /&gt;
   134      echo&lt;br /&gt;
   135      echo &amp;quot;Please press ENTER to continue, then reboot and use one of the above methods to&amp;quot;&lt;br /&gt;
   136      echo -n &amp;quot;get into your machine and start looking for the problem. &amp;quot;&lt;br /&gt;
   137      read junk;&lt;br /&gt;
   138    fi&lt;br /&gt;
   139  else&lt;br /&gt;
   140    echo &amp;quot;Testing root filesystem status:  read-write filesystem&amp;quot;&lt;br /&gt;
   141    if cat /etc/fstab | grep ' / ' | grep -wq umsdos ; then&lt;br /&gt;
   142      ROOTTYPE=&amp;quot;umsdos&amp;quot;&lt;br /&gt;
   143    fi&lt;br /&gt;
   144    if [ ! &amp;quot;$ROOTTYPE&amp;quot; = &amp;quot;umsdos&amp;quot; ]; then # no warn for UMSDOS&lt;br /&gt;
   145      echo&lt;br /&gt;
   146      echo &amp;quot;*** ERROR: Root partition has already been mounted read-write. Cannot check!&amp;quot;&lt;br /&gt;
   147      echo&lt;br /&gt;
   148      echo &amp;quot;For filesystem checking to work properly, your system must initially mount&amp;quot;&lt;br /&gt;
   149      echo &amp;quot;the root partition as read only. Please modify your kernel with 'rdev' so that&amp;quot;&lt;br /&gt;
   150      echo &amp;quot;it does this. If you're booting with LILO, add a line:&amp;quot;&lt;br /&gt;
   151      echo&lt;br /&gt;
   152      echo &amp;quot;   read-only&amp;quot;&lt;br /&gt;
   153      echo&lt;br /&gt;
   154      echo &amp;quot;to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it.&amp;quot;&lt;br /&gt;
   155      echo&lt;br /&gt;
   156      echo &amp;quot;If you boot from a kernel on a floppy disk, put it in the drive and type:&amp;quot;&lt;br /&gt;
   157      echo &amp;quot;   rdev -R /dev/fd0 1&amp;quot;&lt;br /&gt;
   158      echo&lt;br /&gt;
   159      echo &amp;quot;If you boot from a bootdisk, or with Loadlin, you can add the 'ro' flag.&amp;quot;&lt;br /&gt;
   160      echo&lt;br /&gt;
   161      echo &amp;quot;This will fix the problem *AND* eliminate this annoying message. :^)&amp;quot;&lt;br /&gt;
   162      echo&lt;br /&gt;
   163      echo -n &amp;quot;Press ENTER to continue. &amp;quot;&lt;br /&gt;
   164      read junk;&lt;br /&gt;
   165    fi&lt;br /&gt;
   166  fi # Done checking root filesystem&lt;br /&gt;
   167&lt;br /&gt;
   168  # Any /etc/mtab that exists here is old, so we delete it to start over:&lt;br /&gt;
   169  /bin/rm -f /etc/mtab*&lt;br /&gt;
   170  # Remounting the / partition will initialize the new /etc/mtab:&lt;br /&gt;
   171  /sbin/mount -w -o remount /&lt;br /&gt;
   172&lt;br /&gt;
   173  # Fix /etc/mtab to list sys and proc if they were not yet entered in&lt;br /&gt;
   174  # /etc/mtab because / was still mounted read-only:&lt;br /&gt;
   175  if [ -d /proc/sys ]; then&lt;br /&gt;
   176    /sbin/mount -f proc /proc -t proc&lt;br /&gt;
   177  fi&lt;br /&gt;
   178  if [ -d /sys/bus ]; then&lt;br /&gt;
   179    /sbin/mount -f sysfs /sys -t sysfs&lt;br /&gt;
   180  fi&lt;br /&gt;
   181&lt;br /&gt;
   182  # Initialize udev to manage /dev entries and hotplugging for 2.6.x kernels.&lt;br /&gt;
   183  # You may turn off udev by making the /etc/rc.d/rc.udev file non-executable,&lt;br /&gt;
   184  # but in the 2.6.x+ kernels udev has taken over the job of hotplug (finding&lt;br /&gt;
   185  # hardware and loading the kernel modules for it, as well as creating device&lt;br /&gt;
   186  # nodes in /dev).  Realize that if you turn off udev that you will have to&lt;br /&gt;
   187  # load all the kernel modules that you need yourself (possibly in&lt;br /&gt;
   188  # /etc/rc.d/rc.modules, which does not promise to list all of them), and&lt;br /&gt;
   189  # make any additional device nodes that you need in the /dev directory.&lt;br /&gt;
   190  # Even USB and IEEE1394 devices will need to have the modules loaded by&lt;br /&gt;
   191  # hand if udev is not used with a 2.6 kernel.  So use it.  :-)&lt;br /&gt;
   192  if cat /proc/mounts | grep -wq sysfs &amp;amp;&amp;amp; cat /proc/filesystems | grep -wq tmpfs ; then&lt;br /&gt;
   193    if ! grep -wq nohotplug /proc/cmdline ; then&lt;br /&gt;
   194      if [ -x /etc/rc.d/rc.udev ]; then&lt;br /&gt;
   195        /bin/sh /etc/rc.d/rc.udev start&lt;br /&gt;
   196        /bin/sh /lib/udev/udev.count_events.sh&lt;br /&gt;
   197      fi&lt;br /&gt;
   198    fi&lt;br /&gt;
   199  fi&lt;br /&gt;
   200&lt;br /&gt;
   201  # Set the system time from the hardware clock using hwclock --hctosys.&lt;br /&gt;
   202  if [ -x /sbin/hwclock ]; then&lt;br /&gt;
   203    # Check for a broken motherboard RTC clock (where ioports for rtc are&lt;br /&gt;
   204    # unknown) to prevent hwclock causing a hang:&lt;br /&gt;
   205    if ! grep -q -w rtc /proc/ioports ; then&lt;br /&gt;
   206      CLOCK_OPT=&amp;quot;--directisa&amp;quot;&lt;br /&gt;
   207    fi&lt;br /&gt;
   208    if grep -wq &amp;quot;^UTC&amp;quot; /etc/hardwareclock ; then&lt;br /&gt;
   209      echo &amp;quot;Setting system time from the hardware clock (UTC).&amp;quot;&lt;br /&gt;
   210      /sbin/hwclock $CLOCK_OPT --utc --hctosys&lt;br /&gt;
   211    else&lt;br /&gt;
   212      echo &amp;quot;Setting system time from the hardware clock (localtime).&amp;quot;&lt;br /&gt;
   213      /sbin/hwclock $CLOCK_OPT --localtime --hctosys&lt;br /&gt;
   214    fi&lt;br /&gt;
   215  fi&lt;br /&gt;
   216&lt;br /&gt;
   217  # Configure ISA Plug-and-Play devices:&lt;br /&gt;
   218  if [ -r /etc/isapnp.conf ]; then&lt;br /&gt;
   219    if [ -x /sbin/isapnp ]; then&lt;br /&gt;
   220      /sbin/isapnp /etc/isapnp.conf&lt;br /&gt;
   221    fi&lt;br /&gt;
   222  fi&lt;br /&gt;
   223&lt;br /&gt;
   224  # This loads any kernel modules that are needed.  These might be required to&lt;br /&gt;
   225  # use your ethernet card, sound card, or other optional hardware.&lt;br /&gt;
   226  # Priority is given first to a script named &amp;quot;rc.modules.local&amp;quot;, then&lt;br /&gt;
   227  # to &amp;quot;rc.modules-$FULL_KERNEL_VERSION&amp;quot;, and finally to the plain &amp;quot;rc.modules&amp;quot;.&lt;br /&gt;
   228  # Note that if /etc/rc.d/rc.modules.local is found, then that will be the ONLY&lt;br /&gt;
   229  # rc.modules script the machine will run, so make sure it has everything in&lt;br /&gt;
   230  # it that you need.&lt;br /&gt;
   231  if [ -x /etc/rc.d/rc.modules.local -a -r /proc/modules ]; then&lt;br /&gt;
   232    echo &amp;quot;Running /etc/rc.d/rc.modules.local:&amp;quot;&lt;br /&gt;
   233    /bin/sh /etc/rc.d/rc.modules.local&lt;br /&gt;
   234  elif [ -x /etc/rc.d/rc.modules-$(uname -r) -a -r /proc/modules ]; then&lt;br /&gt;
   235    echo &amp;quot;Running /etc/rc.d/rc.modules-$(uname -r):&amp;quot;&lt;br /&gt;
   236    . /etc/rc.d/rc.modules-$(uname -r)&lt;br /&gt;
   237  elif [ -x /etc/rc.d/rc.modules -a -r /proc/modules -a -L /etc/rc.d/rc.modules ]; then&lt;br /&gt;
   238    echo &amp;quot;Running /etc/rc.d/rc.modules -&amp;gt; $(readlink /etc/rc.d/rc.modules):&amp;quot;&lt;br /&gt;
   239    . /etc/rc.d/rc.modules&lt;br /&gt;
   240  elif [ -x /etc/rc.d/rc.modules -a -r /proc/modules ]; then&lt;br /&gt;
   241    echo &amp;quot;Running /etc/rc.d/rc.modules:&amp;quot;&lt;br /&gt;
   242    . /etc/rc.d/rc.modules&lt;br /&gt;
   243  fi&lt;br /&gt;
   244&lt;br /&gt;
   245  # Configure runtime kernel parameters:&lt;br /&gt;
   246  if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then&lt;br /&gt;
   247    /sbin/sysctl -e -p /etc/sysctl.conf&lt;br /&gt;
   248  fi&lt;br /&gt;
   249&lt;br /&gt;
   250  # Initialize the Logical Volume Manager.&lt;br /&gt;
   251  # This won't start unless we find /etc/lvmtab (LVM1) or&lt;br /&gt;
   252  # /etc/lvm/backup/ (LVM2).  This is created by /sbin/vgscan, so to&lt;br /&gt;
   253  # use LVM you must run /sbin/vgscan yourself the first time (and&lt;br /&gt;
   254  # create some VGs and LVs).&lt;br /&gt;
   255  if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then&lt;br /&gt;
   256    echo &amp;quot;Initializing LVM (Logical Volume Manager):&amp;quot;&lt;br /&gt;
   257    # Check for device-mapper support.&lt;br /&gt;
   258    if ! cat /proc/devices | grep -wq device-mapper ; then&lt;br /&gt;
   259      # If device-mapper exists as a module, try to load it.&lt;br /&gt;
   260      if [ -r /lib/modules/$(/bin/uname -r)/kernel/drivers/md/dm-mod.ko ]; then&lt;br /&gt;
   261        insmod /lib/modules/$(/bin/uname -r)/kernel/drivers/md/dm-mod.ko&lt;br /&gt;
   262      fi&lt;br /&gt;
   263    fi&lt;br /&gt;
   264    # Scan for new volume groups:&lt;br /&gt;
   265    KERNEL_VERSION=$(/bin/uname -r | /bin/cut -d . -f 1,2)&lt;br /&gt;
   266    if [ &amp;quot;$KERNEL_VERSION&amp;quot; == &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
   267      /sbin/vgscan 2&amp;gt; /dev/null&lt;br /&gt;
   268    else&lt;br /&gt;
   269      /sbin/vgscan --ignorelockingfailure 2&amp;gt; /dev/null&lt;br /&gt;
   270    fi&lt;br /&gt;
   271    if [ $? = 0 ]; then&lt;br /&gt;
   272      # Make volume groups available to the kernel.&lt;br /&gt;
   273      # This should also make logical volumes available.&lt;br /&gt;
   274      if [ &amp;quot;$KERNEL_VERSION&amp;quot; == &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
   275        /sbin/vgchange -ay&lt;br /&gt;
   276      else&lt;br /&gt;
   277        /sbin/vgchange -ay --ignorelockingfailure&lt;br /&gt;
   278      fi&lt;br /&gt;
   279      # Enable swapping again in case any LVs are used for swap.  Ignore previous error.  :-)&lt;br /&gt;
   280      /sbin/swapon -a&lt;br /&gt;
   281    fi&lt;br /&gt;
   282  fi&lt;br /&gt;
   283&lt;br /&gt;
   284  # Check all the non-root filesystems:&lt;br /&gt;
   285  if [ ! -r /etc/fastboot ]; then&lt;br /&gt;
   286    echo &amp;quot;Checking non-root filesystems:&amp;quot;&lt;br /&gt;
   287    /sbin/fsck $FORCEFSCK -C -R -A -a&lt;br /&gt;
   288  fi&lt;br /&gt;
   289&lt;br /&gt;
   290  # Mount usbfs if we're not using hotplug:&lt;br /&gt;
   291  if grep -wq usbfs /proc/filesystems; then&lt;br /&gt;
   292    if /bin/grep -wq nohotplug /proc/cmdline || /bin/test ! -x /etc/rc.d/rc.hotplug ; then&lt;br /&gt;
   293      if ! cat /proc/mounts | grep -wq usbfs ; then&lt;br /&gt;
   294        /sbin/mount -v usbfs /proc/bus/usb -t usbfs&lt;br /&gt;
   295      fi&lt;br /&gt;
   296    fi&lt;br /&gt;
   297  fi&lt;br /&gt;
   298&lt;br /&gt;
   299  # Mount non-root file systems in fstab, but not NFS or SMB&lt;br /&gt;
   300  # because TCP/IP is not yet configured, and not proc or sysfs&lt;br /&gt;
   301  # because those have already been mounted.  Also check that&lt;br /&gt;
   302  # devpts is not already mounted before attempting to mount&lt;br /&gt;
   303  # it.  With 2.4.x kernels devpts is mounted from an fstab&lt;br /&gt;
   304  # entry while with a 2.6.x or newer kernel udev mounts it.&lt;br /&gt;
   305  # We also need to wait a little bit to let USB and other&lt;br /&gt;
   306  # hotplugged devices settle (sorry to slow down the boot):&lt;br /&gt;
   307  echo &amp;quot;Mounting non-root local filesystems:&amp;quot;&lt;br /&gt;
   308  sleep 3&lt;br /&gt;
   309  if /bin/grep -wq devpts /proc/mounts ; then&lt;br /&gt;
   310    /sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs,nodevpts&lt;br /&gt;
   311  else&lt;br /&gt;
   312    /sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs&lt;br /&gt;
   313  fi&lt;br /&gt;
   314&lt;br /&gt;
   315  # Enable swapping again.  This is needed in case a swapfile is used,&lt;br /&gt;
   316  # as it can't be enabled until the filesystem it resides on has been&lt;br /&gt;
   317  # mounted read-write.&lt;br /&gt;
   318  /sbin/swapon -a&lt;br /&gt;
   319&lt;br /&gt;
   320  # Clean up some temporary files:&lt;br /&gt;
   321  ( cd /var/log/setup/tmp &amp;amp;&amp;amp; rm -rf * )&lt;br /&gt;
   322  /bin/rm -f /var/run/utmp /var/run/*pid /etc/nologin /var/run/lpd* \&lt;br /&gt;
   323    /var/run/ppp* /etc/dhcpc/*.pid /etc/forcefsck /etc/fastboot \&lt;br /&gt;
   324    /var/state/saslauthd/saslauthd.pid&lt;br /&gt;
   325&lt;br /&gt;
   326  # Create /tmp/{.ICE-unix,.X11-unix} if they are not present:&lt;br /&gt;
   327  if [ ! -e /tmp/.ICE-unix ]; then&lt;br /&gt;
   328    mkdir -p /tmp/.ICE-unix&lt;br /&gt;
   329    chmod 1777 /tmp/.ICE-unix&lt;br /&gt;
   330  fi&lt;br /&gt;
   331  if [ ! -e /tmp/.X11-unix ]; then&lt;br /&gt;
   332    mkdir -p /tmp/.X11-unix&lt;br /&gt;
   333    chmod 1777 /tmp/.X11-unix&lt;br /&gt;
   334  fi&lt;br /&gt;
   335&lt;br /&gt;
   336  # Attempt to umount and remove any leftover /initrd:&lt;br /&gt;
   337  if [ -d /initrd ]; then&lt;br /&gt;
   338    umount /initrd/proc 2&amp;gt; /dev/null&lt;br /&gt;
   339    /sbin/umount /initrd 2&amp;gt; /dev/null&lt;br /&gt;
   340    rmdir /initrd 2&amp;gt; /dev/null&lt;br /&gt;
   341    blockdev --flushbufs /dev/ram0 2&amp;gt; /dev/null&lt;br /&gt;
   342  fi&lt;br /&gt;
   343&lt;br /&gt;
   344  # Create a fresh utmp file:&lt;br /&gt;
   345  touch /var/run/utmp&lt;br /&gt;
   346  chown root:utmp /var/run/utmp&lt;br /&gt;
   347  chmod 664 /var/run/utmp&lt;br /&gt;
   348&lt;br /&gt;
   349  if [ &amp;quot;$ROOTTYPE&amp;quot; = &amp;quot;umsdos&amp;quot; ]; then # we need to update any files added in DOS:&lt;br /&gt;
   350    echo &amp;quot;Synchronizing UMSDOS directory structure:&amp;quot;&lt;br /&gt;
   351    echo &amp;quot;  /sbin/umssync -r99 -v- /&amp;quot;&lt;br /&gt;
   352    /sbin/umssync -r99 -v- /&lt;br /&gt;
   353  fi&lt;br /&gt;
   354&lt;br /&gt;
   355  # Setup the /etc/motd to reflect the current kernel level:&lt;br /&gt;
   356  # THIS WIPES ANY CHANGES YOU MAKE TO /ETC/MOTD WITH EACH BOOT.&lt;br /&gt;
   357  # COMMENT THIS OUT IF YOU WANT TO MAKE A CUSTOM VERSION.&lt;br /&gt;
   358  echo &amp;quot;$(/bin/uname -sr).&amp;quot; &amp;gt; /etc/motd&lt;br /&gt;
   359&lt;br /&gt;
   360  # If there are SystemV init scripts for this runlevel, run them.&lt;br /&gt;
   361  if [ -x /etc/rc.d/rc.sysvinit ]; then&lt;br /&gt;
   362    . /etc/rc.d/rc.sysvinit&lt;br /&gt;
   363  fi&lt;br /&gt;
   364&lt;br /&gt;
   365  # Run serial port setup script:&lt;br /&gt;
   366  # CAREFUL!  This can make some systems hang if the rc.serial script isn't&lt;br /&gt;
   367  # set up correctly.  If this happens, you may have to edit the file from a&lt;br /&gt;
   368  # boot disk, and/or set it as non-executable:&lt;br /&gt;
   369  if [ -x /etc/rc.d/rc.serial ]; then&lt;br /&gt;
   370    sh /etc/rc.d/rc.serial start&lt;br /&gt;
   371  fi&lt;br /&gt;
   372&lt;br /&gt;
   373  # Carry an entropy pool between reboots to improve randomness.&lt;br /&gt;
   374  if [ -f /etc/random-seed ]; then&lt;br /&gt;
   375    echo &amp;quot;Using /etc/random-seed to initialize /dev/urandom.&amp;quot;&lt;br /&gt;
   376    cat /etc/random-seed &amp;gt; /dev/urandom&lt;br /&gt;
   377  fi&lt;br /&gt;
   378  # Use the pool size from /proc, or 512 bytes:&lt;br /&gt;
   379  if [ -r /proc/sys/kernel/random/poolsize ]; then&lt;br /&gt;
   380    dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2&amp;gt; /dev/null&lt;br /&gt;
   381  else&lt;br /&gt;
   382    dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2&amp;gt; /dev/null&lt;br /&gt;
   383  fi&lt;br /&gt;
   384  chmod 600 /etc/random-seed&lt;br /&gt;
   385&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Preferabil sa deschideti de doua ori pagina, ca sa va fie mai comoda orientarea.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;linie/i&amp;gt;: &amp;lt;explicatie&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;8: Este setata variabila de mediu PATH. PATH are urmatoarea forma: director:director:director[:director...] si urmatoarea calitate: Ii spune interpretorului in ce directoare sa se uite pentru fisierele executabile care nu au calea absoluta specificata.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;11: Este montat sistemul de fisiere virtual procfs. Folosindu-ne acest sistem de fisiere, vom putea afla informatii ce reflecta starea curenta a nucleului. Vom vedea imediat despre ce este vorba.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;20-36: Se verifica daca fisierul /proc/sys/kernel/hotplug exista si poate fi modificat ( [ -w ] ). Existenta acestui fisier inseamna ca nucleul are suport pentru subsistemul hotplug(traducere?), un sistem de configurare dinamica a componentelor hard. Vom intra in detalii mai tarziu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa aceasta, in cazul in care nucleul are suport pentru hotplug, se verifica daca nucleului i-a fost trimis parametrul de executie &amp;quot;nohotplug&amp;quot;. Aceasta verificare are loc prin inspectarea continutului fisierului /proc/cmdline, fisier ce contine toti parametrii trimisi nucleului de catre programul de incarcare. In cazul in care nucleului i-a fost trimis parametrul de executie &amp;quot;nohotplug&amp;quot;, atunci continutul fisierului /proc/sys/kernel/hotplug este schimbat in &amp;quot;/dev/null&amp;quot;. Continutul fisierului /proc/sys/kernel/hotplug reprezinta calea catre programul care va fi instintat de catre nucleu, cand va avea loc un eveniment(in cazul acesta, cand o componenta hard va fi cuplata). Prin schimbarea continutului fisierului /proc/sys/kernel/hotplug in &amp;quot;/dev/null&amp;quot;, sistemul hotplug este dezactivat, deoarece orice instintare a nucleului cu privire la evenimente hotplug va fi iignorata.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca nucleului n-a fost pornit cu parametrul de executie &amp;quot;nohotplug&amp;quot;, se va verifica daca scriptul /etc/rc.d/rc.hotplug este neexecutabil [ ! -x ], caz in care se verifica daca nucleul NU face parte din bransa 2.4.x, caz in care se dezactiveaza sistemul hotplug, schimbandu-se continutul fisierului /proc/sys/kernel/hotplug in &amp;quot;/dev/null&amp;quot;. Scriptul /etc/rc.d/rc.hotplug porneste sistemul hotplug, asa ca mai devreme a fost verificat pentru a vedea daca este activat de catre administrator. Daca acesta este activat, adica este executabil, va fi rulat de catre nivelele de rulare care vor avea suport pentru hotplug. Vom analiza scriptul /etc/rc.d/rc.hotplug atunci cand ne vom intalni cu executarea acestuia.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;39-41: Se verifica daca scriptul /etc/rc.d/rc.devfsd este prezent si executabil, caz in care scriptul este executat. Scriptul porneste si configureaza, prin intermediul lui defvsd, fisierele /dev. Aceste intrari probabil ca inca mai exista in /etc/rc.S din motive istorice, caci devfs a fost scos din Slackware inca de la versiunea 10.0. Daca doriti sa scadeti cu cateva milisecunde din timpul de initializare, puteti sa stergeti intrarile.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;44-50: Se verifica daca exista directorul /sys [ -d ], caz in care se verifica daca nucleul suporta sistemul de fisiere virtual sysfs. Aceasta verificare se face prin inspectarea fisierului /proc/filesystems, care contine o lista cu sistemele de fisere suportate de nucleu. Daca exista, atunci este verificat fisierul /proc/mounts, pentru a vedea daca sistemul de fisiere sysfs nu este deja montat. /proc/mounts contine o lista cu sistemele de fisiere deja montate. Daca sysfs nu este deja montat, este montat.(...)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Sysfs este un sistem virtual de fisiere, ca si procfs, care ofera informatii despre driverele nucleului. Nucleul din bransa 2.4.x nu are suport pentru acest sistem de fisiere virtual, asa ca daca nu o sa treceti pe 2.6.x, puteti sa stergeti aceste intrari, de doriti cateva milisecunde scazute din timpul de initializare.&lt;br /&gt;
&lt;br /&gt;
[...]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3172</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3172"/>
				<updated>2006-11-30T08:32:28Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum observam, init este primul(chiar unicul) program executat de catre nucleu. De fapt, nucleul nu executa _programul_ init, ci programul care are calea absoluta /sbin/init, /etc/init, /bin/init sau /bin/sh, asta in cazul in care nucleului nu-i este specificat ca parametru de executie(init= -- deobicei specificat prin intermediul lui LILO sau altui program de incarcare) altceva(execute_command).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mai observam ca dupa 3 incercari de a executa programul &amp;quot;init&amp;quot;, nucleul isi incearca pentru ultima oara norocul cu /bin/sh. Pe Slackware (si nu numai), fisierul cu aceasta cale absoluta este o legatura cu interpretorul de comenzi BASH. Asta inseamna ca, in cazul in care celelalte trei cai nu sint valide, ne vom trezi cu un interpretor de comenzi pentru suprautilizator si un sistem neconfigurat. Acesta este unul dintre riscurile de securitate despre care vorbeam in subcapitolul legat de programele de incarcare, datorita faptului ca prin intermediul lor se poate forta nucleul sa execute calea /bin/sh, sau a oricarui alt executabil preprogramat. Folosindu-ne de cunostintele acumulate pe parcursul ghidului, voi arata, catre final, in capitolul [inca nu i-am gasit un nume] cum se poate configura si pune in picioare in mod manual un sistem folosindu-ne doar de interpetatorul de comenzi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Tot procesul descris pana in acest moment ar trebui sa fie independent de distributia folosita. In schimb, odata cu executia programului cu una dintre cele 3 cai enumerate mai devreme, lucrurile tind sa devina specifice (dar nu exagerat) distributiei, sau, mai exact, specifice unui stil de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Lumea tinde sa-i atribuie lui Slackware si derivatelor sale stilul &amp;quot;BSD&amp;quot;, iar distributiilor ca Fedora Core, SuSe, Mandriva s.a. stilul &amp;quot;System V&amp;quot;. BSD si System V au fost, acum multi ani, niste versiuni de UNIX care, dupa cum se vede, au influentat sistemele de operare actuale. Ele isi mai continua si astazi existenta prin rudele lor de grad I, cum ar fi, in cazul lui System V, UnixWare, iar, in cazul lui BSD, Open/Net/FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta categorisire, in schimb, daca este luata la puricat, nu este tocmai corecta. Slackware se foloseste de stilul de initializare &amp;quot;System V&amp;quot;, doar ca il abordeaza intr-o maniera 'mai BSD', simplificandu-l, dupa cum vom vedea. Nu am sa intru detalii legate de diferentele de abordare a initializarii de catre, sa zicem, Mandriva si Slackware, nu asta este scopul ghidului. In schimb, la final, odata inteles modul in care Slackware 'vede lumea', cititorul se poate folosi de cunostiintele acumulate pentru a compara toate distributiile GNU/Linux, daca doreste :~)&lt;br /&gt;
&lt;br /&gt;
====sysvinit====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Slackware, ca si majoritatea celorlalte distributii, se foloseste de suita de utilitare sysvinit (instalata prestabilit). O scurta descriere a pachetului, insotita de o lista cu programele incluse in el, ar fi urmatoarea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ echo -e \\n &amp;quot;Descriere:&amp;quot;; head -n14 /var/log/packages/sysvinit-2.84-i486-69; \&lt;br /&gt;
echo -e \\n\\n &amp;quot;Lista cu programe:&amp;quot;; grep -e [18].gz$ /var/log/packages/sysinit-2.84-i486-69 | \&lt;br /&gt;
awk -F/ ' { print $4 } ' | awk -F. ' { print $1 } '&lt;br /&gt;
&lt;br /&gt;
Descriere:&lt;br /&gt;
PACKAGE NAME:     sysvinit-2.84-i486-69&lt;br /&gt;
COMPRESSED PACKAGE SIZE:     296 K&lt;br /&gt;
UNCOMPRESSED PACKAGE SIZE:     650 K&lt;br /&gt;
PACKAGE LOCATION: /var/log/mount/slackware/a/sysvinit-2.84-i486-69.tgz&lt;br /&gt;
PACKAGE DESCRIPTION:&lt;br /&gt;
sysvinit: sysvinit (init, the parent of all processes)&lt;br /&gt;
sysvinit:&lt;br /&gt;
sysvinit: System V style init programs by Miquel van Smoorenburg that control&lt;br /&gt;
sysvinit: the booting and shutdown of your system.  These support a number of&lt;br /&gt;
sysvinit: system runlevels, each with a specific set of utilities spawned.&lt;br /&gt;
sysvinit: For example, the normal system runlevel is 3, which starts agetty&lt;br /&gt;
sysvinit: on virtual consoles tty1 - tty6.  Runlevel 4 starts xdm.&lt;br /&gt;
sysvinit: Runlevel 0 shuts the system down.&lt;br /&gt;
sysvinit:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lista cu programe:&lt;br /&gt;
last&lt;br /&gt;
runlevel&lt;br /&gt;
killall5&lt;br /&gt;
shutdown&lt;br /&gt;
poweroff&lt;br /&gt;
init&lt;br /&gt;
halt&lt;br /&gt;
pidof&lt;br /&gt;
reboot&lt;br /&gt;
telinit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observam ca unul dintre programele incluse in pachet poarta denumirea de init. II aflam calea absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ su -c 'which init'&lt;br /&gt;
Password:&lt;br /&gt;
/sbin/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Avand respectiva cale, inseamna ca ar trebui sa fie primul program executat de nucleu. Ne putem convinge de acest lucru folosind comanda pstree(1), care ne va afisa un arbore de procese.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ pstree -np&lt;br /&gt;
init(1)-+-keventd(2)&lt;br /&gt;
        |-ksoftirqd_CPU0(3)&lt;br /&gt;
        |-kswapd(4)&lt;br /&gt;
        |-bdflush(5)&lt;br /&gt;
        |-kupdated(6)&lt;br /&gt;
        |-khubd(7)&lt;br /&gt;
        |-syslogd(72)&lt;br /&gt;
        |-klogd(75)&lt;br /&gt;
        |-inetd(631)&lt;br /&gt;
        |-dhcpcd(635)&lt;br /&gt;
        |-sshd(639)&lt;br /&gt;
        |-crond(652)&lt;br /&gt;
        |-atd(654)&lt;br /&gt;
        |-gpm(664)&lt;br /&gt;
        |-agetty(667)&lt;br /&gt;
        |-agetty(668)&lt;br /&gt;
        |-agetty(669)&lt;br /&gt;
        |-agetty(670)&lt;br /&gt;
        |-agetty(671)&lt;br /&gt;
        |-bash(860)---startx(958)---xinit(974)-+-X(975)&lt;br /&gt;
        |                                      `-xinitrc(979)---startkde(980)---kwrapper(1020)&lt;br /&gt;
        |-kdeinit(1008)-+-kdeinit(1013)&lt;br /&gt;
        [...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Uitandu-ne la arbore, observam ca, pe langa faptul ca init este primul proces si are pid'ul(tradus?) 1, restul proceselor tind sa izvoreasca din el. Consultandu-i pagina manual (init(8)), aflam niste detalii importante, printre care:&lt;br /&gt;
&lt;br /&gt;
* Init este tatal tuturor proceselor. Este primul program executat de catre nucleul la sfarsitul secventei de initializare al acestuia, fiindu-i atribuit pid-ul cu valoarea 1. ( de mentionat ca nucleul n-are pid'ul 1, ci 0. )&lt;br /&gt;
&lt;br /&gt;
* Printre scopurile sale se numara: Initializarea tuturor celorlalte procese, colectarea proceselor moarte(zombi) si regenerarea unor procese fiu la terminarea lor; Inspectarea, la initializare, a fisierului /etc/inittab, pentru configurarea sistemului.&lt;br /&gt;
&lt;br /&gt;
* Acceptare unor parametrii de executie, de obicei setati prin intermediul unui program de incarcare, care, daca sint specificati, ii pot schimba cursul firesc al derularii.&lt;br /&gt;
&lt;br /&gt;
* Captarea unor semnale si reactionarea la ele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Restul capacitatilor vor fi descrise spre finalul ghidului.&lt;br /&gt;
&lt;br /&gt;
=====/etc/inittab=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum s-a specificat mai sus, init,la executare, va citi fisierul /etc/inittab pentru a sti cum sa configureze sistemul. Conform paginii manual inittab(5), formatul fisierului /etc/inittab este urmatorul:&lt;br /&gt;
&lt;br /&gt;
id:niveluri de rulare:actiune:proces&lt;br /&gt;
&lt;br /&gt;
* Campul id: Trebuie sa contina un sir unic de maximum 4 caractere alfanumerice. Este folosit pentru a identifica fiecare intrare din fisier.&lt;br /&gt;
&lt;br /&gt;
* Niveluri de rulare: In primul rand, nivelul de rulare, conform paginii manual init(8), reprezinta o configuratie software a sistemului care, printre altele, specifica ce procese trebuiesc pornite de catre init. Configuratia se realizeaza prin intermediul unor scripturi BASH, fiecarui nivel de rulare atribuindu-se cel putin unul. Pot exista mai multe niveluri de executie. In Slackware, cele prestabilite sint urmatoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# These are the default runlevels in Slackware:&lt;br /&gt;
#   0 = halt&lt;br /&gt;
#   1 = single user mode&lt;br /&gt;
#   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
#   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
#   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   6 = reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In fisierul /etc/inittab, campul dedicat nivelurilor de rulare trebuie sa contina o lista de niveluri de rulare pentru care trebuie executata o actiune ce, in majoritatea cazurilor. Vom vedea imediat ce inseamna toate acestea.&lt;br /&gt;
&lt;br /&gt;
* Campul actiune: Descrie actiunea pe care init o sa o realizeze pentru o lista de niveluri de rulare. Exista mai multe tipuri de actiuni, printre care:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''respawn''': lanseaza o noua instanta a unui proces, daca acesta isi termina executia&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''wait''': procesul va fi pornit odata cu intrarea in nivelul de rulare, iar init va astepta pana acesta se incheie.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''once''': procesul va fi executat o singura data, de indata ce se va intra in nivelul de rulare&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''sysinit''': intrarea ce contine aceasta actiune specifica procesul ce trebuie executat in timpul initializarii sistemului de catre init. De obicei, acest, dupa cum vom vedea, scriptul BASH /etc/rc.S.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''initdefault''': intrarea ce contine aceasta actiune specifica si nivel de rulare care va fi executat de catre init, imediat dupa ce sistemul a fost initializat (prin intermediul scriptului rc.S.)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''ctrlaltdel''': procesul va fi executat atunci cand init va primi semnalul SIGINIT. Semnalul SIGINIT este trimis atunci cand sint apasate tastele CTRL-ALT-DELETE. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum se observa, majoritatea actiunilor merg mana in mana cu un proces. Procesul este specificat in campul proces.&lt;br /&gt;
&lt;br /&gt;
* Campul proces: Specifica un proces ce trebuie executat la intrarea intr-un nivel de rulare. Procesul poate fi o comanda sau un script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ca sa intelegem mai bine ce inseamna toate acestea, vom analiza un fisier /etc/inittab.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/inittab&lt;br /&gt;
     1  #&lt;br /&gt;
     2  # inittab       This file describes how the INIT process should set up&lt;br /&gt;
     3  #               the system in a certain run-level.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Version:      @(#)inittab             2.04    17/05/93        MvS&lt;br /&gt;
     6  #                                       2.10    02/10/95        PV&lt;br /&gt;
     7  #                                       3.00    02/06/1999      PV&lt;br /&gt;
     8  #                                       4.00    04/10/2002      PV&lt;br /&gt;
     9  #&lt;br /&gt;
    10  # Author:       Miquel van Smoorenburg, &amp;lt;miquels@drinkel.nl.mugnet.org&amp;gt;&lt;br /&gt;
    11  # Modified by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
    12  #&lt;br /&gt;
    13&lt;br /&gt;
    14  # These are the default runlevels in Slackware:&lt;br /&gt;
    15  #   0 = halt&lt;br /&gt;
    16  #   1 = single user mode&lt;br /&gt;
    17  #   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    18  #   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
    19  #   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
    20  #   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    21  #   6 = reboot&lt;br /&gt;
    22&lt;br /&gt;
    23  # Default runlevel. (Do not set to 0 or 6)&lt;br /&gt;
    24  id:3:initdefault:&lt;br /&gt;
    25&lt;br /&gt;
    26  # System initialization (runs when system boots).&lt;br /&gt;
    27  si:S:sysinit:/etc/rc.d/rc.S&lt;br /&gt;
    28&lt;br /&gt;
    29  # Script to run when going single user (runlevel 1).&lt;br /&gt;
    30  su:1S:wait:/etc/rc.d/rc.K&lt;br /&gt;
    31&lt;br /&gt;
    32  # Script to run when going multi user.&lt;br /&gt;
    33  rc:2345:wait:/etc/rc.d/rc.M&lt;br /&gt;
    34&lt;br /&gt;
    35  # What to do at the &amp;quot;Three Finger Salute&amp;quot;.&lt;br /&gt;
    36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&lt;br /&gt;
    37&lt;br /&gt;
    38  # Runlevel 0 halts the system.&lt;br /&gt;
    39  l0:0:wait:/etc/rc.d/rc.0&lt;br /&gt;
    40&lt;br /&gt;
    41  # Runlevel 6 reboots the system.&lt;br /&gt;
    42  l6:6:wait:/etc/rc.d/rc.6&lt;br /&gt;
    43&lt;br /&gt;
    44  # These are the standard console login getties in multiuser mode:&lt;br /&gt;
    45  c1:1235:respawn:/sbin/agetty 38400 tty1 linux&lt;br /&gt;
    46  c2:1235:respawn:/sbin/agetty 38400 tty2 linux&lt;br /&gt;
    47  c3:1235:respawn:/sbin/agetty 38400 tty3 linux&lt;br /&gt;
    48  c4:1235:respawn:/sbin/agetty 38400 tty4 linux&lt;br /&gt;
    49  c5:1235:respawn:/sbin/agetty 38400 tty5 linux&lt;br /&gt;
    50  c6:12345:respawn:/sbin/agetty 38400 tty6 linux&lt;br /&gt;
    51&lt;br /&gt;
    52  # Runlevel 4 used to be for an X window only system, until we discovered&lt;br /&gt;
    53  # that it throws init into a loop that keeps your load avg at least 1 all&lt;br /&gt;
    54  # the time. Thus, there is now one getty opened on tty6. Hopefully no one&lt;br /&gt;
    55  # will notice. ;^)&lt;br /&gt;
    56  # It might not be bad to have one text console anyway, in case something&lt;br /&gt;
    57  # happens to X.&lt;br /&gt;
    58  x1:4:respawn:/etc/rc.d/rc.4&lt;br /&gt;
    59&lt;br /&gt;
    60  # End of /etc/inittab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Vom analiza fiecare intrare, explicand-o.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Prima intrare, cea de la linia 24, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;id&amp;quot; (datorita campului id, faptul ca valoare campului coincide cu numele acestuia nu are vreo importanta). Campul nivelului de rulare este ocupat de caracterul &amp;quot;3&amp;quot;. Campul actiunii este ocupat de 'initdefault', ceea ce inseamna ca init va intra in nivelul de rulare specificat de catre acest camp, adica, in cazul nostru, &amp;quot;3&amp;quot;. Campul proces lipseste doarece intrarea, continand actiunea 'initdefault', nu necesita un proces, acesta fiind oricum ignorat daca ar fi specificat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A doua intrare, cea de la linia 27, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;si&amp;quot;. Campul nivelului de rulare este ocupat de caracterul &amp;quot;S&amp;quot;.Campul actiunii este ocupat de  catre &amp;quot;sysinit&amp;quot;, iar procesul este scriptul /etc/rc.d/rc.S. Faptul ca &amp;quot;sysinit&amp;quot; ocupa campul actiune ii spune lui init sa execute procesul din campul proces (in cazul acest, ii spune lui init sa execute scriptul /etc/rc.d/rc.S) inainte de a intra in vreun nivel de rulare(nivelul &amp;quot;3&amp;quot;, in cazul nostru ^^).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treia intrare, cea de la linia 30, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;su&amp;quot;. Campul nivelului de rulare este &amp;quot;1S&amp;quot;, ceea ce-nseamna ca intrarea se aplica atat nivelului de rulare &amp;quot;1&amp;quot;, cat si nivelului de rulare &amp;quot;S&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.K. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A patra intrare, cea de la linia 33, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;rc&amp;quot;. Campul nivelelor de rulare este &amp;quot;2345&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelelor de rulare &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot; si &amp;quot;5&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.M. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A cincea intrare, cea de la linia 36, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;ca&amp;quot;. Campul nivelelor de rulare este gol. Campul actiunii este ocupat de catre &amp;quot;ctrlaltdel&amp;quot;, iar procesul de catre comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Faptul ca &amp;quot;ctrlaltdel&amp;quot; ocupa campul actiune ii spune lui init ca, atunci cand sint apasate tastele CTRL+ALT+DELETE la consola, sa execute procesul din campul proces, in cazul nostru comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Aceasta actiune nu necesita un nivel de rulare, presupunandu-se ca, daca ajungem la o consola sa apasam cele trei taste mai devreme mentionate, sintem deja intr-un nivel de rulare cu un sistem mai mult sau mai putin configurat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A sasea intrare, cea de la linia 39, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l0&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;0&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;0&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.0. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.0 atunci cand va intra in nivelul de rulare &amp;quot;0&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A saptea intrare, cea de la linia 42, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l6&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;6&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;6&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.6. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.6 atunci cand va intra in nivelul de rulare &amp;quot;6&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmatoarele 5 intrari -- de la linia 45 la linia 49 -- sint aproape identice, singurele lucruri care le deosebesc fiind campul care le identifica( oare de ce?:-) ) si penultimul parametru de executie al comenzii din campul proces. Toate au la campul nivelurilor de rulare caracterele &amp;quot;1235&amp;quot;. Toate au in campul actiunii &amp;quot;respawn&amp;quot;, iar la proces comanda &amp;quot;/sbin/agetty 38400 tty&amp;lt;x&amp;gt; linux&amp;quot;, &amp;lt;x&amp;gt; diferind de la intrare la intrare. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa regenereze procesul din campul proces, cand acesta isi termina executia. In cazul nostru, init va regenera o sesiune de identificare(engl. login prompt) in cazul in care aceasta se va sfarsi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treisprezecea intrare, cea de la linia 50, este are aceleasi proprietati ca si ultimele 5 intrari, doar ca intrarea este aplicata si nivelului de rulare &amp;quot;4&amp;quot;, spre deosebire de precedentele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ultima intrare, cea de la linia 58, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;x1&amp;quot;. Campul nivelurilor de rulare este ocupat de catre caracterul &amp;quot;4&amp;quot;. Campul actiune este ocupat de catre &amp;quot;respawn&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.4. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa reexecute scriptul /etc/rc.d/rc.4, cand acesta se va termina.&lt;br /&gt;
&lt;br /&gt;
=====Lamuriri necesare pentru a continua. Mica erata a ceea ce a fost expus pana acum.=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Probabil ca se observa niste neconcordante intre anumite lucruri ce-au fost descrise pana acum. De exemplu: Inainte sa depanam fisierul /etc/inittab, s-a spus ca valoarea din campul proces reprezinta un proces (ce, dupa cum am observat, poate fi o comanda sau un script) care va fi executat de catre init _l-a intrarea intr-un nivel de rulare_, dar noi am observat ca intr-unele intrari campul nivelurilor de rulare este gol, pe cand campul proces contine o valoare. De ce am spus asta? Pai, in primul rand, ca este mai usor de inteles un lucru partial adevarat, urmat de o lamurire, decat daca as intra in detalii de la bun inceput; si, in plus, explicatiile detaliate duc, dupa cum se pare, la exprimari tautologice ( ca sa fiu delicat :~) ), datorita unor termeni care nu se impac intr-o expresie/propozitie... Bun. Revenind.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Init, pe langa faptul ca este primul program executat, mai este si ultimul, -- asta in cazul in care procesul de oprire al calculatorului se deruleaza normal si corect. Ce ne spune acest lucru? Pai ne spune mai multe lucruri. Ne spune, de exemplu, ca pe parcursul timpului de executie al lui init, sistemul este 1. configurat 2. intretinut 3. deconfigurat. Vom urma in detaliu stagiile (1) si (3), dar hai sa spunem cateva lucruri despre fiecare in parte, chiar daca voi prelua anumite idei ce-au fost deja expuse.&lt;br /&gt;
&lt;br /&gt;
* (1) Nucleul nu-l arunca pe init intr-un mediu complet configurat. De fapt, luat in mare, nu il lasa decat cu un sistem de fisiere radacina montat cu proprietatea de numai-citire, dupa care se retrage linistit in fundal, unde isi vede de treaba, printre altele punand la dispozitia programelor o suita de apeluri de sistem prin intermediu carora acestea comunica cu el. Pana ajungem noi sa ne autentificam, init are mult de munca. De fapt, prea il elogiez, caci el nu face toata treaba de unul singur, ci mai degraba o coordoneaza. Am observat ca el citeste fisierul /etc/inittab si ca de acolo afla, printre altele, ce scripturi sa execute pentru configurarea sistemului. Comenzile din acele scripturi, de fapt, pun in picioare sistemul, iar unul dintre rolurile lui init este sa ruleze aceste scripturi. Acest lucru ofera o mare flexibilitate administratorului sistemului, deoarece scripturile sint mai usor de inteles si de schimbat. Va imaginati ce-ar fi insemnat ca init sa faca toata treaba de unul singur, fara sa apeleze la BASH sau alt interpretor de comenzi? Ar fi insemnat ca init sa fie foarte complex, ar fi insemnat ca administratorul de sistem sa ii umble prin codul sursa, daca ar vrea sa schimbe ceva -- orice, dupa care sa-l recompileze s.a.m.d. Ca sa inchei scurta introducere a acestui stagiu, nu mai spun decat ca, in Slackware si derivatele sale, TOATE scripturile de care se foloseste init se afla in directorul /etc/rc.d/. Acest lucru nu este batut in cuie, putand foarte lejer sa schimbam asta prin modificarea campului proces al intrarilor din /etc/inittab, dar este o conventie utila si bine gandita, asa mai bine nu am schimba-o. De asemenea, vom urmari indeaproape fiecare script in parte.&lt;br /&gt;
&lt;br /&gt;
* (2) Cum sta treaba cu intretinerea sistemului? Pai e lesne de imaginat ca, fiind primul program pornit si ruland _mereu_, chiar si dupa ce sistemul a fost configurat si noi deja ne bucuram de facilitile unui client de posta electronica, init nu sta degeaba. S-a specificat mai devreme, cand au fost enumerate unele dintre scopurile sale, ca se ocupa cu initializarea tuturor celorlalte procese, colectarea proceselor moarte s.a. Nu s-a specificat, in schimb, o proprietate specifica tuturor programelor ( a se citi proceselor ) unui sistem compatibil cu standardele ANSI/POSIX. Aceasta proprietate este aceea de a capta semnale. Probabil ca toti stim ce este un semnal, deoarece toti am folosit comanda kill. Stim ca programele pot fi programate(...) sa capteze anumite semnale, si sa interactioneze intr-un anume fel la primirea acestora. Asa face si init, dar spre deosebire de alte programe, ii poate fi specificat si cum sa reactioneze la primirea anumitor semnale. Cum ii specificam asta? Pai cum faceam si pana acum, cand voiam sa-i modelam comportamentul: folosindu-ne de fisierul /etc/inittab. Acum ajungem la acele neconcordante despre care vorbeam mai devreme, anume intrarile din fisierul /etc/inittab care contin nu contin un nivel de rulare, dar contin un proces.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;S-a specificat ca aceasta intrare are urmatoarea influenta asupra lui init: cand init primeste semnalul SIGINIT (care ii este trimis cand sint apasate, la consola, tastele CTRL+ALT+DELETE), acesta executa comanda /sbin/shutdown -t5 -r now. Faptul ca nu este specificat un nivel de rulare nu are vreo importanta, caci intrarea cu aceasta actiune se aplica oricarui 'nivel de rulare'( de fapt, daca init este pornit, nu conteaza daca sistemul este configurat sau ba, daca sintem intr-un nivel de rulare sau nu, va reactiona cum am spus mai devreme. ). Aceasta nu este singura actiune care ii spune lui init sa reactioneze cumva la primirea unui semnal. Distributia vine cu un fisier /etc/inittab care contine inca 2 intrari cu actiuni asemanatoare, anume powerfail si powerokwait, care reactioneaza la semnale primite de la sursa de alimentare neintreruptibila(engl. presc. UPS).&lt;br /&gt;
&lt;br /&gt;
* (3) Despre acest stagiu nu s-a scris deloc pana acum. Pe scurt, deconfigurarea sistemului se face prin configurarea unor nivele de rulare pentru acest scop, nivele de rulare care sa execute anumite scripturi care sa faca, in mare parte, opusul scriptului de initializare + oprirea serviciilor specifice nivelului de rulare in care sintem. Aceste scripturi, in cazul de fata -- si in cazul unei distributii Slackware nemodificate --, sint /etc/rc.0 si /etc/rc.6, specifice nivelurilor de executie &amp;quot;0&amp;quot; si &amp;quot;6&amp;quot;. Le vom urmari indeaproape.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In cele ce urmeaza, vom analiza stagiul (2), mai exact scripturile executate de catre init, folosindu-ne de fisierul /etc/inittab postat aici. Scripturile pe care le vom analiza sint cele care vin cu distributia, mai putin /etc/inittab, caruia i-au fost scoase 2 intrari care oricum n-au sa faca mare diferenta. Vom lua scripturile in ordinea executarii lor de catre init.&lt;br /&gt;
&lt;br /&gt;
=====/etc/rc.S=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Are urmatoarele calitati:&lt;br /&gt;
&lt;br /&gt;
* 1. Este primul script executat de catre init.&lt;br /&gt;
&lt;br /&gt;
* 2. Este rulat inainte de executarea oricarui script specific vreunui nivel de rulare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Scriptul este voluminos. In cele ce urmeaza, continutul sau va fi postat in varianta originala. Nu voi scoate comentariile, acestea fiind de ajutor daca stiti ceva 'engleza tehnica'; daca nu stiti, sau nu intelegeti, oricum voi repeta (si adauga) explicatii in limba romana, pentru fiecare instructiune sau bloc de instructiuni.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatie: Am pornit de la bun inceput de la premiza ca aveti ceva cunostinte legate de interpretorul de comenzi BASH si despre mediul GNU/Linux (comenzi elementare, machetarea fisierelor s.a.m.d.), intr-atat incat sa intelegeti o buna parte din toate cele ce-ar urma, chiar daca doar semantic. Daca nu aveti experienta cu cele mai sus enumerate, puteti profita de rigurozitatea cu care se va incerca explicarea scripturilor si, impreuna cu tutorialele/indrumarele specificate la finalul ghidului, sa analizati mecanismele acestea folosite in viata reala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/rc.d/rc.S&lt;br /&gt;
     1  #!/bin/sh&lt;br /&gt;
     2  #&lt;br /&gt;
     3  # /etc/rc.d/rc.S:  System initialization script.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Mostly written by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
     6  #&lt;br /&gt;
     7&lt;br /&gt;
     8  PATH=/sbin:/usr/sbin:/bin:/usr/bin&lt;br /&gt;
     9&lt;br /&gt;
    10  # Mount /proc right away:&lt;br /&gt;
    11  /sbin/mount -v proc /proc -n -t proc&lt;br /&gt;
    12&lt;br /&gt;
    13  # If 'nohotplug' was given at boot, or rc.hotplug has been turned off&lt;br /&gt;
    14  # (and a 2.4.x kernel is running), then shut off hotplugging in the&lt;br /&gt;
    15  # kernel now.  Realize that if you turn off hotplugging support that&lt;br /&gt;
    16  # you will have to load all the kernel modules that you need yourself&lt;br /&gt;
    17  # (possibly in /etc/rc.d/rc.modules, which does not promise to list&lt;br /&gt;
    18  # all of them), and make any additional device nodes that you need in&lt;br /&gt;
    19  # the /dev directory.&lt;br /&gt;
    20  if [ -w /proc/sys/kernel/hotplug ]; then&lt;br /&gt;
    21    # Kernel command line option 'nohotplug' given, so we will shut off&lt;br /&gt;
    22    # hotplugging even if it is not a good idea.  Sometimes it *is* a&lt;br /&gt;
    23    # good idea, especially when you're trying to figure out which&lt;br /&gt;
    24    # kernel module is crashing the machine and needs to be added to&lt;br /&gt;
    25    # your /etc/modprobe.d/blacklist (2.6+ kernels) and/or your&lt;br /&gt;
    26    # /etc/hotplug/blacklist (2.4.x kernels).&lt;br /&gt;
    27    if grep -wq nohotplug /proc/cmdline ; then&lt;br /&gt;
    28      echo &amp;quot;/dev/null&amp;quot; &amp;gt; /proc/sys/kernel/hotplug&lt;br /&gt;
    29    elif [ ! -x /etc/rc.d/rc.hotplug ]; then&lt;br /&gt;
    30      # Ignore /etc/rc.d/rc.hotplug on kernels newer than 2.4.x:&lt;br /&gt;
    31      if [ ! &amp;quot;$(uname -r | cut -f 1,2 -d .)&amp;quot; = &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
    32        # We must be running a 2.4.x kernel, so turn off hotplug:&lt;br /&gt;
    33        echo &amp;quot;/dev/null&amp;quot; &amp;gt; /proc/sys/kernel/hotplug&lt;br /&gt;
    34      fi&lt;br /&gt;
    35    fi&lt;br /&gt;
    36  fi&lt;br /&gt;
    37&lt;br /&gt;
    38  # Start devfsd if necessary.  On newer kernels, udev should be used instead.&lt;br /&gt;
    39  if [ -x /etc/rc.d/rc.devfsd ]; then&lt;br /&gt;
    40    /etc/rc.d/rc.devfsd start&lt;br /&gt;
    41  fi&lt;br /&gt;
    42&lt;br /&gt;
    43  # Mount sysfs next, if the kernel supports it:&lt;br /&gt;
    44  if [ -d /sys ]; then&lt;br /&gt;
    45    if cat /proc/filesystems | grep -wq sysfs ; then&lt;br /&gt;
    46      if ! cat /proc/mounts | grep -wq sysfs ; then&lt;br /&gt;
    47        /sbin/mount -v sysfs /sys -n -t sysfs&lt;br /&gt;
    48      fi&lt;br /&gt;
    49    fi&lt;br /&gt;
    50  fi&lt;br /&gt;
    51&lt;br /&gt;
    52  # Enable swapping:&lt;br /&gt;
    53  /sbin/swapon -a&lt;br /&gt;
    54&lt;br /&gt;
    55  # Test to see if the root partition is read-only, like it ought to be.&lt;br /&gt;
    56  READWRITE=no&lt;br /&gt;
    57  if touch /fsrwtestfile 2&amp;gt;/dev/null; then&lt;br /&gt;
    58    rm -f /fsrwtestfile&lt;br /&gt;
    59    READWRITE=yes&lt;br /&gt;
    60  else&lt;br /&gt;
    61    echo &amp;quot;Testing root filesystem status:  read-only filesystem&amp;quot;&lt;br /&gt;
    62  fi&lt;br /&gt;
    63&lt;br /&gt;
    64  # See if a forced filesystem check was requested at shutdown:&lt;br /&gt;
    65  if [ -r /etc/forcefsck ]; then&lt;br /&gt;
    66    FORCEFSCK=&amp;quot;-f&amp;quot;&lt;br /&gt;
    67  fi&lt;br /&gt;
    68&lt;br /&gt;
    69  # Check the root filesystem:&lt;br /&gt;
    70  if [ ! $READWRITE = yes ]; then&lt;br /&gt;
    71    RETVAL=0&lt;br /&gt;
    72    if [ ! -r /etc/fastboot ]; then&lt;br /&gt;
    73      echo &amp;quot;Checking root filesystem:&amp;quot;&lt;br /&gt;
    74      /sbin/fsck $FORCEFSCK -C -a /&lt;br /&gt;
    75      RETVAL=$?&lt;br /&gt;
    76    fi&lt;br /&gt;
    77    # An error code of 2 or higher will require a reboot.&lt;br /&gt;
    78    if [ $RETVAL -ge 2 ]; then&lt;br /&gt;
    79      # An error code equal to or greater than 4 means that some errors&lt;br /&gt;
    80      # could not be corrected.  This requires manual attention, so we&lt;br /&gt;
    81      # offer a chance to try to fix the problem in single-user mode:&lt;br /&gt;
    82      if [ $RETVAL -ge 4 ]; then&lt;br /&gt;
    83        echo&lt;br /&gt;
    84        echo &amp;quot;***********************************************************&amp;quot;&lt;br /&gt;
    85        echo &amp;quot;*** An error occurred during the root filesystem check. ***&amp;quot;&lt;br /&gt;
    86        echo &amp;quot;*** You will now be given a chance to log into the      ***&amp;quot;&lt;br /&gt;
    87        echo &amp;quot;*** system in single-user mode to fix the problem.      ***&amp;quot;&lt;br /&gt;
    88        echo &amp;quot;***                                                     ***&amp;quot;&lt;br /&gt;
    89        echo &amp;quot;*** If you are using the ext2 filesystem, running       ***&amp;quot;&lt;br /&gt;
    90        echo &amp;quot;*** 'e2fsck -v -y &amp;lt;partition&amp;gt;' might help.              ***&amp;quot;&lt;br /&gt;
    91        echo &amp;quot;***********************************************************&amp;quot;&lt;br /&gt;
    92        echo&lt;br /&gt;
    93        echo &amp;quot;Once you exit the single-user shell, the system will reboot.&amp;quot;&lt;br /&gt;
    94        echo&lt;br /&gt;
    95        PS1=&amp;quot;(Repair filesystem) \#&amp;quot;; export PS1&lt;br /&gt;
    96        sulogin&lt;br /&gt;
    97      else # With an error code of 2 or 3, reboot the machine automatically:&lt;br /&gt;
    98        echo&lt;br /&gt;
    99        echo &amp;quot;***********************************&amp;quot;&lt;br /&gt;
   100        echo &amp;quot;*** The filesystem was changed. ***&amp;quot;&lt;br /&gt;
   101        echo &amp;quot;*** The system will now reboot. ***&amp;quot;&lt;br /&gt;
   102        echo &amp;quot;***********************************&amp;quot;&lt;br /&gt;
   103        echo&lt;br /&gt;
   104      fi&lt;br /&gt;
   105      echo &amp;quot;Unmounting file systems.&amp;quot;&lt;br /&gt;
   106      /sbin/umount -a -r&lt;br /&gt;
   107      /sbin/mount -n -o remount,ro /&lt;br /&gt;
   108      echo &amp;quot;Rebooting system.&amp;quot;&lt;br /&gt;
   109      sleep 2&lt;br /&gt;
   110      reboot -f&lt;br /&gt;
   111    fi&lt;br /&gt;
   112    # Remount the root filesystem in read-write mode&lt;br /&gt;
   113    echo &amp;quot;Remounting root device with read-write enabled.&amp;quot;&lt;br /&gt;
   114    /sbin/mount -w -v -n -o remount /&lt;br /&gt;
   115    if [ $? -gt 0 ] ; then&lt;br /&gt;
   116      echo&lt;br /&gt;
   117      echo &amp;quot;Attempt to remount root device as read-write failed!  This is going to&amp;quot;&lt;br /&gt;
   118      echo &amp;quot;cause serious problems.&amp;quot;&lt;br /&gt;
   119      echo&lt;br /&gt;
   120      echo &amp;quot;If you're using the UMSDOS filesystem, you **MUST** mount the root partition&amp;quot;&lt;br /&gt;
   121      echo &amp;quot;read-write!  You can make sure the root filesystem is getting mounted &amp;quot;&lt;br /&gt;
   122      echo &amp;quot;read-write with the 'rw' flag to Loadlin:&amp;quot;&lt;br /&gt;
   123      echo&lt;br /&gt;
   124      echo &amp;quot;loadlin vmlinuz root=/dev/hda1 rw   (replace /dev/hda1 with your root device)&amp;quot;&lt;br /&gt;
   125      echo&lt;br /&gt;
   126      echo &amp;quot;Normal bootdisks can be made to mount a system read-write with the rdev command:&amp;quot;&lt;br /&gt;
   127      echo&lt;br /&gt;
   128      echo &amp;quot;rdev -R /dev/fd0 0&amp;quot;&lt;br /&gt;
   129      echo&lt;br /&gt;
   130      echo &amp;quot;You can also get into your system by using a boot disk with a command like this&amp;quot;&lt;br /&gt;
   131      echo &amp;quot;on the LILO prompt line:  (change the root partition name as needed)&amp;quot;&lt;br /&gt;
   132      echo&lt;br /&gt;
   133      echo &amp;quot;LILO: mount root=/dev/hda1 rw&amp;quot;&lt;br /&gt;
   134      echo&lt;br /&gt;
   135      echo &amp;quot;Please press ENTER to continue, then reboot and use one of the above methods to&amp;quot;&lt;br /&gt;
   136      echo -n &amp;quot;get into your machine and start looking for the problem. &amp;quot;&lt;br /&gt;
   137      read junk;&lt;br /&gt;
   138    fi&lt;br /&gt;
   139  else&lt;br /&gt;
   140    echo &amp;quot;Testing root filesystem status:  read-write filesystem&amp;quot;&lt;br /&gt;
   141    if cat /etc/fstab | grep ' / ' | grep -wq umsdos ; then&lt;br /&gt;
   142      ROOTTYPE=&amp;quot;umsdos&amp;quot;&lt;br /&gt;
   143    fi&lt;br /&gt;
   144    if [ ! &amp;quot;$ROOTTYPE&amp;quot; = &amp;quot;umsdos&amp;quot; ]; then # no warn for UMSDOS&lt;br /&gt;
   145      echo&lt;br /&gt;
   146      echo &amp;quot;*** ERROR: Root partition has already been mounted read-write. Cannot check!&amp;quot;&lt;br /&gt;
   147      echo&lt;br /&gt;
   148      echo &amp;quot;For filesystem checking to work properly, your system must initially mount&amp;quot;&lt;br /&gt;
   149      echo &amp;quot;the root partition as read only. Please modify your kernel with 'rdev' so that&amp;quot;&lt;br /&gt;
   150      echo &amp;quot;it does this. If you're booting with LILO, add a line:&amp;quot;&lt;br /&gt;
   151      echo&lt;br /&gt;
   152      echo &amp;quot;   read-only&amp;quot;&lt;br /&gt;
   153      echo&lt;br /&gt;
   154      echo &amp;quot;to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it.&amp;quot;&lt;br /&gt;
   155      echo&lt;br /&gt;
   156      echo &amp;quot;If you boot from a kernel on a floppy disk, put it in the drive and type:&amp;quot;&lt;br /&gt;
   157      echo &amp;quot;   rdev -R /dev/fd0 1&amp;quot;&lt;br /&gt;
   158      echo&lt;br /&gt;
   159      echo &amp;quot;If you boot from a bootdisk, or with Loadlin, you can add the 'ro' flag.&amp;quot;&lt;br /&gt;
   160      echo&lt;br /&gt;
   161      echo &amp;quot;This will fix the problem *AND* eliminate this annoying message. :^)&amp;quot;&lt;br /&gt;
   162      echo&lt;br /&gt;
   163      echo -n &amp;quot;Press ENTER to continue. &amp;quot;&lt;br /&gt;
   164      read junk;&lt;br /&gt;
   165    fi&lt;br /&gt;
   166  fi # Done checking root filesystem&lt;br /&gt;
   167&lt;br /&gt;
   168  # Any /etc/mtab that exists here is old, so we delete it to start over:&lt;br /&gt;
   169  /bin/rm -f /etc/mtab*&lt;br /&gt;
   170  # Remounting the / partition will initialize the new /etc/mtab:&lt;br /&gt;
   171  /sbin/mount -w -o remount /&lt;br /&gt;
   172&lt;br /&gt;
   173  # Fix /etc/mtab to list sys and proc if they were not yet entered in&lt;br /&gt;
   174  # /etc/mtab because / was still mounted read-only:&lt;br /&gt;
   175  if [ -d /proc/sys ]; then&lt;br /&gt;
   176    /sbin/mount -f proc /proc -t proc&lt;br /&gt;
   177  fi&lt;br /&gt;
   178  if [ -d /sys/bus ]; then&lt;br /&gt;
   179    /sbin/mount -f sysfs /sys -t sysfs&lt;br /&gt;
   180  fi&lt;br /&gt;
   181&lt;br /&gt;
   182  # Initialize udev to manage /dev entries and hotplugging for 2.6.x kernels.&lt;br /&gt;
   183  # You may turn off udev by making the /etc/rc.d/rc.udev file non-executable,&lt;br /&gt;
   184  # but in the 2.6.x+ kernels udev has taken over the job of hotplug (finding&lt;br /&gt;
   185  # hardware and loading the kernel modules for it, as well as creating device&lt;br /&gt;
   186  # nodes in /dev).  Realize that if you turn off udev that you will have to&lt;br /&gt;
   187  # load all the kernel modules that you need yourself (possibly in&lt;br /&gt;
   188  # /etc/rc.d/rc.modules, which does not promise to list all of them), and&lt;br /&gt;
   189  # make any additional device nodes that you need in the /dev directory.&lt;br /&gt;
   190  # Even USB and IEEE1394 devices will need to have the modules loaded by&lt;br /&gt;
   191  # hand if udev is not used with a 2.6 kernel.  So use it.  :-)&lt;br /&gt;
   192  if cat /proc/mounts | grep -wq sysfs &amp;amp;&amp;amp; cat /proc/filesystems | grep -wq tmpfs ; then&lt;br /&gt;
   193    if ! grep -wq nohotplug /proc/cmdline ; then&lt;br /&gt;
   194      if [ -x /etc/rc.d/rc.udev ]; then&lt;br /&gt;
   195        /bin/sh /etc/rc.d/rc.udev start&lt;br /&gt;
   196        /bin/sh /lib/udev/udev.count_events.sh&lt;br /&gt;
   197      fi&lt;br /&gt;
   198    fi&lt;br /&gt;
   199  fi&lt;br /&gt;
   200&lt;br /&gt;
   201  # Set the system time from the hardware clock using hwclock --hctosys.&lt;br /&gt;
   202  if [ -x /sbin/hwclock ]; then&lt;br /&gt;
   203    # Check for a broken motherboard RTC clock (where ioports for rtc are&lt;br /&gt;
   204    # unknown) to prevent hwclock causing a hang:&lt;br /&gt;
   205    if ! grep -q -w rtc /proc/ioports ; then&lt;br /&gt;
   206      CLOCK_OPT=&amp;quot;--directisa&amp;quot;&lt;br /&gt;
   207    fi&lt;br /&gt;
   208    if grep -wq &amp;quot;^UTC&amp;quot; /etc/hardwareclock ; then&lt;br /&gt;
   209      echo &amp;quot;Setting system time from the hardware clock (UTC).&amp;quot;&lt;br /&gt;
   210      /sbin/hwclock $CLOCK_OPT --utc --hctosys&lt;br /&gt;
   211    else&lt;br /&gt;
   212      echo &amp;quot;Setting system time from the hardware clock (localtime).&amp;quot;&lt;br /&gt;
   213      /sbin/hwclock $CLOCK_OPT --localtime --hctosys&lt;br /&gt;
   214    fi&lt;br /&gt;
   215  fi&lt;br /&gt;
   216&lt;br /&gt;
   217  # Configure ISA Plug-and-Play devices:&lt;br /&gt;
   218  if [ -r /etc/isapnp.conf ]; then&lt;br /&gt;
   219    if [ -x /sbin/isapnp ]; then&lt;br /&gt;
   220      /sbin/isapnp /etc/isapnp.conf&lt;br /&gt;
   221    fi&lt;br /&gt;
   222  fi&lt;br /&gt;
   223&lt;br /&gt;
   224  # This loads any kernel modules that are needed.  These might be required to&lt;br /&gt;
   225  # use your ethernet card, sound card, or other optional hardware.&lt;br /&gt;
   226  # Priority is given first to a script named &amp;quot;rc.modules.local&amp;quot;, then&lt;br /&gt;
   227  # to &amp;quot;rc.modules-$FULL_KERNEL_VERSION&amp;quot;, and finally to the plain &amp;quot;rc.modules&amp;quot;.&lt;br /&gt;
   228  # Note that if /etc/rc.d/rc.modules.local is found, then that will be the ONLY&lt;br /&gt;
   229  # rc.modules script the machine will run, so make sure it has everything in&lt;br /&gt;
   230  # it that you need.&lt;br /&gt;
   231  if [ -x /etc/rc.d/rc.modules.local -a -r /proc/modules ]; then&lt;br /&gt;
   232    echo &amp;quot;Running /etc/rc.d/rc.modules.local:&amp;quot;&lt;br /&gt;
   233    /bin/sh /etc/rc.d/rc.modules.local&lt;br /&gt;
   234  elif [ -x /etc/rc.d/rc.modules-$(uname -r) -a -r /proc/modules ]; then&lt;br /&gt;
   235    echo &amp;quot;Running /etc/rc.d/rc.modules-$(uname -r):&amp;quot;&lt;br /&gt;
   236    . /etc/rc.d/rc.modules-$(uname -r)&lt;br /&gt;
   237  elif [ -x /etc/rc.d/rc.modules -a -r /proc/modules -a -L /etc/rc.d/rc.modules ]; then&lt;br /&gt;
   238    echo &amp;quot;Running /etc/rc.d/rc.modules -&amp;gt; $(readlink /etc/rc.d/rc.modules):&amp;quot;&lt;br /&gt;
   239    . /etc/rc.d/rc.modules&lt;br /&gt;
   240  elif [ -x /etc/rc.d/rc.modules -a -r /proc/modules ]; then&lt;br /&gt;
   241    echo &amp;quot;Running /etc/rc.d/rc.modules:&amp;quot;&lt;br /&gt;
   242    . /etc/rc.d/rc.modules&lt;br /&gt;
   243  fi&lt;br /&gt;
   244&lt;br /&gt;
   245  # Configure runtime kernel parameters:&lt;br /&gt;
   246  if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then&lt;br /&gt;
   247    /sbin/sysctl -e -p /etc/sysctl.conf&lt;br /&gt;
   248  fi&lt;br /&gt;
   249&lt;br /&gt;
   250  # Initialize the Logical Volume Manager.&lt;br /&gt;
   251  # This won't start unless we find /etc/lvmtab (LVM1) or&lt;br /&gt;
   252  # /etc/lvm/backup/ (LVM2).  This is created by /sbin/vgscan, so to&lt;br /&gt;
   253  # use LVM you must run /sbin/vgscan yourself the first time (and&lt;br /&gt;
   254  # create some VGs and LVs).&lt;br /&gt;
   255  if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then&lt;br /&gt;
   256    echo &amp;quot;Initializing LVM (Logical Volume Manager):&amp;quot;&lt;br /&gt;
   257    # Check for device-mapper support.&lt;br /&gt;
   258    if ! cat /proc/devices | grep -wq device-mapper ; then&lt;br /&gt;
   259      # If device-mapper exists as a module, try to load it.&lt;br /&gt;
   260      if [ -r /lib/modules/$(/bin/uname -r)/kernel/drivers/md/dm-mod.ko ]; then&lt;br /&gt;
   261        insmod /lib/modules/$(/bin/uname -r)/kernel/drivers/md/dm-mod.ko&lt;br /&gt;
   262      fi&lt;br /&gt;
   263    fi&lt;br /&gt;
   264    # Scan for new volume groups:&lt;br /&gt;
   265    KERNEL_VERSION=$(/bin/uname -r | /bin/cut -d . -f 1,2)&lt;br /&gt;
   266    if [ &amp;quot;$KERNEL_VERSION&amp;quot; == &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
   267      /sbin/vgscan 2&amp;gt; /dev/null&lt;br /&gt;
   268    else&lt;br /&gt;
   269      /sbin/vgscan --ignorelockingfailure 2&amp;gt; /dev/null&lt;br /&gt;
   270    fi&lt;br /&gt;
   271    if [ $? = 0 ]; then&lt;br /&gt;
   272      # Make volume groups available to the kernel.&lt;br /&gt;
   273      # This should also make logical volumes available.&lt;br /&gt;
   274      if [ &amp;quot;$KERNEL_VERSION&amp;quot; == &amp;quot;2.4&amp;quot; ]; then&lt;br /&gt;
   275        /sbin/vgchange -ay&lt;br /&gt;
   276      else&lt;br /&gt;
   277        /sbin/vgchange -ay --ignorelockingfailure&lt;br /&gt;
   278      fi&lt;br /&gt;
   279      # Enable swapping again in case any LVs are used for swap.  Ignore previous error.  :-)&lt;br /&gt;
   280      /sbin/swapon -a&lt;br /&gt;
   281    fi&lt;br /&gt;
   282  fi&lt;br /&gt;
   283&lt;br /&gt;
   284  # Check all the non-root filesystems:&lt;br /&gt;
   285  if [ ! -r /etc/fastboot ]; then&lt;br /&gt;
   286    echo &amp;quot;Checking non-root filesystems:&amp;quot;&lt;br /&gt;
   287    /sbin/fsck $FORCEFSCK -C -R -A -a&lt;br /&gt;
   288  fi&lt;br /&gt;
   289&lt;br /&gt;
   290  # Mount usbfs if we're not using hotplug:&lt;br /&gt;
   291  if grep -wq usbfs /proc/filesystems; then&lt;br /&gt;
   292    if /bin/grep -wq nohotplug /proc/cmdline || /bin/test ! -x /etc/rc.d/rc.hotplug ; then&lt;br /&gt;
   293      if ! cat /proc/mounts | grep -wq usbfs ; then&lt;br /&gt;
   294        /sbin/mount -v usbfs /proc/bus/usb -t usbfs&lt;br /&gt;
   295      fi&lt;br /&gt;
   296    fi&lt;br /&gt;
   297  fi&lt;br /&gt;
   298&lt;br /&gt;
   299  # Mount non-root file systems in fstab, but not NFS or SMB&lt;br /&gt;
   300  # because TCP/IP is not yet configured, and not proc or sysfs&lt;br /&gt;
   301  # because those have already been mounted.  Also check that&lt;br /&gt;
   302  # devpts is not already mounted before attempting to mount&lt;br /&gt;
   303  # it.  With 2.4.x kernels devpts is mounted from an fstab&lt;br /&gt;
   304  # entry while with a 2.6.x or newer kernel udev mounts it.&lt;br /&gt;
   305  # We also need to wait a little bit to let USB and other&lt;br /&gt;
   306  # hotplugged devices settle (sorry to slow down the boot):&lt;br /&gt;
   307  echo &amp;quot;Mounting non-root local filesystems:&amp;quot;&lt;br /&gt;
   308  sleep 3&lt;br /&gt;
   309  if /bin/grep -wq devpts /proc/mounts ; then&lt;br /&gt;
   310    /sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs,nodevpts&lt;br /&gt;
   311  else&lt;br /&gt;
   312    /sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs&lt;br /&gt;
   313  fi&lt;br /&gt;
   314&lt;br /&gt;
   315  # Enable swapping again.  This is needed in case a swapfile is used,&lt;br /&gt;
   316  # as it can't be enabled until the filesystem it resides on has been&lt;br /&gt;
   317  # mounted read-write.&lt;br /&gt;
   318  /sbin/swapon -a&lt;br /&gt;
   319&lt;br /&gt;
   320  # Clean up some temporary files:&lt;br /&gt;
   321  ( cd /var/log/setup/tmp &amp;amp;&amp;amp; rm -rf * )&lt;br /&gt;
   322  /bin/rm -f /var/run/utmp /var/run/*pid /etc/nologin /var/run/lpd* \&lt;br /&gt;
   323    /var/run/ppp* /etc/dhcpc/*.pid /etc/forcefsck /etc/fastboot \&lt;br /&gt;
   324    /var/state/saslauthd/saslauthd.pid&lt;br /&gt;
   325&lt;br /&gt;
   326  # Create /tmp/{.ICE-unix,.X11-unix} if they are not present:&lt;br /&gt;
   327  if [ ! -e /tmp/.ICE-unix ]; then&lt;br /&gt;
   328    mkdir -p /tmp/.ICE-unix&lt;br /&gt;
   329    chmod 1777 /tmp/.ICE-unix&lt;br /&gt;
   330  fi&lt;br /&gt;
   331  if [ ! -e /tmp/.X11-unix ]; then&lt;br /&gt;
   332    mkdir -p /tmp/.X11-unix&lt;br /&gt;
   333    chmod 1777 /tmp/.X11-unix&lt;br /&gt;
   334  fi&lt;br /&gt;
   335&lt;br /&gt;
   336  # Attempt to umount and remove any leftover /initrd:&lt;br /&gt;
   337  if [ -d /initrd ]; then&lt;br /&gt;
   338    umount /initrd/proc 2&amp;gt; /dev/null&lt;br /&gt;
   339    /sbin/umount /initrd 2&amp;gt; /dev/null&lt;br /&gt;
   340    rmdir /initrd 2&amp;gt; /dev/null&lt;br /&gt;
   341    blockdev --flushbufs /dev/ram0 2&amp;gt; /dev/null&lt;br /&gt;
   342  fi&lt;br /&gt;
   343&lt;br /&gt;
   344  # Create a fresh utmp file:&lt;br /&gt;
   345  touch /var/run/utmp&lt;br /&gt;
   346  chown root:utmp /var/run/utmp&lt;br /&gt;
   347  chmod 664 /var/run/utmp&lt;br /&gt;
   348&lt;br /&gt;
   349  if [ &amp;quot;$ROOTTYPE&amp;quot; = &amp;quot;umsdos&amp;quot; ]; then # we need to update any files added in DOS:&lt;br /&gt;
   350    echo &amp;quot;Synchronizing UMSDOS directory structure:&amp;quot;&lt;br /&gt;
   351    echo &amp;quot;  /sbin/umssync -r99 -v- /&amp;quot;&lt;br /&gt;
   352    /sbin/umssync -r99 -v- /&lt;br /&gt;
   353  fi&lt;br /&gt;
   354&lt;br /&gt;
   355  # Setup the /etc/motd to reflect the current kernel level:&lt;br /&gt;
   356  # THIS WIPES ANY CHANGES YOU MAKE TO /ETC/MOTD WITH EACH BOOT.&lt;br /&gt;
   357  # COMMENT THIS OUT IF YOU WANT TO MAKE A CUSTOM VERSION.&lt;br /&gt;
   358  echo &amp;quot;$(/bin/uname -sr).&amp;quot; &amp;gt; /etc/motd&lt;br /&gt;
   359&lt;br /&gt;
   360  # If there are SystemV init scripts for this runlevel, run them.&lt;br /&gt;
   361  if [ -x /etc/rc.d/rc.sysvinit ]; then&lt;br /&gt;
   362    . /etc/rc.d/rc.sysvinit&lt;br /&gt;
   363  fi&lt;br /&gt;
   364&lt;br /&gt;
   365  # Run serial port setup script:&lt;br /&gt;
   366  # CAREFUL!  This can make some systems hang if the rc.serial script isn't&lt;br /&gt;
   367  # set up correctly.  If this happens, you may have to edit the file from a&lt;br /&gt;
   368  # boot disk, and/or set it as non-executable:&lt;br /&gt;
   369  if [ -x /etc/rc.d/rc.serial ]; then&lt;br /&gt;
   370    sh /etc/rc.d/rc.serial start&lt;br /&gt;
   371  fi&lt;br /&gt;
   372&lt;br /&gt;
   373  # Carry an entropy pool between reboots to improve randomness.&lt;br /&gt;
   374  if [ -f /etc/random-seed ]; then&lt;br /&gt;
   375    echo &amp;quot;Using /etc/random-seed to initialize /dev/urandom.&amp;quot;&lt;br /&gt;
   376    cat /etc/random-seed &amp;gt; /dev/urandom&lt;br /&gt;
   377  fi&lt;br /&gt;
   378  # Use the pool size from /proc, or 512 bytes:&lt;br /&gt;
   379  if [ -r /proc/sys/kernel/random/poolsize ]; then&lt;br /&gt;
   380    dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2&amp;gt; /dev/null&lt;br /&gt;
   381  else&lt;br /&gt;
   382    dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2&amp;gt; /dev/null&lt;br /&gt;
   383  fi&lt;br /&gt;
   384  chmod 600 /etc/random-seed&lt;br /&gt;
   385&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Preferabil sa deschideti de doua ori pagina, ca sa va fie mai comoda orientarea.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;linie/i&amp;gt;: &amp;lt;explicatie&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;8: Este setata variabila de mediu PATH. PATH are urmatoarea forma: director:director:director[:director...] si urmatoarea calitate: Ii spune interpretorului in ce directoare sa se uite pentru fisierele executabile care nu au calea absoluta specificata.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;11: Este montat sistemul de fisiere virtual /proc. Folosindu-ne acest sistem de fisiere, vom putea afla informatii ce reflecta starea curenta a nucleului. Vom vedea imediat despre ce este vorba.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;20-36: Se verifica daca fisierul /proc/sys/kernel/hotplug exista si poate fi modificat ( [ -w ] ). Existenta acestui fisier inseamna ca nucleul are suport pentru subsistemul hotplug(traducere?), un sistem de configurare dinamica a componentelor hard. Vom intra in detalii mai tarziu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa aceasta, in cazul in care nucleul are suport pentru hotplug, se verifica daca nucleului i-a fost trimis parametrul de executie &amp;quot;nohotplug&amp;quot;. Aceasta verificare are loc prin inspectarea continutului fisierului /proc/cmdline, fisier ce contine toti parametrii trimisi nucleului de catre programul de incarcare. In cazul in care nucleului i-a fost trimis parametrul de executie &amp;quot;nohotplug&amp;quot;, atunci continutul fisierului /proc/sys/kernel/hotplug este schimbat in &amp;quot;/dev/null&amp;quot;. Continutul fisierului /proc/sys/kernel/hotplug reprezinta calea catre programul care va fi instintat de catre nucleu, cand va avea loc un eveniment(in cazul acesta, cand o componenta hard va fi cuplata). Prin schimbarea continutului fisierului /proc/sys/kernel/hotplug in &amp;quot;/dev/null&amp;quot;, sistemul hotplug este dezactivat, deoarece orice instintare a nucleului cu privire la evenimente hotplug va fi iignorata.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Daca nucleului n-a fost pornit cu parametrul de executie &amp;quot;nohotplug&amp;quot;, se va verifica daca scriptul /etc/rc.d/rc.hotplug este neexecutabil [ ! -x ], caz in care se verifica daca nucleul NU face parte din bransa 2.4.x, caz in care se dezactiveaza sistemul hotplug, schimbandu-se continutul fisierului /proc/sys/kernel/hotplug in &amp;quot;/dev/null&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[...]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3171</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3171"/>
				<updated>2006-11-30T04:40:17Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum observam, init este primul(chiar unicul) program executat de catre nucleu. De fapt, nucleul nu executa _programul_ init, ci programul care are calea absoluta /sbin/init, /etc/init, /bin/init sau /bin/sh, asta in cazul in care nucleului nu-i este specificat ca parametru de executie(init= -- deobicei specificat prin intermediul lui LILO sau altui program de incarcare) altceva(execute_command).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mai observam ca dupa 3 incercari de a executa programul &amp;quot;init&amp;quot;, nucleul isi incearca pentru ultima oara norocul cu /bin/sh. Pe Slackware (si nu numai), fisierul cu aceasta cale absoluta este o legatura cu interpretorul de comenzi BASH. Asta inseamna ca, in cazul in care celelalte trei cai nu sint valide, ne vom trezi cu un interpretor de comenzi pentru suprautilizator si un sistem neconfigurat. Acesta este unul dintre riscurile de securitate despre care vorbeam in subcapitolul legat de programele de incarcare, datorita faptului ca prin intermediul lor se poate forta nucleul sa execute calea /bin/sh, sau a oricarui alt executabil preprogramat. Folosindu-ne de cunostintele acumulate pe parcursul ghidului, voi arata, catre final, in capitolul [inca nu i-am gasit un nume] cum se poate configura si pune in picioare in mod manual un sistem folosindu-ne doar de interpetatorul de comenzi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Tot procesul descris pana in acest moment ar trebui sa fie independent de distributia folosita. In schimb, odata cu executia programului cu una dintre cele 3 cai enumerate mai devreme, lucrurile tind sa devina specifice (dar nu exagerat) distributiei, sau, mai exact, specifice unui stil de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Lumea tinde sa-i atribuie lui Slackware si derivatelor sale stilul &amp;quot;BSD&amp;quot;, iar distributiilor ca Fedora Core, SuSe, Mandriva s.a. stilul &amp;quot;System V&amp;quot;. BSD si System V au fost, acum multi ani, niste versiuni de UNIX care, dupa cum se vede, au influentat sistemele de operare actuale. Ele isi mai continua si astazi existenta prin rudele lor de grad I, cum ar fi, in cazul lui System V, UnixWare, iar, in cazul lui BSD, Open/Net/FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta categorisire, in schimb, daca este luata la puricat, nu este tocmai corecta. Slackware se foloseste de stilul de initializare &amp;quot;System V&amp;quot;, doar ca il abordeaza intr-o maniera 'mai BSD', simplificandu-l, dupa cum vom vedea. Nu am sa intru detalii legate de diferentele de abordare a initializarii de catre, sa zicem, Mandriva si Slackware, nu asta este scopul ghidului. In schimb, la final, odata inteles modul in care Slackware 'vede lumea', cititorul se poate folosi de cunostiintele acumulate pentru a compara toate distributiile GNU/Linux, daca doreste :~)&lt;br /&gt;
&lt;br /&gt;
====sysvinit====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Slackware, ca si majoritatea celorlalte distributii, se foloseste de suita de utilitare sysvinit (instalata prestabilit). O scurta descriere a pachetului, insotita de o lista cu programele incluse in el, ar fi urmatoarea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ echo -e \\n &amp;quot;Descriere:&amp;quot;; head -n14 /var/log/packages/sysvinit-2.84-i486-69; \&lt;br /&gt;
echo -e \\n\\n &amp;quot;Lista cu programe:&amp;quot;; grep -e [18].gz$ /var/log/packages/sysinit-2.84-i486-69 | \&lt;br /&gt;
awk -F/ ' { print $4 } ' | awk -F. ' { print $1 } '&lt;br /&gt;
&lt;br /&gt;
Descriere:&lt;br /&gt;
PACKAGE NAME:     sysvinit-2.84-i486-69&lt;br /&gt;
COMPRESSED PACKAGE SIZE:     296 K&lt;br /&gt;
UNCOMPRESSED PACKAGE SIZE:     650 K&lt;br /&gt;
PACKAGE LOCATION: /var/log/mount/slackware/a/sysvinit-2.84-i486-69.tgz&lt;br /&gt;
PACKAGE DESCRIPTION:&lt;br /&gt;
sysvinit: sysvinit (init, the parent of all processes)&lt;br /&gt;
sysvinit:&lt;br /&gt;
sysvinit: System V style init programs by Miquel van Smoorenburg that control&lt;br /&gt;
sysvinit: the booting and shutdown of your system.  These support a number of&lt;br /&gt;
sysvinit: system runlevels, each with a specific set of utilities spawned.&lt;br /&gt;
sysvinit: For example, the normal system runlevel is 3, which starts agetty&lt;br /&gt;
sysvinit: on virtual consoles tty1 - tty6.  Runlevel 4 starts xdm.&lt;br /&gt;
sysvinit: Runlevel 0 shuts the system down.&lt;br /&gt;
sysvinit:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lista cu programe:&lt;br /&gt;
last&lt;br /&gt;
runlevel&lt;br /&gt;
killall5&lt;br /&gt;
shutdown&lt;br /&gt;
poweroff&lt;br /&gt;
init&lt;br /&gt;
halt&lt;br /&gt;
pidof&lt;br /&gt;
reboot&lt;br /&gt;
telinit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observam ca unul dintre programele incluse in pachet poarta denumirea de init. II aflam calea absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ su -c 'which init'&lt;br /&gt;
Password:&lt;br /&gt;
/sbin/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Avand respectiva cale, inseamna ca ar trebui sa fie primul program executat de nucleu. Ne putem convinge de acest lucru folosind comanda pstree(1), care ne va afisa un arbore de procese.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ pstree -np&lt;br /&gt;
init(1)-+-keventd(2)&lt;br /&gt;
        |-ksoftirqd_CPU0(3)&lt;br /&gt;
        |-kswapd(4)&lt;br /&gt;
        |-bdflush(5)&lt;br /&gt;
        |-kupdated(6)&lt;br /&gt;
        |-khubd(7)&lt;br /&gt;
        |-syslogd(72)&lt;br /&gt;
        |-klogd(75)&lt;br /&gt;
        |-inetd(631)&lt;br /&gt;
        |-dhcpcd(635)&lt;br /&gt;
        |-sshd(639)&lt;br /&gt;
        |-crond(652)&lt;br /&gt;
        |-atd(654)&lt;br /&gt;
        |-gpm(664)&lt;br /&gt;
        |-agetty(667)&lt;br /&gt;
        |-agetty(668)&lt;br /&gt;
        |-agetty(669)&lt;br /&gt;
        |-agetty(670)&lt;br /&gt;
        |-agetty(671)&lt;br /&gt;
        |-bash(860)---startx(958)---xinit(974)-+-X(975)&lt;br /&gt;
        |                                      `-xinitrc(979)---startkde(980)---kwrapper(1020)&lt;br /&gt;
        |-kdeinit(1008)-+-kdeinit(1013)&lt;br /&gt;
        [...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Uitandu-ne la arbore, observam ca, pe langa faptul ca init este primul proces si are pid'ul(tradus?) 1, restul proceselor tind sa izvoreasca din el. Consultandu-i pagina manual (init(8)), aflam niste detalii importante, printre care:&lt;br /&gt;
&lt;br /&gt;
* Init este tatal tuturor proceselor. Este primul program executat de catre nucleul la sfarsitul secventei de initializare al acestuia, fiindu-i atribuit pid-ul cu valoarea 1. ( de mentionat ca nucleul n-are pid'ul 1, ci 0. )&lt;br /&gt;
&lt;br /&gt;
* Printre scopurile sale se numara: Initializarea tuturor celorlalte procese, colectarea proceselor moarte(zombi) si regenerarea unor procese fiu la terminarea lor; Inspectarea, la initializare, a fisierului /etc/inittab, pentru configurarea sistemului.&lt;br /&gt;
&lt;br /&gt;
* Acceptare unor parametrii de executie, de obicei setati prin intermediul unui program de incarcare, care, daca sint specificati, ii pot schimba cursul firesc al derularii.&lt;br /&gt;
&lt;br /&gt;
* Captarea unor semnale si reactionarea la ele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Restul capacitatilor vor fi descrise spre finalul ghidului.&lt;br /&gt;
&lt;br /&gt;
=====/etc/inittab=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum s-a specificat mai sus, init,la executare, va citi fisierul /etc/inittab pentru a sti cum sa configureze sistemul. Conform paginii manual inittab(5), formatul fisierului /etc/inittab este urmatorul:&lt;br /&gt;
&lt;br /&gt;
id:niveluri de rulare:actiune:proces&lt;br /&gt;
&lt;br /&gt;
* Campul id: Trebuie sa contina un sir unic de maximum 4 caractere alfanumerice. Este folosit pentru a identifica fiecare intrare din fisier.&lt;br /&gt;
&lt;br /&gt;
* Niveluri de rulare: In primul rand, nivelul de rulare, conform paginii manual init(8), reprezinta o configuratie software a sistemului care, printre altele, specifica ce procese trebuiesc pornite de catre init. Configuratia se realizeaza prin intermediul unor scripturi BASH, fiecarui nivel de rulare atribuindu-se cel putin unul. Pot exista mai multe niveluri de executie. In Slackware, cele prestabilite sint urmatoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# These are the default runlevels in Slackware:&lt;br /&gt;
#   0 = halt&lt;br /&gt;
#   1 = single user mode&lt;br /&gt;
#   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
#   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
#   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   6 = reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In fisierul /etc/inittab, campul dedicat nivelurilor de rulare trebuie sa contina o lista de niveluri de rulare pentru care trebuie executata o actiune ce, in majoritatea cazurilor. Vom vedea imediat ce inseamna toate acestea.&lt;br /&gt;
&lt;br /&gt;
* Campul actiune: Descrie actiunea pe care init o sa o realizeze pentru o lista de niveluri de rulare. Exista mai multe tipuri de actiuni, printre care:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''respawn''': lanseaza o noua instanta a unui proces, daca acesta isi termina executia&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''wait''': procesul va fi pornit odata cu intrarea in nivelul de rulare, iar init va astepta pana acesta se incheie.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''once''': procesul va fi executat o singura data, de indata ce se va intra in nivelul de rulare&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''sysinit''': intrarea ce contine aceasta actiune specifica procesul ce trebuie executat in timpul initializarii sistemului de catre init. De obicei, acest, dupa cum vom vedea, scriptul BASH /etc/rc.S.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''initdefault''': intrarea ce contine aceasta actiune specifica si nivel de rulare care va fi executat de catre init, imediat dupa ce sistemul a fost initializat (prin intermediul scriptului rc.S.)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''ctrlaltdel''': procesul va fi executat atunci cand init va primi semnalul SIGINIT. Semnalul SIGINIT este trimis atunci cand sint apasate tastele CTRL-ALT-DELETE. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum se observa, majoritatea actiunilor merg mana in mana cu un proces. Procesul este specificat in campul proces.&lt;br /&gt;
&lt;br /&gt;
* Campul proces: Specifica un proces ce trebuie executat la intrarea intr-un nivel de rulare. Procesul poate fi o comanda sau un script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ca sa intelegem mai bine ce inseamna toate acestea, vom analiza un fisier /etc/inittab.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/inittab&lt;br /&gt;
     1  #&lt;br /&gt;
     2  # inittab       This file describes how the INIT process should set up&lt;br /&gt;
     3  #               the system in a certain run-level.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Version:      @(#)inittab             2.04    17/05/93        MvS&lt;br /&gt;
     6  #                                       2.10    02/10/95        PV&lt;br /&gt;
     7  #                                       3.00    02/06/1999      PV&lt;br /&gt;
     8  #                                       4.00    04/10/2002      PV&lt;br /&gt;
     9  #&lt;br /&gt;
    10  # Author:       Miquel van Smoorenburg, &amp;lt;miquels@drinkel.nl.mugnet.org&amp;gt;&lt;br /&gt;
    11  # Modified by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
    12  #&lt;br /&gt;
    13&lt;br /&gt;
    14  # These are the default runlevels in Slackware:&lt;br /&gt;
    15  #   0 = halt&lt;br /&gt;
    16  #   1 = single user mode&lt;br /&gt;
    17  #   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    18  #   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
    19  #   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
    20  #   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    21  #   6 = reboot&lt;br /&gt;
    22&lt;br /&gt;
    23  # Default runlevel. (Do not set to 0 or 6)&lt;br /&gt;
    24  id:3:initdefault:&lt;br /&gt;
    25&lt;br /&gt;
    26  # System initialization (runs when system boots).&lt;br /&gt;
    27  si:S:sysinit:/etc/rc.d/rc.S&lt;br /&gt;
    28&lt;br /&gt;
    29  # Script to run when going single user (runlevel 1).&lt;br /&gt;
    30  su:1S:wait:/etc/rc.d/rc.K&lt;br /&gt;
    31&lt;br /&gt;
    32  # Script to run when going multi user.&lt;br /&gt;
    33  rc:2345:wait:/etc/rc.d/rc.M&lt;br /&gt;
    34&lt;br /&gt;
    35  # What to do at the &amp;quot;Three Finger Salute&amp;quot;.&lt;br /&gt;
    36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&lt;br /&gt;
    37&lt;br /&gt;
    38  # Runlevel 0 halts the system.&lt;br /&gt;
    39  l0:0:wait:/etc/rc.d/rc.0&lt;br /&gt;
    40&lt;br /&gt;
    41  # Runlevel 6 reboots the system.&lt;br /&gt;
    42  l6:6:wait:/etc/rc.d/rc.6&lt;br /&gt;
    43&lt;br /&gt;
    44  # These are the standard console login getties in multiuser mode:&lt;br /&gt;
    45  c1:1235:respawn:/sbin/agetty 38400 tty1 linux&lt;br /&gt;
    46  c2:1235:respawn:/sbin/agetty 38400 tty2 linux&lt;br /&gt;
    47  c3:1235:respawn:/sbin/agetty 38400 tty3 linux&lt;br /&gt;
    48  c4:1235:respawn:/sbin/agetty 38400 tty4 linux&lt;br /&gt;
    49  c5:1235:respawn:/sbin/agetty 38400 tty5 linux&lt;br /&gt;
    50  c6:12345:respawn:/sbin/agetty 38400 tty6 linux&lt;br /&gt;
    51&lt;br /&gt;
    52  # Runlevel 4 used to be for an X window only system, until we discovered&lt;br /&gt;
    53  # that it throws init into a loop that keeps your load avg at least 1 all&lt;br /&gt;
    54  # the time. Thus, there is now one getty opened on tty6. Hopefully no one&lt;br /&gt;
    55  # will notice. ;^)&lt;br /&gt;
    56  # It might not be bad to have one text console anyway, in case something&lt;br /&gt;
    57  # happens to X.&lt;br /&gt;
    58  x1:4:respawn:/etc/rc.d/rc.4&lt;br /&gt;
    59&lt;br /&gt;
    60  # End of /etc/inittab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Vom analiza fiecare intrare, explicand-o.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Prima intrare, cea de la linia 24, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;id&amp;quot; (datorita campului id, faptul ca valoare campului coincide cu numele acestuia nu are vreo importanta). Campul nivelului de rulare este ocupat de caracterul &amp;quot;3&amp;quot;. Campul actiunii este ocupat de 'initdefault', ceea ce inseamna ca init va intra in nivelul de rulare specificat de catre acest camp, adica, in cazul nostru, &amp;quot;3&amp;quot;. Campul proces lipseste doarece intrarea, continand actiunea 'initdefault', nu necesita un proces, acesta fiind oricum ignorat daca ar fi specificat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A doua intrare, cea de la linia 27, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;si&amp;quot;. Campul nivelului de rulare este ocupat de caracterul &amp;quot;S&amp;quot;.Campul actiunii este ocupat de  catre &amp;quot;sysinit&amp;quot;, iar procesul este scriptul /etc/rc.d/rc.S. Faptul ca &amp;quot;sysinit&amp;quot; ocupa campul actiune ii spune lui init sa execute procesul din campul proces (in cazul acest, ii spune lui init sa execute scriptul /etc/rc.d/rc.S) inainte de a intra in vreun nivel de rulare(nivelul &amp;quot;3&amp;quot;, in cazul nostru ^^).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treia intrare, cea de la linia 30, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;su&amp;quot;. Campul nivelului de rulare este &amp;quot;1S&amp;quot;, ceea ce-nseamna ca intrarea se aplica atat nivelului de rulare &amp;quot;1&amp;quot;, cat si nivelului de rulare &amp;quot;S&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.K. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A patra intrare, cea de la linia 33, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;rc&amp;quot;. Campul nivelelor de rulare este &amp;quot;2345&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelelor de rulare &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot; si &amp;quot;5&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.M. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A cincea intrare, cea de la linia 36, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;ca&amp;quot;. Campul nivelelor de rulare este gol. Campul actiunii este ocupat de catre &amp;quot;ctrlaltdel&amp;quot;, iar procesul de catre comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Faptul ca &amp;quot;ctrlaltdel&amp;quot; ocupa campul actiune ii spune lui init ca, atunci cand sint apasate tastele CTRL+ALT+DELETE la consola, sa execute procesul din campul proces, in cazul nostru comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Aceasta actiune nu necesita un nivel de rulare, presupunandu-se ca, daca ajungem la o consola sa apasam cele trei taste mai devreme mentionate, sintem deja intr-un nivel de rulare cu un sistem mai mult sau mai putin configurat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A sasea intrare, cea de la linia 39, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l0&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;0&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;0&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.0. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.0 atunci cand va intra in nivelul de rulare &amp;quot;0&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A saptea intrare, cea de la linia 42, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l6&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;6&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;6&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.6. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.6 atunci cand va intra in nivelul de rulare &amp;quot;6&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmatoarele 5 intrari -- de la linia 45 la linia 49 -- sint aproape identice, singurele lucruri care le deosebesc fiind campul care le identifica( oare de ce?:-) ) si penultimul parametru de executie al comenzii din campul proces. Toate au la campul nivelurilor de rulare caracterele &amp;quot;1235&amp;quot;. Toate au in campul actiunii &amp;quot;respawn&amp;quot;, iar la proces comanda &amp;quot;/sbin/agetty 38400 tty&amp;lt;x&amp;gt; linux&amp;quot;, &amp;lt;x&amp;gt; diferind de la intrare la intrare. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa regenereze procesul din campul proces, cand acesta isi termina executia. In cazul nostru, init va regenera o sesiune de identificare(engl. login prompt) in cazul in care aceasta se va sfarsi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treisprezecea intrare, cea de la linia 50, este are aceleasi proprietati ca si ultimele 5 intrari, doar ca intrarea este aplicata si nivelului de rulare &amp;quot;4&amp;quot;, spre deosebire de precedentele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ultima intrare, cea de la linia 58, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;x1&amp;quot;. Campul nivelurilor de rulare este ocupat de catre caracterul &amp;quot;4&amp;quot;. Campul actiune este ocupat de catre &amp;quot;respawn&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.4. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa reexecute scriptul /etc/rc.d/rc.4, cand acesta se va termina.&lt;br /&gt;
&lt;br /&gt;
=====Lamuriri necesare pentru a continua. Mica erata a ceea ce a fost expus pana acum.=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Probabil ca se observa niste neconcordante intre anumite lucruri ce-au fost descrise pana acum. De exemplu: Inainte sa depanam fisierul /etc/inittab, s-a spus ca valoarea din campul proces reprezinta un proces (ce, dupa cum am observat, poate fi o comanda sau un script) care va fi executat de catre init _l-a intrarea intr-un nivel de rulare_, dar noi am observat ca intr-unele intrari campul nivelurilor de rulare este gol, pe cand campul proces contine o valoare. De ce am spus asta? Pai, in primul rand, ca este mai usor de inteles un lucru partial adevarat, urmat de o lamurire, decat daca as intra in detalii de la bun inceput; si, in plus, explicatiile detaliate duc, dupa cum se pare, la exprimari tautologice ( ca sa fiu delicat :~) ), datorita unor termeni care nu se impac intr-o expresie/propozitie... Bun. Revenind.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Init, pe langa faptul ca este primul program executat, mai este si ultimul, -- asta in cazul in care procesul de oprire al calculatorului se deruleaza normal si corect. Ce ne spune acest lucru? Pai ne spune mai multe lucruri. Ne spune, de exemplu, ca pe parcursul timpului de executie al lui init, sistemul este 1. configurat 2. intretinut 3. deconfigurat. Vom urma in detaliu stagiile (1) si (3), dar hai sa spunem cateva lucruri despre fiecare in parte, chiar daca voi prelua anumite idei ce-au fost deja expuse.&lt;br /&gt;
&lt;br /&gt;
* (1) Nucleul nu-l arunca pe init intr-un mediu complet configurat. De fapt, luat in mare, nu il lasa decat cu un sistem de fisiere radacina montat cu proprietatea de numai-citire, dupa care se retrage linistit in fundal, unde isi vede de treaba, printre altele punand la dispozitia programelor o suita de apeluri de sistem prin intermediu carora acestea comunica cu el. Pana ajungem noi sa ne autentificam, init are mult de munca. De fapt, prea il elogiez, caci el nu face toata treaba de unul singur, ci mai degraba o coordoneaza. Am observat ca el citeste fisierul /etc/inittab si ca de acolo afla, printre altele, ce scripturi sa execute pentru configurarea sistemului. Comenzile din acele scripturi, de fapt, pun in picioare sistemul, iar unul dintre rolurile lui init este sa ruleze aceste scripturi. Acest lucru ofera o mare flexibilitate administratorului sistemului, deoarece scripturile sint mai usor de inteles si de schimbat. Va imaginati ce-ar fi insemnat ca init sa faca toata treaba de unul singur, fara sa apeleze la BASH sau alt interpretor de comenzi? Ar fi insemnat ca init sa fie foarte complex, ar fi insemnat ca administratorul de sistem sa ii umble prin codul sursa, daca ar vrea sa schimbe ceva -- orice, dupa care sa-l recompileze s.a.m.d. Ca sa inchei scurta introducere a acestui stagiu, nu mai spun decat ca, in Slackware si derivatele sale, TOATE scripturile de care se foloseste init se afla in directorul /etc/rc.d/. Acest lucru nu este batut in cuie, putand foarte lejer sa schimbam asta prin modificarea campului proces al intrarilor din /etc/inittab, dar este o conventie utila si bine gandita, asa mai bine nu am schimba-o. De asemenea, vom urmari indeaproape fiecare script in parte.&lt;br /&gt;
&lt;br /&gt;
* (2) Cum sta treaba cu intretinerea sistemului? Pai e lesne de imaginat ca, fiind primul program pornit si ruland _mereu_, chiar si dupa ce sistemul a fost configurat si noi deja ne bucuram de facilitile unui client de posta electronica, init nu sta degeaba. S-a specificat mai devreme, cand au fost enumerate unele dintre scopurile sale, ca se ocupa cu initializarea tuturor celorlalte procese, colectarea proceselor moarte s.a. Nu s-a specificat, in schimb, o proprietate specifica tuturor programelor ( a se citi proceselor ) unui sistem compatibil cu standardele ANSI/POSIX. Aceasta proprietate este aceea de a capta semnale. Probabil ca toti stim ce este un semnal, deoarece toti am folosit comanda kill. Stim ca programele pot fi programate(...) sa capteze anumite semnale, si sa interactioneze intr-un anume fel la primirea acestora. Asa face si init, dar spre deosebire de alte programe, ii poate fi specificat si cum sa reactioneze la primirea anumitor semnale. Cum ii specificam asta? Pai cum faceam si pana acum, cand voiam sa-i modelam comportamentul: folosindu-ne de fisierul /etc/inittab. Acum ajungem la acele neconcordante despre care vorbeam mai devreme, anume intrarile din fisierul /etc/inittab care contin nu contin un nivel de rulare, dar contin un proces.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;S-a specificat ca aceasta intrare are urmatoarea influenta asupra lui init: cand init primeste semnalul SIGINIT (care ii este trimis cand sint apasate, la consola, tastele CTRL+ALT+DELETE), acesta executa comanda /sbin/shutdown -t5 -r now. Faptul ca nu este specificat un nivel de rulare nu are vreo importanta, caci intrarea cu aceasta actiune se aplica oricarui 'nivel de rulare'( de fapt, daca init este pornit, nu conteaza daca sistemul este configurat sau ba, daca sintem intr-un nivel de rulare sau nu, va reactiona cum am spus mai devreme. ). Aceasta nu este singura actiune care ii spune lui init sa reactioneze cumva la primirea unui semnal. Distributia vine cu un fisier /etc/inittab care contine inca 2 intrari cu actiuni asemanatoare, anume powerfail si powerokwait, care reactioneaza la semnale primite de la sursa de alimentare neintreruptibila(engl. presc. UPS).&lt;br /&gt;
&lt;br /&gt;
* (3) Despre acest stagiu nu s-a scris deloc pana acum. Pe scurt, deconfigurarea sistemului se face prin configurarea unor nivele de rulare pentru acest scop, nivele de rulare care sa execute anumite scripturi care sa faca, in mare parte, opusul scriptului de initializare + oprirea serviciilor specifice nivelului de rulare in care sintem. Aceste scripturi, in cazul de fata -- si in cazul unei distributii Slackware nemodificate --, sint /etc/rc.0 si /etc/rc.6, specifice nivelurilor de executie &amp;quot;0&amp;quot; si &amp;quot;6&amp;quot;. Le vom urmari indeaproape.&lt;br /&gt;
&lt;br /&gt;
[...imediat, imediat.]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3163</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3163"/>
				<updated>2006-11-26T22:40:31Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum observam, init este primul(chiar unicul) program executat de catre nucleu. De fapt, nucleul nu executa _programul_ init, ci programul care are calea absoluta /sbin/init, /etc/init, /bin/init sau /bin/sh, asta in cazul in care nucleului nu-i este specificat ca parametru de executie(init= -- deobicei specificat prin intermediul lui LILO sau altui program de incarcare) altceva(execute_command).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mai observam ca dupa 3 incercari de a executa programul &amp;quot;init&amp;quot;, nucleul isi incearca pentru ultima oara norocul cu /bin/sh. Pe Slackware (si nu numai), fisierul cu aceasta cale absoluta este o legatura cu interpretorul de comenzi BASH. Asta inseamna ca, in cazul in care celelalte trei cai nu sint valide, ne vom trezi cu un interpretor de comenzi pentru suprautilizator si un sistem neconfigurat. Acesta este unul dintre riscurile de securitate despre care vorbeam in subcapitolul legat de programele de incarcare, datorita faptului ca prin intermediul lor se poate forta nucleul sa execute calea /bin/sh, sau a oricarui alt executabil preprogramat. Folosindu-ne de cunostintele acumulate pe parcursul ghidului, voi arata, catre final, in capitolul [inca nu i-am gasit un nume] cum se poate configura si pune in picioare in mod manual un sistem folosindu-ne doar de interpetatorul de comenzi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Tot procesul descris pana in acest moment ar trebui sa fie independent de distributia folosita. In schimb, odata cu executia programului cu una dintre cele 3 cai enumerate mai devreme, lucrurile tind sa devina specifice (dar nu exagerat) distributiei, sau, mai exact, specifice unui stil de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Lumea tinde sa-i atribuie lui Slackware si derivatelor sale stilul &amp;quot;BSD&amp;quot;, iar distributiilor ca Fedora Core, SuSe, Mandriva s.a. stilul &amp;quot;System V&amp;quot;. BSD si System V au fost, acum multi ani, niste versiuni de UNIX care, dupa cum se vede, au influentat sistemele de operare actuale. Ele isi mai continua si astazi existenta prin rudele lor de grad I, cum ar fi, in cazul lui System V, UnixWare, iar, in cazul lui BSD, Open/Net/FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta categorisire, in schimb, daca este luata la puricat, nu este tocmai corecta. Slackware se foloseste de stilul de initializare &amp;quot;System V&amp;quot;, doar ca il abordeaza intr-o maniera 'mai BSD', simplificandu-l, dupa cum vom vedea. Nu am sa intru detalii legate de diferentele de abordare a initializarii de catre, sa zicem, Mandriva si Slackware, nu asta este scopul ghidului. In schimb, la final, odata inteles modul in care Slackware 'vede lumea', cititorul se poate folosi de cunostiintele acumulate pentru a compara toate distributiile GNU/Linux, daca doreste :~)&lt;br /&gt;
&lt;br /&gt;
====sysvinit====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Slackware, ca si majoritatea celorlalte distributii, se foloseste de suita de utilitare sysvinit (instalata prestabilit). O scurta descriere a pachetului, insotita de o lista cu programele incluse in el, ar fi urmatoarea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ echo -e \\n &amp;quot;Descriere:&amp;quot;; head -n14 /var/log/packages/sysvinit-2.84-i486-69; \&lt;br /&gt;
echo -e \\n\\n &amp;quot;Lista cu programe:&amp;quot;; grep -e [18].gz$ !head:$ | \&lt;br /&gt;
awk -F/ ' { print $4 } ' | awk -F. ' { print $1 } '&lt;br /&gt;
&lt;br /&gt;
Descriere:&lt;br /&gt;
PACKAGE NAME:     sysvinit-2.84-i486-69&lt;br /&gt;
COMPRESSED PACKAGE SIZE:     296 K&lt;br /&gt;
UNCOMPRESSED PACKAGE SIZE:     650 K&lt;br /&gt;
PACKAGE LOCATION: /var/log/mount/slackware/a/sysvinit-2.84-i486-69.tgz&lt;br /&gt;
PACKAGE DESCRIPTION:&lt;br /&gt;
sysvinit: sysvinit (init, the parent of all processes)&lt;br /&gt;
sysvinit:&lt;br /&gt;
sysvinit: System V style init programs by Miquel van Smoorenburg that control&lt;br /&gt;
sysvinit: the booting and shutdown of your system.  These support a number of&lt;br /&gt;
sysvinit: system runlevels, each with a specific set of utilities spawned.&lt;br /&gt;
sysvinit: For example, the normal system runlevel is 3, which starts agetty&lt;br /&gt;
sysvinit: on virtual consoles tty1 - tty6.  Runlevel 4 starts xdm.&lt;br /&gt;
sysvinit: Runlevel 0 shuts the system down.&lt;br /&gt;
sysvinit:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lista cu programe:&lt;br /&gt;
last&lt;br /&gt;
runlevel&lt;br /&gt;
killall5&lt;br /&gt;
shutdown&lt;br /&gt;
poweroff&lt;br /&gt;
init&lt;br /&gt;
halt&lt;br /&gt;
pidof&lt;br /&gt;
reboot&lt;br /&gt;
telinit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observam ca unul dintre programele incluse in pachet poarta denumirea de init. II aflam calea absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ su -c 'which init'&lt;br /&gt;
Password:&lt;br /&gt;
/sbin/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Avand respectiva cale, inseamna ca ar trebui sa fie primul program executat de nucleu. Ne putem convinge de acest lucru folosind comanda pstree(1), care ne va afisa un arbore de procese.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ pstree -np&lt;br /&gt;
init(1)-+-keventd(2)&lt;br /&gt;
        |-ksoftirqd_CPU0(3)&lt;br /&gt;
        |-kswapd(4)&lt;br /&gt;
        |-bdflush(5)&lt;br /&gt;
        |-kupdated(6)&lt;br /&gt;
        |-khubd(7)&lt;br /&gt;
        |-syslogd(72)&lt;br /&gt;
        |-klogd(75)&lt;br /&gt;
        |-inetd(631)&lt;br /&gt;
        |-dhcpcd(635)&lt;br /&gt;
        |-sshd(639)&lt;br /&gt;
        |-crond(652)&lt;br /&gt;
        |-atd(654)&lt;br /&gt;
        |-gpm(664)&lt;br /&gt;
        |-agetty(667)&lt;br /&gt;
        |-agetty(668)&lt;br /&gt;
        |-agetty(669)&lt;br /&gt;
        |-agetty(670)&lt;br /&gt;
        |-agetty(671)&lt;br /&gt;
        |-bash(860)---startx(958)---xinit(974)-+-X(975)&lt;br /&gt;
        |                                      `-xinitrc(979)---startkde(980)---kwrapper(1020)&lt;br /&gt;
        |-kdeinit(1008)-+-kdeinit(1013)&lt;br /&gt;
        [...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Uitandu-ne la arbore, observam ca, pe langa faptul ca init este primul proces si are pid'ul(tradus?) 1, restul proceselor tind sa izvoreasca din el. Consultandu-i pagina manual (init(8)), aflam niste detalii importante, printre care:&lt;br /&gt;
&lt;br /&gt;
* Init este tatal tuturor proceselor. Este primul program executat de catre nucleul la sfarsitul secventei de initializare al acestuia, fiindu-i atribuit pid-ul cu valoarea 1. ( de mentionat ca nucleul n-are pid'ul 1, ci 0. )&lt;br /&gt;
&lt;br /&gt;
* Printre scopurile sale se numara: Initializarea tuturor celorlalte procese, colectarea proceselor moarte(zombi) si regenerarea unor procese fiu la terminarea lor; Inspectarea, la initializare, a fisierului /etc/inittab, pentru configurarea sistemului.&lt;br /&gt;
&lt;br /&gt;
* Acceptare unor parametrii de executie, de obicei setati prin intermediul unui program de incarcare, care, daca sint specificati, ii pot schimba cursul firesc al derularii.&lt;br /&gt;
&lt;br /&gt;
* Captarea unor semnale si reactionarea la ele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Restul capacitatilor vor fi descrise spre finalul ghidului.&lt;br /&gt;
&lt;br /&gt;
=====/etc/inittab=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum s-a specificat mai sus, init,la executare, va citi fisierul /etc/inittab pentru a sti cum sa configureze sistemul. Conform paginii manual inittab(5), formatul fisierului /etc/inittab este urmatorul:&lt;br /&gt;
&lt;br /&gt;
id:niveluri de rulare:actiune:proces&lt;br /&gt;
&lt;br /&gt;
* Campul id: Trebuie sa contina un sir unic de maximum 4 caractere alfanumerice. Este folosit pentru a identifica fiecare intrare din fisier.&lt;br /&gt;
&lt;br /&gt;
* Niveluri de rulare: In primul rand, nivelul de rulare, conform paginii manual init(8), reprezinta o configuratie software a sistemului care, printre altele, specifica ce procese trebuiesc pornite de catre init. Configuratia se realizeaza prin intermediul unor scripturi BASH, fiecarui nivel de rulare atribuindu-se cel putin unul. Pot exista mai multe niveluri de executie. In Slackware, cele prestabilite sint urmatoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# These are the default runlevels in Slackware:&lt;br /&gt;
#   0 = halt&lt;br /&gt;
#   1 = single user mode&lt;br /&gt;
#   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
#   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
#   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   6 = reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In fisierul /etc/inittab, campul dedicat nivelurilor de rulare trebuie sa contina o lista de niveluri de rulare pentru care trebuie executata o actiune ce, in majoritatea cazurilor. Vom vedea imediat ce inseamna toate acestea.&lt;br /&gt;
&lt;br /&gt;
* Campul actiune: Descrie actiunea pe care init o sa o realizeze pentru o lista de niveluri de rulare. Exista mai multe tipuri de actiuni, printre care:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''respawn''': lanseaza o noua instanta a unui proces, daca acesta isi termina executia&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''wait''': procesul va fi pornit odata cu intrarea in nivelul de rulare, iar init va astepta pana acesta se incheie.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''once''': procesul va fi executat o singura data, de indata ce se va intra in nivelul de rulare&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''sysinit''': intrarea ce contine aceasta actiune specifica procesul ce trebuie executat in timpul initializarii sistemului de catre init. De obicei, acest, dupa cum vom vedea, scriptul BASH /etc/rc.S.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''initdefault''': intrarea ce contine aceasta actiune specifica si nivel de rulare care va fi executat de catre init, imediat dupa ce sistemul a fost initializat (prin intermediul scriptului rc.S.)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''ctrlaltdel''': procesul va fi executat atunci cand init va primi semnalul SIGINIT. Semnalul SIGINIT este trimis atunci cand sint apasate tastele CTRL-ALT-DELETE. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum se observa, majoritatea actiunilor merg mana in mana cu un proces. Procesul este specificat in campul proces.&lt;br /&gt;
&lt;br /&gt;
* Campul proces: Specifica un proces ce trebuie executat la intrarea intr-un nivel de rulare. Procesul poate fi o comanda sau un script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ca sa intelegem mai bine ce inseamna toate acestea, vom analiza un fisier /etc/inittab.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/inittab&lt;br /&gt;
     1  #&lt;br /&gt;
     2  # inittab       This file describes how the INIT process should set up&lt;br /&gt;
     3  #               the system in a certain run-level.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Version:      @(#)inittab             2.04    17/05/93        MvS&lt;br /&gt;
     6  #                                       2.10    02/10/95        PV&lt;br /&gt;
     7  #                                       3.00    02/06/1999      PV&lt;br /&gt;
     8  #                                       4.00    04/10/2002      PV&lt;br /&gt;
     9  #&lt;br /&gt;
    10  # Author:       Miquel van Smoorenburg, &amp;lt;miquels@drinkel.nl.mugnet.org&amp;gt;&lt;br /&gt;
    11  # Modified by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
    12  #&lt;br /&gt;
    13&lt;br /&gt;
    14  # These are the default runlevels in Slackware:&lt;br /&gt;
    15  #   0 = halt&lt;br /&gt;
    16  #   1 = single user mode&lt;br /&gt;
    17  #   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    18  #   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
    19  #   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
    20  #   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    21  #   6 = reboot&lt;br /&gt;
    22&lt;br /&gt;
    23  # Default runlevel. (Do not set to 0 or 6)&lt;br /&gt;
    24  id:3:initdefault:&lt;br /&gt;
    25&lt;br /&gt;
    26  # System initialization (runs when system boots).&lt;br /&gt;
    27  si:S:sysinit:/etc/rc.d/rc.S&lt;br /&gt;
    28&lt;br /&gt;
    29  # Script to run when going single user (runlevel 1).&lt;br /&gt;
    30  su:1S:wait:/etc/rc.d/rc.K&lt;br /&gt;
    31&lt;br /&gt;
    32  # Script to run when going multi user.&lt;br /&gt;
    33  rc:2345:wait:/etc/rc.d/rc.M&lt;br /&gt;
    34&lt;br /&gt;
    35  # What to do at the &amp;quot;Three Finger Salute&amp;quot;.&lt;br /&gt;
    36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&lt;br /&gt;
    37&lt;br /&gt;
    38  # Runlevel 0 halts the system.&lt;br /&gt;
    39  l0:0:wait:/etc/rc.d/rc.0&lt;br /&gt;
    40&lt;br /&gt;
    41  # Runlevel 6 reboots the system.&lt;br /&gt;
    42  l6:6:wait:/etc/rc.d/rc.6&lt;br /&gt;
    43&lt;br /&gt;
    44  # These are the standard console login getties in multiuser mode:&lt;br /&gt;
    45  c1:1235:respawn:/sbin/agetty 38400 tty1 linux&lt;br /&gt;
    46  c2:1235:respawn:/sbin/agetty 38400 tty2 linux&lt;br /&gt;
    47  c3:1235:respawn:/sbin/agetty 38400 tty3 linux&lt;br /&gt;
    48  c4:1235:respawn:/sbin/agetty 38400 tty4 linux&lt;br /&gt;
    49  c5:1235:respawn:/sbin/agetty 38400 tty5 linux&lt;br /&gt;
    50  c6:12345:respawn:/sbin/agetty 38400 tty6 linux&lt;br /&gt;
    51&lt;br /&gt;
    52  # Runlevel 4 used to be for an X window only system, until we discovered&lt;br /&gt;
    53  # that it throws init into a loop that keeps your load avg at least 1 all&lt;br /&gt;
    54  # the time. Thus, there is now one getty opened on tty6. Hopefully no one&lt;br /&gt;
    55  # will notice. ;^)&lt;br /&gt;
    56  # It might not be bad to have one text console anyway, in case something&lt;br /&gt;
    57  # happens to X.&lt;br /&gt;
    58  x1:4:respawn:/etc/rc.d/rc.4&lt;br /&gt;
    59&lt;br /&gt;
    60  # End of /etc/inittab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Vom analiza fiecare intrare, explicand-o.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Prima intrare, cea de la linia 24, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;id&amp;quot; (datorita campului id, faptul ca valoare campului coincide cu numele acestuia nu are vreo importanta). Campul nivelului de rulare este ocupat de caracterul &amp;quot;3&amp;quot;. Campul actiunii este ocupat de 'initdefault', ceea ce inseamna ca init va intra in nivelul de rulare specificat de catre acest camp, adica, in cazul nostru, &amp;quot;3&amp;quot;. Campul proces lipseste doarece intrarea, continand actiunea 'initdefault', nu necesita un proces, acesta fiind oricum ignorat daca ar fi specificat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A doua intrare, cea de la linia 27, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;si&amp;quot;. Campul nivelului de rulare este ocupat de caracterul &amp;quot;S&amp;quot;.Campul actiunii este ocupat de  catre &amp;quot;sysinit&amp;quot;, iar procesul este scriptul /etc/rc.d/rc.S. Faptul ca &amp;quot;sysinit&amp;quot; ocupa campul actiune ii spune lui init sa execute procesul din campul proces (in cazul acest, ii spune lui init sa execute scriptul /etc/rc.d/rc.S) inainte de a intra in vreun nivel de rulare(nivelul &amp;quot;3&amp;quot;, in cazul nostru ^^).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treia intrare, cea de la linia 30, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;su&amp;quot;. Campul nivelului de rulare este &amp;quot;1S&amp;quot;, ceea ce-nseamna ca intrarea se aplica atat nivelului de rulare &amp;quot;1&amp;quot;, cat si nivelului de rulare &amp;quot;S&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.K. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A patra intrare, cea de la linia 33, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;rc&amp;quot;. Campul nivelelor de rulare este &amp;quot;2345&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelelor de rulare &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot; si &amp;quot;5&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.M. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare. De asemenea, init trebuie sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A cincea intrare, cea de la linia 36, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;ca&amp;quot;. Campul nivelelor de rulare este gol. Campul actiunii este ocupat de catre &amp;quot;ctrlaltdel&amp;quot;, iar procesul de catre comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Faptul ca &amp;quot;ctrlaltdel&amp;quot; ocupa campul actiune ii spune lui init ca, atunci cand sint apasate tastele CTRL+ALT+DELETE la consola, sa execute procesul din campul proces, in cazul nostru comanda &amp;quot;/sbin/shutdown -t5 -r now&amp;quot;. Aceasta actiune nu necesita un nivel de rulare, presupunandu-se ca, daca ajungem la o consola sa apasam cele trei taste mai devreme mentionate, sintem deja intr-un nivel de rulare cu un sistem mai mult sau mai putin configurat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A sasea intrare, cea de la linia 39, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l0&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;0&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;0&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.0. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.0 atunci cand va intra in nivelul de rulare &amp;quot;0&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A saptea intrare, cea de la linia 42, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;l6&amp;quot;. Campul nivelelor de rulare este ocupat de catre &amp;quot;6&amp;quot;, ceea ce inseamna ca intrarea se aplica nivelului de rulare &amp;quot;6&amp;quot;. Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.6. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.6 atunci cand va intra in nivelul de rulare &amp;quot;6&amp;quot; si sa astepte pana ce scriptul va termina tot ce are de facut.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmatoarele 5 intrari -- de la linia 45 la linia 49 -- sint aproape identice, singurele lucruri care le deosebesc fiind campul care le identifica( oare de ce?:-) ) si penultimul parametru de executie al comenzii din campul proces. Toate au la campul nivelurilor de rulare caracterele &amp;quot;1235&amp;quot;. Toate au in campul actiunii &amp;quot;respawn&amp;quot;, iar la proces comanda &amp;quot;/sbin/agetty 38400 tty&amp;lt;x&amp;gt; linux&amp;quot;, &amp;lt;x&amp;gt; diferind de la intrare la intrare. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa regenereze procesul din campul proces, cand acesta isi termina executia. In cazul nostru, init va regenera o sesiune de identificare(engl. login prompt) in cazul in care aceasta se va sfarsi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treisprezecea intrare, cea de la linia 50, este are aceleasi proprietati ca si ultimele 5 intrari, doar ca intrarea este aplicata si nivelului de rulare &amp;quot;4&amp;quot;, spre deosebire de precedentele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ultima intrare, cea de la linia 58, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;x1&amp;quot;. Campul nivelurilor de rulare este ocupat de catre caracterul &amp;quot;4&amp;quot;. Campul actiune este ocupat de catre &amp;quot;respawn&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.4. Faptul ca &amp;quot;respawn&amp;quot; ocupa campul actiune ii spune lui init sa reexecute scriptul /etc/rc.d/rc.4, cand acesta se va termina.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[...inca putin pana la partea cu adevarat interesanta..]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3161</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3161"/>
				<updated>2006-11-24T22:48:04Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum observam, init este primul(chiar unicul) program executat de catre nucleu. De fapt, nucleul nu executa _programul_ init, ci programul care are calea absoluta /sbin/init, /etc/init, /bin/init sau /bin/sh, asta in cazul in care nucleului nu-i este specificat ca parametru de executie(init= -- deobicei specificat prin intermediul lui LILO sau altui program de incarcare) altceva(execute_command).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mai observam ca dupa 3 incercari de a executa programul &amp;quot;init&amp;quot;, nucleul isi incearca pentru ultima oara norocul cu /bin/sh. Pe Slackware (si nu numai), fisierul cu aceasta cale absoluta este o legatura cu interpretorul de comenzi BASH. Asta inseamna ca, in cazul in care celelalte trei cai nu sint valide, ne vom trezi cu un interpretor de comenzi pentru suprautilizator si un sistem neconfigurat. Acesta este unul dintre riscurile de securitate despre care vorbeam in subcapitolul legat de programele de incarcare, datorita faptului ca prin intermediul lor se poate forta nucleul sa execute calea /bin/sh, sau a oricarui alt executabil preprogramat. Folosindu-ne de cunostintele acumulate pe parcursul ghidului, voi arata, catre final, in capitolul [inca nu i-am gasit un nume] cum se poate configura si pune in picioare in mod manual un sistem folosindu-ne doar de interpetatorul de comenzi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Tot procesul descris pana in acest moment ar trebui sa fie independent de distributia folosita. In schimb, odata cu executia programului cu una dintre cele 3 cai enumerate mai devreme, lucrurile tind sa devina specifice (dar nu exagerat) distributiei, sau, mai exact, specifice unui stil de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Lumea tinde sa-i atribuie lui Slackware si derivatelor sale stilul &amp;quot;BSD&amp;quot;, iar distributiilor ca Fedora Core, SuSe, Mandriva s.a. stilul &amp;quot;System V&amp;quot;. BSD si System V au fost, acum multi ani, niste versiuni de UNIX care, dupa cum se vede, au influentat sistemele de operare actuale. Ele isi mai continua si astazi existenta prin rudele lor de grad I, cum ar fi, in cazul lui System V, UnixWare, iar, in cazul lui BSD, Open/Net/FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta categorisire, in schimb, daca este luata la puricat, nu este tocmai corecta. Slackware se foloseste de stilul de initializare &amp;quot;System V&amp;quot;, doar ca il abordeaza intr-o maniera 'mai BSD', simplificandu-l, dupa cum vom vedea. Nu am sa intru detalii legate de diferentele de abordare a initializarii de catre, sa zicem, Mandriva si Slackware, nu asta este scopul ghidului. In schimb, la final, odata inteles modul in care Slackware 'vede lumea', cititorul se poate folosi de cunostiintele acumulate pentru a compara toate distributiile GNU/Linux, daca doreste :~)&lt;br /&gt;
&lt;br /&gt;
====sysvinit====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Slackware, ca si majoritatea celorlalte distributii, se foloseste de suita de utilitare sysvinit (instalata prestabilit). O scurta descriere a pachetului, insotita de o lista cu programele incluse in el, ar fi urmatoarea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ echo -e \\n &amp;quot;Descriere:&amp;quot;; head -n14 /var/log/packages/sysvinit-2.84-i486-69; \&lt;br /&gt;
echo -e \\n\\n &amp;quot;Lista cu programe:&amp;quot;; grep -e [18].gz$ !head:$ | \&lt;br /&gt;
awk -F/ ' { print $4 } ' | awk -F. ' { print $1 } '&lt;br /&gt;
&lt;br /&gt;
Descriere:&lt;br /&gt;
PACKAGE NAME:     sysvinit-2.84-i486-69&lt;br /&gt;
COMPRESSED PACKAGE SIZE:     296 K&lt;br /&gt;
UNCOMPRESSED PACKAGE SIZE:     650 K&lt;br /&gt;
PACKAGE LOCATION: /var/log/mount/slackware/a/sysvinit-2.84-i486-69.tgz&lt;br /&gt;
PACKAGE DESCRIPTION:&lt;br /&gt;
sysvinit: sysvinit (init, the parent of all processes)&lt;br /&gt;
sysvinit:&lt;br /&gt;
sysvinit: System V style init programs by Miquel van Smoorenburg that control&lt;br /&gt;
sysvinit: the booting and shutdown of your system.  These support a number of&lt;br /&gt;
sysvinit: system runlevels, each with a specific set of utilities spawned.&lt;br /&gt;
sysvinit: For example, the normal system runlevel is 3, which starts agetty&lt;br /&gt;
sysvinit: on virtual consoles tty1 - tty6.  Runlevel 4 starts xdm.&lt;br /&gt;
sysvinit: Runlevel 0 shuts the system down.&lt;br /&gt;
sysvinit:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lista cu programe:&lt;br /&gt;
last&lt;br /&gt;
runlevel&lt;br /&gt;
killall5&lt;br /&gt;
shutdown&lt;br /&gt;
poweroff&lt;br /&gt;
init&lt;br /&gt;
halt&lt;br /&gt;
pidof&lt;br /&gt;
reboot&lt;br /&gt;
telinit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observam ca unul dintre programele incluse in pachet poarta denumirea de init. II aflam calea absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ su -c 'which init'&lt;br /&gt;
Password:&lt;br /&gt;
/sbin/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Avand respectiva cale, inseamna ca ar trebui sa fie primul program executat de nucleu. Ne putem convinge de acest lucru folosind comanda pstree(1), care ne va afisa un arbore de procese.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ pstree -np&lt;br /&gt;
init(1)-+-keventd(2)&lt;br /&gt;
        |-ksoftirqd_CPU0(3)&lt;br /&gt;
        |-kswapd(4)&lt;br /&gt;
        |-bdflush(5)&lt;br /&gt;
        |-kupdated(6)&lt;br /&gt;
        |-khubd(7)&lt;br /&gt;
        |-syslogd(72)&lt;br /&gt;
        |-klogd(75)&lt;br /&gt;
        |-inetd(631)&lt;br /&gt;
        |-dhcpcd(635)&lt;br /&gt;
        |-sshd(639)&lt;br /&gt;
        |-crond(652)&lt;br /&gt;
        |-atd(654)&lt;br /&gt;
        |-gpm(664)&lt;br /&gt;
        |-agetty(667)&lt;br /&gt;
        |-agetty(668)&lt;br /&gt;
        |-agetty(669)&lt;br /&gt;
        |-agetty(670)&lt;br /&gt;
        |-agetty(671)&lt;br /&gt;
        |-bash(860)---startx(958)---xinit(974)-+-X(975)&lt;br /&gt;
        |                                      `-xinitrc(979)---startkde(980)---kwrapper(1020)&lt;br /&gt;
        |-kdeinit(1008)-+-kdeinit(1013)&lt;br /&gt;
        [...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Uitandu-ne la arbore, observam ca, pe langa faptul ca init este primul proces si are pid'ul(tradus?) 1, restul proceselor tind sa izvoreasca din el. Consultandu-i pagina manual (init(8)), aflam niste detalii importante, printre care:&lt;br /&gt;
&lt;br /&gt;
* Init este tatal tuturor proceselor. Este primul program executat de catre nucleul la sfarsitul secventei de initializare al acestuia, fiindu-i atribuit pid-ul cu valoarea 1. ( de mentionat ca nucleul n-are pid'ul 1, ci 0. )&lt;br /&gt;
&lt;br /&gt;
* Printre scopurile sale se numara: Initializarea tuturor celorlalte procese, colectarea proceselor moarte(zombi) si regenerarea unor procese fiu la terminarea lor; Inspectarea, la initializare, a fisierului /etc/inittab, pentru configurarea sistemului.&lt;br /&gt;
&lt;br /&gt;
* Acceptare unor parametrii de executie, de obicei setati prin intermediul unui program de incarcare, care, daca sint specificati, ii pot schimba cursul firesc al derularii.&lt;br /&gt;
&lt;br /&gt;
* Captarea unor semnale si reactionarea la ele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Restul capacitatilor vor fi descrise spre finalul ghidului.&lt;br /&gt;
&lt;br /&gt;
=====/etc/inittab=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum s-a specificat mai sus, init,la executare, va citi fisierul /etc/inittab pentru a sti cum sa configureze sistemul. Conform paginii manual inittab(5), formatul fisierului /etc/inittab este urmatorul:&lt;br /&gt;
&lt;br /&gt;
id:niveluri de rulare:actiune:proces&lt;br /&gt;
&lt;br /&gt;
* Campul id: Trebuie sa contina un sir unic de maximum 4 caractere alfanumerice. Este folosit pentru a identifica fiecare intrare din fisier.&lt;br /&gt;
&lt;br /&gt;
* Niveluri de rulare: In primul rand, nivelul de rulare, conform paginii manual init(8), reprezinta o configuratie software a sistemului care, printre altele, specifica ce procese trebuiesc pornite de catre init. Configuratia se realizeaza prin intermediul unor scripturi BASH, fiecarui nivel de rulare atribuindu-se cel putin unul. Pot exista mai multe niveluri de executie. In Slackware, cele prestabilite sint urmatoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# These are the default runlevels in Slackware:&lt;br /&gt;
#   0 = halt&lt;br /&gt;
#   1 = single user mode&lt;br /&gt;
#   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
#   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
#   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   6 = reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In fisierul /etc/inittab, campul dedicat nivelurilor de rulare trebuie sa contina o lista de niveluri de rulare pentru care trebuie executata o actiune ce, in majoritatea cazurilor. Vom vedea imediat ce inseamna toate acestea.&lt;br /&gt;
&lt;br /&gt;
* Campul actiune: Descrie actiunea pe care init o sa o realizeze pentru o lista de niveluri de rulare. Exista mai multe tipuri de actiuni, printre care:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''respawn''': lanseaza o noua instanta a unui proces, daca acesta isi termina executia&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''wait''': procesul va fi pornit odata cu intrarea in nivelul de rulare, iar init va astepta pana acesta se incheie.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''once''': procesul va fi executat o singura data, de indata ce se va intra in nivelul de rulare&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''sysinit''': intrarea ce contine aceasta actiune specifica procesul ce trebuie executat in timpul initializarii sistemului de catre init. De obicei, acest, dupa cum vom vedea, scriptul BASH /etc/rc.S.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''initdefault''': intrarea ce contine aceasta actiune specifica si nivel de rulare care va fi executat de catre init, imediat dupa ce sistemul a fost initializat (prin intermediul scriptului rc.S.)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''ctrlaltdel''': procesul va fi executat atunci cand init va primi semnalul SIGINIT. Semnalul SIGINIT este trimis atunci cand sint apasate tastele CTRL-ALT-DELETE. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum se observa, majoritatea actiunilor merg mana in mana cu un proces. Procesul este specificat in campul proces.&lt;br /&gt;
&lt;br /&gt;
* Campul proces: Specifica un proces ce trebuie executat la intrarea intr-un nivel de rulare. Procesul poate fi o comanda sau un script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ca sa intelegem mai bine ce inseamna toate acestea, vom analiza un fisier /etc/inittab.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ cat -n /etc/inittab&lt;br /&gt;
     1  #&lt;br /&gt;
     2  # inittab       This file describes how the INIT process should set up&lt;br /&gt;
     3  #               the system in a certain run-level.&lt;br /&gt;
     4  #&lt;br /&gt;
     5  # Version:      @(#)inittab             2.04    17/05/93        MvS&lt;br /&gt;
     6  #                                       2.10    02/10/95        PV&lt;br /&gt;
     7  #                                       3.00    02/06/1999      PV&lt;br /&gt;
     8  #                                       4.00    04/10/2002      PV&lt;br /&gt;
     9  #&lt;br /&gt;
    10  # Author:       Miquel van Smoorenburg, &amp;lt;miquels@drinkel.nl.mugnet.org&amp;gt;&lt;br /&gt;
    11  # Modified by:  Patrick J. Volkerding, &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
    12  #&lt;br /&gt;
    13&lt;br /&gt;
    14  # These are the default runlevels in Slackware:&lt;br /&gt;
    15  #   0 = halt&lt;br /&gt;
    16  #   1 = single user mode&lt;br /&gt;
    17  #   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    18  #   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
    19  #   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
    20  #   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
    21  #   6 = reboot&lt;br /&gt;
    22&lt;br /&gt;
    23  # Default runlevel. (Do not set to 0 or 6)&lt;br /&gt;
    24  id:3:initdefault:&lt;br /&gt;
    25&lt;br /&gt;
    26  # System initialization (runs when system boots).&lt;br /&gt;
    27  si:S:sysinit:/etc/rc.d/rc.S&lt;br /&gt;
    28&lt;br /&gt;
    29  # Script to run when going single user (runlevel 1).&lt;br /&gt;
    30  su:1S:wait:/etc/rc.d/rc.K&lt;br /&gt;
    31&lt;br /&gt;
    32  # Script to run when going multi user.&lt;br /&gt;
    33  rc:2345:wait:/etc/rc.d/rc.M&lt;br /&gt;
    34&lt;br /&gt;
    35  # What to do at the &amp;quot;Three Finger Salute&amp;quot;.&lt;br /&gt;
    36  ca::ctrlaltdel:/sbin/shutdown -t5 -r now&lt;br /&gt;
    37&lt;br /&gt;
    38  # Runlevel 0 halts the system.&lt;br /&gt;
    39  l0:0:wait:/etc/rc.d/rc.0&lt;br /&gt;
    40&lt;br /&gt;
    41  # Runlevel 6 reboots the system.&lt;br /&gt;
    42  l6:6:wait:/etc/rc.d/rc.6&lt;br /&gt;
    43&lt;br /&gt;
    44  # What to do when power fails.&lt;br /&gt;
    45  pf::powerfail:/sbin/genpowerfail start&lt;br /&gt;
    46&lt;br /&gt;
    47  # If power is back, cancel the running shutdown.&lt;br /&gt;
    48  pg::powerokwait:/sbin/genpowerfail stop&lt;br /&gt;
    49&lt;br /&gt;
    50  # These are the standard console login getties in multiuser mode:&lt;br /&gt;
    51  c1:1235:respawn:/sbin/agetty 38400 tty1 linux&lt;br /&gt;
    52  c2:1235:respawn:/sbin/agetty 38400 tty2 linux&lt;br /&gt;
    53  c3:1235:respawn:/sbin/agetty 38400 tty3 linux&lt;br /&gt;
    54  c4:1235:respawn:/sbin/agetty 38400 tty4 linux&lt;br /&gt;
    55  c5:1235:respawn:/sbin/agetty 38400 tty5 linux&lt;br /&gt;
    56  c6:12345:respawn:/sbin/agetty 38400 tty6 linux&lt;br /&gt;
    57&lt;br /&gt;
    58  # Local serial lines:&lt;br /&gt;
    59  #s1:12345:respawn:/sbin/agetty -L ttyS0 9600 vt100&lt;br /&gt;
    60  #s2:12345:respawn:/sbin/agetty -L ttyS1 9600 vt100&lt;br /&gt;
    61&lt;br /&gt;
    62  # Dialup lines:&lt;br /&gt;
    63  #d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 vt100&lt;br /&gt;
    64  #d2:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS1 vt100&lt;br /&gt;
    65&lt;br /&gt;
    66  # Runlevel 4 used to be for an X window only system, until we discovered&lt;br /&gt;
    67  # that it throws init into a loop that keeps your load avg at least 1 all&lt;br /&gt;
    68  # the time. Thus, there is now one getty opened on tty6. Hopefully no one&lt;br /&gt;
    69  # will notice. ;^)&lt;br /&gt;
    70  # It might not be bad to have one text console anyway, in case something&lt;br /&gt;
    71  # happens to X.&lt;br /&gt;
    72  x1:4:respawn:/etc/rc.d/rc.4&lt;br /&gt;
    73&lt;br /&gt;
    74  # End of /etc/inittab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Vom analiza fiecare intrare, explicand-o.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Prima intrare, cea de la linia 24, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;id&amp;quot; (datorita campului id, faptul ca valoare campului coincide cu numele acestuia nu are vreo importanta). Campul nivelului de rulare este ocupat de caracterul &amp;quot;3&amp;quot;. Campul actiunii este ocupat de 'initdefault', ceea ce inseamna ca init va intra in nivelul de rulare specificat de catre acest camp, adica, in cazul nostru, &amp;quot;3&amp;quot;. Campul proces lipseste doarece intrarea, continand actiunea 'initdefault', nu necesita un proces, acesta fiind oricum ignorat daca ar fi specificat.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A doua intrare, cea de la linia 27, are urmatoarele calitati: Este identificata prin sirul de caractere &amp;quot;si&amp;quot;. Campul nivelului de rulare este ocupat de caracterul &amp;quot;S&amp;quot;.Campul actiunii este ocupat de  catre &amp;quot;sysinit&amp;quot;, iar procesul este scriptul /etc/rc.d/rc.S. Faptul ca &amp;quot;sysinit&amp;quot; ocupa campul actiune ii spune lui init sa execute procesul din campul proces (in cazul acest, ii spune lui init sa execute scriptul /etc/rc.d/rc.S) inainte de a intra in vreun nivel de rulare(nivelul &amp;quot;3&amp;quot;, in cazul nostru ^^).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;A treia intrare, cea de la linia 30, are urmatoarele calitati:Este identificata prin sirul de caractere &amp;quot;su&amp;quot;. Campul nivelului de rulare este &amp;quot;1S&amp;quot;, ceea ce-nseamna ca intrarea se aplica atat nivelului de rulare &amp;quot;1&amp;quot;, cat si nivelului de rulare &amp;quot;S&amp;quot;.Campul actiunii este ocupat de catre &amp;quot;wait&amp;quot;, iar procesul de catre scriptul /etc/rc.d/rc.K. Faptul ca &amp;quot;wait&amp;quot; ocupa campul actiune ii spune lui init sa execute scriptul /etc/rc.d/rc.K atunci cand va intra in oricare dintre nivelurile de rulare specificate in campul nivelului de rulare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;aaa..&lt;br /&gt;
[hmm, poate-ar fi mai bine altfel...]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3160</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3160"/>
				<updated>2006-11-24T01:51:02Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum observam, init este primul(chiar unicul) program executat de catre nucleu. De fapt, nucleul nu executa _programul_ init, ci programul care are calea absoluta /sbin/init, /etc/init, /bin/init sau /bin/sh, asta in cazul in care nucleului nu-i este specificat ca parametru de executie(init= -- deobicei specificat prin intermediul lui LILO sau altui program de incarcare) altceva(execute_command).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mai observam ca dupa 3 incercari de a executa programul &amp;quot;init&amp;quot;, nucleul isi incearca pentru ultima oara norocul cu /bin/sh. Pe Slackware (si nu numai), fisierul cu aceasta cale absoluta este o legatura cu interpretorul de comenzi BASH. Asta inseamna ca, in cazul in care celelalte trei cai nu sint valide, ne vom trezi cu un interpretor de comenzi pentru suprautilizator si un sistem neconfigurat. Acesta este unul dintre riscurile de securitate despre care vorbeam in subcapitolul legat de programele de incarcare, datorita faptului ca prin intermediul lor se poate forta nucleul sa execute calea /bin/sh, sau a oricarui alt executabil preprogramat. Folosindu-ne de cunostintele acumulate pe parcursul ghidului, voi arata, catre final, in capitolul [inca nu i-am gasit un nume] cum se poate configura si pune in picioare in mod manual un sistem folosindu-ne doar de interpetatorul de comenzi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Tot procesul descris pana in acest moment ar trebui sa fie independent de distributia folosita. In schimb, odata cu executia programului cu una dintre cele 3 cai enumerate mai devreme, lucrurile tind sa devina specifice (dar nu exagerat) distributiei, sau, mai exact, specifice unui stil de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Lumea tinde sa-i atribuie lui Slackware si derivatelor sale stilul &amp;quot;BSD&amp;quot;, iar distributiilor ca Fedora Core, SuSe, Mandriva s.a. stilul &amp;quot;System V&amp;quot;. BSD si System V au fost, acum multi ani, niste versiuni de UNIX care, dupa cum se vede, au influentat sistemele de operare actuale. Ele isi mai continua si astazi existenta prin rudele lor de grad I, cum ar fi, in cazul lui System V, UnixWare, iar, in cazul lui BSD, Open/Net/FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta categorisire, in schimb, daca este luata la puricat, nu este tocmai corecta. Slackware se foloseste de stilul de initializare &amp;quot;System V&amp;quot;, doar ca il abordeaza intr-o maniera 'mai BSD', simplificandu-l, dupa cum vom vedea. Nu am sa intru detalii legate de diferentele de abordare a initializarii de catre, sa zicem, Mandriva si Slackware, nu asta este scopul ghidului. In schimb, la final, odata inteles modul in care Slackware 'vede lumea', cititorul se poate folosi de cunostiintele acumulate pentru a compara toate distributiile GNU/Linux, daca doreste :~)&lt;br /&gt;
&lt;br /&gt;
====sysvinit====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Slackware, ca si majoritatea celorlalte distributii, se foloseste de suita de utilitare sysvinit (instalata prestabilit). O scurta descriere a pachetului, insotita de o lista cu programele incluse in el, ar fi urmatoarea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ echo -e \\n &amp;quot;Descriere:&amp;quot;; head -n14 /var/log/packages/sysvinit-2.84-i486-69; \&lt;br /&gt;
echo -e \\n\\n &amp;quot;Lista cu programe:&amp;quot;; grep -e [18].gz$ !head:$ | \&lt;br /&gt;
awk -F/ ' { print $4 } ' | awk -F. ' { print $1 } '&lt;br /&gt;
&lt;br /&gt;
Descriere:&lt;br /&gt;
PACKAGE NAME:     sysvinit-2.84-i486-69&lt;br /&gt;
COMPRESSED PACKAGE SIZE:     296 K&lt;br /&gt;
UNCOMPRESSED PACKAGE SIZE:     650 K&lt;br /&gt;
PACKAGE LOCATION: /var/log/mount/slackware/a/sysvinit-2.84-i486-69.tgz&lt;br /&gt;
PACKAGE DESCRIPTION:&lt;br /&gt;
sysvinit: sysvinit (init, the parent of all processes)&lt;br /&gt;
sysvinit:&lt;br /&gt;
sysvinit: System V style init programs by Miquel van Smoorenburg that control&lt;br /&gt;
sysvinit: the booting and shutdown of your system.  These support a number of&lt;br /&gt;
sysvinit: system runlevels, each with a specific set of utilities spawned.&lt;br /&gt;
sysvinit: For example, the normal system runlevel is 3, which starts agetty&lt;br /&gt;
sysvinit: on virtual consoles tty1 - tty6.  Runlevel 4 starts xdm.&lt;br /&gt;
sysvinit: Runlevel 0 shuts the system down.&lt;br /&gt;
sysvinit:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lista cu programe:&lt;br /&gt;
last&lt;br /&gt;
runlevel&lt;br /&gt;
killall5&lt;br /&gt;
shutdown&lt;br /&gt;
poweroff&lt;br /&gt;
init&lt;br /&gt;
halt&lt;br /&gt;
pidof&lt;br /&gt;
reboot&lt;br /&gt;
telinit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observam ca unul dintre programele incluse in pachet poarta denumirea de init. II aflam calea absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ su -c 'which init'&lt;br /&gt;
Password:&lt;br /&gt;
/sbin/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Avand respectiva cale, inseamna ca ar trebui sa fie primul program executat de nucleu. Ne putem convinge de acest lucru folosind comanda pstree(1), care ne va afisa un arbore de procese.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ pstree -np&lt;br /&gt;
init(1)-+-keventd(2)&lt;br /&gt;
        |-ksoftirqd_CPU0(3)&lt;br /&gt;
        |-kswapd(4)&lt;br /&gt;
        |-bdflush(5)&lt;br /&gt;
        |-kupdated(6)&lt;br /&gt;
        |-khubd(7)&lt;br /&gt;
        |-syslogd(72)&lt;br /&gt;
        |-klogd(75)&lt;br /&gt;
        |-inetd(631)&lt;br /&gt;
        |-dhcpcd(635)&lt;br /&gt;
        |-sshd(639)&lt;br /&gt;
        |-crond(652)&lt;br /&gt;
        |-atd(654)&lt;br /&gt;
        |-gpm(664)&lt;br /&gt;
        |-agetty(667)&lt;br /&gt;
        |-agetty(668)&lt;br /&gt;
        |-agetty(669)&lt;br /&gt;
        |-agetty(670)&lt;br /&gt;
        |-agetty(671)&lt;br /&gt;
        |-bash(860)---startx(958)---xinit(974)-+-X(975)&lt;br /&gt;
        |                                      `-xinitrc(979)---startkde(980)---kwrapper(1020)&lt;br /&gt;
        |-kdeinit(1008)-+-kdeinit(1013)&lt;br /&gt;
        [...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Uitandu-ne la arbore, observam ca, pe langa faptul ca init este primul proces si are pid'ul(tradus?) 1, restul proceselor tind sa izvoreasca din el. Consultandu-i pagina manual (init(8)), aflam niste detalii importante, printre care:&lt;br /&gt;
&lt;br /&gt;
* Init este tatal tuturor proceselor. Este primul program executat de catre nucleul la sfarsitul secventei de initializare al acestuia, fiindu-i atribuit pid-ul cu valoarea 1. ( de mentionat ca nucleul n-are pid'ul 1, ci 0. )&lt;br /&gt;
&lt;br /&gt;
* Printre scopurile sale se numara: Initializarea tuturor celorlalte procese, colectarea proceselor moarte(zombi) si regenerarea unor procese fiu la terminarea lor; Inspectarea, la initializare, a fisierului /etc/inittab, pentru configurarea sistemului.&lt;br /&gt;
&lt;br /&gt;
* Acceptare unor parametrii de executie, de obicei setati prin intermediul unui program de incarcare, care, daca sint specificati, ii pot schimba cursul firesc al derularii.&lt;br /&gt;
&lt;br /&gt;
* Captarea unor semnale si reactionarea la ele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Restul capacitatilor vor fi descrise spre finalul ghidului.&lt;br /&gt;
&lt;br /&gt;
=====/etc/inittab=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum s-a specificat mai sus, init,la executare, va citi fisierul /etc/inittab pentru a sti cum sa configureze sistemul. Conform paginii manual inittab(5), formatul fisierului /etc/inittab este urmatorul:&lt;br /&gt;
&lt;br /&gt;
id:niveluri de rulare:actiune:proces&lt;br /&gt;
&lt;br /&gt;
* Campul id: Trebuie sa contina un sir unic de maximum 4 caractere alfanumerice. Este folosit pentru a identifica fiecare intrare din fisier.&lt;br /&gt;
&lt;br /&gt;
* Niveluri de rulare: In primul rand, nivelul de rulare, conform paginii manual init(8), reprezinta o configuratie software a sistemului care, printre altele, specifica ce procese trebuiesc pornite de catre init. Configuratia se realizeaza prin intermediul unor scripturi BASH, fiecarui nivel de rulare atribuindu-se cel putin unul. Pot exista mai multe niveluri de executie. In Slackware, cele prestabilite sint urmatoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# These are the default runlevels in Slackware:&lt;br /&gt;
#   0 = halt&lt;br /&gt;
#   1 = single user mode&lt;br /&gt;
#   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
#   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
#   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   6 = reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In fisierul /etc/inittab, campul dedicat nivelurilor de rulare trebuie sa contina o lista de niveluri de rulare pentru care trebuie executata actiunea din campul actiune. Vom vedea imediat ce inseamna toate acestea.&lt;br /&gt;
&lt;br /&gt;
* Campul actiune: Descrie actiunea pe care init o s-o realizeze pentru o lista de niveluri de rulare. Exista mai multe tipuri de actiuni, printre care:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''respawn''': lanseaza o noua instanta a unui proces, daca acesta isi termina executia&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''wait''': procesul va fi pornit odata cu intrarea in nivelul de rulare, iar init va astepta pana acesta se incheie.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''once''': procesul va fi executat o singura data, de indata ce se va intra in nivelul de rulare&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''sysinit''': intrarea ce contine aceasta actiune specifica procesul ce trebuie executat in timpul initializarii sistemului de catre init. De obicei, acest, dupa cum vom vedea, scriptul BASH /etc/rc.S.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''initdefault''': intrarea ce contine aceasta actiune specifica si nivel de rulare care va fi executat de catre init, imediat dupa ce sistemul a fost initializat (prin intermediul scriptului rc.S.)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''ctrlaltdel''':&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
* Campul proces: Specifica un proces ce trebuie executat la intrarea intr-un nivel de rulare. Procesul, in cazul de fata, nu este nici mai mult nici mai putin decat un program(fisier executabil, mai exact) cu parametrii sai de executie.&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3158</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3158"/>
				<updated>2006-11-22T20:39:20Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum observam, init este primul(chiar unicul) program executat de catre nucleu. De fapt, nucleul nu executa _programul_ init, ci programul care are calea absoluta /sbin/init, /etc/init, /bin/init sau /bin/sh, asta in cazul in care nucleului nu-i este specificat ca parametru de executie(init= -- deobicei specificat prin intermediul lui LILO sau altui program de incarcare) altceva(execute_command).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mai observam ca dupa 3 incercari de a executa programul &amp;quot;init&amp;quot;, nucleul isi incearca pentru ultima oara norocul cu /bin/sh. Pe Slackware (si nu numai), fisierul cu aceasta cale absoluta este o legatura cu interpretorul de comenzi BASH. Asta inseamna ca, in cazul in care celelalte trei cai nu sint valide, ne vom trezi cu un interpretor de comenzi pentru suprautilizator si un sistem neconfigurat. Acesta este unul dintre riscurile de securitate despre care vorbeam in subcapitolul legat de programele de incarcare, datorita faptului ca prin intermediul lor se poate forta nucleul sa execute calea /bin/sh, sau a oricarui alt executabil preprogramat. Folosindu-ne de cunostintele acumulate pe parcursul ghidului, voi arata, catre final, in capitolul [inca nu i-am gasit un nume] cum se poate configura si pune in picioare in mod manual un sistem folosindu-ne doar de interpetatorul de comenzi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Tot procesul descris pana in acest moment ar trebui sa fie independent de distributia folosita. In schimb, odata cu executia programului cu una dintre cele 3 cai enumerate mai devreme, lucrurile tind sa devina specifice (dar nu exagerat) distributiei, sau, mai exact, specifice unui stil de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Lumea tinde sa-i atribuie lui Slackware si derivatelor sale stilul &amp;quot;BSD&amp;quot;, iar distributiilor ca Fedora Core, SuSe, Mandriva s.a. stilul &amp;quot;System V&amp;quot;. BSD si System V au fost, acum multi ani, niste versiuni de UNIX care, dupa cum se vede, au influentat sistemele de operare actuale. Ele isi mai continua si astazi existenta prin rudele lor de grad I, cum ar fi, in cazul lui System V, UnixWare, iar, in cazul lui BSD, Open/Net/FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta categorisire, in schimb, daca este luata la puricat, nu este tocmai corecta. Slackware se foloseste de stilul de initializare &amp;quot;System V&amp;quot;, doar ca il abordeaza intr-o maniera 'mai BSD', simplificandu-l, dupa cum vom vedea. Nu am sa intru detalii legate de diferentele de abordare a initializarii de catre, sa zicem, Mandriva si Slackware, nu asta este scopul ghidului. In schimb, la final, odata inteles modul in care Slackware 'vede lumea', cititorul se poate folosi de cunostiintele acumulate pentru a compara toate distributiile GNU/Linux, daca doreste :~)&lt;br /&gt;
&lt;br /&gt;
====sysvinit====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Slackware, ca si majoritatea celorlalte distributii, se foloseste de suita de utilitare sysvinit (instalata prestabilit). O scurta descriere a pachetului, insotita de o lista cu programele incluse in el, ar fi urmatoarea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ echo -e \\n\\n &amp;quot;Descriere:&amp;quot;; cat /var/log/packages/sysvinit-2.84-i486-69 \&lt;br /&gt;
| head -n14; echo -e \\n\\n &amp;quot;Lista cu programe:&amp;quot;; cat /var/log/packages/sysvinit-2.84-i486-69 \&lt;br /&gt;
| grep [18].gz$ | awk -F/ ' { print $4 } ' | awk -F. ' { print $1 } '&lt;br /&gt;
&lt;br /&gt;
Descriere:&lt;br /&gt;
PACKAGE NAME:     sysvinit-2.84-i486-69&lt;br /&gt;
COMPRESSED PACKAGE SIZE:     296 K&lt;br /&gt;
UNCOMPRESSED PACKAGE SIZE:     650 K&lt;br /&gt;
PACKAGE LOCATION: /var/log/mount/slackware/a/sysvinit-2.84-i486-69.tgz&lt;br /&gt;
PACKAGE DESCRIPTION:&lt;br /&gt;
sysvinit: sysvinit (init, the parent of all processes)&lt;br /&gt;
sysvinit:&lt;br /&gt;
sysvinit: System V style init programs by Miquel van Smoorenburg that control&lt;br /&gt;
sysvinit: the booting and shutdown of your system.  These support a number of&lt;br /&gt;
sysvinit: system runlevels, each with a specific set of utilities spawned.&lt;br /&gt;
sysvinit: For example, the normal system runlevel is 3, which starts agetty&lt;br /&gt;
sysvinit: on virtual consoles tty1 - tty6.  Runlevel 4 starts xdm.&lt;br /&gt;
sysvinit: Runlevel 0 shuts the system down.&lt;br /&gt;
sysvinit:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lista cu programe:&lt;br /&gt;
last&lt;br /&gt;
runlevel&lt;br /&gt;
killall5&lt;br /&gt;
shutdown&lt;br /&gt;
poweroff&lt;br /&gt;
init&lt;br /&gt;
halt&lt;br /&gt;
pidof&lt;br /&gt;
reboot&lt;br /&gt;
telinit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observam ca unul dintre programele incluse in pachet poarta denumirea de init. II aflam calea absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ su -c 'which init'&lt;br /&gt;
Password:&lt;br /&gt;
/sbin/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Avand respectiva cale, inseamna ca ar trebui sa fie primul program executat de nucleu. Ne putem convinge de acest lucru folosind comanda pstree(1), care ne va afisa un arbore de procese.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ pstree -np&lt;br /&gt;
init(1)-+-keventd(2)&lt;br /&gt;
        |-ksoftirqd_CPU0(3)&lt;br /&gt;
        |-kswapd(4)&lt;br /&gt;
        |-bdflush(5)&lt;br /&gt;
        |-kupdated(6)&lt;br /&gt;
        |-khubd(7)&lt;br /&gt;
        |-syslogd(72)&lt;br /&gt;
        |-klogd(75)&lt;br /&gt;
        |-inetd(631)&lt;br /&gt;
        |-dhcpcd(635)&lt;br /&gt;
        |-sshd(639)&lt;br /&gt;
        |-crond(652)&lt;br /&gt;
        |-atd(654)&lt;br /&gt;
        |-gpm(664)&lt;br /&gt;
        |-agetty(667)&lt;br /&gt;
        |-agetty(668)&lt;br /&gt;
        |-agetty(669)&lt;br /&gt;
        |-agetty(670)&lt;br /&gt;
        |-agetty(671)&lt;br /&gt;
        |-bash(860)---startx(958)---xinit(974)-+-X(975)&lt;br /&gt;
        |                                      `-xinitrc(979)---startkde(980)---kwrapper(1020)&lt;br /&gt;
        |-kdeinit(1008)-+-kdeinit(1013)&lt;br /&gt;
        [...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Uitandu-ne la arbore, observam ca, pe langa faptul ca init este primul proces si are pid'ul(tradus?) 1, restul proceselor tind sa izvoreasca din el. Consultandu-i pagina manual (init(8)), aflam niste detalii importante, printre care:&lt;br /&gt;
&lt;br /&gt;
* Init este tatal tuturor proceselor. Este primul program executat de catre nucleul la sfarsitul secventei de initializare al acestuia, fiindu-i atribuit pid-ul cu valoarea 1. ( de mentionat ca nucleul n-are pid'ul 1, ci 0. )&lt;br /&gt;
&lt;br /&gt;
* Printre scopurile sale se numara: Initializarea tuturor celorlalte procese, colectarea proceselor moarte(zombi) si regenerarea unor procese fiu la terminarea lor; Inspectarea, la initializare, a fisierului /etc/inittab, pentru configurarea sistemului.&lt;br /&gt;
&lt;br /&gt;
* Acceptare unor parametrii de executie, de obicei setati prin intermediul unui program de incarcare, care, daca sint specificati, ii pot schimba cursul firesc al derularii.&lt;br /&gt;
&lt;br /&gt;
* Captarea unor semnale si reactionarea la ele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Restul capacitatilor vor fi descrise spre finalul ghidului.&lt;br /&gt;
&lt;br /&gt;
=====/etc/inittab=====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum s-a specificat mai sus, init,la executare, va citi fisierul /etc/inittab pentru a sti cum sa configureze sistemul. Conform paginii manual inittab(5), formatul fisierului /etc/inittab este urmatorul:&lt;br /&gt;
&lt;br /&gt;
id:niveluri de rulare:actiune:proces&lt;br /&gt;
&lt;br /&gt;
* Campul id: Trebuie sa contina un sir unic de maximum 4 caractere alfanumerice. Este folosit pentru a identifica fiecare intrare din fisier.&lt;br /&gt;
&lt;br /&gt;
* Niveluri de rulare: In primul rand, nivelul de rulare, conform paginii manual init(8), reprezinta o configuratie software a sistemului care, printre altele, specifica ce procese trebuiesc pornite de catre init. Configuratia se realizeaza prin intermediul unor scripturi BASH, fiecarui nivel de rulare atribuindu-se cel putin unul. Pot exista mai multe niveluri de executie. In Slackware, cele prestabilite sint urmatoarele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# These are the default runlevels in Slackware:&lt;br /&gt;
#   0 = halt&lt;br /&gt;
#   1 = single user mode&lt;br /&gt;
#   2 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   3 = multiuser mode (default Slackware runlevel)&lt;br /&gt;
#   4 = X11 with KDM/GDM/XDM (session managers)&lt;br /&gt;
#   5 = unused (but configured the same as runlevel 3)&lt;br /&gt;
#   6 = reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In fisierul /etc/inittab, campul dedicat nivelurilor de rulare trebuie sa contina o lista de niveluri de rulare pentru care trebuie executata actiunea din campul actiune. Vom vedea imediat ce inseamna toate acestea.&lt;br /&gt;
&lt;br /&gt;
* Campul actiune: Descrie actiunea pe care init o s-o realizeze pentru o lista de niveluri de rulare. Exista mai multe tipuri de actiuni, printre care:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''respawn''': lanseaza o noua instanta a unui proces, daca acesta isi termina executia&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''wait''': procesul va fi pornit odata cu intrarea in nivelul de rulare, iar init va astepta pana acesta se incheie.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''once''': procesul va fi executat o singura data, de indata ce se va intra in nivelul de rulare&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''sysinit''': intrarea ce contine aceasta actiune specifica procesul ce trebuie executat in timpul initializarii sistemului de catre init. De obicei, acest, dupa cum vom vedea, scriptul BASH /etc/rc.S.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''initdefault''': intrarea ce contine aceasta actiune specifica si nivel de rulare care va fi executat de catre init, imediat dupa ce sistemul a fost initializat (prin intermediul scriptului rc.S.)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'''ctrlaltdel''':&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
* Campul proces: Specifica un proces ce trebuie executat la intrarea intr-un nivel de rulare. Procesul, in cazul de fata, nu este nici mai mult nici mai putin decat un program(fisier executabil, mai exact) cu parametrii sai de executie.&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3157</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3157"/>
				<updated>2006-11-22T14:13:21Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum observam, init este primul(chiar unicul) program executat de catre nucleu. De fapt, nucleul nu executa _programul_ init, ci programul care are calea absoluta /sbin/init, /etc/init, /bin/init sau /bin/sh, asta in cazul in care nucleului nu-i este specificat ca parametru de executie(init= -- deobicei specificat prin intermediul lui LILO sau altui program de incarcare) altceva(execute_command).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mai observam ca dupa 3 incercari de a executa programul &amp;quot;init&amp;quot;, nucleul isi incearca pentru ultima oara norocul cu /bin/sh. Pe Slackware (si nu numai), fisierul cu aceasta cale absoluta este o legatura cu interpretorul de comenzi BASH. Asta inseamna ca, in cazul in care celelalte trei cai nu sint valide, ne vom trezi cu un interpretor de comenzi pentru suprautilizator si un sistem neconfigurat. Acesta este unul dintre riscurile de securitate despre care vorbeam in subcapitolul legat de programele de incarcare, datorita faptului ca prin intermediul lor se poate forta nucleul sa execute calea /bin/sh, sau a oricarui alt executabil preprogramat. Folosindu-ne de cunostintele acumulate pe parcursul ghidului, voi arata, catre final, in capitolul [inca nu i-am gasit un nume] cum se poate configura si pune in picioare in mod manual un sistem folosindu-ne doar de interpetatorul de comenzi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Tot procesul descris pana in acest moment ar trebui sa fie independent de distributia folosita. In schimb, odata cu executia programului cu una dintre cele 3 cai enumerate mai devreme, lucrurile tind sa devina specifice (dar nu exagerat) distributiei, sau, mai exact, specifice unui stil de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Lumea tinde sa-i atribuie lui Slackware si derivatelor sale stilul &amp;quot;BSD&amp;quot;, iar distributiilor ca Fedora Core, SuSe, Mandriva s.a. stilul &amp;quot;System V&amp;quot;. BSD si System V au fost, acum multi ani, niste versiuni de UNIX care, dupa cum se vede, au influentat sistemele de operare actuale. Ele isi mai continua si astazi existenta prin rudele lor de grad I, cum ar fi, in cazul lui System V, UnixWare, iar, in cazul lui BSD, Open/Net/FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta categorisire, in schimb, daca este luata la puricat, nu este tocmai corecta. Slackware se foloseste de stilul de initializare &amp;quot;System V&amp;quot;, doar ca il abordeaza intr-o maniera 'mai BSD', simplificandu-l, dupa cum vom vedea. Nu am sa intru detalii legate de diferentele de abordare a initializarii de catre, sa zicem, Mandriva si Slackware, nu asta este scopul ghidului. In schimb, la final, odata inteles modul in care Slackware 'vede lumea', cititorul se poate folosi de cunostiintele acumulate pentru a compara toate distributiile GNU/Linux, daca doreste :~)&lt;br /&gt;
&lt;br /&gt;
====sysvinit====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Slackware, ca si majoritatea celorlalte distributii, se foloseste de suita de utilitare sysvinit (instalata prestabilit). O scurta descriere a pachetului, insotita de o lista cu programele incluse in el, ar fi urmatoarea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ echo -e \\n\\n &amp;quot;Descriere:&amp;quot;; cat /var/log/packages/sysvinit-2.84-i486-69 \&lt;br /&gt;
| head -n14; echo -e \\n\\n &amp;quot;Lista cu programe:&amp;quot;; cat /var/log/packages/sysvinit-2.84-i486-69 \&lt;br /&gt;
| grep [18].gz$ | awk -F/ ' { print $4 } ' | awk -F. ' { print $1 } '&lt;br /&gt;
&lt;br /&gt;
Descriere:&lt;br /&gt;
PACKAGE NAME:     sysvinit-2.84-i486-69&lt;br /&gt;
COMPRESSED PACKAGE SIZE:     296 K&lt;br /&gt;
UNCOMPRESSED PACKAGE SIZE:     650 K&lt;br /&gt;
PACKAGE LOCATION: /var/log/mount/slackware/a/sysvinit-2.84-i486-69.tgz&lt;br /&gt;
PACKAGE DESCRIPTION:&lt;br /&gt;
sysvinit: sysvinit (init, the parent of all processes)&lt;br /&gt;
sysvinit:&lt;br /&gt;
sysvinit: System V style init programs by Miquel van Smoorenburg that control&lt;br /&gt;
sysvinit: the booting and shutdown of your system.  These support a number of&lt;br /&gt;
sysvinit: system runlevels, each with a specific set of utilities spawned.&lt;br /&gt;
sysvinit: For example, the normal system runlevel is 3, which starts agetty&lt;br /&gt;
sysvinit: on virtual consoles tty1 - tty6.  Runlevel 4 starts xdm.&lt;br /&gt;
sysvinit: Runlevel 0 shuts the system down.&lt;br /&gt;
sysvinit:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lista cu programe:&lt;br /&gt;
last&lt;br /&gt;
runlevel&lt;br /&gt;
killall5&lt;br /&gt;
shutdown&lt;br /&gt;
poweroff&lt;br /&gt;
init&lt;br /&gt;
halt&lt;br /&gt;
pidof&lt;br /&gt;
reboot&lt;br /&gt;
telinit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observam ca unul dintre programele incluse in pachet poarta denumirea de init. II aflam calea absoluta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ su -c 'which init'&lt;br /&gt;
Password:&lt;br /&gt;
/sbin/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Avand respectiva cale, inseamna ca ar trebui sa fie primul program executat de nucleu. Ne putem convinge de acest lucru folosind comanda pstree(1), care ne va afisa un arbore de procese.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
err@coliba:~$ pstree -np&lt;br /&gt;
init(1)-+-keventd(2)&lt;br /&gt;
        |-ksoftirqd_CPU0(3)&lt;br /&gt;
        |-kswapd(4)&lt;br /&gt;
        |-bdflush(5)&lt;br /&gt;
        |-kupdated(6)&lt;br /&gt;
        |-khubd(7)&lt;br /&gt;
        |-syslogd(72)&lt;br /&gt;
        |-klogd(75)&lt;br /&gt;
        |-inetd(631)&lt;br /&gt;
        |-dhcpcd(635)&lt;br /&gt;
        |-sshd(639)&lt;br /&gt;
        |-crond(652)&lt;br /&gt;
        |-atd(654)&lt;br /&gt;
        |-gpm(664)&lt;br /&gt;
        |-agetty(667)&lt;br /&gt;
        |-agetty(668)&lt;br /&gt;
        |-agetty(669)&lt;br /&gt;
        |-agetty(670)&lt;br /&gt;
        |-agetty(671)&lt;br /&gt;
        |-bash(860)---startx(958)---xinit(974)-+-X(975)&lt;br /&gt;
        |                                      `-xinitrc(979)---startkde(980)---kwrapper(1020)&lt;br /&gt;
        |-kdeinit(1008)-+-kdeinit(1013)&lt;br /&gt;
        [...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Uitandu-ne la arbore, observam ca, pe langa faptul ca init este primul proces si are pid'ul(tradus?) 1, restul proceselor tind sa izvoreasca din el. Consultandu-i pagina manual (init(8)), aflam niste detalii importante, printre care:&lt;br /&gt;
&lt;br /&gt;
* Init este tatal tuturor proceselor. Este primul program executat de catre nucleul la sfarsitul secventei de initializare al acestuia, fiindu-i atribuit pid-ul cu valoarea 1. ( de mentionat ca nucleul n-are pid'ul 1, ci 0. )&lt;br /&gt;
&lt;br /&gt;
* Printre scopurile sale se numara: Initializarea tuturor celorlalte procese, colectarea proceselor moarte(zombi) si regenerarea unor procese copil la terminarea lor; Inspectarea, la initializare, a fisierului /etc/inittab, pentru configurarea sistemului.&lt;br /&gt;
&lt;br /&gt;
* Acceptare unor parametrii de executie, de obicei setati prin intermediul unui program de incarcare, care, daca sint specificati, ii pot schimba cursul firesc al derularii.&lt;br /&gt;
&lt;br /&gt;
* Captarea unor semnale si reactionarea la ele.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Restul capacitatilor vor fi descrise spre finalul ghidului.&lt;br /&gt;
&lt;br /&gt;
====/etc/inittab====&lt;br /&gt;
&lt;br /&gt;
[...]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3156</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3156"/>
				<updated>2006-11-21T20:20:32Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Dupa cum observam, init este primul(chiar unicul) program executat de catre nucleu. De fapt, nucleul nu executa _programul_ init, ci programul care are calea absoluta /sbin/init, /etc/init, /bin/init sau /bin/sh, asta in cazul in care nucleului nu-i este specificat ca parametru de executie(init= -- deobicei specificat prin intermediul lui LILO sau altui program de incarcare) altceva(execute_command).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Mai observam ca dupa 3 incercari de a executa programul &amp;quot;init&amp;quot;, nucleul isi incearca pentru ultima oara norocul cu /bin/sh. Pe Slackware (si nu numai), fisierul cu aceasta cale absoluta este o legatura cu interpretorul de comenzi BASH. Asta inseamna ca, in cazul in care celelalte trei cai nu sint valide, ne vom trezi cu un interpretor de comenzi pentru suprautilizator si un sistem neconfigurat. Acesta este unul dintre riscurile de securitate despre care vorbeam in subcapitolul legat de programele de incarcare, datorita faptului ca prin intermediul lor se poate forta nucleul sa execute calea /bin/sh, sau a oricarui alt executabil preprogramat. Folosindu-ne de cunostintele acumulate pe parcursul ghidului, voi arata, catre final, in capitolul [inca nu i-am gasit un nume] cum se poate configura si pune in picioare in mod manual un sistem folosindu-ne doar de interpetatorul de comenzi.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Tot procesul descris pana in acest moment ar trebui sa fie independent de distributia folosita. In schimb, odata cu executia programului cu una dintre cele 3 cai enumerate mai devreme, lucrurile tind sa devina specifice (dar nu exagerat) distributiei, sau, mai exact, specifice unui stil de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Lumea tinde sa-i atribuie lui Slackware si derivatelor sale stilul &amp;quot;BSD&amp;quot;, iar distributiilor ca Fedora Core, SuSe, Mandriva s.a. stilul &amp;quot;System V&amp;quot;. BSD si System V au fost, acum multi ani, niste versiuni de UNIX care, dupa cum se vede, au influentat sistemele de operare actuale. Ele isi mai continua si astazi existenta prin rudele lor de grad I, cum ar fi, in cazul lui System V, UnixWare, iar, in cazul lui BSD, Open/Net/FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta categorisire, in schimb, daca este luata la puricat, nu este tocmai corecta. Slackware se foloseste de stilul de initializare &amp;quot;System V&amp;quot;, doar ca il abordeaza intr-o maniera 'mai BSD', simplificandu-l, dupa cum vom vedea. Nu am sa intru detalii legate de diferentele de abordare a initializarii de catre, sa zicem, Mandriva si Slackware, nu asta este scopul ghidului. In schimb, la final, odata inteles modul in care Slackware 'vede lumea', cititorul se poate folosi de cunostiintele acumulate pentru a compara toate distributiile GNU/Linux, daca doreste :~)&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3155</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3155"/>
				<updated>2006-11-21T13:17:15Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: /* Initializarea sistemului si a serviciilor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Tot procesul descris pana in acest moment ar trebui sa fie independent de distributia folosita. In schimb, odata executat programul init de catre nucleu, lucrurile tind sa devina mult mai specifice distributiei, sau, mai exact, specifice unui stil de initializare.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Lumea tinde sa-i atribuie lui Slackware si derivatelor sale stilul &amp;quot;BSD&amp;quot;, iar distributiilor ca Fedora Core, SuSe, Mandriva s.a. stilul &amp;quot;System V&amp;quot;. BSD si System V au fost, acum multi ani, niste versiuni de UNIX care, dupa cum se vede, au influentat sistemele de operare actuale. Ele isi mai continua si astazi existenta prin rudele lor de grad I, cum ar fi, in cazul lui System V, UnixWare, iar, in cazul lui BSD, OpenBSD.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta categorisire, in schimb, daca este luata la puricat, nu este tocmai corecta. Slackware se foloseste de stilul de initializare &amp;quot;System V&amp;quot;, doar ca il abordeaza intr-o maniera 'mai BSD', simplificandu-l, dupa cum vom vedea. Nu am sa intru detalii legate de diferentele de abordare a initializarii de catre, sa zicem, Mandriva si Slackware, nu asta este scopul ghidului. In schimb, la final, odata inteles modul in care Slackware 'vede lumea', cititorul se poate folosi de cunostiintele acumulate pentru a compara toate distributiile GNU/Linux, daca doreste :~)&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3154</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3154"/>
				<updated>2006-11-20T20:23:51Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
* notiuni de baza ale limbajului de programare C&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
[code]&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
[...]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3153</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3153"/>
				<updated>2006-11-20T20:21:20Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul, printre altele, initializeaza si seteaza dispozitivele hard, memoria, monteaza sistemul de fisiere radacina s.a. Daca doriti sa stiti mai multe informatii despre acest proces, verificati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In final, nucleul executa comanda init (sau cea prestabilita prin intermediul programului de incarcare), prin care initializarea sistemului este pornita. Pentru a exemplifica, am sa postez _finalul_ fisierului sursa init/main.c:&lt;br /&gt;
[code]&lt;br /&gt;
        /*&lt;br /&gt;
         * We try each of these until one succeeds.&lt;br /&gt;
         *&lt;br /&gt;
         * The Bourne shell can be used instead of init if we are&lt;br /&gt;
         * trying to recover a really broken machine.&lt;br /&gt;
         */&lt;br /&gt;
        if (execute_command)&lt;br /&gt;
                run_init_process(execute_command);&lt;br /&gt;
        run_init_process(&amp;quot;/sbin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/etc/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/init&amp;quot;);&lt;br /&gt;
        run_init_process(&amp;quot;/bin/sh&amp;quot;);&lt;br /&gt;
        panic(&amp;quot;No init found.  Try passing init= option to kernel.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
[...]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3152</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3152"/>
				<updated>2006-11-20T19:06:45Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea nucleului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea nucleului====&lt;br /&gt;
&lt;br /&gt;
[...]m-am gandit si cred ca nu ar merita detaliata..., mm...??!1111&lt;br /&gt;
&lt;br /&gt;
===Initializarea sistemului si a serviciilor===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Odata executat, nucleul[...]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3151</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3151"/>
				<updated>2006-11-20T18:54:56Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Aceasta metoda se imparte, la randul ei, in mai multe stagii, datorita limitarilor impuse de componentele hard. Daca se va opta pentru folosirea unui program de incarcare, odata cu instalarea acestuia, primul sector al MBRului va fi ocupat de de programul de incarcare primar(engl. primary boot loader), contine un set de instructiuni, un tabel cu partitii(maximum 4 primare, dintre care una poate fi extinsa). si, la final, un numar 'magic'(0xAA55) folosit pentru validarea continutului. Acesta este primul stagiu, iar scopul lui este sa verifice tabelul cu partitii pentru partitii active, iar in cazul vreunei descoperiri, sa incarce in memorie continutul sectorului de incarcare al respectivei partitii si sa-l execute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Stagiul al doilea(care poate fi, de asemenea, fractionat) difera de la program de incarcare la program de incarcare, dar scopul lui este sa incarce in memorie imaginea kernelului(doar este arhivat cu gzip, nu?), sa-l dezarhiveze si sa-l execute cu sau fara parametrii de executie specificati de catre utilizator. Pentru  mai multe detalii, consultati sfirsitul ghidului.&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea kernelului====&lt;br /&gt;
&lt;br /&gt;
[...]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3150</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3150"/>
				<updated>2006-11-20T17:09:27Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiarizat cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiarizat cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Acest al doilea stagiu are ca scop principal incarcarea in memorie a nucleului de pe hard disc si executarea acestuia. Solutionarea poate fi abordata in mai multe moduri:&lt;br /&gt;
&lt;br /&gt;
* Poate fi folosit un program de incarcare(engl. bootloader) independent de nucleu. Cele mai populare in mediul GNU/Linux sint LILO si GRUB.&lt;br /&gt;
* Nucleul poate fi lasat sa se autoincarce si autoexecute.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Ambele solutii au in comun faptul ca se folosesc de primul sector din MBR pentru a isi pune in functiune mecanismul, deoarece codul din primul sector al MBRului hard discului este primul care va fi executat la in acest stagiu.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Astazi, in mediul calculatoarelor personale, a doua metoda este foarte rar intrebuintata, date fiind avantajele folosirii unui program de incarcare independent de nucleu. Dintre aceste avantaje, cele mai important de mentionat ar fi: posibilitatea de-a rula mai multe sisteme de operare pe acelasi calculator si posibilitatea de-a trimite parametrii de executie nucleului. Problema este ca aceste beneficii, dupa cum vom vedea putin mai tarziu, pot aduce (mari) riscuri de securitate.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Urmeaza o scurta explicatie a mecanismului celor doua metode.&lt;br /&gt;
&lt;br /&gt;
====Programul de incarcare(GRUB/LILO)====&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
====Autoincarcarea si autoexecutarea kernelului====&lt;br /&gt;
&lt;br /&gt;
[...]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3149</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3149"/>
				<updated>2006-11-20T14:33:28Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: /* Incarcarea fizica */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiar cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiar cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea nucleului===&lt;br /&gt;
&lt;br /&gt;
[de continuat.]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3148</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3148"/>
				<updated>2006-11-20T14:32:10Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiar cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiar cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
===Incarcarea fizica===&lt;br /&gt;
&lt;br /&gt;
[de continuat.]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3147</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3147"/>
				<updated>2006-11-20T14:31:22Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiar cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiar cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;br /&gt;
&lt;br /&gt;
==Incarcarea fizica==&lt;br /&gt;
&lt;br /&gt;
[de continuat.]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3146</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3146"/>
				<updated>2006-11-20T14:24:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: /* Demararea Fizica */ 2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiar cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiar cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
&lt;br /&gt;
* Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3145</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3145"/>
				<updated>2006-11-20T14:23:16Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: /* Demararea Fizica */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiar cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiar cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Procesul de demarare fizica al unui calculator este dependent de arhitectura microprocesorului. In cazul de fata, aceasta arhitectura va fi x86/x86-compatibila. Procesul este unul complex, dar poate fi rezumat in felul urmator:&lt;br /&gt;
&lt;br /&gt;
* La pornirea sursei de alimentare, memoria primara a sistemului(memoria cu acces aleatoriu — engl.: RAM) este goala, asa ca microprocesorul este programat sa execute instructiunile situate intr-o zona rezervata(FFFF0h) a memoriei numai-citire(engl. presc. ROM) a sistemului de intrare/iesire pe baza(engl.presc. BIOS). Scopul acestei zone este de a directiona microprocesorul catre locatia unde se afla programul BIOS.&lt;br /&gt;
&lt;br /&gt;
* Odata ce BIOSul este incarcat in memorie, acesta efectueaza mai multe operatii: autotestarea la punerea in functiune(engl. presc. POST), initializarea/inventar al dispozitivelor s.a.&lt;br /&gt;
— Catre final, BIOSul cauta o unitate de disc de pe care sa demareze. De obicei, aceasta unitate de disc este selectionata in prealabil de catre utilizator si poate fi un CD-ROM, o unitatea de dischete, un hard disc.. In cazul acesta o sa fie de hard disc, caci se presupune ca sistemul este deja instalat in memoria fizica.&lt;br /&gt;
&lt;br /&gt;
* Cand gaseste unitatea de disc, ii incarca si executa sectoru de demarare(engl. boot sector), care, in cazul de fata, fiind vorba de un hard disc, poarta numele de MBR(Master Boot Record) si este localizat in primul sector al hard discului(primii 512 byti). Din momentul acesta, controlul este predat codului din MBR.&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3144</id>
		<title>Talk:Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3144"/>
				<updated>2006-11-20T13:44:26Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ghidul e in curs de scriere, acum doar am incercat sa-i dau un schelet. O sa trec foarte in curand la partea cu adevarat informativa. :)&lt;br /&gt;
&lt;br /&gt;
Imi cam prind urechile cu wiki'ul asta, fiind prima oara cand folosesc o chestiune de genul. Se misca (incarca) si foarte greu.&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3143</id>
		<title>Procesul de initializare al unui sistem Slackware GNU/Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Procesul_de_initializare_al_unui_sistem_Slackware_GNU/Linux&amp;diff=3143"/>
				<updated>2006-11-20T13:41:34Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Primul pas catre atingerea rangul de administrator de sistem nu este configurarea serverului X, nici jonglatul cu un parafoc, ci intelegerea procesului de demarare al unui sistem de operare si de initializare a serviciilor oferite de acesta. Odata inteles acest proces, se poate fasona profilul sistemului si se pot alege serviciile care se doresc a fi pornite, de abia dupa care atentia poate fi focalizata catre configurarea unui serviciu anume.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In continuare, voi incerca sa explic, sumar, demararea sistemului de operare GNU/Linux si, in detaliu, procesul de initializare al unui sistem bazat pe distributia Slackware.&lt;br /&gt;
&lt;br /&gt;
===Cu ce ar trebui sa fie familiar cititorul===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Pornind de la premiza ca interactioneaza/a interactionat cu sistemul de operare GNU/Linux, distributia fiind irelevanta, cititorul ar trebui sa fie familiar cu urmatoarele:&lt;br /&gt;
&lt;br /&gt;
* notiuni elementare in ceea ce priveste geometria unui hard-disc&lt;br /&gt;
&lt;br /&gt;
* conceptul de nucleu linux ( Preferabil sa-l fi configurat si compilat macar o data. )&lt;br /&gt;
&lt;br /&gt;
* experienta cu interpretatorul de comenzi BASH, precum si modul in care acesta poate fi folosit pentru scriptare&lt;br /&gt;
&lt;br /&gt;
* deprindere in intrebuintarea paginilor manual&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs..]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Observatii:&lt;br /&gt;
* Toate paginile manual din acest ghid sint din cadrul distributiei Slackware 11.0; unele dintre ele n-o sa existe pe alte distributii, iar daca exista, sansele sint sa difere, dat fiind faptul ca voi acoperi subiecte care sint, de obicei, specifice unei distributii.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[...de completat pe parcurs.]&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
&lt;br /&gt;
Conform paginii manual boot(7), secventa de demarare difera de la un sistem la sistem, dar poate fi impartita, pe scurt si incomplet, in urmatoarele stagii:&lt;br /&gt;
* Demararea fizica&lt;br /&gt;
* Incarcarea nucleului&lt;br /&gt;
* Initializarea sistemului si a serviciilor&lt;br /&gt;
&lt;br /&gt;
===Demararea Fizica===&lt;br /&gt;
&lt;br /&gt;
[ de continuat. ]&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Vladg&amp;diff=3142</id>
		<title>User:Vladg</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Vladg&amp;diff=3142"/>
				<updated>2006-11-20T12:45:14Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;icantfindavaliduser@gmail.com&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3141</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3141"/>
				<updated>2006-11-20T12:43:58Z</updated>
		
		<summary type="html">&lt;p&gt;Vladg: Adaugat articol in categoria &amp;quot;in curs de scriere&amp;quot;.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* A început migrarea tutorialelor şi ghidurilor (HowTo) din forum în Wiki -- nu ezitaţi să daţi o mână de ajutor ;-) &lt;br /&gt;
* Vă rugăm, folosiţi '''doar''' [[linux360:Sandbox|caietul de ciorne]] pentru încercări şi probe.&lt;br /&gt;
* Pentru acces de editare, vă rugăm contactaţi [mailto:wiki-admin@linux360.ro administraţia].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:HowTo|ghiduri]] actualizate:'''&lt;br /&gt;
** [[Debricking Linksys WRT54GL cu OpenWrt]]&lt;br /&gt;
** [[Instalare Gentoo - Sfaturi]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
** [[Detecţie componente hardware din consolă]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Dezlipire sticker Microsoft Windows|Cum să scăpăm de abţibildul de la Microsoft?]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Ce este GNU/Linux? / Cum invat Linux?]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
** [[Comunica prin lpt|Controlul motoarelor pas cu pas prin portul paralel]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Cum dau net mai departe|Redistribuirea/Partajarea conexiunii la Internet]]  ([[:Category:Networking|retea]]/[[:Category:Routing|rutare]])&lt;br /&gt;
** [[Yum în România|&amp;lt;tt&amp;gt;yum&amp;lt;/tt&amp;gt; în România]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Postfix tls mysql dovecot|Postfix cu TLS, autentificare din MySQL şi acces prin Dovecot(broken)]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Download si instalare E17 din CVS|Instalare automatizată E17 CVS]] ([[:Category:GEs|medii grafice]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Tutorial|tutoriale]] actualizate''':&lt;br /&gt;
** [[Setari vim existentiale]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Script pentru restabilirea conexiunii ADSL]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Configurare Gaim pentru a afisa in status melodia curenta|Configurarea GAIM  pentru a afişa în status melodia curentă]] ([[:Category:Multimedia|multimedia]]/[[:Category:Office|programe de birotică]])&lt;br /&gt;
** [[Introducere in Gtk-sharp|Introducere în Gtk#]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Schimbarea setarilor GTK 2|Schimbarea setărilor Gtk+ 2]] ([[:Category:GEs|medii grafice]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Sistem de depanare a aplicatiilor in limbajul C-plus-plus|Sistem de depanare a aplicaţiilor în limbajul C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Iptables romana|Introducere în &amp;lt;tt&amp;gt;iptables&amp;lt;/tt&amp;gt;]] ([[:Category:Networking|reţea]]/[[:Category:Firewall|filtrare trafic]])&lt;br /&gt;
** [[Supra%C3%AEnc%C4%83rcarea operatorilor %C3%AEn limbajul C-plus-plus|Supraîncărcarea operatorilor în ANSI C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Collection|colecţii]] actualizate''':&lt;br /&gt;
** [[Scripturi BASH|Scripturi Bash utile]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Salutare lume!|Salutare, lume!]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Presentation|prezentări]] actualizate''':&lt;br /&gt;
** [[Libipq by example|&amp;lt;tt&amp;gt;libipq&amp;lt;/tt&amp;gt; în exemple]] ([[:Cateogory:Networking|reţea]]/[[:Category:Programming|programare]])&lt;br /&gt;
** [[KDSFlash]] ([[:Category:Graphics|grafică]]/[[:Category:Animation|animaţie]]/[[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Articole [[:Category:Pending|în curs de scriere]]''':&lt;br /&gt;
** [[Echivalentele Linux ale programelor Windows]] ([[User:Raver|raver]])&lt;br /&gt;
** [[Partiţii]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[Autorizarea accesului la resurse web în Apache]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[ACIS|Administrare, configurare şi intreţinere servere]] ([[User:Csdexter|@Dexter]])&lt;br /&gt;
** [[Curbe Bezier|Curbe Bézier]] ([[User:Cbidea|Phaser]])&lt;br /&gt;
** [[Procesul de initializare al unui sistem Slackware GNU/Linux]] ([[User:Vladg|Vladg]])&lt;/div&gt;</summary>
		<author><name>Vladg</name></author>	</entry>

	</feed>