Linux internals Brian ward download pdf. De interne structuur van Linux. Hoe Linux-kernel opstart

We hebben een boek van Brian Ward gepubliceerd, dat in het Westen al een bestseller is geworden. Het beschrijft alle subtiliteiten van het werken met het Linux-besturingssysteem, systeembeheer, diepe mechanismen die Linux-functionaliteit op laag niveau bieden. Op de pagina's van deze publicatie verwerft u basiskennis van het werken met de Linux-kernel en de principes van de correcte werking van computernetwerken. Het boek gaat ook in op de problemen van het programmeren van shellscripts en het omgaan met de C-taal, en behandelt de onderwerpen informatiebeveiliging, virtualisatie en andere onvervangbare zaken.

Wie moet het boek lezen?

Interesse in het Linux-besturingssysteemapparaat kan verschillende redenen hebben. Inen Linux-softwareontwikkelaars vinden in dit boek vrijwel alles wat ze moeten weten om het beste uit hun besturingssysteem te halen. Onderzoekers en studenten, die het systeem vaak zelf moeten tweaken, vinden hier praktische uitleg waarom alles zo werkt en niet anders. Er zijn ook "entertainers" - gebruikers die graag tijd achter de computer doorbrengen voor amusement, winst of beide tegelijk. Vraagt ​​u zich af waarom sommige dingen werken en andere niet? Vraag je je af wat er gebeurt als je iets verandert? Dan ben jij een van de "entertainers".

De noodzakelijke voorwaarden

Je hoeft geen programmeur te zijn om dit boek te lezen. Je hebt alleen basisvaardigheden van de computergebruiker nodig: je moet door de grafische interface navigeren (bij het installeren en configureren van de systeeminterface), en ook een idee hebben van bestanden en mappen (mappen). U moet ook bereid zijn om aanvullende documentatie op uw systeem en online te zoeken. Zoals hierboven vermeld, is uw bereidheid en bereidheid om uw computer te verkennen het belangrijkst.

Hoe een boek te lezen?

Als het om technische onderwerpen gaat, is het geen gemakkelijke taak om alle benodigde kennis over te brengen. Enerzijds verzandt de lezer in onnodige details en heeft hij moeite de essentie te vatten, aangezien de menselijke geest eenvoudigweg niet een groot aantal nieuwe concepten tegelijk kan verwerken. Aan de andere kant leidt het gebrek aan details ertoe dat de lezer slechts een vaag idee krijgt van het onderwerp en niet klaar is om verder materiaal te verwerken.

In dit boek heeft de auteur de presentatie vereenvoudigd en de stof gestructureerd. In de meeste hoofdstukken wordt eerst belangrijke informatie gegeven die nodig is voor verder werk. Als u het hoofdstuk leest, vindt u er aanvullend materiaal in. Moet u deze bijzonderheden meteen leren? In de meeste gevallen denkt de auteur van niet. Als je ogen beginnen te vervagen bij het zien van veel details met betrekking tot het materiaal dat je net hebt geleerd, aarzel dan niet om door te gaan naar het volgende hoofdstuk of een pauze te nemen. Andere belangrijke dingen wachten op je.

Hoe dit boek werkt

Het boek begint met een overzicht van het Linux-systeem, gevolgd door een reeks praktische oefeningen met de tools die je nodig hebt om met het systeem aan de slag te gaan. Vervolgens onderzoekt u in detail elk onderdeel van het systeem, van hardwarebeheer tot netwerkconfiguratie, in de gebruikelijke volgorde waarin het systeem opstart. Ten slotte krijgt u inzicht in enkele details van een werkend systeem, leert u enkele belangrijke vaardigheden en raakt u vertrouwd met de tools die door programmeurs worden gebruikt.

De meeste van de eerste hoofdstukken (behalve hoofdstuk 2) maken intensief gebruik van de Linux-kernel, maar naarmate je door het boek vordert, zul je ook in je gebruikersruimte werken. Als je niet begrijpt waar de auteur het nu over heeft, maak je geen zorgen, de uitleg wordt gegeven in hoofdstuk 1. Het materiaal wordt, indien mogelijk, gepresenteerd zonder gebonden te zijn aan een distributiekit van het systeem. Het zou saai zijn om alle systeemopties te beschrijven, dus probeerde Ward te praten over de twee belangrijkste distributiefamilies: Debian (inclusief Ubuntu) en RHEL / Fedora / CentOS. De nadruk ligt op server- en werkstationversies. Embedded systemen zoals Android en OpenWRT komen ook aan bod, maar het onderzoeken van de verschillen tussen deze platforms wordt aan jou overgelaten.

Wat is er nieuw in de tweede editie

De eerste editie van dit boek ging voornamelijk over de gebruikerskant van Linux. De belangrijkste focus lag op het ontwerp van de onderdelen en hoe ze te laten functioneren. In die tijd waren veel elementen van het systeem moeilijk correct te installeren en te configureren.

Dankzij het harde werk van softwareontwikkelaars en makers van Linux-distributie is de situatie veranderd. Ward heeft het materiaal van de eerste editie opnieuw bekeken om naar updates te zoeken, met de nadruk op het opstartproces en hoe het hardware beheert, en heeft verouderd materiaal verwijderd (zoals een gedetailleerde uitleg van het afdrukproces) om de rol van de Linux-kernel in elke distributie uit te breiden. Je hebt waarschijnlijk veel vaker interactie met de kernel dan je je realiseert, en de auteur heeft specifiek gewezen op de momenten waarop dit gebeurt.

Ward veranderde ook de stroom van het boek om te voldoen aan de interesses en behoeften van de lezers van vandaag. Het enige dat niet is veranderd, is het volume van het boek.

De auteur wilde je de informatie geven die je nodig hebt om snel aan de slag te gaan. Het zal wat moeite kosten om ze onder de knie te krijgen, maar Ward is niet van plan om jullie "gewichtheffers" te maken zodat je dit boek kunt verslaan. Als u eenmaal de kritieke punten begrijpt die hier worden geschetst, zal het niet moeilijk voor u zijn om de details te vinden en uit te zoeken.

De auteur heeft enkele historische details uit de eerste editie verwijderd, voornamelijk om uw aandacht te vestigen. Als je geïnteresseerd bent in Linux en zijn relatie tot de geschiedenis van het Unix-systeem, raadpleeg dan The Daemon, the Gnu, and the Penguin (Reed Media Services, 2008) door Peter H. Salus, waarin wordt uitgelegd hoe de software ons gebruikte.

