Browse Source

Adding current state of documentation to github

master
Sven Vermeulen 11 years ago
parent
commit
3aaad6e45c
  1. 76
      LICENSE
  2. 112
      src/linux_sea.xml
  3. 1026
      src/linux_sea/01-whatislinux.xml
  4. 791
      src/linux_sea/02-freesoftware.xml
  5. 489
      src/linux_sea/03-community.xml
  6. 1319
      src/linux_sea/04-runninglinux.xml
  7. 1551
      src/linux_sea/05-linuxfs.xml
  8. 646
      src/linux_sea/06-processes.xml
  9. 2754
      src/linux_sea/07-kernelbuilding.xml
  10. 422
      src/linux_sea/08-hardwaremanagement.xml
  11. 2177
      src/linux_sea/09-softwaremanagement.xml
  12. 659
      src/linux_sea/10-usermanagement.xml
  13. 823
      src/linux_sea/11-networkmanagement.xml
  14. 676
      src/linux_sea/12-servicemanagement.xml
  15. 1026
      src/linux_sea/13-storagemanagement.xml
  16. 572
      src/linux_sea/14-systemmanagement.xml
  17. 428
      src/linux_sea/15-graphicenvironment.xml
  18. 467
      src/linux_sea/16-installgentoo.xml

76
LICENSE