Meer details over het boek zijn te vinden op:



Het boek dat je in handen hebt, is in het Westen al een bestseller geworden. Het beschrijft alle subtiliteiten van het werken met het Linux-besturingssysteem, systeembeheer, diepe mechanismen die Linux-functionaliteit op laag niveau bieden. Op de pagina's van dit boek verwerft u basiskennis van het werken met de Linux-kernel en de principes van de correcte werking van computernetwerken. Het boek gaat ook in op de problemen van het programmeren van shellscripts en het omgaan met de C-taal, en behandelt de onderwerpen informatiebeveiliging, virtualisatie en andere onvervangbare zaken.

Lagen en lagen van abstractie in het Linux-besturingssysteem

Het gebruik van abstracties om computersystemen op te splitsen in componenten maakt ze gemakkelijker te begrijpen, maar niet nuttig als er geen structuur is. We rangschikken de componenten als lagen of niveaus. Laag, of laag, is een manier om componenten te classificeren (of groeperen) op basis van hun locatie tussen de gebruiker en de hardware. Browsers, games, enz. bevinden zich op de bovenste laag; op de onderste laag zien we het geheugen van de computer: nullen en enen. Het besturingssysteem neemt het grootste aantal lagen tussen de twee in beslag.

Er zijn drie hoofdniveaus in het Linux-besturingssysteem. De hardware bevindt zich in de kern. Deze omvatten geheugen en een of meer centrale verwerkingseenheden (CPU's) die berekeningen uitvoeren en verzoeken om uit het geheugen te lezen en te schrijven. Apparaten zoals harde schijven en netwerkinterfaces worden ook wel hardware genoemd.

Hierboven staat de kernel, het hart van het besturingssysteem. De kernel is een programma dat zich in het geheugen van de computer bevindt en opdrachten geeft aan de centrale processor. De kernel beheert de hardware en fungeert in de eerste plaats als een interface tussen de hardware en elk actief programma.

Processen - draaiende programma's die worden bestuurd door de kernel - vormen samen het hoogste niveau van het systeem, de gebruikersruimte. Een nauwkeuriger term dan "proces" is "gebruikersproces", ongeacht of de gebruiker rechtstreeks met het proces communiceert. Alle webservers draaien bijvoorbeeld als gebruikersprocessen.

Er is een belangrijk verschil tussen hoe kernelprocessen en gebruikersprocessen worden gestart: de kernel start in kernelmodus en gebruikersprocessen in gebruikersmodus. Kernel-mode code heeft onbeperkte toegang tot de processor en RAM. Dit is een groot voordeel, maar het kan gevaarlijk zijn omdat kernelprocessen hierdoor gemakkelijk het hele systeem kunnen verstoren. Het gebied dat alleen toegankelijk is voor de kernel wordt kernelruimte genoemd.

Ter vergelijking: in de gebruikersmodus is slechts een beperkte (meestal kleine) hoeveelheid geheugen beschikbaar en zijn alleen veilige instructies voor de processor toegestaan. Gebruikersruimte verwijst naar RAM-gebieden die toegankelijk zijn voor gebruikersprocessen. Als een proces eindigt met een fout, zijn de gevolgen beperkt en kan de kernel ze opruimen. Dit betekent dat als bijvoorbeeld de browser crasht, de wetenschappelijke berekeningen die je enkele dagen op de achtergrond hebt uitgevoerd niet worden verstoord.

In theorie kan een ongecontroleerd gebruikersproces geen significante schade aan het systeem toebrengen. In werkelijkheid hangt het allemaal af van wat u als "aanzienlijke schade" beschouwt, evenals van de speciale privileges van het proces, aangezien sommige processen meer mogen doen dan andere. Kan een gebruikersproces bijvoorbeeld gegevens op een harde schijf volledig vernietigen? Als u de machtigingen correct configureert, kan dit, en voor u zal het uiterst gevaarlijk zijn. Er zijn beschermende maatregelen om dit te voorkomen, en de meeste processen mogen op deze manier gewoon geen schade aanrichten.

Basisopdrachten en directorystructuur

Dit hoofdstuk is een referentie voor de opdrachten en hulpprogramma's van het Unix-besturingssysteem. U kent waarschijnlijk de meeste van deze commando's al, maar voor de zekerheid, vooral met betrekking tot de directorystructuur. Hier is het inleidende materiaal waarnaar ik in het hele boek zal verwijzen.

Waarom hebben we het over Unix-commando's? Gaat dit boek niet over hoe Linux werkt? Ja, natuurlijk daarover, maar in de kern van Linux ligt het Unix-systeem.

Het woord Unix zul je hier vaker tegenkomen dan het woord Linux, omdat de informatie die je leert direct toepasbaar is op Solaris, BSD en andere Unix-gerelateerde systemen. Ik heb geprobeerd om niet te veel naar Linux-specifieke gebruikersinterface-extensies te kijken, niet alleen om een ​​solide basis te hebben voor het gebruik van andere systemen, maar ook omdat dergelijke extensies behoorlijk onstabiel zijn. Je kunt je sneller aanpassen aan nieuwe releases van Linux als je de basiscommando's kent.

Hoe Linux-kernel opstart

Nu weet je wat de fysieke en logische structuur van een Linux-systeem is, wat de kernel is en hoe je met processen moet werken. Je krijgt informatie over hoe de kernel start of laadt, met andere woorden, hoe de kernel in het geheugen komt tot het moment waarop het eerste gebruikersproces begint. Een vereenvoudigd diagram van het downloadproces ziet er als volgt uit.

  1. Systeem-BIOS of opstartfirmware laadt en start de systeembootloader.
  2. De systeemlader zoekt naar een kernelimage op schijf, laadt het in het geheugen en start het.
  3. De kernel initialiseert apparaten en hun stuurprogramma's.
  4. De kernel koppelt het rootbestandssysteem aan.
  5. De kernel draait init met proces-ID 1. Dit punt is het begin van de gebruikersruimte.
  6. De opdracht init start de rest van de systeemprocessen.
  7. Op een gegeven moment start de opdracht init een proces waarmee u kunt inloggen. Dit gebeurt meestal aan het einde of kort voor het einde van het opstarten van het systeem.

Stappen één tot en met vier worden hier behandeld, met een focus op de kernel en systeem-bootloaders. Hoofdstuk 6 gaat verder met het laden van gebruikersruimte.

Het kunnen identificeren van elke fase van het opstartproces is van onschatbare waarde bij het oplossen van opstartproblemen en helpt u het systeem als geheel te begrijpen. De standaard opstartmodus in veel Linux-versies maakt het echter vaak moeilijk (zo niet onmogelijk) om enkele van de eerste stappen te identificeren, en je zult ze waarschijnlijk pas kunnen bekijken nadat ze zijn voltooid, nadat je bent ingelogd.

Een inleiding tot software voor het compileren van C-code

De meeste openbaar beschikbare Unix-softwarepakketten van derden worden geleverd in broncode die u kunt koppelen en installeren. Een reden hiervoor is dat er zoveel verschillende versies en architecturen van Unix (en Linux zelf) zijn dat het moeilijk zou zijn om binaire pakketten te maken voor alle mogelijke combinaties van platformen. Een andere belangrijke reden is dat de wijdverbreide verspreiding van broncode in de Unix-gemeenschap gebruikers aanmoedigt om bugs in software op te lossen en nieuwe functies te introduceren, wat betekenis geeft aan de term "open source".

Bijna alles wat je op een Linux-systeem ziet, kan als broncode worden verkregen, van de kernel en C-bibliotheek tot browsers. Het is zelfs mogelijk om het systeem als geheel te updaten en aan te vullen door onderdelen van het systeem vanaf de bron te (her)installeren. U moet uw computer echter waarschijnlijk niet bijwerken door alles vanaf de bron te installeren, tenzij u het proces leuk vindt of een andere reden hebt.

Linux biedt gewoonlijk eenvoudige manieren om kritieke delen van het systeem bij te werken, zoals commando's in de map / bin, en een uiterst belangrijke eigenschap van systemen is dat ze de neiging hebben om beveiligingsproblemen zeer snel op te lossen. Verwacht echter niet dat uw versie u alles biedt wat u nodig heeft zonder uw inbreng. Er zijn verschillende redenen waarom u bepaalde pakketten mogelijk zelf moet installeren:

  • om configuratieparameters te controleren;
  • om de software te installeren waar u het nodig hebt. U kunt zelfs verschillende versies van hetzelfde pakket installeren;
  • om de versie die u installeert te beheren. De systeemdistributies bevatten niet altijd de meest recente versie van alle pakketten, vooral die met betrekking tot aanvullende software (zoals Python-bibliotheken);
  • om beter te begrijpen hoe het pakket werkt.

Webservers en applicaties

Linux is een populair systeem voor webservers en de regerende vorst van Linux-toepassingsservers is de Apache HTTP-server (gewoonlijk eenvoudigweg Apache genoemd). Een andere webserver waar je vaak over zult horen is Tomcat (ook een project van de Apache-ontwikkelaars); het biedt ondersteuning voor Java-toepassingen.

Op zichzelf doen webservers weinig: ze kunnen bestanden opslaan, en dat is het dan ook. Het uiteindelijke doel van de meeste webservers, zoals Apache, is om een ​​platform te bieden voor het gebruik van webapplicaties. Het Wikipedia-project bouwt bijvoorbeeld voort op het MediaWiki-pakket, waarmee u uw eigen wiki-project kunt organiseren. Met contentbeheersystemen zoals WordPress en Drupal kunt u uw eigen blogs en multimediasites maken. Al deze applicaties zijn gebaseerd op programmeertalen die vooral goed werken op Linux. Zo zijn MediaWiki, WordPress en Drupal in PHP geschreven.

De bouwstenen waaruit webtoepassingen bestaan, zijn zeer modulair, dus het is gemakkelijk om uw eigen extensies toe te voegen en toepassingen te bouwen met frameworks zoals Django, Flask en Rails die de middelen bieden voor algemene webinfrastructuren en -functies, zoals het gebruik van sjablonen, -gebruikersbeheer en databaseondersteuning.

Downloaden van gratis bestandsopslag

Los de captcha op om toegang te krijgen tot de links!

Huidige pagina: 1 (totaal van het boek heeft 30 pagina's) [beschikbare passage om te lezen: 17 pagina's]

Brian Ward

Linux internals

Tolk S. Tsjernikov

Technisch redacteur N. Grinchik

literaire redacteur O. Andrievich

artiesten A. Bartsevich, V. Shimkevich

proeflezers T. Kuryanovich, E. Pavlovich

Lay-out A. Bartsevich

Brian Ward

De interne structuur van Linux. - SPb.: Peter, 2015.

ISBN 978-5-496-01952-1

© Uitgeverij "Piter" LLC, 2015

Alle rechten voorbehouden. Niets uit dit boek mag in welke vorm dan ook worden gereproduceerd zonder schriftelijke toestemming van de houders van de auteursrechten.

Voorwoord

Ik heb dit boek geschreven met de overtuiging dat om succesvol en effectief te zijn, je moet begrijpen hoe de software van je computer werkt en werkt.

Het Linux-besturingssysteem is geweldig om te leren, omdat de meeste systeemconfiguratie is opgeslagen in eenvoudige bestanden die redelijk gemakkelijk te lezen zijn. Je hoeft alleen maar uit te zoeken waar elk van de onderdelen verantwoordelijk voor is en dan alles samen te voegen. Dit is waar dit boek over gaat.

Interesse in het Linux-besturingssysteemapparaat kan verschillende redenen hebben. Inen Linux-softwareontwikkelaars vinden in dit boek vrijwel alles wat ze moeten weten om het beste uit hun besturingssysteem te halen. Onderzoekers en studenten, die het systeem vaak zelf moeten tweaken, vinden hier praktische uitleg waarom alles zo werkt en niet anders. Er zijn ook "entertainers" - gebruikers die graag tijd achter de computer doorbrengen voor amusement, winst of beide tegelijk.

Vraagt ​​u zich af waarom sommige dingen werken en andere niet? Vraag je je af wat er gebeurt als je iets verandert? Dan ben jij een van de "entertainers".

De noodzakelijke voorwaarden

Je hoeft geen programmeur te zijn om dit boek te lezen. Je hebt alleen basisvaardigheden van de computergebruiker nodig: je moet door de grafische interface navigeren (bij het installeren en configureren van de systeeminterface), en ook een idee hebben van bestanden en mappen (mappen). U moet ook bereid zijn om aanvullende documentatie op uw systeem en online te zoeken. Zoals hierboven vermeld, is uw bereidheid en bereidheid om uw computer te verkennen het belangrijkst.

Als het om technische onderwerpen gaat, is het geen gemakkelijke taak om alle benodigde kennis over te brengen. Enerzijds verzandt de lezer in onnodige details en heeft hij moeite de essentie te vatten, aangezien de menselijke geest eenvoudigweg niet een groot aantal nieuwe concepten tegelijk kan verwerken. Aan de andere kant leidt het gebrek aan details ertoe dat de lezer slechts een vaag idee krijgt van het onderwerp en niet klaar is om verder materiaal te verwerken.

In dit boek heb ik de presentatie vereenvoudigd en de stof gestructureerd. In de meeste hoofdstukken wordt eerst belangrijke informatie gegeven die nodig is voor verder werk. Als u het hoofdstuk leest, vindt u er aanvullend materiaal in. Moet u deze bijzonderheden meteen leren? In de meeste gevallen denk ik van niet. Als je ogen beginnen te vervagen bij het zien van veel details met betrekking tot het materiaal dat je net hebt geleerd, aarzel dan niet om door te gaan naar het volgende hoofdstuk of een pauze te nemen. Andere belangrijke dingen wachten op je.

Een hands-on benadering

Om te kunnen werken, heb je een computer nodig met een Linux-besturingssysteem. Misschien geeft u de voorkeur aan een virtuele installatie — ik heb VirtualBox gebruikt om het meeste materiaal in dit boek te testen. U moet een superuser (root) zijn, hoewel u meestal een gewoon gebruikersaccount moet gebruiken. Je werkt voornamelijk in de opdrachtregel, in het terminalvenster of in een externe sessie. Als je zelden in deze omgeving hebt gewerkt, is dat oké, je leert er meer over in hoofdstuk 2.

Meestal zien de opdrachten er als volgt uit:

Voer de tekst vet in; het normale lettertype toont de antwoordtekst die door de machine wordt uitgegeven. Het $-symbool is een uitnodiging voor een gebruiker met een regulier account. Als je een # ziet achter de prompt, zou je in het superuser-account moeten werken (meer hierover in hoofdstuk 2).

Hoe dit boek werkt

Het boek begint met een overzicht van het Linux-systeem, gevolgd door een reeks praktische oefeningen met de tools die je nodig hebt om met het systeem aan de slag te gaan. Vervolgens onderzoekt u in detail elk onderdeel van het systeem, van hardwarebeheer tot netwerkconfiguratie, in de gebruikelijke volgorde waarin het systeem opstart. Ten slotte krijgt u inzicht in enkele details van een werkend systeem, leert u enkele belangrijke vaardigheden en raakt u vertrouwd met de tools die door programmeurs worden gebruikt.

De meeste van de eerste hoofdstukken (behalve hoofdstuk 2) maken intensief gebruik van de Linux-kernel, maar naarmate je door het boek vordert, zul je ook in je gebruikersruimte werken. Als je niet begrijpt waar ik het over heb, maak je geen zorgen, de uitleg wordt gegeven in hoofdstuk 1.

Het materiaal wordt, waar mogelijk, gepresenteerd zonder verwijzing naar enige distributie van het systeem. Het zou saai zijn om alle varianten van het systeem te beschrijven, dus ik probeerde het te hebben over de twee belangrijkste distributiefamilies: Debian (inclusief Ubuntu) en RHEL / Fedora / CentOS. De nadruk ligt op server- en werkstationversies. Embedded systemen zoals Android en OpenWRT komen ook aan bod, maar het onderzoeken van de verschillen tussen deze platforms wordt aan jou overgelaten.

Wat is er nieuw in de tweede editie

De eerste editie van dit boek ging voornamelijk over de gebruikerskant van Linux. De belangrijkste focus lag op het ontwerp van de onderdelen en hoe ze te laten functioneren. In die tijd waren veel elementen van het systeem moeilijk correct te installeren en te configureren.

Dankzij het harde werk van softwareontwikkelaars en makers van Linux-distributie is de situatie veranderd. Ik heb het materiaal in de eerste editie opnieuw bekeken op zoek naar updates, met bijzondere aandacht voor het opstartproces en hoe het hardware beheert, en verouderd materiaal verwijderd (zoals een gedetailleerde uitleg van het afdrukproces) om de rol van de Linux kernel in elke distributie. Je hebt waarschijnlijk veel vaker interactie met de kernel dan je je realiseert, en ik heb specifiek gewezen op de momenten waarop dit gebeurt.

Ik heb ook de stroom van het boek aangepast aan de interesses en behoeften van de lezers van vandaag. Het enige dat niet is veranderd, is het volume van het boek.

Ik wilde je de informatie geven die je nodig hebt om snel aan de slag te gaan. Het zal wat moeite kosten om ze onder de knie te krijgen, maar het is niet mijn bedoeling om jullie "gewichtheffers" te maken zodat jullie dit boek kunnen verslaan. Als u eenmaal de kritieke punten begrijpt die hier worden geschetst, zal het niet moeilijk voor u zijn om de details te vinden en uit te zoeken.

Ik heb enkele historische details uit de eerste editie verwijderd, voornamelijk om uw aandacht te trekken. Als je geïnteresseerd bent in Linux en zijn relatie tot de geschiedenis van het Unix-systeem, raadpleeg dan het boek van Peter H. Salus De Daemon, de Gnu en de Penguin(Reed Media Services, 2008) - Het vertelt hoe de software die we gebruiken is geëvolueerd.

Een opmerking over terminologie

Momenteel zijn er geschillen over de namen van sommige elementen van besturingssystemen. Ze bevatten zelfs de naam van het Linux-systeem - moet het Linux of GNU / Linux heten (om het gebruik van sommige elementen van het GNU-project weer te geven)? In het boek heb ik geprobeerd de meest voorkomende en, indien mogelijk, de minst omslachtige namen te gebruiken.

Dankbetuigingen

Dank aan iedereen die me heeft geholpen met de eerste editie. Dit zijn James Duncan, Douglas N. Arnold, Bill Fenner, Ken Hornstein, Scott Dickson, Dan Ehrlich, Felix Lee (Felix Lee, Scott Schwartz, Gregory P. Smith, Dan Sully, Karol Jurado en Gina Steele. Voor deze editie ben ik Jordi Gutierrez Hermoso bijzonder dankbaar voor de uitstekende technische recensie; zijn suggesties en verduidelijkingen zijn van onschatbare waarde. Dank ook aan Dominique Poulain en Donald Karon voor de snelle feedback in het begin, en aan Hsinju Hsieh die geduldig met mij hebben samengewerkt om dit boek te herwerken.

Ik wil ook mijn ontwikkelingsredacteur, Bill Pollock, en productieredacteur Laurel Chun bedanken. Serena Yang, Alison Law en iedereen bij No Starch Press hebben zoals gewoonlijk uitstekend werk geleverd bij het voorbereiden van de nieuwe editie van het boek.

Van de uitgever

Stuur uw opmerkingen, suggesties en vragen naar het e-mailadres [e-mail beveiligd](uitgeverij "Peter", computereditie).

We zouden graag van je horen!

Op de website van de uitgeverij http://www.piter.com vindt u uitgebreide informatie over onze boeken.

1. Algemeen beeld

Een modern besturingssysteem, zoals Linux, is op het eerste gezicht behoorlijk complex en bestaat uit een groot aantal onderdelen die tegelijkertijd functioneren en met elkaar in wisselwerking staan. Een webserver kan bijvoorbeeld communiceren met een databaseserver, die op zijn beurt een gedeelde bibliotheek gebruikt die door veel andere programma's wordt gebruikt. Hoe werkt het allemaal?

U kunt het besturingssysteem het meest effectief begrijpen met behulp van: abstracties Is een elegante manier om te zeggen dat je de meeste details negeert. Als u bijvoorbeeld auto rijdt, hoeft u meestal niet na te denken over details zoals de bevestigingsbouten die de motor in de auto vasthouden of de mensen die de weg hebben geplaveid en in goede staat hebben gehouden. Als u als passagier in een auto reist, hoeft u alleen te weten waarvoor de auto is bedoeld (deze brengt u ergens heen), evenals enkele basisregels voor het gebruik ervan (hoe om te gaan met de deur en de veiligheidsgordel).

Als je aan het rijden bent, moet je meer weten. U moet leren over de bedieningselementen (zoals het stuur en het gaspedaal) en wat u moet doen bij een storing.

Stel dat de auto schokkerig is. Je kunt de auto die op de wegabstractie rijdt opsplitsen in drie delen: de auto, de weg en je rijstijl. Dit zal helpen de oorzaak vast te stellen. Als de weg hobbelig is, hoef je de auto of jezelf niet de schuld te geven. In plaats daarvan kun je proberen te achterhalen waarom de weg is verslechterd, of, als de weg nieuw is, waarom de bouwers zo slecht werk hebben geleverd.

Softwareontwikkelaars gebruiken abstractie als een hulpmiddel om besturingssystemen en applicaties te maken. Er zijn veel termen voor geabstraheerde delen van computersoftware, waaronder: subsysteem, module en plastieken zak... In dit hoofdstuk gebruiken we echter de term onderdeel omdat het eenvoudig is. Bij het maken van een softwarecomponent geven ontwikkelaars meestal niet veel om de interne structuur van andere componenten, maar ze moeten nog steeds nadenken over welke componenten en hoe ze kunnen gebruiken.

Dit hoofdstuk geeft een overzicht van de componenten waaruit een Linux-systeem bestaat. Hoewel elk van hen een ongelooflijke hoeveelheid technische details heeft met betrekking tot de interne structuur, zullen we er geen aandacht aan besteden en ons concentreren op wat deze componenten doen in relatie tot het systeem als geheel.

1.1. Lagen en lagen van abstractie in het Linux-besturingssysteem

Het gebruik van abstracties om computersystemen op te splitsen in componenten maakt ze gemakkelijker te begrijpen, maar niet nuttig als er geen structuur is. We rangschikken de componenten als lagen of niveaus. Laag, of peil, Is een manier om componenten te classificeren (of groeperen) op basis van hun locatie tussen de gebruiker en de hardware. Browsers, games, enz. bevinden zich op de bovenste laag; op de onderste laag zien we het geheugen van de computer: nullen en enen. Het besturingssysteem neemt het grootste aantal lagen tussen de twee in beslag.

Er zijn drie hoofdniveaus in het Linux-besturingssysteem. In afb. 1.1 toont de niveaus, evenals enkele van de componenten in elk van hen. In de kern bevinden zich hardware... Deze omvatten geheugen en een of meer centrale verwerkingseenheden (CPU's) die berekeningen uitvoeren en verzoeken om uit het geheugen te lezen en te schrijven. Apparaten zoals harde schijven en netwerkinterfaces worden ook wel hardware genoemd.

Een niveau hoger is kern dat is de kern van het besturingssysteem. De kernel is een programma dat zich in het geheugen van de computer bevindt en opdrachten geeft aan de centrale processor. De kernel beheert de hardware en fungeert in de eerste plaats als een interface tussen de hardware en elk actief programma.

Processen - draaiende programma's die worden bestuurd door de kernel - vormen samen het hoogste niveau van het systeem genaamd gebruikersruimte.

Opmerking

Een nauwkeuriger term dan "proces" is "gebruikersproces", ongeacht of de gebruiker rechtstreeks met het proces communiceert. Alle webservers draaien bijvoorbeeld als gebruikersprocessen.

Er is een belangrijk verschil tussen hoe kernelprocessen en gebruikersprocessen worden gestart: de kernel wordt gestart in kernelmodus en gebruikersprocessen zijn in gebruikersmodus... Kernel-mode code heeft onbeperkte toegang tot de processor en RAM. Dit is een groot voordeel, maar het kan gevaarlijk zijn omdat kernelprocessen hierdoor gemakkelijk het hele systeem kunnen verstoren. Het gebied dat alleen toegankelijk is voor de kernel heet kernruimte.

Ter vergelijking: in de gebruikersmodus is slechts een beperkte (meestal kleine) hoeveelheid geheugen beschikbaar en zijn alleen veilige instructies voor de processor toegestaan. Gebruikersruimte worden gebieden van willekeurig toegankelijk geheugen genoemd die toegankelijk zijn voor gebruikersprocessen. Als een proces faalt, zijn de gevolgen beperkt en kan de kernel ze opruimen. Dit betekent dat als bijvoorbeeld de browser crasht, de wetenschappelijke berekeningen die je enkele dagen op de achtergrond hebt uitgevoerd niet worden verstoord.

Rijst. 1.1. Algemene structuur van het Linux-besturingssysteem

In theorie kan een ongecontroleerd gebruikersproces geen significante schade aan het systeem toebrengen. In werkelijkheid hangt het allemaal af van wat u beschouwt als "aanzienlijke schade", evenals van de speciale privileges van het proces, aangezien sommige processen meer mogen doen dan andere. Kan een gebruikersproces bijvoorbeeld gegevens op een harde schijf volledig vernietigen? Als u de machtigingen correct configureert, kan dit, en voor u zal het uiterst gevaarlijk zijn. Er zijn beschermende maatregelen om dit te voorkomen, en de meeste processen mogen op deze manier gewoon geen schade aanrichten.

1.2. Hardware: RAM

Van alle computerhardware RAM is misschien wel het belangrijkste. In zijn meest "ruwe" vorm is random access memory gewoon een enorme opslag voor een reeks nullen en enen. Elke nul of één wordt genoemd beetje... Dit is waar de draaiende kernel en processen zich bevinden - het zijn slechts grote sets bits. Alle invoer- en uitvoergegevens van randapparatuur gaan ook door het RAM-geheugen in de vorm van bitsets. De centrale processor werkt gewoon op het geheugen: hij leest er instructies en gegevens uit en schrijft de gegevens vervolgens terug naar het geheugen.

Je komt de term vaak tegen "voorwaarde", die verwijst naar geheugen, processen, kernel en andere delen van het computersysteem. Strikt genomen is een toestand een geordende opstelling van bits. Als er bijvoorbeeld vier bits in het geheugen zijn, vertegenwoordigen de reeksen 0110, 0001 en 1011 drie verschillende toestanden.

Aangezien een proces gemakkelijk miljoenen bits in het geheugen kan hebben, is het vaak gemakkelijker om abstracte termen te gebruiken bij het verwijzen naar toestanden. In plaats van een toestand te beschrijven met behulp van bits, praat je over wat er is gebeurd of gebeurt op dit moment. U kunt bijvoorbeeld zeggen "dit proces wacht op invoer" of "het proces voert de tweede fase van de opstartroutine uit".

OPMERKING

Omdat toestand meestal wordt beschreven met abstracte concepten in plaats van met werkelijke bits, wordt de term "afbeelding" gebruikt om te verwijzen naar elke fysieke opstelling van bits.

1.3. Kern

Bijna alles wat de kernel doet gaat over RAM. Een van de taken van de kernel is om geheugen toe te wijzen aan verschillende subsecties, waarna de kernel constant informatie moet bijhouden over de status van deze subsecties. Elk proces gebruikt een geheugengebied dat eraan is toegewezen, en de kernel moet ervoor zorgen dat processen zich aan hun gebieden houden.

De kernel is verantwoordelijk voor het beheren van taken in vier hoofdgebieden van het systeem.

Processen. De kernel is verantwoordelijk voor welke processen toegang krijgen tot de CPU.

Geheugen. De kernel moet de status van al het geheugen bijhouden: welk deel is momenteel toegewezen aan bepaalde processen, wat kan worden toegewezen voor delen door processen en welk deel is gratis.

Stuurprogramma's voor apparaten. De kernel fungeert als interface tussen hardware (zoals een harde schijf) en processen. Meestal wordt de hardware beheerd door de kernel.

Systeemoproepenensteun. Doorgaans gebruiken processen systeemaanroepen om met de kernel te communiceren.

We zullen nu snel naar elk van deze gebieden kijken.

OPMERKING

Voor details over hoe de kernel werkt, zie Besturingssysteemconcepten, 9e editie, door Abraham Silberschatz, Peter B. Galvin en Greg Gagne (Wiley, 2012) en Modern Operating Systems, 4e editie, door Andrew S. Tanenbaum en Herbert Bos ( Prenticezaal, 2014).

1.3.1. Procesmanagement

Procesmanagement beschrijft het starten, stoppen, hervatten en beëindigen van processen. De concepten achter het starten en beëindigen van processen zijn vrij eenvoudig. Het is iets moeilijker om te beschrijven hoe een proces de CPU gebruikt tijdens normaal gebruik.

In elk modern besturingssysteem worden verschillende processen "gelijktijdig" uitgevoerd. U kunt bijvoorbeeld tegelijkertijd een browser op uw computer starten en een spreadsheet openen. In werkelijkheid is echter niet alles wat het lijkt: de processen die verantwoordelijk zijn voor deze applicaties starten in de regel niet op. vprecisie Op een gegeven moment.

Denk aan een systeem met één centrale verwerkingseenheid. Het kan door meerdere processen worden gebruikt, maar op elk moment kan slechts één proces de processor daadwerkelijk gebruiken. In de praktijk gebruikt elk proces de processor een fractie van een seconde en pauzeert dan; dan gebruikt een ander proces de processor voor een kleine fractie van een seconde; dan komt het derde proces aan de beurt, enz. Een actie waarbij een proces de besturing van de processor overdraagt ​​aan een ander proces heet context wisselen.

Elk tijdssegment - tijdschijf- het proces voldoende tijd geeft om essentiële berekeningen uit te voeren (en natuurlijk voltooit het proces zijn huidige taak vaak binnen één kwantum). Omdat tijdkwanta zo klein zijn, neemt een persoon ze niet waar en het lijkt hem dat er meerdere processen tegelijkertijd in het systeem draaien (een dergelijke mogelijkheid staat bekend als "Multitasking").

De kernel is verantwoordelijk voor het wisselen van context. Om te begrijpen hoe dit werkt, stelt u zich een situatie voor waarin een proces wordt gestart in de gebruikersmodus, maar de tijdsschijf eindigt. Dit is wat er gebeurt.

1. De processor (echte hardware) onderbreekt het huidige proces, vertrouwend op een interne timer, schakelt over naar de kernelmodus en geeft de controle terug.

2. De kernel registreert de huidige status van de processor en het geheugen, wat nodig is om het zojuist onderbroken proces te hervatten.

3. De kernel voert alle taken uit die tijdens de vorige time slice zijn verschenen (bijvoorbeeld gegevensverzameling of I / O-bewerkingen).

4. De kernel is nu klaar om een ​​ander proces te starten. Het analyseert de lijst met processen die klaar zijn om te starten en selecteert er een.

5. De kernel bereidt het geheugen voor op het nieuwe proces en bereidt vervolgens de processor voor.

6. De kernel vertelt de processor hoe lang de tijdschijf zal duren voor het nieuwe proces.

7. De kernel plaatst de processor in de gebruikersmodus en draagt ​​de controle over aan de processor.

Contextomschakeling biedt een antwoord op een belangrijke vraag: wanneer werkt de kern? Het antwoord is het volgende: de kernel werkt tussen tijdsegmenten toegewezen voor processen wanneer de contextwisseling plaatsvindt.

In een systeem met meerdere processors is het iets ingewikkelder omdat de kernel de controle over de huidige processor niet hoeft op te geven om een ​​proces op een andere processor te laten draaien. Echter, om het meeste uit alle beschikbare processors te halen, doet de kernel dit nog steeds (en kan enkele trucjes gebruiken om extra processortijd te krijgen).

1.3.2. Geheugen management

Omdat de kernel het geheugen moet beheren tijdens contextwisselingen, is deze voorzien van deze complexe functie. Kernelbewerking is complex omdat rekening moet worden gehouden met de volgende voorwaarden:

De kernel moet zijn eigen geheugengebied hebben dat niet toegankelijk is voor gebruikersprocessen;

Elk gebruikersproces heeft zijn eigen geheugengebied nodig;

Een gebruikersproces zou geen toegang moeten hebben tot een geheugengebied dat voor een ander proces is bestemd;

Gebruikersprocessen kunnen geheugen delen;

Sommige stukken geheugen voor gebruikersprocessen kunnen alleen-lezen zijn;

Het systeem kan meer geheugen gebruiken dan beschikbaar is door schijfruimte als hulpapparaat te gebruiken.

De kernel heeft een helper. Moderne processors bevatten geheugenbeheermodule(MMU), die een geheugentoegangsschema activeert genaamd "Virtueel geheugen"... Met virtueel geheugen heeft een proces geen directe toegang tot het geheugen door zijn fysieke locatie in de hardware. In plaats daarvan configureert de kernel elk proces alsof het de hele machine tot zijn beschikking heeft. Wanneer een proces toegang krijgt tot geheugen, onderschept de MMU het verzoek en gebruikt een geheugenadreskaart om de geheugenlocatie die van het proces is ontvangen te vertalen naar de fysieke geheugenlocatie op de computer. De kernel moet deze adresmap echter nog steeds initialiseren, onderhouden en wijzigen. Tijdens een contextwisseling moet de kernel bijvoorbeeld de kaart wijzigen na een lopend proces en deze voorbereiden op het volgende.

Opmerking

De implementatie van een geheugenadreskaart wordt een paginatabel genoemd.

In hoofdstuk 8 leert u hoe u geheugenprestaties kunt volgen.

1.3.3. Apparaatstuurprogramma's en beheer

De taak van de kernel met betrekking tot apparaten is vrij eenvoudig. Doorgaans zijn apparaten alleen toegankelijk in de kernelmodus, omdat onjuiste toegang (bijvoorbeeld wanneer een gebruikersproces probeert de stroom uit te schakelen) ervoor kan zorgen dat de computer niet goed werkt. Een ander probleem is dat verschillende apparaten zelden dezelfde programmeerinterface hebben, zelfs als ze dezelfde taak uitvoeren: bijvoorbeeld twee verschillende netwerkkaarten. Om deze reden maken apparaatstuurprogramma's van oudsher deel uit van de kernel en streven ze naar een uniforme interface voor gebruikersprocessen om de last van softwareontwikkelaars te verlichten.

1.3.4. Systeemoproepen en ondersteuning

Er zijn andere soorten kernelfuncties beschikbaar voor gebruikersprocessen. Bijvoorbeeld, systeemoproepen speciale taken uitvoeren die een gebruikersproces alleen niet goed kan of helemaal niet kan. Alle acties met betrekking tot het openen, lezen en schrijven van bestanden omvatten dus systeemaanroepen.

Twee systeemaanroepen - fork () en exec () - zijn belangrijk om te begrijpen hoe processen worden gestart:

Vork (). Wanneer een proces fork () aanroept, maakt de kernel een bijna identieke kopie van dat proces;

Exec (). Wanneer een proces exec ( programma), voert de kernel het programma uit programma die het huidige proces vervangt.

Behalve het init-proces (hoofdstuk 6), alle gebruikersprocessen op Linux worden gestart als het resultaat van een fork ()-aanroep, en in de meeste gevallen wordt exec () aangeroepen om een ​​nieuw programma te starten in plaats van een kopie van een bestaand proces. Een eenvoudig voorbeeld is elk programma dat u vanaf de opdrachtregel uitvoert, zoals de opdracht ls, die de inhoud van een map weergeeft. Wanneer u de opdracht ls invoert in een terminalvenster, roept de shell die in het terminalvenster wordt uitgevoerd fork () aan om een ​​kopie van de shell te maken, en vervolgens roept deze nieuwe kopie van de shell exec (ls) aan om de opdracht ls uit te voeren. In afb. 1.2 toont de volgorde van processen en systeemaanroepen voor actieve programma's zoals ls.

Rijst. 1.2. Een nieuw proces starten

OPMERKING

Systeemoproepen worden meestal aangeduid met haakjes. In het voorbeeld getoond in Fig. 1.2, een proces dat de kernel vraagt ​​om een ​​ander proces te maken, moet de systeemaanroep fork () doen. Deze notatie komt van de manier waarop aanroepen worden geschreven in de programmeertaal C. U hoeft C niet te kennen om dit boek te begrijpen. Onthoud alleen dat een systeemaanroep een interactie is tussen een proces en de kernel. Bovendien heeft dit boek een aantal systeemoproepgroepen vereenvoudigd. De exec ()-aanroep duidt bijvoorbeeld een hele familie van systeemaanroepen aan die een vergelijkbare taak uitvoeren, maar verschillen in software-implementatie.

De kernel ondersteunt ook aangepaste processen, die anders werken dan traditionele systeemaanroepen. De meest bekende van hen zijn pseudo-apparaten... Vanuit het oogpunt van gebruikersprocessen zien pseudo-apparaten eruit als gewone apparaten, maar ze zijn puur in software geïmplementeerd. In feite zouden ze formeel niet in de kernel moeten zitten, maar om praktische redenen zijn ze er nog steeds in aanwezig. Een apparaat dat willekeurige getallen genereert (/dev/willekeurig) zou bijvoorbeeld moeilijk te implementeren zijn met de vereiste mate van beveiliging met behulp van een aangepast proces.

Opmerking

Technisch gezien moet een gebruikersproces dat toegang heeft tot een pseudo-apparaat nog steeds een systeemaanroep doen om dat apparaat te openen. Processen kunnen dus niet volledig zonder systeemaanroepen.

1.4. Gebruikersruimte

Het RAM-gebied dat de kernel toewijst voor gebruikersprocessen wordt genoemd gebruikersruimte... Aangezien een proces slechts een toestand (of afbeelding) in het geheugen is, heeft de gebruikersruimte ook toegang tot geheugen voor de hele reeks lopende processen. U kunt de term ook tegenkomen gebruikersland die wordt gebruikt in plaats van gebruikersruimte.

Het grootste deel van de daadwerkelijke actie van een Linux-systeem vindt plaats in de gebruikersruimte. Hoewel alle processen vanuit een kernelperspectief hetzelfde zijn, voeren ze verschillende taken uit voor gebruikers. Systeemcomponenten die gebruikersprocessen vertegenwoordigen, zijn georganiseerd in een elementaire structuur - de servicelaag (of laag). In afb. 1.3 toont een voorbeeldige set componenten die onderling verbonden zijn en interageren met een Linux-systeem. Eenvoudige services staan ​​onderaan (het dichtst bij de kernel), serviceprogramma's staan ​​in het midden en de applicaties waarmee de gebruiker werkt staan ​​bovenaan. Figuur 1.3 is een uiterst vereenvoudigd diagram, aangezien er slechts zes componenten worden getoond, maar u zult merken dat de bovenste componenten het dichtst bij de gebruiker staan ​​(UI en browser); middle-tier componenten hebben een mailserver die een browser gebruikt; er zijn verschillende kleine componenten aan de onderkant.

Het lagere niveau bestaat meestal uit kleine componenten die eenvoudige taken uitvoeren. De middelste laag bevat grotere componenten zoals de mailservice, printserver en database. Componenten op het hoogste niveau voeren complexe taken uit die vaak direct door de gebruiker worden beheerd. Als de ene component een andere wil gebruiken, dan bevindt deze tweede component zich op hetzelfde serviceniveau of lager.

Figuur 1.3 geeft slechts globaal de structuur van de gebruikersruimte weer. In werkelijkheid zijn er geen regels in de gebruikersruimte. De meeste toepassingen en services schrijven bijvoorbeeld diagnostische berichten met de naam tijdschriften... De meeste programma's gebruiken de standaard syslog-service om berichten naar het logboek te schrijven, maar sommige geven er de voorkeur aan om zelf te loggen.

Rijst. 1.3. Soorten processen en interacties

Bovendien kunnen sommige componenten van gebruikersruimte moeilijk te categoriseren zijn. Servercomponenten, zoals een webserver of een databaseserver, kunnen worden beschouwd als toepassingen van zeer hoog niveau omdat ze vrij complexe taken uitvoeren. Dergelijke toepassingen kunnen bovenaan Fig. 1.3. Tegelijkertijd kunnen aangepaste applicaties afhankelijk zijn van server-side applicaties om taken uit te voeren die ze niet alleen aankunnen. In dit geval moeten de servercomponenten in de middelste laag worden geplaatst.

1.5. Gebruikers

De Linux-kernel ondersteunt het traditionele gebruikersconcept van het Unix-systeem. Gebruiker Is een entiteit die processen kan starten en eigen bestanden kan maken. Geassocieerd met de gebruiker gebruikersnaam... Er kan bijvoorbeeld een gebruiker Billyjoe op het systeem staan. De kernel houdt zich echter niet bezig met gebruikersnamen, maar identificeert de gebruiker met een eenvoudig numeriek gebruikersnaam(Hoofdstuk 7 bespreekt hoe ID's worden toegewezen aan gebruikersnamen.)

Het boek van Brian Ward, dat in het Westen al een bestseller is geworden. Het beschrijft alle subtiliteiten van het werken met Linux OS, systeembeheer, diepe mechanismen die Linux-functionaliteit op laag niveau bieden. Op de pagina's van de handleiding verwerft u basiskennis van het werken met de Linux-kernel en de principes van de correcte werking van computernetwerken, niet alleen gebaseerd op Open-source oplossingen. Het boek gaat ook in op de problemen van scripting en het omgaan met de C-taal, en behandelt de onderwerpen informatiebeveiliging, virtualisatie en andere onvervangbare dingen.
Wie moet het boek lezen:
Interesse in het Linux-besturingssysteemapparaat kan verschillende redenen hebben. Inen Linux-softwareontwikkelaars vinden in dit boek vrijwel alles wat ze moeten weten om het beste uit hun besturingssysteem te halen. Onderzoekers en studenten, die het systeem vaak zelf moeten tweaken, vinden hier praktische uitleg waarom alles zo werkt en niet anders. Er zijn ook "entertainers" - gebruikers die graag tijd achter de computer doorbrengen voor amusement, winst of beide tegelijk. Vraagt ​​u zich af waarom sommige dingen werken en andere niet? Vraag je je af wat er gebeurt als je iets verandert? Dan ben jij een van de "entertainers".
De noodzakelijke voorwaarden:
Je hoeft geen programmeur te zijn om dit boek te lezen. Je hebt alleen basisvaardigheden van een pc-gebruiker nodig: je moet door de grafische interface navigeren (bij het installeren en configureren van de systeeminterface), en ook een idee hebben van bestanden en mappen (mappen). U moet ook bereid zijn om op internet naar aanvullende documentatie te zoeken. Het belangrijkste is uw bereidheid en verlangen om uw computer te verkennen.

Naam: Linux internals
Door Brian Ward
Uitgever: Peter
Jaar: 2016
Formaat: PDF, FB2, EPUB
Russische taal
Pagina's: 384
Grootte: 12,9 MB

De interne structuur van Linux / Brian Ward / 2016. Gratis downloaden zonder registratie

2016-07-24T17: 16: 55 + 00: 00 beheerderAdministratie Literatuurgids Linux, Beheer, Beveiliging, Brian Ward, Boeken, Literatuur, Handleidingen, Systeembeheer, Scripts, Command References

Het boek van Brian Ward, dat in het Westen al een bestseller is geworden. Het beschrijft alle subtiliteiten van het werken met Linux OS, systeembeheer, diepe mechanismen die Linux-functionaliteit op laag niveau bieden. Op de pagina's van de handleiding verwerft u basiskennis van het werken met de Linux-kernel en de principes van de correcte werking van computernetwerken, niet alleen gebaseerd op Open-source oplossingen. v...

[e-mail beveiligd] Handleiding voor beheerders LINUX