@ -0,0 +1,76 @@
This document is licensed under the Creative Commons Attribution NonCommercial
ShareAlike 2.0 Belgium license. The general overview of this license can be
seen at http://creativecommons.org/licenses/by-nc-sa/2.0/be/deed.en
The full legal text is available below this. The document text is in Dutch.
---
Creative Commons Legal Code
Naamsvermelding – NietCommercieel - GelijkDelen 2.0
CREATIVE COMMONS CORPORATION IS GEEN ADVOCATENKANTOOR EN VERLEENT GEEN JURIDISCHE DIENSTEN. DE VERSPREIDING VAN DEZE LICENTIE VEROORZAAKT GEEN JURIDISCHE OF CONTRACTUELE RELATIE TUSSEN DE PARTIJEN BIJ DEZE LICENTIE EN CREATIVE COMMONS. CREATIVE COMMONS VERSTREKT DEZE INFORMATIE ZOALS ZE IS, ZONDER GARANTIE. CREATIVE COMMONS STAAT NIET IN VOOR DE VERSTREKTE INFORMATIE EN SLUIT ALLE AANSPRAKELIJKHEID UIT VOOR WELKE SCHADE DAN OOK DIE ZOU VOORTVLOEIEN UIT HET GEBRUIK VAN DEZE INFORMATIE.
Licentie
HET WERK (ZOALS HIERONDER OMSCHREVEN) WORDT TER BESCHIKKING GESTELD OVEREENKOMSTIG DE BEPALINGEN VAN DEZE CREATIVE COMMONS PUBLIC LICENSE (HIERNA “CCPL” OF “LICENTIE”). HET WERK WORDT BESCHERMD DOOR HET AUTEURSRECHT, EN/OF, INDIEN RELEVANT, DOOR DE NABURIGE RECHTEN, OF HET SUI GENERIS DATABANKENRECHT EN/OF ELK KRACHTENS DE GELDENDE WETGEVING VAN TOEPASSING ZIJNDE RECHT.
ELK GEBRUIK VAN HET WERK DAT NIET UITDRUKKELIJK DOOR DEZE LICENTIE TOEGESTAAN WORDT, IS VERBODEN.
ELK GEBRUIK VAN HET WERK, OP EEN MANIER DIE ONDER EEN IN DEZE LICENTIE BEHANDELD RECHT VALT, BRENGT DE AANVAARDING VAN DEZE LICENTIE MET ZICH MEE. DOOR DEZE LICENTIE KENT DE LICENTIEGEVER U DE HIERNA OMSCHREVEN RECHTEN TOE INDIEN U DE VOLGENDE BEPALINGEN EN VOORWAARDEN AANVAARDT
1. Definities
1. Met “Collectief Werk” wordt een werk bedoeld waarin het Werk, in zijn geheel en in ongewijzigde vorm, samen met een aantal andere bijdragen, die elk een afzonderlijk en zelfstandig Werk vormen, tot een collectief geheel is samengevoegd. Collectieve Werken zijn onder andere geregeld een uitgave van een tijdschrift, bloemlezingen of encyclopedieën. Een Werk dat een Collectief Werk is, zal, krachtens deze Licentie, niet beschouwd worden als een Afgeleid Werk (zoals hieronder omschreven).
2. Met "Afgeleid Werk" wordt een werk bedoeld dat gebaseerd is op het Werk of op het Werk en andere reeds bestaande werken, zoals een vertaling, een muziekarrangement, een toneel-, literaire of cinematografische bewerking, een geluidsopname, een kunstreproductie, een ingekorte versie, een samenvatting of elke andere vorm waarin het Werk gewijzigd, omgezet of bewerkt kan worden, met uitzondering van de Collectieve Werken, die niet als Afgeleide Werken zullen beschouwd worden in de zin van deze Licentie. Om onduidelijkheid te vermijden zal, indien het Werk een muziekwerk of een fonogram is, de synchronisatie van het Werk met een bewegend beeld (“synching”) als een Afgeleid Werk in de zin van deze Licentie beschouwd worden.
3. Met "Licentiegever" wordt de natuurlijke persoon of rechtspersoon bedoeld die de rechten op het Werk toekent volgens de bepalingen van deze Licentie.
4. Met "Oorspronkelijke Auteur” wordt de natuurlijke persoon bedoeld die het Werk gemaakt heeft of, indien het gaat om een voorwerp dat door een naburig recht beschermd wordt, de oorspronkelijke titularis van het naburig recht.
5. Met "Werk” wordt het Werk van letterkunde of kunst bedoeld dat beschermd wordt door het auteursrecht en dat het voorwerp is van deze licentie. Voor de toepassing van deze Licentie omvat het “Werk” ook voorwerpen die beschermd worden door een naburig recht, zoals een uitvoering, een fonogram, een eerste vastlegging van film of radio-uitzending, alsook de databanken die beschermd worden door een sui generis-recht, voor zover deze het voorwerp vormen van deze licentie. Indien nodig, zullen de bepalingen van deze Licentie op zo een manier geïnterpreteerd worden dat ze op dergelijke beschermde voorwerpen toegepast kunnen worden.
6. Met "U" wordt de natuurlijke persoon of rechtspersoon bedoeld die het Werk gebruikt op een wijze die geregeld wordt door de rechten waarop deze Licentie betrekking heeft en die de bepalingen van deze Licentie met betrekking tot het Werk niet eerder geschonden heeft of die de uitdrukkelijke toestemming van de Licentiegever gekregen heeft om rechten krachtens deze Licentie uit te oefenen ondanks een eerdere schending van deze.
7. Met "Licentiekenmerken" worden de volgende generieke kenmerken van de licentie bedoeld, zoals gekozen door de Licentiegever en aangeduid in de titel van deze Licentie: Naamsvermelding, NietCommercieel, GelijkDelen.
2. Uitzonderingen en beperkingen op de exclusieve rechten
Niets in deze Licentie heeft de bedoeling de toepassing van de uitzonderingen op de exclusieve rechten van de rechthebbenden, de uitputting van deze rechten of andere beperkingen op deze rechten krachtens het auteursrecht, de naburige rechten, het sui generis databankenrecht of elk ander van toepasselijk recht te verminderen, te begrenzen of te beperken.
3. Omvang van de toegekende Licentie
In overeenstemming met de bepalingen en voorwaarden van deze Licentie, verleent de Licentiegever U een licentie die wereldwijd, gratis, niet-exclusief en onbeperkt in tijd (voor de volledige duur van de bescherming van het Werk door het auteursrecht, de naburige rechten, het sui generis recht op de databanken) is om de volgende rechten met betrekking tot het Werk uit te oefenen:
1. het reproduceren, op welke wijze en in welke vorm dan ook, van het Werk, het opnemen van het Werk in één of meer Collectieve Werken en het reproduceren van het Werk zoals het opgenomen is in de genoemde Collectieve Werken;
2. het maken en reproduceren van Afgeleide Werken;
3. het uitlenen en verspreiden van exemplaren van het Werk, het meedelen aan het publiek en het ter beschikking stellen van het publiek. Hetzelfde geldt voor het Werk wanneer het opgenomen is in een Collectief Werk;
4. het uitlenen en verspreiden van exemplaren van Afgeleide Werken, ze meedelen aan het publiek en ze ter beschikking stellen van het publiek;
5. indien het Werk een databank is, het opvragen en hergebruiken van substantiële delen van de databank.
De hierboven vermelde rechten mogen uitgeoefend worden op alle bekende en onbekende dragers, media en formaten, met uitzondering van onbekende exploitatievormen. U heeft eveneens het recht om die wijzigingen aan het Werk aan te brengen die technisch noodzakelijk zijn voor de uitoefening van de hoger genoemde rechten op andere dragers, media en formaten. Oorspronkelijke Auteur ziet af van de uitoefening van zijn/haar morele rechten met betrekking tot de wijzigingen die technisch noodzakelijk zijn.
De Licentiegever behoudt zich alle rechten voor die niet uitdrukkelijk overgedragen zijn in deze Licentie, waaronder inbegrepen, doch niet beperkt tot, de rechten die onder sectie 4(e) opgenomen zijn.
4. Beperkingen De in artikel 3 toegekende licentie wordt uitdrukkelijk op de volgende manier beperkt:
1. U mag het Werk enkel in overeenstemming met de bepalingen van deze Licentie, uitlenen, verspreiden, ter beschikking stellen van het publiek of meedelen aan het publiek op voorwaarde dat U een kopie van deze Licentie of de Uniform Resource Identifier van deze Licentie toevoegt aan elke kopie van het Werk dat U uitleent, verspreidt, ter beschikking stelt van het publiek of meedeelt aan het publiek. U mag geen voorwaarden op het gebruik van het Werk aanbieden of opleggen die de bepalingen van deze Licentie of de uitoefening van de toegekende rechten wijzigen of beperken. U mag het werk niet in onderlicentie geven. U moet alle aanduidingen die verwijzen naar deze Licentie en naar de garantieclausule en de uitsluiting van aansprakelijkheid intact houden. U mag het Werk niet uitlenen, verspreiden, ter beschikking stellen van het publiek of meedelen aan het publiek indien daarbij een technische maatregel gebruikt wordt die de toegang tot of het gebruik van het Werk op een met de bepalingen van deze Licentie strijdige wijze controleert. Het voorgaande geldt voor het Werk dat opgenomen is in een Collectief Werk maar dat houdt niet in dat het Collectief Werk zelf, afgezien van het Werk, onderworpen wordt aan de bepalingen van deze Licentie. Indien U een Collectief Werk maakt, dan moet U, op aanvraag van om het even welke Licentiegever en in de mate van het mogelijke, elke verwijzing naar de Licentiegever of de Oorspronkelijke Auteur uit het Collectief Werk verwijderen. Indien U een Afgeleid Werk maakt, dan moet U, op aanvraag van om het even welke Licentiegever en in de mate van het mogelijke, elke verwijzing naar de Licentiegever of de Oorspronkelijke Auteur uit het Afgeleide Werk verwijderen.
2. U mag een Afgeleid Werk enkel uitlenen, verspreiden, ter beschikking stellen van het publiek of meedelen aan het publiek krachtens de bepalingen van deze Licentie, van een latere versie van deze Licentie met dezelfde Licentiekenmerken als deze Licentie of van een Creative Commons iCommons-licentie die dezelfde Licentiekenmerken bevat als deze Licentie (bv. Naamsvermelding – Niet-Commercieel – Gelijk Delen 2.0 Japan). U moet een kopie van deze Licentie, of elk andere licentie die in de voorafgaande zin gespecificeerd werd, of de Uniform Resource Identifier van deze Licentie toevoegen aan elke kopie van het Afgeleid Werk dat U uitleent, verspreidt, ter beschikking stelt van het publiek of meedeelt aan het publiek. U mag geen voorwaarden op het gebruik van het Afgeleid Werk aanbieden of opleggen die de bepalingen van deze Licentie of de uitoefening van de toegekende rechten wijzigen of beperken. U moet alle aanduidingen die verwijzen naar deze Licentie en naar de garantieclausule en de uitsluiting van aansprakelijkheid intact houden. U mag het Afgeleid Werk niet uitlenen, verspreiden, ter beschikking stellen aan het publiek of meedelen aan het publiek indien daarbij een technische maatregel gebruikt wordt die de toegang tot of het gebruik van het Werk op een met de bepalingen van deze Licentie strijdige wijze controleert. Het voorgaande geldt voor het Afgeleid Werk dat opgenomen is in een Collectief Werk maar dat houdt niet in dat het Collectief Werk zelf, afgezien van het Afgeleid Werk, onderworpen wordt aan de bepalingen van deze Licentie.
3. U mag geen enkel van de door artikel 3 aan U toegekende rechten uitoefenen op een manier die voornamelijk bedoeld is voor of gericht is op het bekomen van een commercieel voordeel of een persoonlijke financiële compensatie. De uitwisseling van het Werk tegen andere Werken, die beschermd worden door het auteursrecht, de naburige rechten of het sui generis databankenrecht, door het elektronisch delen van bestanden of op een andere wijze, wordt niet beschouwd als zijnde bedoeld voor of gericht op het bekomen van een commercieel voordeel of een persoonlijke financiële compensatie, op voorwaarde dat de uitwisseling van de beschermde Werken geen betaling of financiële compensatie met zich meebrengt.
4. Indien U het Werk, Afgeleide Werken of Collectieve Werken uitleent, verspreidt, ter beschikking stelt aan het publiek of meedeelt aan het publiek, dan moet U alle informatie betreffende het beheer van rechten met betrekking tot het Werk intact houden en, op een wijze die redelijk is in verhouding tot het gebruikte medium of middel, verwijzen naar de Oorspronkelijke Auteur, door het verstrekken van de naam van de Oorspronkelijke Auteur (of het pseudoniem indien van toepassing) indien deze wordt vermeld; de titel van het Werk indien deze wordt vermeld; in de mate dit redelijkerwijze mogelijk is en indien deze beschikbaar is, de Uniform Resource Identifier, dat de Licentiegever aanduidt als verbonden met het Werk, tenzij die URI niet verwijst naar de informatie betreffende het beheer van rechten met betrekking tot het Werk of naar de van toepassing zijnde licenties op het Werk; en in het geval van een Afgeleid Werk, door het aanduiden van het gebruik van het Werk in het Afgeleid Werk en door het identificeren van de elementen (bijvoorbeeld, door de aanduiding “Franse vertaling van het Oorspronkelijk Werk door de Auteur” “Franse vertaling van het Werk door de Oorspronkelijke Auteur” of “scenario gebaseerd op het Oorspronkelijk Werk door de Oorspronkelijke Auteur”). De verwijzing naar de Oorspronkelijke Auteur moet gebeuren op een redelijke manier. In het geval van een Afgeleid Werk of een Collectief Werk, moeten deze verwijzingen echter minstens weergegeven worden op dezelfde plaats en op dezelfde wijze als andere vergelijkbare auteursvermeldingen.
5. Deze Licentie wijzigt geenszinsnde regeling van de billijke vergoedingen, die eventueel van kracht is in België of in andere landen, ter compensatie van de wettelijke erkenning van gedwongen licenties en heeft geen invloed op de inning van deze vergoedingen.
5. Garantieclausule en uitsluiting van aansprakelijkheid
TENZIJ ER TUSSEN DE PARTIJEN SCHRIFTELIJK ANDERS OVEREENGEKOMEN IS, BIEDT DE LICENTIEGEVER HET WERK AAN ZOALS HET IS EN DOET DE LICENTIEGEVER GEEN VERKLARINGEN OVER HET WERK OF VERPLICHT HIJ ZICH TOT GEEN ENKELE GARANTIE, ONGEACHT OF DEZE UITDRUKKELIJK OF STILZWIJGEND, KRACHTENS DE WET OF OP EEN ANDERE GRONDSLAG RUST, HIERIN BEGREPEN, MAAR NIET BEPERKT TOT DE GARANTIE TEGEN UITWINNING, DE COMMERCIALISEERBAARHEID VAN HET WERK, DE FUNCTIONELE CONFORMITEIT, DE AFWEZIGHEID VAN INBREUK OP RECHTEN VAN DERDEN, DE AFWEZIGHEID VAN VERBORGEN OF ANDERE GEBREKEN, DE NAUWKEURIGHEID VAN HET WERK OF DE AFWEZIGHEID VAN FOUTEN EN GEBREKEN MET BETREKKING TOT DE INFORMATIE, ONGEACHT OF DEZE AL DAN NIET OPSPOORBAAR ZIJN. INDIEN DE OP DEZE LICENTIE VAN TOEPASSELIJKE WETGEVING EEN DERGELIJKE UITSLUITING VAN VERANTWOORDELIJKHEID VERBIEDT OF REGLEMENTEERT, DAN IS DEZE UITSLUITING VAN AANSPRAKELIJKHEID EN GARANTIE SLECHTS IN DE MATE TOEGELATEN DOOR DE WET VAN TOEPASSING.
6. Beperking van aansprakelijkheid
VOOR ZOVER DE VAN TOEPASSELIJKE WETGEVING DIT TOELAAT, ZAL DE LICENTIEGEVER IN GEEN ENKEL GEVAL AANSPRAKELIJK GEACHT WORDEN VOOR WELKE RECHTSTREEKSE OF ONRECHTSTREEKSE, MATERIËLE OF MORELE SCHADE DAN OOK, DIE VOORTVLOEIT UIT DEZE LICENTIE OF UIT HET GEBRUIK VAN HET WERK, ONGEACHT OF DE LICENTIEGEVER INGELICHT WERD OVER DE MOGELIJKHEID VAN DERGELIJKE SCHADE.
7. Beëindiging
1. Elke inbreuk op de bepalingen van deze Licentie waarvoor U verantwoordelijk bent, leidt tot de ontbinding van rechtswege van deze Licentie en het einde van de rechten die er uit voortvloeien. Niettemin behouden de licenties op Afgeleide Werken of Collectieve Werken, die door U krachtens deze Licentie verleend werden aan natuurlijke personen of rechtspersonen, hun werking ten opzichte van deze natuurlijke personen of rechtspersonen, voor zover deze personen de bepalingen van deze licenties niet schenden. De artikels 1, 2, 5, 6, 7 en 8, blijven van kracht ongeacht de beëindiging van deze Licentie.
2. Indien de hierboven vermelde bepalingen en voorwaarden in acht genomen worden, is deze licentie onbeperkt in tijd (voor de duur van de bescherming van het Werk door het auteursrecht, de naburige rechten en het sui generis databankenrecht). Desalniettemin behoudt de Licentiegever zich op elk ogenblik het recht voor om het Werk onder een andere licentie of onder andere voorwaarden te exploiteren of om elke verspreiding van het Werk stop te zetten, zonder dat het gebruik maken van deze mogelijkheid deze Licentie (of elke andere licentie die, krachtens de bepalingen van deze Licentie, verleend werd of verleend moest worden) ongedaan kan maken, en deze Licentie zal onverminderd van kracht blijven tenzij de beëindiging intreedt wegens de hoger aangegeven redenen.
8. Diversen
1. Telkens U het Werk of een Collectief Werk uitleent, verspreidt, meedeelt of ter beschikking stelt van het publiek, verleent de Licentiegever aan de ontvanger een licentie die van toepassing is op het Werk en die dezelfde bepalingen en voorwaarden bevat als deze Licentie.
2. Telkens U het Afgeleid Werk uitleent, verspreidt, meedeelt of ter beschikking stelt van het publiek, verleent de Licentiegever aan de ontvanger een licentie die van toepassing is op het oorspronkelijke Werk en die dezelfde bepalingen en voorwaarden bevat als deze Licentie
3. Indien een bepaling uit deze Licentie, krachtens het van toepassing zijnde recht, nietig of niet afdwingbaar is, dan zal dit geen invloed hebben op de geldigheid en de afdwingbaarheid van de andere bepalingen. In dit geval zal, zonder dat enige tussenkomst van de partijen hiervoor nodig is, een dergelijke bepaling op een zodanige wijze geïnterpreteerd worden dat haar geldigheid en afdwingbaarheid gevrijwaard blijven.
4. Geen enkele afstand ten opzichte van de bepalingen en voorwaarden van deze Licentie wordt vermoed zonder een schriftelijke overeenkomst die ondertekend is door de partij die afstand doet. Geen enkele inbreuk op deze Licentie wordt door de andere partij aanvaard zonder schriftelijke overeenkomst, ondertekend door deze partij.
5. Deze Licentie is het enige contract tussen de partijen met betrekking tot het Werk, dat het voorwerp is van deze Licentie. Er bestaat geen enkele overeenkomst of document van welke aard dan ook, die betrekking heeft op het Werk, bovenop wat hier bepaald is. De Licentiegever is gebonden door geen enkele bijkomende verplichting die voortvloeit uit enige communicatie afkomstig van U, ongeacht de vorm. Deze Licentie kan niet gewijzigd worden zonder de schriftelijke overeenkomst van beide partijen.
Creative Commons is geen partij bij deze Licentie en verleent geen enkele garantie met betrekking tot het Werk. Creative Commons sluit alle verantwoordelijkheid met betrekking tot deze Licentie tegenover U en tegenover elke derde uit, ongeacht de juridische grondslag van deze verantwoordelijkheid en ongeacht de aard van de opgelopen schade, of deze rechtstreeks of onrechtstreeks, materieel of moreel is.
Zonder dat afbreuk gedaan wordt aan de vorige alinea, zal Creative Commons, indien deze zich uitdrukkelijk bekendgemaakt heeft als Licentiegever in het kader van deze Licentie, alle rechten en plichten van Licentiegever bezitten.
Met uitzondering van het gebruik dat bestemd is om het publiek te informeren dat het Werk onder CCPL valt, zal geen enkele partij het merk “Creative Commons” of enige andere aanduiding of logo dat toekomt aan Creative Commons gebruiken zonder de voorafgaande schriftelijke instemming van Creative Commons. Elk door Creative Commons toegelaten gebruik moet in overeenstemming zijn met de trademark usage guidelines die van kracht zijn op het ogenblik van het gebruik, zoals deze gepubliceerd worden op de website of beschikbaar worden gesteld op individueel verzoek.
Creative Commons kan gecontacteerd worden op http://creativecommons.org/

112
src/linux_sea.xml

@ -0,0 +1,112 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY whatislinux.xml SYSTEM "linux_sea/01-whatislinux.xml">
<!ENTITY freesoftware.xml SYSTEM "linux_sea/02-freesoftware.xml">
<!ENTITY community.xml SYSTEM "linux_sea/03-community.xml">
<!ENTITY runninglinux.xml SYSTEM "linux_sea/04-runninglinux.xml">
<!ENTITY linuxfs.xml SYSTEM "linux_sea/05-linuxfs.xml">
<!ENTITY processes.xml SYSTEM "linux_sea/06-processes.xml">
<!ENTITY kernelbuilding.xml SYSTEM "linux_sea/07-kernelbuilding.xml">
<!ENTITY hardwaremanagement.xml SYSTEM "linux_sea/08-hardwaremanagement.xml">
<!ENTITY softwaremanagement.xml SYSTEM "linux_sea/09-softwaremanagement.xml">
<!ENTITY usermanagement.xml SYSTEM "linux_sea/10-usermanagement.xml">
<!ENTITY networkmanagement.xml SYSTEM "linux_sea/11-networkmanagement.xml">
<!ENTITY servicemanagement.xml SYSTEM "linux_sea/12-servicemanagement.xml">
<!ENTITY storagemanagement.xml SYSTEM "linux_sea/13-storagemanagement.xml">
<!ENTITY systemmanagement.xml SYSTEM "linux_sea/14-systemmanagement.xml">
<!ENTITY graphicenvironment.xml SYSTEM "linux_sea/15-graphicenvironment.xml">
<!ENTITY installgentoo.xml SYSTEM "linux_sea/16-installgentoo.xml">
<!ENTITY tipsandanswers.xml SYSTEM "linux_sea/90-tipsandanswers.xml">
<!ENTITY glossary.xml SYSTEM "linux_sea/91-glossary.xml">
<!ENTITY genindex.sgm SYSTEM "genindex.sgm">
]>
<book>
<title>Linux Sea</title>
<bookinfo>
<title>Linux Sea</title>
<author>
<firstname>Sven</firstname>
<surname>Vermeulen</surname>
</author>
<authorblurb>
<para>
Sven Vermeulen is a Gentoo Linux documentation developer, largely
to blame for the Gentoo Handbook and a large number of Gentoo-related
guides. You can find him online under the alias "SwifT" or reach him
through his Gentoo e-mail address "swift@gentoo.org".
</para>
</authorblurb>
<abstract>
<para>
The book "Linux Sea" offers a gentle yet technical (from end-user
perspective) introduction to the Linux operating system, using Gentoo
Linux as the example Linux distribution. It does not nor will it ever
talk about the history of the Linux kernel or Linux distributions or
dive into details that are less interesting for Linux users.
</para>
<para>
For various topics, the online Gentoo Handbook offers a very detailed
approach and as such is mandatory reading for any Gentoo Linux user who
wants to know the full power of this Operating System. Although there is
definitely overlap between "Linux Sea" and the online Gentoo Handbook,
"Linux Sea" is by no means meant to replace the online Gentoo Handbook.
</para>
<para>
"Linux Sea" will attempt to focus on topics that everyday users would
probably need to know to continue working with Gentoo Linux.
</para>
</abstract>
<edition>Linux Sea v1.1</edition>
<copyright>
<year>2009, 2010</year>
<holder>Sven Vermeulen</holder>
</copyright>
<legalnotice>
<para>
You are free to share (copy, distribute and transmit) the work as well
as remix (adapt) the work under the conditions of the Creative Commons
Attribution Noncommercial Share Alike 2.0 license, available at
http://creativecommons.org/licenses/by-nc-sa/2.0/be/deed.en
</para>
</legalnotice>
</bookinfo>
<toc></toc>
<!-- Part - On Linux and Free Software -->
&whatislinux.xml;
&freesoftware.xml;
&community.xml;
<!-- Part - Working with Linux -->
&runninglinux.xml;
&linuxfs.xml;
&processes.xml;
<!-- Part - Simple System Administration -->
&kernelbuilding.xml;
&hardwaremanagement.xml;
&softwaremanagement.xml;
&usermanagement.xml;
&networkmanagement.xml;
&servicemanagement.xml;
&storagemanagement.xml;
&systemmanagement.xml;
&graphicenvironment.xml;
<!-- Part - Installing Gentoo Linux -->
&installgentoo.xml;
<!-- Part - Addenda -->
&tipsandanswers.xml;
&glossary.xml;
&genindex.sgm;
</book>

1026
src/linux_sea/01-whatislinux.xml
File diff suppressed because it is too large
View File

791
src/linux_sea/02-freesoftware.xml

@ -0,0 +1,791 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<chapter>
<title>How does Free Software affect Linux?</title>
<section>
<title>Introduction</title>
<para>The Linux OS has become increasingly popular mainly due to the
freedom it allows (and of course also the low or zero-fee price of the
entire operating system). In this chapter we see how these freedoms come
to life and how they are protected and sustained.</para>
<para>We also take a look at the development model used by free software
projects in general because it is a major result of said freedoms, one
that makes free software projects often more interesting than
closed-source commercial software projects. The development model is also
one of the major strengths of free software.</para>
</section>
<section>
<title>Free Software</title>
<para>If we take a step back from all technical aspects, Linux differs
from the closed-source commercial software in an important aspect:
licensing. Licensing is what drives free software...</para>
<section>
<title>What are Software Licenses?</title>
<para>Software is someone's intellectual property. Intellectual
property<indexterm>
<primary>intellectual property</primary>
</indexterm> is a heavy word that shouldn't be interpreted to anything
else than the result of some effort to create something that is not a
plain copy. If you write some text, the resulting text is your
intellectual property (unless you've copied it from somewhere).</para>
<para>Intellectual property is protected by law. Copyright<indexterm>
<primary>copyright</primary>
</indexterm> protects your intellectual property by prohibiting others
to copy, adapt, reproduce and/or redistribute your ``thing'' without
your consent. Mind you though that not every intellectual property is
copyright protected and copyright differs from country to country. An
example of intellectual property that isn't copyright protected is a
mathematical method: even though the inventor of the method had to
ponder years and years on it, his method isn't copyright protected (but
if he wrote a text about this method, the text itself is). Copyright is
automatically assigned: it doesn't cost you anything and it is broadly
accepted.</para>
<para>Another protection is a patent<indexterm>
<primary>patent</primary>
</indexterm>. Patents are (or should be) granted to new inventions who
are not known to the public at the time of the patent request. Patents
are often used to protect intellectual property that isn't protected by
the copyright: methods for doing stuff (including medical compositions).
Sadly, the industry is often abusing patents for much more when they
have a patent with a broad action field: the patent covers too much,
allowing the company to force others not to use a method they actually
do have the right to use. Also, both the request and the patent grant
are very costly and only larger companies have the abilities to obtain
(and protect) several patents. Smaller companies or individuals don't
have the means to obtain a patent, let alone protect themselves in a
court because they might have used a method that is described in one or
more patents.</para>
<para>I use the word <emphasis>abuse</emphasis> because companies often
get patents for methods that are broadly used or are so silly that you'd
wonder what patent office (patent requests are - or should be - checked
for their validity before they are granted) has granted those
patents.</para>
<para>I'll abstain from elaborating on this (politically sensitive)
topic more and move on to <emphasis>software
licenses</emphasis><indexterm>
<primary>software license</primary>
</indexterm>. A software license is a contract between you, the
software user, and the software copyright owner. It tells you what you
can and cannot do with the software. Any software that is not licensed
is fully copyright protected, meaning you shouldn't even have it, let
alone run it.</para>
<para>Most commercial-grade licenses are often called the
EULAs<indexterm>
<primary>EULA</primary>
</indexterm>, or End User License Agreements. They usually say what
you are allowed to do with the software (often including what you are
allowed to use the software for). The EULAs more often stress what is
denied rather than allow anything. One of the many topics is
redistribution of the software. Most EULAs explicitly disallow
redistribution.</para>
<para>Linux (and free software in general) is different. The
accompanying license grants you the right to copy the software, obtain
the source code, modify it and redistribute it (with or without
modifications) and even sell it. Because there are many variations
possible there are many popular licenses.</para>
</section>
<section>
<title>What Licenses Exist?</title>
<para>I'll list a few of the more popular licenses here, but be advised,
there are more than 800 licenses around. Many of those licenses are
quite similar (or are exactly the same) and the free software community
should start to consolidate all those licenses in a much smaller set.
Sadly, they haven't done so yet. Luckily, the 90-10 rule here applies:
90% of all free software uses 10% of the free software (or other)
licenses. The other licenses are only marginally used, sometimes just
for a single application.</para>
<section>
<title>Public Domain</title>
<para>When software is placed under the public domain, you're free to
do whatever you want with it: the author waves any right he can to
allow for full freedom of his software.</para>
</section>
<section>
<title>MIT License and some BSD-like Licenses</title>
<para>The MIT license and some BSD-like licenses are almost like the
public domain, but ask you to keep the copyright notice intact. This
is a very popular license because the author allows you to do whatever
you want as long as you keep his name on the product copyright notice
as well.</para>
</section>
<section>
<title>GPL</title>
<para>The GNU Public License<indexterm>
<primary>GPL</primary>
</indexterm> is the most widely used free software license, but for
some people also the most restrictive free software license. The GPL
tells you that you can do whatever you want with the software, as long
as you provide the source code of your modifications to whoever you
distributed the modified version to and as long as this modification
is under the GPL as well.</para>
<para>The Linux kernel is GPL licensed.</para>
</section>
<section>
<title>OSI Approved Licenses</title>
<para>An OSI approved license is a license that adheres to the
<emphasis>Open Source Definition</emphasis><indexterm>
<primary>Open Source Definition</primary>
</indexterm> written down by the <emphasis>Open Source
Initiative</emphasis><indexterm>
<primary>Open Source Initiative</primary>
</indexterm><indexterm>
<primary>OSI</primary>
</indexterm> of which the following points are a free
interpretation:</para>
<itemizedlist>
<listitem>
<para>free redistribution</para>
</listitem>
<listitem>
<para>source code available</para>
</listitem>
<listitem>
<para>modifications are allowed (including redistribution)</para>
</listitem>
<listitem>
<para>no discrimination (people, fields ...)</para>
</listitem>
</itemizedlist>
</section>
<section>
<title>FSF Approved Licenses</title>
<para>An FSF<indexterm>
<primary>FSF</primary>
</indexterm> approved license adheres to the <emphasis>Free Software
</emphasis><indexterm>
<primary>free software</primary>
</indexterm>definition written down by the <emphasis>Free Software
Foundation</emphasis> of which the following points are the core of
the definition:</para>
<para>You should be free to ...</para>
<itemizedlist>
<listitem>
<para>run the program for any purpose</para>
</listitem>
<listitem>
<para>study how the program works and adapt it to your
needs</para>
</listitem>
<listitem>
<para>redistribute copies</para>
</listitem>
<listitem>
<para>improve the program and release your changes to the
public</para>
</listitem>
</itemizedlist>
</section>
</section>
<section>
<title>Free Software isn't Non-Commercial</title>
<para>Free software is often perceived to be a pure hobbyist project: it
would not be commercially viable to bring free software to the
enterprise world. After all, if software is freely available, what kind
of profit could a company make from it. Nothing could be further from
the truth...</para>
<para>It is true that free software requires a different look on
software in a commercial environment (including companies). Companies
who <emphasis>use</emphasis> software want to be assured that they have
support for the software when things go wrong. They often close (costly)
support contracts with the software company where service level
agreements (abbreviated to SLAs) are defined. Based on these contracts,
the company has the assurance that if certain services become
unavailable, the supporting company will do whatever it can to bring the
service back or, in some occasions, compensate the financial damage that
the downfall has caused.</para>
<para>Most of the time, these support contracts are closed with the
software company itself because it has the most knowledge of the
software (as it is probably the only company with access to the software
code). Sadly, as good as this reason is, companies don't look at free
software ``because there is no support''. This isn't true; support for
free software is still (commercially) available, but most of the time
not from the creators themselves. And although this scares the
companies, the reason why this support is still as good as with
off-the-shelf software remains the same: the supporting company has
access to the source code of the tool and has professional knowledge
about the tool. It probably has developers in the software project
itself.</para>
<para>Companies that <emphasis>sell</emphasis> software are of course
often against free software. When these companies major income depends
on the sales of their software, it would not be viable to make the
software free. If they would, competiting companies would have full
access to the source code and improve their own product with it.</para>
<para>I don't think this is a disadvantage though. Software companies
should use their main strength: knowledge about the tool. As mentioned
before, other companies often want to close support contracts to ensure
the service that the software delivers; if the software company creates
free software, this wouldn't change. For many software companies,
support contracts are the main source of income.</para>
<para>It is still possible to sell free software; some pioneering
companies are payed to made modifications to free software because
companies don't have the resources to do so themselves. These companies
can keep the modifications private if the free software license allows
this) but can also bring these modifications to the public by
contributing it to the software project itself.</para>
<para>A major proof of this is the acceptance of free software by major
software players such as Sun Microsystems and IBM, and the emergance of
new software players that build their business upon free software, such
as RedHat or MySQL<indexterm>
<primary>MySQL</primary>
</indexterm> (recently acquired by Sun Microsystems). The latter
company uses a dual-licensed software approach: the MySQL source code is
available in two licenses, a free software one for the public and a more
closed one for companies who want support from MySQL itself. Using a
dual-licensed approach allows the company to support a fixed state of
their product while keeping the software free. Supporting a fixed state
of the product is of course much easier than to support the software in
general.</para>
<para>However, don't think that every free software project is
enterprise-ready or that you will be able to find (paid) support for
every software project. You should carefully check out every software
title you want to use if you want to use software, free or not. For end
users, distributions help you to pick software. If a distribution
packages a certain software title, it feels that the software title is
stable and well supported.</para>
</section>
<section>
<title>So Linux is Free?</title>
<para>Yes, Linux is free. It is certainly free in the sense of ``free
speech'' and although most software titles are also free in the sense of
``free beer'', you shouldn't be surprised to see distributions you can
or have to pay for. In that case, you can be paying for the software
medium (the burned DVD), accompanying printed documentation, 30-day
installation and usage support or for the resources that the
distribution has to acquire itself (like infrastructure).</para>
<para>Most distributions have free downloads with online documentation
and wonderfull community support (active mailing lists or Internet
fora), which is why Linux is that popular: you can download, install and
use several distributions to decide which one is best for you. You can
try the software (without loosing any functionality) and you don't even
have to pay for it to continue using it (as is the case with
shareware<indexterm>
<primary>shareware</primary>
</indexterm>). Gentoo is one of those distribution projects. Such
distributions get their financial backing (for infrastructure and
organisational needs, including juridical support and bureaucratic
paperwork) from user donations or sales of pressed DVDs. Companies also
tend to support distributions financially or with hardware / bandwidth
donations.</para>
<para>Some distributions are only available when you pay for it. In that
case you often pay for the support or for additional software in the
distribution which isn't freely available. A popular distribution is
RedHat Enterprise Linux, a Linux distribution specifically targetting
companies who want to set up Linux servers. You don't just pay for the
support, but also for the resources that RedHat has put in the
distribution to make it certified for other software (such as Oracle and
SAP) so that you can run (with support from the software company) this
software on your RHEL installations.</para>
<para>It is important however to understand that distribution projects
only develop a very small part of the software that you install on your
system. Most software comes from other free software projects and these
projects often don't get gifts from the distribution projects.
Nonetheless they do face the same problems as any other (larger) free
software project: bureaucratic paperwork, juridical support,
infrastructure needs, ... So it comes to no surprise that these projects
also have the same income streams as the distribution projects: user
gifts, commercial sponsorship and software / support sales.</para>
</section>
</section>
<section>
<title>Development Model</title>
<para>Due to the nature of free software projects, you'll find that it has
quite some differences with closed-source commercial, off the shelf
software...</para>
<section>
<title>Multi-Project Development</title>
<para>One distribution provides an aggregation of software. Each of
those software titles is built by a software project which usually
differs from the distribution project. Hence, when you install a
distribution on your system, it contains software from hundreds of
software projects around the world.</para>
<para>So to obtain support for a flaw you found, or an issue you come
across, the first place to seek support would be the distribution, but
chances are that the distribution will put the support question
<emphasis>upstream</emphasis><indexterm>
<primary>upstream</primary>
</indexterm>, meaning that it forwards the request to the software
project that develops the software you have an issue with.</para>
</section>
<section>
<title>Transparent Development</title>
<para>Free software is usually developed transparently: if you are
interested in the development of your favorite software title, you can
quickly find out how its development works and how to
participate.</para>
<para>Usually, software projects use a <emphasis>concurrent versioning
system</emphasis><indexterm>
<primary>concurrent versioning system</primary>
</indexterm> such as CVS<indexterm>
<primary>CVS</primary>
</indexterm> or SVN<indexterm>
<primary>SVN</primary>
</indexterm> to keep the source code in. Such systems allow for dozens
(or even hundreds) of developers to work on the same source code
simultaneously and keep track of all changes that have happened (so they
can easily be reverted). This isn't just for free software projects -
almost all software projects use such a system. However, free software
projects usually allow non-developers to see the progress of the
development by giving them read-only access to the system. This way, you
can track every change to the software personally.</para>
<para>To discuss the future of the software, or to take software design
decisions, most free software projects can't use real-life meetings:
their developers are scattered around the world. A solution to this
problem are communication systems such as mailing lists, IRC (chat) or
forums (Internet or Usenet). Most of these communication systems are
also open for non-developers to participate in the discussions, meaning
that end users have direct communication with developers.</para>
<para>The latter has a major advantage: changes requested by the users
are directly communicated to the developers so that misinterpretation is
less frequent, allowing for projects to update their software more
accurate and frequent.</para>
</section>
<section>
<title>Fast Release Cycles</title>
<para>Larger free software projects have hundreds of contributors and
several dozens of developers. Those developers are very motivated to
work on the software by passion. If they weren't, they wouldn't be
working on the software as there usually is no other incentive to work
for (such as a nice pay check) although it must be said that there are
software projects (and they aren't small in numbers) who have paid
developers as well. As a result, the software is quickly progressing and
new features are added quickly (some projects even have new features on
an almost daily basis).</para>
<para>To make sure that new features and fixes are tested properly,
software development snapshots are communicated to a broad community of
testers and stable snapshots are often released to the general public as
a new release of the software. Different release types are commonly used
in free software environments:</para>
<itemizedlist>
<listitem>
<para><emphasis>nightly snapshots</emphasis><indexterm>
<primary>release</primary>
<secondary>nightly snapshot</secondary>
</indexterm> are extracts of the source code at a certain period
in time which are built and put online for everyone to use. These
releases are automatically generated and are bleeding-edge as they
represent the state of the software title only a few moments ago.
They are highly experimental and only meant for developers or
experienced contributors</para>
</listitem>
<listitem>
<para><emphasis>development releases</emphasis> are intermediate
releases, similar to nightly snapshots, but somewhat more
coördinated by the developers. They usually have a
ChangeLog<indexterm>
<primary>ChangeLog</primary>
</indexterm> which lists the changes in it since the previous
release. Such releases are meant for experienced contributors and
testers who don't mind the software to be broken from time to
time.</para>
</listitem>
<listitem>
<para><emphasis>beta releases</emphasis><indexterm>
<primary>release</primary>
<secondary>beta</secondary>
</indexterm> contain a preliminary vision of how the final release
will look like. It might not be fully stable or complete but
individuals who don't participate in the frequent tests can try and
see if the new release would still work for them and contain the
fixes they requested. Beta releases are also important for
distributions as they can now start developing packages for the
software so that they are ready when the final release of the
software is made.</para>
</listitem>
<listitem>
<para><emphasis>release candidates</emphasis><indexterm>
<primary>release</primary>
<secondary>candidate</secondary>
</indexterm> are proposals for final releases. They contain the
software such as the developers would like to release it. They now
wait for a certain period so that the testers and general public can
run their tests to ensure no bugs are in it anymore. New features
aren't added to the software now, only bug fixes. When no new (or
major) bugs are found, the release candidate is converted to a new
release</para>
</listitem>
<listitem>
<para><emphasis>stable release</emphasis><indexterm>
<primary>release</primary>
<secondary>stable</secondary>
</indexterm> are the final releases of the entire development
process. These releases are now used by the users and distributions
and the entire development process can start over.</para>
</listitem>
</itemizedlist>
<para>Stable releases also tend to be released in specific gradations,
reflected by their version number. A popular numbering scheme is x.y.z
where:</para>
<itemizedlist>
<listitem>
<para>x is the major version; this version number is only updated
when the software has been substantially changed. Often such
releases also require all packages that depend on it to be updated
as well because they might use features or libraries that are
changed.</para>
</listitem>
<listitem>
<para>y is the minor version; this version number is updated every
time the software has been updated with lots of new features</para>
</listitem>
<listitem>
<para>z is the bugfix version; this version number is updated
whenever mainly bug fixes have been added to the software</para>
</listitem>
</itemizedlist>
<para>As an example I'll list the release dates for the KDE 4.1 release.
Since KDE is a complete graphical environment its release cycle is
``slower'' than others. Yet if you compare it with the release cycle of
for instance Microsoft Windows its still blazingly fast. Of course, that
would be like comparing apples with glass...</para>
<itemizedlist>
<listitem>
<para>2008-04-29: KDE 4.1.0 alpha1 is released</para>
</listitem>
<listitem>
<para>2008-05-27: KDE 4.1.0 beta1 is released</para>
</listitem>
<listitem>
<para>2008-06-24: KDE 4.1.0 beta2 is released</para>
</listitem>
<listitem>
<para>2008-07-15: KDE 4.1.0 release candidate is released</para>
</listitem>
<listitem>
<para>2008-07-29: KDE 4.1.0 is released</para>
</listitem>
<listitem>
<para>2008-09-03: KDE 4.1.1 is released</para>
</listitem>
<listitem>
<para>2008-10-03: KDE 4.1.2 is released</para>
</listitem>
<listitem>
<para>2008-11-05: KDE 4.1.3 is released</para>
</listitem>
</itemizedlist>
<para>Just for your information, KDE 4.2 beta 1 is released on November
26th, 2008, merely 7 months after KDE 4.1's alpha release.</para>
</section>
<section>
<title>Large Documentation Base</title>
<para>Because the project often can't deliver human, paid support for
the software, its success is largely based on the documentation the
project delivers. If the accompanying documentation contains all
information about the software, experienced or independent users can
find all user related answers in the documentation.</para>
<para>Free software projects usually have high profile documentation,
often better than the online available documentation of closed-source
off the shelf software. Many larger projects even have all this
documentation available in several languages. And if you don't find your
answer in the project documentation, chances are that one or more users
have written independent guides on the software elsewhere.</para>
<para>There are many sites on the internet that link to the various
documentation resources and the same problem as with free software
itself arises: often you have too many resources making it harder to
find the correct document to guide you through your end user experience
of the software. However, unlike the plethora on software titles around
(making it difficult to find the right software for the right job) it is
easier for a user to know if documentation is good or not so there is no
need for a ``documentation distribution''.</para>
</section>
<section>
<title>Software Life Cycle</title>
<para>If you buy software of an unknown, smaller company, you have the
chance that after a number of years, the company doesn't exist anymore
or is taken over and doesn't support that software since. Something
similar is true with free software: if the project decides that there
aren't enough resources to continue the development of the software
(usually due to a shortage on developers) it can stop the development of
the software, usually resulting in a drop of support from users as
well.</para>
<para>However, unlike the case of the software company, the free
software source code remains available to the public. If you desperately
need the software to work for you, you can just pick the source code and
continue the development of it yourself (or pay others to do it for
you). You're also confident that the software will remain free.</para>
<para>If at any time all the copyright owners of the free software
decide that the software falls under a different license which you don't
agree after, you can take the sourcecode of the moment right before the
copyright holders decided to switch the licenses and continue the
development under that license (as that software is still under the
original license and not the new one). This process (where a group of
developers disagree with the development plans of the software and start
a new project based on the same source code) is called
<emphasis>forking</emphasis><indexterm>
<primary>fork</primary>
</indexterm> the project.</para>
<para>A well known example of such a fork is the creation of the X.org
project, a fork of the XFree86 project which at a certain point in time
decided to change their license. The license change wasn't the only
reason for that fork: some developers were also unhappy with the
development policy on new features and the development pace. Both
projects are currently still around although X.org is now the most
popular one.</para>
</section>
</section>
<section>
<title>Open Standards</title>
<para>Because so many projects are involved, it is important that each
project uses standards as much as possible. Only by complying to open
standards can projects easily and efficiently work together. Next are a
few important standards or well perceived specifications in the free
software world.</para>
<section>
<title id="fhs" xreflabel="Filesystem Hierarchy Standard">Filesystem
Hierarchy Standard</title>
<para>The first standard I discuss is the <emphasis>Filesystem Hierarchy
Standard</emphasis><indexterm>
<primary>Filesystem Hierarchy Standard</primary>
</indexterm>, abbreviated to FHS<indexterm>
<primary>FHS</primary>
</indexterm>. This standard is used by almost all distributions and
discusses the file locations on a Linux file system. One can read the
FHS online at <ulink
url="http://www.pathname.com/fhs"><uri>http://www.pathname.com/fhs/</uri></ulink>
but many other resources describe the FHS layout as well.</para>
<para>The file system layout for Unix/Linux is quite different from the
file system layout as seen from within Microsoft Windows. Instead of
marking partitions by a drive letter, Unix/Linux sees a file system as a
tree-like structure, starting with a root and building up through
directories and files. You could say that the branches in the structure
are the directories and the leaves are the files. If you think you have
not encountered a Unix/Linux file system before, think again: URLs that
you use on the Internet are based upon this structure. For instance, the
URL <ulink
url="http://www.gentoo.org/doc/en/faq.xml">http://www.gentoo.org/doc/en/faq.xml</ulink>
denotes the file called <filename>faq.xml</filename> which can be found
on the server of <ulink
url="http://www.gentoo.org">www.gentoo.org</ulink>, in the directory
<filename>/doc/en</filename>. So, / is the root, "doc" is a branch of
this root and "en" is a branch of "doc".</para>
<para>Distributions that adhere to the FHS allow their Linux users to
easily switch between distributions: the file system structure remains
the same so navigation between folders, device files ... doesn't change.
It also enables independent packagers to create packages for several
distributions at once (as long as the distributions use the same package
format). But foremost, it allows Linux users of one distribution to help
users of other distributions as there isn't actually any difference
between their file system layouts.</para>
<para>The current version of this standard is 2.3, released on January
29th, 2004.</para>
</section>
<section>
<title>Linux Standard Base</title>
<para>The <emphasis>Linux Standard Base</emphasis><indexterm>
<primary>Linux Standard Base</primary>
</indexterm>, or LSB<indexterm>
<primary>LSB</primary>
</indexterm> sets the layout, binary compatibility, required
libraries, required commands and more for a Linux operating system. If a
distribution adheres to the LSB standard it can install, run and
maintain LSB compliant (software) packages.</para>
<para>Distributions should adhere to the LSB if they want to ensure that
they don't deviate from a good Linux standard. As a consequence, the LSB
is an effort to ensure that distributions stay similar with regards to
libraries, commands ... or in overall, user experience. It is a good
effort to ensure that no fragmentation occurs in the Linux world.</para>
<para>Because the LSB is a broad standard, it comprises of other
standards, including the forementioned FHS but also the <emphasis>Single
Unix Specification</emphasis><indexterm>
<primary>Single Unix Specification</primary>
</indexterm> (SUS<indexterm>
<primary>SUS</primary>
</indexterm>) which defines how a Unix system should be. However, one
cannot say that his Linux operating system is Unix because he would need
to certify the OS (which requires serious financial support) and this
certification wouldn't last long because the Linux OS changes
often.</para>
<para>One of LSBs' largest advantages is that ISVs (Independent Software
Vendors) such as Oracle, IBM, Sybase ... can package their software in
an LSB-compatible software package which can then be installed on any
LSB-compliant distribution.</para>
</section>
<section>
<title>Free Desktop Specifications</title>
<para>On <uri>http://www.freedesktop.org</uri> you'll find a set of
desktop specifications that are well known in the free software
community. Although they aren't standards (as freedesktop<indexterm>
<primary>freedesktop</primary>
</indexterm> is no standards body and the specifications haven't been
converted into OASIS or ISO standards) many distributions adhere to
them.</para>
<para>These specifications define how menu entries are created and
maintained, where icons should reside, but also how drag and drop
between different libraries (most notably Qt<indexterm>
<primary>Qt</primary>
</indexterm> and GTK+<indexterm>
<primary>GTK+</primary>
</indexterm>, the graphical libraries for KDE and GNOME) should be
made possible.</para>
</section>
</section>
<section>
<title>Exercises</title>
<orderedlist>
<listitem>
<para>What is the difference between GPLv2 and GPLv3?</para>
</listitem>
<listitem>
<para>Part of LSBs standard is the ELF or Executable and Linking
Format, the binary format for executable, compiled code used by
various Linux/Unix distributions. Can you find other operating systems
that support the ELF format beyond Linux/Unix?</para>
</listitem>
<listitem>
<para>Some people see fast releases as a weakness in the free software
community: users are "forced" to upgrade their software more often and
even though it is free, it still takes time (and sometimes headaches)
to upgrade the software this often. Some distributions tend to help
those users by offering stable (both in stability and in version
releases) software only. How is this possible?</para>
</listitem>
<listitem>
<para>How is it possible that many distributions allow you to upgrade
to the latest version without needing an installation CD or
reinstallation from scratch?</para>
</listitem>
</orderedlist>
</section>
<section>
<title>Further Resources</title>
<itemizedlist>
<listitem>
<para><ulink
url="http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/">The
Cathedral and The Bazaar</ulink>, by Eric Steven Raymond - an essay on
two different development models used in the Free Software
community.</para>
</listitem>
<listitem>
<para><ulink url="http://www.ffii.org">Foundation for a Free
Information Infrastructure</ulink>, a NPO dedicated to establishing a
free market in information technology.</para>
</listitem>
<listitem>
<para><ulink
url="http://www.gnu.org/philosophy/fighting-software-patents.htmlhttp://www.gnu.org/philosophy/fighting-software-patents.html">Fighting
Software Patents</ulink>, by Richard Stallman - GNUs vision on
software patents.</para>
</listitem>
</itemizedlist>
</section>
</chapter>

489
src/linux_sea/03-community.xml

@ -0,0 +1,489 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<chapter>
<title>The Role of the Community</title>
<section>
<title>Introduction</title>
<para>A very important asset of free software is the free software
community. Just like with any technology or concept, free software has
adepts that defend and promote free software to great extend. The free
software community itself is very vivid and eager to help others in
exploring the wonderful world of free software...</para>
</section>
<section>
<title>Communities</title>
<para>Free software communities are similar to real communities, but with
the Internet as main communication channel. Hence, these communities
aren't clustered in space like real life communities would, but are
scattered throughout the world. Nevertheless, the Internet ensures that
participants of a community, even when they are lightyears (figure of
speech) apart, talk to each other the same way as neighbours do.</para>
<para>The Internet is a great asset for these communities: you are not
judged based on the color of your skin, your age or your looks. What
matters is how you communicate with others, how you present yourself and
how you react in discussions. Debates in a community can often become
quite vivid, especially when the subject is one where facts aren't
sufficient to provide good answers. And when these discussions change from
debates into almost insulting fights, a flamewar<indexterm>
<primary>flamewar</primary>
</indexterm> is born.</para>
<para>In flamewars, facts and reason are often far away. You should
definitely try to avoid flamewars for discussions where decisions have to
be made, but it is impossible to really prevent them as they are the
result of people who have an active interest in a subject they are eager
to defend, especially when there is no clear answer to the question that
started the flamewar.</para>
<para>Examples of such flamewars are ``What is the best Linux
distribution?'' or ``What text editor should I choose?'' because these
questions don't have clear answers: the best distribution for one person
might be the worst for another, and there are many text editors around. In
latin one would say ``de gustibus et coloribus non est disputandum'' (one
shouldn't argue about tastes and colors) and this is very true for these
kind of questions.</para>
<para>When you don't have a choice, flamewars don't exist: you cannot
compare one product with itself. But in the free software world, choice is
an important concept. You have the choice between many free operating
systems (next to Linux you have many BSD flavors, Sun Solaris 10 and even
less popular but promising operating systems like the GNU Hurd),
distributions (there are over a hundred distributions around), graphical
environments (not a single day goes by without battles about GNOME versus
KDE), office suites, etc.</para>
<para>An often debated subject is ``the best distribution'' and although
this book might seem a bit biased on the subject the best answer I can
give you is that there is no best distribution, at least not generally
speaking. The meaning of the term ``best'' is judged by people who have
personal preferences about their operating system. And many of these
people defend their best distribution very vividly.</para>
<para>Distribution communities are very active, mostly because they are
quite large. The Gentoo community for instance is known for its
responsiveness: the Gentoo chat channel is always alive (with more than
800 participants at any time) as is its forum (with more than a thousand
posts per day) and mailinglists. Of course, general flamewars on
distributions are often on more neutral grounds, but heated discussions on
other topics are a daily routine.</para>
<para>For this reason, most communities have people who keep the
discussions sane and prevent flamewars from growing too much. People who
try to induce flamewars on the communication channels (called
<emphasis>trolls</emphasis><indexterm>
<primary>troll</primary>
</indexterm>) are taken care of by these operators: channel operators
can kick or even ban such people from the chat channel, mailinglist
operators remove these people from the list and forum operators remove the
profiles of these users. You can safely say these people are the police of
the community.</para>
<section>
<title>Local Communities</title>
<para>A specific type of community is one which is local in space. Such
communities often organise meetings (conferences, talks, barbequeues,
...) and offer help to people local to the location where the community
is hosted.</para>
<para>LUG<indexterm>
<primary>LUG</primary>
</indexterm>s (Linux User Group<indexterm>
<primary>Linux User Group</primary>
</indexterm>s) are succesful examples of such communities: these
groups aggregate together, debating on the evolution in the Linux world
and help others with Linux installations (Linux Install Fests<indexterm>
<primary>Linux Install Fest</primary>
</indexterm> are local meetings that offer help in deploying your
favorite Linux distribution on your system). You might find a LUG very
close by.</para>
<para>Many LUGs offer various services to their users which is often
unseen in communities for commercial software. Moreover, many LUGs offer
these services free-of-charge:</para>
<itemizedlist>
<listitem>
<para>individual, on-site help with installation, configuration and
maintenance of a Linux distribution or other free software</para>
</listitem>
<listitem>
<para>courses, talks and presentations offering you more insight in
available Free Software</para>
</listitem>
<listitem>
<para>specific documentation tailored to the needs of its own
users</para>
</listitem>
</itemizedlist>
<para>If you have some time to spare, I really recommend to join a local
LUG - even if you are not searching for help, you can still offer your
own expertise to others and make connections (yes, social networking is
important).</para>
</section>
<section>
<title>Online Communities</title>
<para>When people want to discuss a particular software topic or
distribution, online communities are often formed. These communities do
not (or to a less extend) organise meetings at a specific location
(often called "in real life") but rather use the Internet as the meeting
place ("online" meetings).</para>
<para>Online communities have the advantage that its members can be
anywhere in the world and just like LUGs, they still offer services to
its users, also most of the time free-of-charge:</para>
<itemizedlist>
<listitem>
<para>online help with installation, configuration and maintenance
of the software</para>
<para>In particular cases, communities can even offer interactive
help through technologies such as SSH<indexterm>
<primary>SSH</primary>
</indexterm> (Secure SHell - allows users to log on and work on
another machine) and VNC<indexterm>
<primary>VNC</primary>
</indexterm> (Virtual Network Computing - allows users to
graphically log on and work on another machine, or see read-only
sessions).</para>
</listitem>
<listitem>
<para>courses and online presentations</para>
</listitem>
<listitem>
<para>documentation, more specialised to the software title but
often also localised (translated)</para>
</listitem>
</itemizedlist>
<para>This is possible thanks to the various technologies available on
the Internet, including</para>
<itemizedlist>
<listitem>
<para>Wiki (online collaboration software for developing
documentation) software has become quite popular for developing and
releasing documentation. The use of wiki's allows users to edit
existing documentation or author new documentation online (with a
simple browser) and the results of their editing is immediately
visible to others.</para>
</listitem>
<listitem>
<para>Online (web)forums, where people can participate in
discussions by placing messages and reacting to other messages. The
advantage of web forums is that they are accessible through your web
browser (which most firewalls still allow), can be consulted after
the discussion has long been closed and where messages can be
extended with images, attachments and formatted text.</para>
</listitem>
<listitem>
<para>Mailinglists, which is similar (function-wise) to web forums,
but then organised through e-mail. People subscribe to a mailinglist
and then receive all mails sent to that mailinglist to their
personal mailbox. Replies to these mails are sent back to the
mailinglists where they are again distributed to all mailinglist
participants. Mailinglists are quite popular in free software
communities as they are easily moderated and can be filtered. Also,
mails often reach people faster than messages on a webforum so you
could see a mailinglist as a faster discussion medium.</para>
</listitem>
<listitem>
<para>IRC<indexterm>
<primary>IRC</primary>
</indexterm> (Internet Relay Chat) is a way of communicating with
many people interactively. Most people know Instant Messaging
software such as MSN or Google Talk. Well, IRC is somewhat older but
still very much used as it supports chatrooms where several hundreds
of people can participate. IRC is the fastest medium for
participating in discussions and can be seen as a method for
creating "online" meetings.</para>
</listitem>
</itemizedlist>
</section>
</section>
<section>
<title>Support</title>
<para>Communities often perform the role of support people: if you have a
question about their software project they are eager to answer and help.
If you think the software is insufficient, they will help you expand it or
have it work together with other tools (or even redirect you to other
software projects if they feel you want something out of their favorite
tool that the tool isn't made for).</para>
<para>Support can be given on many levels...</para>
<section>
<title>Documentation Guides</title>
<para>A documentation guide is often created with one goal: describe how
to do something with the tool. Such guides are therefor often called
HOWTOs<indexterm>
<primary>HOWTO</primary>
</indexterm>. Much work is put in such HOWTOs because they should be
correct, well formed but also complete. The better the HOWTO, the lesser
questions are asked after reading it. If you ask the community how to
perform a certain action and the action is described in such a HOWTO,
you'll be redirected to that HOWTO (sometimes with a more crude
reference to the RTFM<indexterm>
<primary>RTFM</primary>
</indexterm> term, or ``Read The Fucking Manual'' - although the third
term is also often read as ``Fine'').</para>
<para>Other types of documentation are FAQs (<emphasis>Frequently Asked
Questions</emphasis>) which are generally very small HOWTOs or answers
to conceptual questions rather than technical ones. When you're new to a
certain tool it is very interesting to read through the FAQs before you
ask your question. Not only are chances high that you find your answer,
you might find out more about the tool which can be very
interesting.</para>
<para>Some communities also offer a knowledge base. Such systems can be
seen as an aggregation of questions and answers, but unlike FAQs they
might not be frequently asked. Knowledge bases often offer support
solutions to specific setups.</para>
</section>
<section>
<title>Internet and Usenet Forums</title>
<para>Internet forums (webbased) or Usenet forums (newsgroups<indexterm>
<primary>newsgroup</primary>
</indexterm>) are a more interactive approach to obtain support.
Internet forums have the additional advantage that you can add specific
formatting in your questions: you can show command code, exceptions or
errors better than in plain text. You can even include screenshots.
These forums allow for any user to be helped quite fast: forums are read
by many and the interface is simple enough to quickly see the new
topics.</para>
<para>An additional advantage of internet forums is that, once a
question has been asked and answered, it is stored in the database of
the forum. Hence, the entire forum can be seen as a knowledge base with
a multitude of answers. Very popular topics are often made sticky,
meaning that the topic remains on top even when no further discussion
happens on it, increasing the chance that new users read the
topic.</para>
<para>Usenet forums (or newsgroups) are another popular approach to
support although it must be said that newsgroups are not used that often
for free software tools. Usually you'll find a newsgroup when the
project itself doesn't provide a forum (anyone can launch a new
newsgroup) although it does happen that internet forums and usenet
forums are linked: posts in one forum are merged with the other.</para>
</section>
<section>
<title>Mailinglists</title>
<para>A more direct approach are mailinglists<indexterm>
<primary>mailinglist</primary>
</indexterm>, e-mail addresses where several dozens (or even hundreds)
individuals listen to. A mailinglist is often perceived to be a bit
faster than forums because many developers frequent mailinglists but not
forums due to the ease of use: mailinglists result in plain e-mails
which can be easily filtered.</para>
<para>Most mailinglists are archived as well, allowing you to skim
through the older topics in the list. Whereas forums are usually pure
for user experience, mailinglists are used as the primary communication
channel for development purposes. Some projects also have internal
development mailinglists which aren't readable to the public. This isn't
because they want to hide development stuff from the users: such mailing
lists are used to communicate security issues, personal information
(including account information) but also to talk about topics that are
juridically difficult to defend if they are made public.</para>
</section>
<section>
<title>Chat</title>
<para>Chatting is almost the most direct form of communicating with each
other. Many free software projects use IRC<indexterm>
<primary>IRC</primary>
</indexterm> (Internet Relay Chat) as a central communication channel.
Users can be quickly helped through IRC while developers can talk and
discuss changes quickly.</para>
<para>Chat channels can be very popular. Gentoo's main chat channel
(#gentoo on the freenode network) has between 800 and 1000 participants
at any time.</para>
</section>
<section>
<title>Real-life Meetings</title>
<para>Once in a while, developer groups come together for real-life
support or to discuss the evolution of their software. In many cases,
real-life meetings offer a way for people to get hands-on, interactive
help. We have talked about LUG meetings (where real-life meetings are
often held) but also software communities have real-life meetings. Many
of these meetings offer a way for developers to meet each other (for the
first time), discuss topics and learn from each other.</para>
<para>In some cases, <emphasis>hackfest</emphasis>s<indexterm>
<primary>hackfest</primary>
</indexterm> are organized. During these meetings, developers
aggregate together with a single goal: to develop new features or remove
bugs from the software. Although this can well be done offline,
hackfests allow developers to communicate freely and help other
developers with their problems. Meeting in real life allows developers
to easily show the problem they have (some problems can be difficult or
too time consuming to write down).</para>
</section>
</section>
<section>
<title>Conferences</title>
<para>In the Free Software world, conferences are often organized. During
these conferences</para>
<itemizedlist>
<listitem>
<para>talks are given about certain software titles (design, features,
evolution, ...) or projects (infrastructure, offered services, used
technologies, ...)</para>
</listitem>
<listitem>
<para>booths are organized where projects can show themselves to the
wide(r) public. Distributions frequently use booths to hand out
installation CD/DVDs and show systems running the distribution.</para>
</listitem>
<listitem>
<para>companies offer information on how they use (or develop) free
software (and sometimes recruit developers)</para>
</listitem>
</itemizedlist>
<section>
<title>FOSDEM</title>
<para>FOSDEM<indexterm>
<primary>FOSDEM</primary>
</indexterm>, or the <emphasis>Free and Open Source Developers
European Meeting</emphasis>, takes place in Brussels, Belgium at the
beginning of each year (around mid-february). During this conference,
talks are given about coding and development of software, but you'll
also find booths about various software projects/distributions and
developer rooms (where a single project can offer talks about
project-specific topics).</para>
<para>FOSDEM is held during two days and has become a major conference
in the Free Software community, especially in Europe as many other
conferences are held in the USA.</para>
</section>
<section>
<title>FOSS.IN</title>
<para>FOSS.IN<indexterm>
<primary>FOSS.IN</primary>
</indexterm>, or the <emphasis>Free and Open Source Software
conference in India</emphasis>, is one of Asia's largest FOSS
conferences. It occurs at the end of every year in Balgalore, India,
featuring talks, discussions, workshops, meetings and more from
international speakers, users and developers.</para>
</section>
<section>
<title>LinuxTag</title>
<para>LinuxTag<indexterm>
<primary>LinuxTag</primary>
</indexterm> is a free software exposition with primary focus on the
Linux-based operating systems and solutions. Unlike FOSDEM, LinuxTag
focuses more on the integration of Linux (and free software) in larger
environments, offering booths to both commercial companies and
non-commercial organisations.</para>
<para>It's slogan is "Where .COM meets .ORG". You can visit LinuxTag
around spring every year. </para>
</section>
</section>
<section>
<title>Exercises</title>
<orderedlist>
<listitem>
<para>Try to find the online discussion methods (webforum,
mailinglists, IRC) offered by the Gentoo Linux distribution.</para>
</listitem>
</orderedlist>
</section>
<section>
<title>Resources</title>
<para>A few more free software conferences:</para>
<itemizedlist>
<listitem>
<para>The <ulink url="http://www.linuxsymposium.org">Ottawa Linux
Symposium</ulink> is held every year in Ottawa, Canada during summer
break.</para>
</listitem>
<listitem>
<para><ulink url="http://www.linux-kongress.org">Linux
Kongress</ulink> has almost always been held in Germany although a
single instance was in Cambridge, England.</para>
</listitem>
<listitem>
<para><ulink url="http://linux.conf.au/">Linux.conf.au</ulink> is
hosted in Australia in the beginning of every year</para>
</listitem>
<listitem>
<para><ulink url="http://www.ohiolinux.org/">Ohio Linux Fest</ulink>
is held in Ohio every fall.</para>
</listitem>
<listitem>
<para><ulink url="http://www.linuxfestnorthwest.org/">Linux Fest
Northwest</ulink> is held in Washington every spring.</para>
</listitem>
<listitem>
<para><ulink url="http://scale7x.socallinuxexpo.org/">SCaLE (Southern
California Linux Expo)</ulink> is held late winter.</para>
</listitem>
<listitem>
<para><ulink url="http://onlinux.ca/">Ontario Linux
Fest</ulink></para>
</listitem>
<listitem>
<para><ulink url="http://www.linuxworldexpo.com/">LinuxWorld
Conference and Expo</ulink></para>
</listitem>
<listitem>
<para><ulink url="http://freed.in/">Freed.IN</ulink></para>
</listitem>
</itemizedlist>
</section>
</chapter>

1319
src/linux_sea/04-runninglinux.xml
File diff suppressed because it is too large
View File

1551
src/linux_sea/05-linuxfs.xml
File diff suppressed because it is too large
View File

646
src/linux_sea/06-processes.xml

@ -0,0 +1,646 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<chapter>
<title>Working with Processes</title>
<section>
<title>Process Trees</title>
<section>
<title>Parent and Child Relationships</title>
<para>Each Linux (and Unix) process has a parent (except for the top
process) and can have one or more childs. The relationship is crafted
when a process is launched: the process that launched the new process
becomes the parent of that process. As a user, you might not know what
process you are currently working in. Every program is a process, being
it the shell you're typing the commands in or the graphical environment
you're working with.</para>
<para>For instance, a user who has a terminal open can have the
following process structure for this terminal:</para>
<programlisting>init
`- xterm
`- bash</programlisting>
<para>You can obtain a tree of running processes using the
<command>pstree</command> command:</para>
<programlisting>$ <command>pstree</command>
init-+-acpid
|-4*[agetty]
|-agiletrack---java---19*[{java}]
|-apache2---8*[apache2]
|-bonobo-activati---{bonobo-activati}
|-5*[dbus-daemon]
|-dhcpcd
|-gconfd-2
|-gnome-keyring-d
|-gnome-power-man
|-gnome-screensav
|-gnome-settings----{gnome-settings-}
|-4*[gnome-vfs-daemo]
|-gnome-volume-ma
|-gpg-agent
|-hald---hald-runner-+-hald-addon-acpi
| |-hald-addon-cpuf
| `-hald-addon-stor
|-java---15*[{java}]
|-login---bash---startx---xinit-+-X
| `-gnome-session-+-gnome-panel
| |-metacity
| |-nautilus
| `-{gnome-session}
[...]</programlisting>
<para>Now, not every process launched immediately becomes a child of the
process where it was launched from. Some processes might immediately
become child of the root process, most often called
<command>init</command><indexterm>
<primary>init</primary>
</indexterm>. The root process is the first process launched by the
kernel when it boots up. It is responsible for running the necessary
startup services and prepare the system for its duties.</para>
<para>Processes that become child of the root process usually do this
because they don't want to be terminated when their parent process exits
or dies: when this happens, the child processes become orphaned and the
init process will terminate these processes as well. So, becoming a
child of the init process will ensure that the process remains
available. In the above example you'll find a good example: the
<command>dhcpcd</command> command governs the IP address of the network
interface through the DHCP protocol. If the process didn't continuously
run, your IP address would be dismissed after a few minutes (or
hours).</para>
</section>
<section>
<title>Process Ownership</title>
<para>When a process is launched (usually through a command the user
entered) it, by default, obtains the user id and group id of its parent
process. When a user logs on to the system, the <command>login</command>
process launches a shell process with the user id and group id of the
user that logged on, so every command the user launches takes the user
id and group id of that user, since the parent process of every launched
command is either the beforementioned shell process or one of its child
processes.</para>
<para>Some processes however explicitly ask the Linux kernel to use a
different user id and group id. This is accomplished by setting the
<emphasis>setuid</emphasis> or <emphasis>setgid</emphasis> flags on the
process file itself. With <emphasis>setuid</emphasis><indexterm>
<primary>setuid</primary>
</indexterm> (set user id) and <emphasis>setgid</emphasis><indexterm>
<primary>setgid</primary>
</indexterm> (set group id) the owner of the process is the owner of
the file rather than the user that launched the process.</para>
<para>An example is the <command>passwd</command> command, used to
change the password of a user:</para>
<programlisting>$ <command>ls -l /bin/passwd</command>
-rws--x--x 1 root root 28956 Jul 15 2007 passwd</programlisting>
<para>As you can see, the command file itself is owned by root. It also
has the setuid bit set (see the s in <filename>-rws--x--x</filename>).
If a user runs the <command>passwd</command> command, the command itself
has root privileges rather than the privileges for the user. For the
<command>passwd</command> command, this is necessary because it needs to
update the password files (<filename>/etc/passwd</filename> and
<filename>/etc/shadow</filename>) which are only writeable by the root
user (the <filename>/etc/shadow</filename> file is not even readable for
regular users).</para>
</section>
<section>
<title>Viewing Process Information</title>
<para>Various tools exist to obtain process information. The next few
chapters give a nice overview of these tools...</para>
<section>
<title>Process Lists</title>
<para>The main program to create a process list is the
<command>ps</command> command. If ran inside a shell, it shows the
processes that are running inside the session (meaning the processes
launched from the shell, including the shell itself):</para>
<programlisting>$ <command>ps</command>
PID TTY TIME CMD
24064 pts/3 00:00:00 bash
24116 pts/3 00:00:00 ps</programlisting>
<para>The columns shown are:</para>
<orderedlist>
<listitem>
<para>PID - process id of the process</para>
</listitem>
<listitem>
<para>TTY - controlling terminal (this is Unix inheritage where
users were logged on through terminals, pts is a
pseudoterminal)</para>
</listitem>
<listitem>
<para>TIME - the execution time the process took. In the above
example, both commands hardly took any CPU time on the system
(bash is the shell, which is most of the time waiting for input so
not consuming any CPU time, the other one is ps which gave its
results in less than a second)</para>
</listitem>
<listitem>
<para>CMD - the process name itself (the command)</para>
</listitem>
</orderedlist>
<para>Of course, several arguments to ps exist which change its
behavior. For instance, with <command>ps -e</command> you see the same
information, but for all processes runnin on the system. With
<command>ps -f</command> a few more columns are added, including the
parent process id and the time the process started.</para>
<para>You can also limit the processes to see based on the user
(<command>ps -u username</command>), command name (<command>ps -C
command</command>), really running processes (taking cpu time at the
moment: <command>ps -r</command>) and more. For more information, see
the ps manual page.</para>
<para>Another command that is often used to obtain process list
information is the <command>top</command> program. The top command is
an interactive command that shows you a process list, sorted by one or
more values (default is CPU usage) and refreshes this list every 5
seconds (this is of course configurable):</para>
<programlisting>top - 10:19:47 up 6 days, 6:41, 5 users, load average: 1.00, 1.27, 0.92
Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.2%us, 0.7%sy, 0.0%ni, 95.6%id, 0.3%wa, 0.1%hi, 0.0%si, 0.0%st
Mem: 1545408k total, 1490968k used, 54440k free, 177060k buffers
Swap: 2008084k total, 132k used, 2007952k free, 776060k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4458 haldaemo 16 0 5488 3772 2388 S 2.0 0.2 4:23.69 hald
27255 swift 15 0 2272 1064 768 R 2.0 0.1 0:00.01 top
1 root 15 0 1612 544 468 S 0.0 0.0 0:00.48 init
2 root 12 -5 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 39 19 0 0 0 S 0.0 0.0 0:00.45 ksoftirqd/0
4 root 10 -5 0 0 0 S 0.0 0.0 0:01.95 events/0
5 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
60 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kblockd/0
61 root 11 -5 0 0 0 S 0.0 0.0 0:25.77 kacpid
62 root 11 -5 0 0 0 S 0.0 0.0 0:09.60 kacpi_notify
171 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 ata/0
172 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 ata_aux
173 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 ksuspend_usbd
176 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
178 root 10 -5 0 0 0 S 0.0 0.0 0:00.01 kseriod
196 root 10 -5 0 0 0 S 0.0 0.0 0:01.13 kswapd0
197 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0</programlisting>
<para>There is plenty of information in the top screen...</para>
<programlisting>top - 10:19:47 up 6 days, 6:41, 5 users, load average: 1.00, 1.27, 0.92</programlisting>
<para>The first line shows you the uptime of the system (this system
is running for 6 days, 6 hours and 41 minutes), the number of logged
on users (beware, this is not the number of different users - if a
user launches 3 xterms inside a graphical session he will be shown as
four logged on users) and the load average.</para>
<para>The load average is something many people misinterprete. The
load average shows the number of processes that were running or asking
for CPU time during the given interval. In the above example, this
means that:</para>
<itemizedlist>
<listitem>
<para>in the last minute, an average of 1 process was asking for
or using CPU time</para>
</listitem>
<listitem>
<para>in the last 5 minutes, an average of 1.27 processes were
asking for or using CPU time</para>
</listitem>
<listitem>
<para>in the last 15 minutes, an average of 0.92 processes were
asking for or using CPU time</para>
</listitem>
</itemizedlist>
<para>For a single CPU system, you most likely don't want a number
higher than 1 in the long run (for instance, the 15-minute span). The
more CPUs, the higher the load average can become.</para>
<programlisting>Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombie</programlisting>
<para>The number of processes running on this system (120) of which
119 are sleeping (not performing any duties), 1 running (the top
command itself), 0 stopped (a process in the stopped state can still
be revived but is, at this moment, not accepting input or performing
any tasks) and 0 zombie.</para>
<para>A zombie process is not really a real process: the process
itself has already finished, but its parent process doesn't know this
yet, so the kernel is keeping some process information until the
parent process asks for the child process state.</para>
<programlisting>Cpu(s): 3.2%us, 0.7%sy, 0.0%ni, 95.6%id, 0.3%wa, 0.1%hi, 0.0%si, 0.0%st</programlisting>
<para>CPU state information, showing the CPU usage percentages: user
processes (us), system/kernel CPU usage (sy), niced processes (ni),
idle CPU (id), waiting for I/O (wa), hardware interrupts (hi),
software interrupts (si) and virtual cpu stealing (st).</para>
<para>Most of the states are self-explanatory. The niced processes is
for processes the user reniced and is a subset of the user processes
percentage. The virtual CPU stealing is the percentage of time a
virtual CPU waits for a real CPU and is not interesting for regular
Linux/Unix users (as they don't work with virtualization).</para>
<programlisting>Mem: 1545408k total, 1490968k used, 54440k free, 177060k buffers
Swap: 2008084k total, 132k used, 2007952k free, 776060k cached</programlisting>
<para>Memory usage: of the 1.5 Gbyte of memory available, 1.45Gbyte is
in use and 54Mbyte is free. Of the used memory, 177 Mbyte is used by
the kernel for internal buffers. Also, 776 Mbyte of the used memory
actually consists out of cached data which can potentially be cleared
if a process would require more memory than currently
available.</para>
<para>The swap space itself is hardly used: of the 2Gbyte of swap
space defined, only 132 kbyte is in use.</para>
<programlisting> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4458 haldaemo 16 0 5488 3772 2388 S 2.0 0.2 4:23.69 hald
...</programlisting>
<para>The rest of the screen gives the process listing itself. The
columns shown are:</para>
<orderedlist>
<listitem>
<para>Process ID (PID) of the process</para>
</listitem>
<listitem>
<para>Username (USER) showing the owner of the process</para>
</listitem>
<listitem>
<para>Priority value (PR) of the process (the higher the value,
the higher the priority). Priorities are exclusively determined by
the Linux kernel.</para>
</listitem>
<listitem>
<para>Nice value (NI) of the process (is a user sets a nice value,
or renices a tool, it tells the Linux kernel how "nice" the
program is - the higher the nice value, the nicer it is so
(generally) the lower the priority should be).</para>
</listitem>
<listitem>
<para>The virtual memory (VIRT) the process is occupying. This
includes the memory it is actually using, mapped memory from