Linux From Scratch Versie 4.0 Gerard Beekmans Vertaald door: Ellen Bokhorst Copyright © 1999-2002 Gerard Beekmans In dit boek wordt het proces beschreven dat bestaat uit het van de grond af opbouwen van een Linux systeem, waarbij van niets meer gebruik wordt gemaakt dan de broncode van de benodigde software. Copyright (c) 1999-2002, Gerard Beekmans All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions in any form must retain the above copyright notice, this list of conditions and the following disclaimer. * Neither the name of "Linux From Scratch" nor the names of its contributors may be used to endorse or promote products derived from this material without specific prior written permission. * Any material derived from Linux From Scratch must contain a reference to the "Linux From Scratch" project. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. _________________________________________________________________ _________________________________________________________________ Toewijding Dit boek is toegewijd aan mijn liefhebbende en ondersteunende vrouw Beverly Beekmans. Inhoudsopgave [1]Voorwoord [2]Voorwoord [3]Wie zou dit boek willen lezen [4]Wie dit boek niet zou willen lezen [5]Organisatie [6]Deel I - Introductie [7]Deel II - Installatie van het basissysteem LFS [8]Deel III - Appendices I. [9]Deel I - Introductie 1. [10]Introductie [11]Erkenningen [12]Hoe we het gaan doen [13]Gebruikte conventies in dit boek [14]Boekversie [15]Mirrorsites [16]Changelog [17]Mailinglijsten en archieven [18]News server [19]FAQ [20]Contact informatie 2. [21]Belangrijke informatie [22]Over $LFS [23]Over SBU's [24]Waar de gedownloade software te bewaren [25]Hoe de software te installeren [26]Welk Platform? [27]Hoe om hulp vragen II. [28]Deel II - Installeren van het LFS-systeem 3. [29]Te downloaden packages [30]Introductie [31]Te downloaden packages 4. [32]Voorbereiden van een nieuwe partitie [33]Introductie [34]Aanmaken van een nieuwe partitie [35]Een bestandssysteem aanmaken op de nieuwe partitie [36]De nieuwe partitie mounten 5. [37]Voorbereiden van het LFS systeem [38]Introductie [39]Waarom statisch linken? [40]Aanmaken van de $LFS/static directory [41]Installeer alle software als een onbevoorrechte gebruiker [42]Installeren van Bash-2.05a [43]Installeren van Binutils-2.13 [44]Installeren van Bzip2-1.0.2 [45]Installeren van Diffutils-2.8.1 [46]Installeren van Fileutils-4.1 [47]Installeren van Findutils-4.1 [48]Installeren van Gawk-3.1.1 [49]Installeren van GCC-3.2 [50]Installeren van Grep-2.5 [51]Installeren van Gzip-1.2.4a [52]Installeren van Make-3.79.1 [53]Installeren van Patch-2.5.4 [54]Installeren van Sed-3.02 [55]Installeren van Sh-utils-2.0 [56]Installeren van Tar-1.13 [57]Installeren van Texinfo-4.2 [58]Installeren van Textutils-2.1 [59]Installeren van Util-linux-2.11u 6. [60]Installeren van basissysteemsoftware [61]Introductie [62]Over debugging symbolen [63]De chroot omgeving activeren [64]Wijzigen van eigenaar van bestanden en directory's [65]Directory's aanmaken [66]Mounten van het proc bestandssysteem [67]Aanmaken van de mtab symlink [68]Aanmaken van de bash en sh symlinks [69]Aanmaken van de passwd en group bestanden [70]Devices aanmaken (Makedev-1.7) [71]Installeren van Linux-2.4.19 [72]Installeren van Man-pages-1.52 [73]Installeren van Glibc-2.2.5 [74]Installeren van GCC-3.2 [75]Installeren van Zlib-1.1.4 [76]Installeren van Findutils-4.1 [77]Installeren van Gawk-3.1.1 [78]Installeren van Ncurses-5.2 [79]Installeren van Vim-6.1 [80]Installeren van Bison-1.35 [81]Installeren van Less-374 [82]Installeren van Groff-1.18 [83]Installeren van Textutils-2.1 [84]Installeren van Sed-3.02 [85]Installeren van Flex-2.5.4a [86]Installeren van Binutils-2.13 [87]Installeren van Fileutils-4.1 [88]Installeren van Sh-utils-2.0 [89]Installeren van Gettext-0.11.5 [90]Installeren van Net-tools-1.60 [91]Installeren van Perl-5.8.0 [92]Installeren van Linux threads-2.2.5 man pages [93]Installeren van M4-1.4 [94]Installeren van Texinfo-4.2 [95]Installeren van Autoconf-2.53 [96]Installeren van Automake-1.6.3 [97]Installeren van Bash-2.05a [98]Installeren van File-3.39 [99]Installeren van Libtool-1.4.2 [100]Installeren van Bin86-0.16.3 [101]Installeren van Bzip2-1.0.2 [102]Installeren van Ed-0.2 [103]Installeren van Kbd-1.06 [104]Installeren van Diffutils-2.8.1 [105]Installeren van E2fsprogs-1.27 [106]Installeren van Grep-2.5 [107]Installeren van Gzip-1.2.4a [108]Installeren van Man-1.5k [109]Installeren van Lilo-22.2 [110]Installeren van Make-3.79.1 [111]Installeren van Modutils-2.4.19 [112]Installeren van Netkit-base-0.17 [113]Installeren van Patch-2.5.4 [114]Installeren van Procinfo-18 [115]Installeren van Procps-2.0.7 [116]Installeren van Psmisc-21 [117]Installeren van Shadow-4.0.3 [118]Installeren van Sysklogd-1.4.1 [119]Installeren van Sysvinit-2.84 [120]Installeren van Tar-1.13 [121]Installeren van Util-linux-2.11u [122]Installeren van LFS-Bootscripts-1.10 [123]Configureren van essentiële software 7. [124]Instellen van systeemopstartscripts [125]Introductie [126]Hoe werkt het bootproces met deze scripts? [127]Configureren van het script setclock [128]Heb ik het script loadkeys nodig? [129]Configureren van het script sysklogd [130]Configureren van het script network [131]Aanmaken van het bestand /etc/hosts [132]Configureren van het script network 8. [133]Het LFS systeem opstartbaar maken [134]Introductie [135]Aanmaken van het /etc/fstab bestand [136]Installeren van Linux-2.4.19 [137]Het LFS systeem opstartbaar maken 9. [138]Het einde [139]Het einde [140]Tel mee [141]Het systeem opnieuw opstarten III. [142]Deel III - Appendices A. [143]Beschrijvingen en afhankelijkheden van packages [144]Introductie [145]Autoconf [146]Automake [147]Bash [148]Bin86 [149]Binutils [150]Bison [151]Bzip2 [152]Diffutils [153]E2fsprogs [154]Ed [155]File [156]Fileutils [157]Findutils [158]Flex [159]Gawk [160]GCC [161]Gettext [162]Glibc [163]Grep [164]Groff [165]Gzip [166]Kbd [167]Less [168]LFS-Bootscripts [169]Libtool [170]Lilo [171]Linux (de kernel) [172]M4 [173]Make [174]MAKEDEV [175]Man [176]Man-pages [177]Modutils [178]Ncurses [179]Netkit-base [180]Net-tools [181]Patch [182]Perl [183]Procinfo [184]Procps [185]Psmisc [186]Sed [187]Shadow [188]Sh-utils [189]Sysklogd [190]Sysvinit [191]Tar [192]Texinfo [193]Textutils [194]Util-linux [195]Vim [196]Zlib B. [197]Bronnen [198]Introductie [199]Boeken [200]HOWTO's en Guides [201]Overig _________________________________________________________________ Voorwoord _________________________________________________________________ Voorwoord Een aantal verschillende distributies te hebben gebruikt, was ik nooit volledig tevreden met één van deze distributies. Ik vond de regeling met betrekking tot de bootscripts maar niks. Ik hield niet van de wijze waarop bepaalde programma's standaard waren geconfigureerd. Heel wat meer in deze trant ergerde me. Uiteindelijk realiseerde ik me dat ik een eigen systeem vanaf de grond af op zou moeten bouwen met behulp van alleen de broncode als ik volledig tevreden wilde zijn met mijn Linux systeem. Ik besloot geen gebruik te maken van enige voorgecompileerde packages noch een CD-ROM of bootdisk waarmee een aantal basisutility's zouden worden geïnstalleerd. Ik zou mijn huidige Linux systeem gebruiken om mijn eigen systeem te ontwikkelen. Dit wilde idee scheen toendertijd erg lastig en vaak leek het een onmogelijke taak. Na het uitzoeken van allerlei soorten problemen, zoals afhankelijkheden en foutmeldingen die tijdens het compileren optraden, werd een aangepast Linux systeem gecreëerd dat volledig functioneel was. Ik noemde dit systeem een Linux From Scratch systeem, of in het kort: LFS. Ik hoop dat je een geweldige tijd zult beleven bij het werken aan je eigen LFS! -- Gerard Beekmans gerard@linuxfromscratch.org _________________________________________________________________ Wie zou dit boek willen lezen Er zijn heel wat redenen te noemen waarom iemand dit boek zou willen lezen. De voornaamste reden is het installeren van een LFS systeem. Een vraag die bij veel mensen op zou kunnen komen is "Waarom zou je al het gedoe op je nemen dat komt kijken bij het handmatig van de grond opbouwen van een Linux systeem terwijl je gewoon een bestaande distributie kunt downloaden en installeren?". Dat is een goede vraag. Een belangrijke reden voor het bestaan van LFS is mensen te helpen leren hoe een Linux systeem van binnenuit werkt. Het opbouwen van een LFS systeem helpt bij het demonstreren wat Linux maakt tikken en hoe dingen samenwerken en van elkaar afhankelijk zijn. En misschien als belangrijkste, hoe het aan je eigen smaak en behoeften aan te passen. Een belangrijk voordeel van LFS is dat je meer controle hebt over je systeem zonder afhankelijk te hoeven zijn van de Linux implementatie van iemand anders. Met LFS bevindt je je in de stoel van de bestuurder en dicteert elk aspect van je systeem, zoals de directorylayout en bootscriptsetup. Je dicteert ook waar, waarom en hoe programma's worden geïnstalleerd. Een ander voordeel van LFS is de mogelijkheid om een zeer compact Linux systeem te creëren. Bij het installeren van een reguliere distributie, eindig je vaak met verscheidene programma's die je naar alle waarschijnlijk nooit zult gaan gebruiken. Ze zijn daar gewoon, (kostbare) diskruimte verspillend. Het is niet moeilijk een LFS systeem te bouwen in minder dan 100 MB. Klinkt dat nog steeds veel? Een aantal van ons heeft gewerkt aan het creëren van een zeer klein ingebouwd LFS systeem. We stelden met succes een systeem samen dat precies voldoende was voor het draaien van de Apache webserver waarvoor bij benadering 8MB diskruimte werd gebruikt. Het verder strippen zou dat terug kunnen brengen tot 5 MB of nog minder. Probeer dat eens met een reguliere distributie. We zouden een gedistribueerde Linux kunnen vergelijken met een hamburger die je koopt bij een fast-food restaurant - je hebt geen idee wat je aan het eten bent. LFS aan de andere kant, geeft je geen hamburger, maar het recept om een hamburger te maken. Dit geeft je de mogelijkheid het nogeens na te zien, ongewilde ingrediënten achterwege te laten en je eigen ingrediënten die de smaak van je burger verbeteren toe te voegen. Wanneer je eenmaal tevreden bent met het recept ga je het bereiden. Je maakt het precies klaar zoals jij het lekker vindt: braad het, bak het, vries het in, rooster het, of eet het rauw. Een andere analogie die we kunnen gebruiken is waarbij LFS wordt vergeleken met een voltooid huis. LFS geeft je het schematische plan van een huis, maar het is aan jou om het op te bouwen. Je hebt de vrijheid je plannen onderwijl aan te passen. Een ander voordeel van een aangepast Linux systeem is de beveiliging. Door het gehele systeem vanuit de broncode te compileren, word je in staat gesteld alles te controleren en alle beveiligingspatches toe te passen waarvan je denkt dat ze nodig zijn. Je hoeft niet op iemand anders te wachten voor het compileren van binary packages waarin een beveilingslek wordt gecorrigeerd. Tenzij je de patch bestudeert en het zelf compileert, heb je geen garantie dat het nieuwe package correct werd gebouwd en het probleem daadwerkelijk (adequaat) corrigeert. Je weet nooit echt zeker of een beveiligingslek wel of niet werd gecorrigeerd, tenzij je het zelf doet. _________________________________________________________________ Wie dit boek niet zou willen lezen Als je je eigen Linux systeem niet vanaf de grond wilt opbouwen, dan wil je dit boek waarschijnlijk niet lezen. Ons doel is een compleet en bruikbaar funderingssysteem op te bouwen. Als je alleen wilt weten wat er gebeurt als je computer boot, dan raden we de "From Power Up To Bash Prompt" HOWTO aan. Deze HOWTO beschrijft de opbouw van een kaal systeem vergelijkbaar met die in dit boek, maar het richt zich strict op het aanmaken van een systeem dat in staat is tot aan de BASH prompt te booten. Overweeg je doel tijdens je besluit welke te lezen. Als je een Linux systeem wilt opbouwen waarbij je onderwijl wat leert, dan is dit boek waarschijnlijk de beste keuze. Als je doel strict als leerzaam project dient en je geen plannen hebt voor je voltooide systeem, dan is de "From Power Up To Bash Prompt" HOWTO waarschijnlijk een betere keuze. De "From Power Up To Bash Prompt" HOWTO is te vinden op [202]http://www.netspace.net.au/~gok/power2bash/. _________________________________________________________________ Organisatie Een groot deel van de appendices is geïntegreerd in Deel II (wat het boek wat omvangrijker maakt). We geloven dat dit het makkelijker leesbaar maakt. Op deze wijze hoef je niet te blijven terugkeren naar een appendix terwijl je Deel II aan het lezen bent. Dat is nogal een karwei, vooral als je de tekstversie van dit boek aan het lezen bent. Dit boek is in de volgende delen onderverdeeld: _________________________________________________________________ Deel I - Introductie Deel I voorziet in algemene informatie over de inhoud van het boek (revisies, waar het te verkrijgen, changelog, mailinglijsten, en andere contactinformatie). Hierin staat ook het aanbevolen leesvoer waarin een paar belangrijke overwegingen worden besproken voor je begint met je LFS systeem. _________________________________________________________________ Deel II - Installatie van het basissysteem LFS Deel II begeleidt je bij het samenstellen en installeren van een LFS systeem. Het resulterende LFS systeem zal de binnenste fundering zijn waarop de rest van je Linux systeem is gebouwd. Hoe je systeem er ook uit komt te zien, het zal zijn gebouwd en worden ondersteund door de fundering die we opbouwen in Deel II. _________________________________________________________________ Deel III - Appendices Deel III bevat diverse appendices. I. Deel I - Introductie Inhoudsopgave 1. [203]Introductie 2. [204]Belangrijke informatie _________________________________________________________________ Hoofdstuk 1. Introductie _________________________________________________________________ Erkenningen We danken de volgende mensen en organisaties voor hun bijdragen aan het Linux From Scratch project: * [205]Mark Stone voor het doneren van de linuxfromscratch.org server. * [206]VA Linux Systems voor het leveren van ruimte en bandbreedte voor de linuxfromscratch.org server. * [207]Fredrik Danerklint voor het draaien van de se.linuxfromscratch.org mirror. * [208]Tim Jackson voor het draaien van de linuxfromscratch.idge.net mirror. * [209]Hagen Herrschaft voor het draaien van de de.linuxfromscratch.org mirrors, en voor zijn donatie van een P4-2.2GHz systeem voor het LFS project. * [210]UK Mirror Service voor het draaien van de linuxfromscratch.mirror.ac.uk mirror. * [211]Guido Passet voor het draaien van de www.nl.linuxfromscratch.org en ftp.snt.utwente.nl mirrors. * [212]Timothy Bauscher voor het meer zijn dan een goede hulp bij het bewerken van dit boek. * [213]Mark Hymers voor het meer zijn dan een goede hulp bij het bewerken van dit boek. * [214]Marc Heerdink voor het ook meer zijn dan een goede hulp bij het bewerken van dit boek. * [215]DREAMWVR.COM voor hun voortdurende sponsoring door het doneren van diverse bronnen aan de LFS en daaraan gerelateerde subprojecten. * [216]Jan Niemann voor het draaien van de www.de.linuxfromscratch.org mirror. * [217]Torsten Westermann voor het draaien van de lfs.linux-provider.net mirror. * [218]Ian Chilton voor het draaien van de www.us.linuxfromscratch.org en www.linuxfromscratch.co.uk mirrors. * [219]Dag Stenstad voor het leveren van de www.no.linuxfromscratch.org mirror, en [220]Ian Chilton voor het draaien ervan. * [221]Antonin Sprinzl voor het draaien van de www.at.linuxfromscratch.org mirror. * [222]Jason Andrade voor het draaien van de www.au.linuxfromscratch.org mirror. * [223]Ian Cooper voor het draaien van de www.us2.linuxfromscratch.org mirror. * [224]VA Linux Systems die namens [225]Linux.com, een VA Linux 420 (eerder StartX SP2) werkstation voor dit project doneerde. * [226]Johan Lenglet voor het leiden van het Franstalige LFS vertaalproject. * [227]Jesse Tie-Ten-Quee voor het doneren van een Yamaha CDRW 8824E cd writer. * [228]O'Reilly voor het doneren van boeken over SQL en PHP. * Robert Briggs voor het doneren van de linuxfromscratch.org en linuxfromscratch.com domeinnamen. * [229]Frank Skettino op [230]OSWD voor het aanleveren van het initiële ontwerp van de LFS website. * [231]Garrett LeSage voor het aanmaken van de LFS banner. * [232]Dean Benson voor het financieel steunen bij het opzetten van de LFS non-profit organisatie. * Ontelbare andere mensen op de diverse LFS mailinglijsten die dit boek totstand laten komen door hun suggesties te geven, het boek testen en foutrapporten aanleveren. _________________________________________________________________ Hoe we het gaan doen We zullen het LFS systeem gaan opbouwen door gebruik te maken van een eerder geïnstalleerde Linux distributie, zoals Debian, SuSE, Slackware, Mandrake, RedHat, enz. We zullen het bestaande Linux systeem als het ontwikkelaarsplatform gaan gebruiken, omdat we tools als een compiler, linker, teksteditor, en andere ontwikkelaarstools nodig hebben om ons systeem te bouwen. Normaal gesproken zijn de vereiste tools standaard beschikbaar, als we "development" als één van onze installatie opties selecteerden toen we een Linux distributie installeerde. Nadat je de packages hebt gedownload waarmee een LFS systeem wordt samengesteld, zullen we een nieuwe Linux native partitie en een bestandssysteem aanmaken. Hierop zal het LFS-systeem worden gecompileerd en geïnstalleerd. In de volgende stap, Hoofdstuk 5, zal de installatie van een aantal packages worden besproken die de basisontwikkelingssuite zullen vormen die wordt gebruikt om het feitelijke systeem te bouwen, of die nodig zijn om circulaire afhankelijkheden op te lossen. Je hebt bijvoorbeeld een compiler nodig om een nieuwe compiler te kunnen bouwen, en je hebt een shell nodig om een nieuwe shell te kunnen installeren. De packages in dit hoofdstuk zullen statisch worden gelinkt. Static linking beschrijft een methode voor het compileren van software zodat de aanwezigheid van library's niet nodig is als de compilatie eenmaal compleet is. Het resulterende programma is in staat op zichzelf te functioneren. Het programma is hiertoe in staat omdat de delen van het programma die normaal gesproken in de library's blijven uit de library's worden gekopieerd en direct in het programma worden gebouwd. Normaal gesproken wordt software gemaakt met dynamisch linken. Dit bespaart opslagruimte en verhoogt de efficiëntie van veel programma's. We linken onze software statisch in Hoofdstuk 5 omdat we in theorie ons ontwikkelaarssysteem zullen verplaatsen naar een virtuele omgeving waar de eerder genoemde library's niet op aanwezig zullen zijn. Als de software dynamisch zou worden gebouwd, dan zou onze ontwikkelaarssuite niet functioneren. Aangezien de library's waar we het over hebben worden geleverd door onze Linux distributie, gaat het in Hoofdstuk 5 om het bouwen van een ontwikkelaarsomgeving waarbij die library's niet nodig zijn en de omgeving daarom onafhankelijk is van de distributie. In Hoofdstuk 6 zullen we ons uiteindelijke systeem gaan bouwen en installeren. We zullen het chroot programma gebruiken om een virtuele omgeving te betreden en een nieuwe shell opstarten waarvan de rootdirectory zal worden ingesteld op de partitie waarop we alle software in Hoofstuk 5 bouwen. Dit lijkt heel veel op het rebooten en instrueren van de kernel onze LFS partitie als de rootpartitie te mounten. De reden dat we niet werkelijk rebooten, maar in plaats daarvan gebruik maken van chroot, is dat het aanmaken van een opstartbaar statisch systeem extra werk vereist wat simpelweg niet nodig is. Bovendien kunnen we ons platformsysteem blijven gebruiken terwijl we bezig zijn met de opbouw van LFS. Terwijl de software wordt gecompileerd en geïnstalleerd, kun je simpelweg overschakelen naar een andere VC (Virtuele Console) of X desktop en je computer normaal verder gebruiken. Wanneer alle software uit Hoofdstuk 6 is geïnstalleerd, zullen de hoofdstukken 7, 8 en 9 ons helpen onze installatie af te maken. In Hoofdstuk 7 zullen we onze bootscripts instellen. In Hoofdstuk 8 zullen we onze uiteindelijke linux kernel bouwen en de Linux bootloader instellen. In Hoofdstuk 9 staan een aantal verwijzingen om je te helpen als je het boek eenmaal uit hebt. Als laatste start je het systeem opnieuw op en boot je in je nieuwe LFS systeem, en begint het daadwerkelijk te gaan gebruiken. Dit is het proces in een notedop. Gedetailleerde informatie over de stappen die we zullen nemen worden besproken in de hoofdstukken en beschrijvingen van de packages naarmate je vordert. Als nog niet alles duidelijk is voor je, maak je dan geen zorgen. Het zal binnen korte tijd duidelijk worden. Lees Hoofdstuk 2 alsjeblieft zorgvuldig door aangezien er een paar belangrijke kwesties in worden uitgelegd, waar je van op de hoogte dient te zijn voordat je je door de Hoofdstukken 5 en later begint te werken. _________________________________________________________________ Gebruikte conventies in dit boek Om het wat makkelijker te kunnen volgen, is in de loop van dit boek gebruik gemaakt van een aantal conventies. Hieronder volgen een aantal voorbeelden: ./configure --prefix=/usr Deze tekstweergave is ontworpen exact te worden ingetikt zoals weergegeven tenzij anders wordt aangegeven in de omliggende tekst. Het wordt ook gebruikt in de secties met uitleg ter identificatie naar welke opdrachten wordt gerefereerd. install-info: unknown option `--dir-file=/mnt/lfs/usr/info/dir' Deze tekstweergave (tekst met vaste tekenafstand) toont schermuitvoer, waarschijnlijk als het resultaat van uitgevoerde opdrachten en het wordt ook gebruikt om bestandsnamen weer te geven, zoals /etc/lilo.conf. Benadrukt Deze tekstweergave wordt voor verscheidene doeleinden in het boek gebruikt, hoofdzakelijk om belangrijke punten te benadrukken, en als voorbeeld wat in te tikken. [233]http://www.linuxfromscratch.org/ Deze tekstweergave wordt gebruikt voor hyperlinks, zowel in het boek als in externe pagina's zoals HowTo's, downloadlokaties, websites, enz. cat > $LFS/etc/group << "EOF" root:x:0: bin:x:1: ...... EOF Dit type sectie wordt hoofdzakelijk gebruikt bij het aanmaken van configuratiebestanden. De eerste opdracht (vet weergegeven) vertelt het systeem het bestand $LFS/etc/group aan te maken gevolgd door wat dan ook op de volgende regels tot aan de reeks EOF. Daarom wordt deze gehele sectie over het algemeen ingetikt zoals weergegeven. _________________________________________________________________ Boekversie Dit is LFS-BOOK versie 4.0 gedateerd 5 oktober 2002. Als deze versie ouder is dan een maand dan is er waarschijnlijk reeds een nieuwere versie voor download beschikbaar. Kijk op een van de mirrorsites die hieronder worden genoemd voor bijgewerkte versies. _________________________________________________________________ Mirrorsites Hieronder is een lijst opgenomen met onze huidige HTTP en FTP mirrorsites op moment 10 april 2002. Het kan zijn dat deze lijst niet accuraat meer is. De laatste info is te vinden op onze website op [234]http://www.linuxfromscratch.org. _________________________________________________________________ HTTP Mirrors Noord-Amerika * Fremont, Californië, USA [8 Mbit] - [235]http://www.linuxfromscratch.org/lfs/intro.shtml * Lufkin, Texas, USA [6 Mbit] - [236]http://linuxfromscratch.idge.net/lfs/intro.shtml * Columbus, Ohio, United States [1 Mbit] - [237]http://www.us.linuxfromscratch.org/lfs/intro.shtml _________________________________________________________________ Europa * Mainz, Duitsland [100 Mbit] - [238]http://lfs.linux-provider.net/lfs/intro.shtml * Amsterdam, Nederland [100 Mbit] - [239]http://www.nl.linuxfromscratch.org/lfs/intro.shtml * Oslo, Noorwegen [100 Mbit] - [240]http://www.no.linuxfromscratch.org/lfs/intro.shtml * Lancaster, United Kingdom [100 Mbit] - [241]http://linuxfromscratch.mirror.ac.uk/lfs/intro.shtml * Vienna Univ. of Technology, Oostenrijk [64 Mbit] - [242]http://www.at.linuxfromscratch.org/lfs/intro.shtml * Karlskrona, Zweden [10 Mbit] - [243]http://www.se.linuxfromscratch.org/lfs/intro.shtml * Freising, Duitsland [4 Mbit] - [244]http://www.de.linuxfromscratch.org/lfs/intro.shtml * Teeside, United Kingdom [256 Kbit] - [245]http://www.linuxfromscratch.co.uk/lfs/intro.shtml _________________________________________________________________ Australië * Brisbane, Australië [155 Mbit] - [246]http://www.au.linuxfromscratch.org/lfs/intro.shtml _________________________________________________________________ FTP Mirrors Noord-Amerika * Fremont, Californië, USA [FTP] [8 Mbit] - [247]ftp://ftp.linuxfromscratch.org * Fremont, Californië, USA [HTTP] [8 Mbit] - [248]http://ftp.linuxfromscratch.org * Lufkin, Texas, USA [FTP] [6 Mbit] - [249]ftp://linuxfromscratch.idge.net/linuxfromscratch * Lufkin, Texas, USA [HTTP] [6 Mbit] - [250]http://ftp.idge.net/linuxfromscratch _________________________________________________________________ Europa * Univ. of Twente, Nederland [HTTP] [100 Mbit] - [251]http://ftp.snt.utwente.nl/linux/lfs/ * Univ. of Twente, Nederland [FTP] [100 Mbit] - [252]ftp://ftp.snt.utwente.nl/pub/linux/lfs/ * Oslo, Noorwegen [FTP] [100 Mbit] - [253]ftp://ftp.no.linuxfromscratch.org/mirrors/lfs/ * Lancaster, United Kingdom [HTTP] [100 Mbit] - [254]http://www.mirror.ac.uk/sites/ftp.linuxfromscratch.org/ * Vienna Univ. of Tech., Oostenrijk [FTP] [64 Mbit] - [255]ftp://ftp.at.linuxfromscratch.org/pub/lfs/ * Vienna Univ. of Tech., Oostenrijk [HTTP] [64 Mbit] - [256]http://ftp.at.linuxfromscratch.org/pub/lfs * Karlskrona, Zweden [FTP] [10 Mbit] - [257]ftp://ftp.se.linuxfromscratch.org/lfs * Freising, Duitsland [HTTP] [4 Mbit] - [258]http://ftp.de.linuxfromscratch.org/ * Freising, Duitsland [FTP] [4 Mbit] - [259]ftp://ftp.de.linuxfromscratch.org/mirrors/ftp.linuxfromscratc h.org/ _________________________________________________________________ Australië * Brisbane, Australië [FTP] [155 Mbit] - [260]ftp://ftp.planetmirror.com/pub/lfs/ _________________________________________________________________ Changelog 4.0 - 5 oktober 2002 * 3 oktober 2002 [gerard]: Hoofdstuk 06 - Linuxthreads: In plaats van cd man de optie -C gebruiken bij make wat zinniger is (en ook korter). * 29 september 2002 [gerard]: Hoofdstuk 05 - GCC: De oude nofixincludes patch gecorrigeerd en het hersteld. * 29 september 2002 [markh]: Hoofdstuk 05 - Bash: Correcte verwijzing naar Debian voor het refereren naar de oude stabiele release (potato) aangezien het niet geldt voor de huidige release (woody). Gerapporteerd door h2k1 op #lfs. 4.0-RC1 - 28 september 2002 * Bijgewerkt tot: + automake-1.6.3 + bin86-0.16.3 + binutils-2.13 + bison-1.35 + diffutils-2.8.1 + file-3.39 + gawk-3.1.1 + gcc-3.2 + gettext-0.11.5 + groff-1.18 + gzip-1.2.4b.patch + lfs-bootscripts-1.10 + linux-2.4.19 + MAKEDEV-1.7 + man-1.5k + man-pages-1.52 + modutils-2.4.19 + ncurses-5.2-2.patch + perl-5.8.0 + psmisc-21 + texinfo-4.2 + textutils-2.1 + util-linux-2.11u * Toegevoegd: + ed-0.2.patch + fileutils-4.1.patch + gawk-3.1.1-2.patch + gcc-3.2.patch + gcc-3.2-nofixincludes.patch + glibc-2.2.5-2.patch + gzip-1.2.4b.patch + kbd-1.06-3.patch + man-1.5k.patch + ncurses-5.2.patch + procps-2.0.7.patch + sh-utils-2.0-hostname.patch + vim-6.1.patch + zlib-1.1.4 * Verwijderd: + gzip-1.2.4a.patch + kbd-1.06-2.patch + reiserfsprogs-3.x.1b * 28 september 2002 [gerard]: Hoofdstuk 05 - GCC: Toegevoegd de nofixincludes patch ter voorkoming van uitvoering van dat script in Hoofdstuk 05. Het moet wel worden uitgevoerd in Hoofstuk 06, dus hebben we het nodig als een aparte patch. * 28 september 2002 [gerard]: Hoofdstuk 06 - Man: De sed constructie vervangen door een reguliere patch. * 28 september 2002 [gerard]: Hoofdstuk 06 - Bzip2: Verwijderd de PREFIX=/usr uit de opdracht make install omdat de PREFIX reeds standaard is ingesteld op /usr. * 28 september 2002 [gerard]: Hoofdstuk 06 - Vim: Verwijderd de FHS compliance notes. Ze zijn gefingeerd omdat Vim in het geheel geen gebruik maakt van localstatedir. * 28 september 2002 [timothy]: De patch met grammaticale correcties toegepast van Bill Maltby. "$LFS" gewijzigd in "LFS" wanneer het gaat over de omgevingsvariabele LFS. * 23 september 2002 [timothy]: De patch met aan grammaticale gerelateerde patches toegepast van Bill Maltby. * 23 september 2002 [timothy]: Toegevoegd - voor tar opties (ter verduidelijking). * 22 september 2002 [timothy]: Hoofdstuk 06: De patch met grammaticale correcties toegepast van Alex. * 21 september 2002 [timothy]: Hoofdstuk 02: De patch toegepast met grammaticale correcties van Bill Maltby. * 21 september 2002 [timothy]: Hoofdstuk 06 - Zlib: mv shared lib naar /lib. * 20 september 2002 [timothy]: Hoofdstuk 05 - GCC: Verwijderd de vlag --enable-threads=posix aangezien we in dit hoofdstuk geen C++ bouwen. * 18 september 2002 [timothy]: Hoofdstuk 05 - Introductie: Verwijderd paragraaf over statisch linken aangezien het misleidend schijnt te zijn en in detail wordt behandeld in Waarom statisch. * 18 september 2002 [timothy]: Hoofdstuk 08 - Linux: Verwijderd cd opdracht. * 18 september 2002 [timothy]: Hoofdstuk 06 - Ncurses: Verwijderd oude verklaring van de opdracht mv /lib/*.a /usr/lib. * 13 september 2002 [gerard]: Hoofdstuk 06 - Shadow: Toegevoegd --libdir=/usr/lib aan de configure script opties. Op deze manier wordt een juiste libshadow.la gegenereerd. Ook de opdracht mv gewijzigd om alle libshadow.so* bestanden te verplaatsen naar de /lib directory. De lib*a bestanden staan reeds in /usr/lib. * 13 september 2002 [gerard]: Hoofdstuk 06 - Man: Toegevoegd een andere regex aan de sed opdracht die het bestand man.conf aanpast. De toegevoegde regex plaatst een commentaarteken voor de regel MANPATH /usr/man welke zorgt voor overtollige resultaten bij het gebruik van de opdracht whatis * 13 september 2002 [gerard]: Hoofdstuk 06: Toegevoegd de Linux Threads Man Pages installatie na de installatie van Perl. * 12 september 2002 [gerard]: Hoofdstuk 06 - Maak de mtab link aan: Van de opdracht ln ln -sf gemaakt, zodat het bestaande /etc/mtab bestand, aangemaakt door de opdracht mount, zal worden verwijderd voordat het als een symlink opnieuw wordt aangemaakt. * 12 september 2002 [gerard]: Hoofdstuk 06 - Sh-utils: Toegevoegd de sh-utils-hostname patch die de compilatie onderdrukt van het hostname programma. Dit is gedaan omdat het hostname programma van het net-tools package superieur is aan deze versie. * 12 september 2002 [gerard]: Hoofdstuk 06 - Gawk: De Gawk patch bijgewerkt. Het wijzigt nu ook de directorylokatie van DDEFPATH. * 12 september 2002 [gerard]: Hoofdstuk 06 - Procps: Toegevoegd patch die een locale probleem corrigeert dat ervoor zorgt dat top onder bepaalde lokale instellingen crasht. * 12 september 2002 [timothy]: Hoofdstuk 04 - Aanmaken van een bestandssysteem: Verwezen naar alternatieve bestandssystemen in BLFS. * 12 september 2002 [gerard]: Verwijderd alle overbodige /usr/lib/*.so symbolische links uit library installaties. * 12 september 2002 [gerard]: Bijgewerkt tot lfs-bootscripts-1.10 * 12 september 2002 [gerard]: Hoofdstuk 06 - Configureer Sysvinit: Changed the sulogin line to once instead of having it respawn. This way it'll behave as expected (ie: a CTRL+D will continue instead of restart sulogin). * 12 september 2002 [gerard]: Hoofdstuk 06 - GCC: Toegevoegd de --enable-clocale=gnu optie to ensure the proper locale mode is used by the C++ libraries. * 11 september 2002 [timothy]: Preface: Grammatic wijzigingen. * 8 september 2002 [timothy]: Hoofdstuk 06: Applied Alex's grammar wijzigingen patch. * 7 september 2002 [timothy]: Hoofdstuk 06 - Gzip: Toegevoegd gzip-1.2.4b.patch. * 7 september 2002 [timothy]: Hoofdstuk 05 - Textutils: Toegevoegd re_max_failures2 voor oude hostsystemen. * 2 september 2002 [timothy]: Hoofdstuk 06 - Bash: Verwijderd aanmaak van sh symlink. Aanmaken van de bash en sh symlinks: Toegevoegd /bin/bash symlink, symlinked sh naar bash. Gzip, Sysvinit, Util-Linux: cp opdracht ingekort. Makedev: Verwijderd /bin/bash aanmaak en verwijdering. Man: Aangepast sed statement om less aanroep te bewerken, zodat SGR werkt. * 1 september 2002 [timothy]: Hoofdstuk 06 - About debugging symbols: Verwijderd info. about stripping /static. Man: Toegevoegd sed statement to prevent groff from using SGR escape sequences. * 1 september 2002 [timothy]: Hoofdstuk 05 - Installeer alle software als een onbevoorrechte gebruiker: Toegevoegd $CC='gcc -s' om de compilatie van symbolen in static packages achterwege te laten. * 30 augustus 2002 [timothy]: Hoofdstuk 06 - Makedev: Plaats rm /bin/bash na device aanmaak. Perl: Verwijderd informatie over de oude patch. * 30 augustus 2002 [timothy]: Hoofdstuk 05 - GCC: Weer toegevoegd HAVE_GAS_HIDDEN; --enable-__cxa-atexit verwijderd wat onjuist was en niet nodig was in dit hoofdstuk; informatie over de patch toegevoegd. * 26 augustus 2002 [gerard]: Toegevoegd een nieuwe Glibc patch en een GCC patch geïntroduceerd. * 26 augustus 2002 [gerard]: Bijgewerkt tot automake-1.6.3, gcc-3.2, groff-1.18, makedev-1.7, perl-5.8.0, util-linux-2.11u * August 22nd, 2002 [timothy]: Appendix: Toegevoegd ontbrekende URL's naar patches. * 18 augustus 2002 [timothy]: Hoofdstuk 05 & 06: Waar mogelijk ln -sf gewijzigd in ln -s. * 18 augustus 2002 [timothy]: Hoofdstuk 06 - Binutils: cp libiberty.h na installatie, aangezien het voor bepaalde software nodig is. Shadow: opdracht toegevoegd om het programma groups geïnstalleerd door Shadow te verwijderen omdat Sh-utils een (beter) groups programma installeert. * 18 augustus 2002 [timothy]: Hoofdstuk 05 - Sh-utils: Weer toegevoegd de sh-utils-2.0.patch. * 16 augustus 2002 [markh]: Hoofdstuk 06 - Verplaats man-pages naar net na de kernelheaders installatie. * 15 augustus 2002 [markh]: Hoofdstuk 06 - Verplaats de MAKEDEV installatie naar voor glibc en verwijder de tijdelijke aanmaak van /dev/null aangezien we dit niet meer nodig hebben. * 15 augustus 2002 [timothy]: Hoofdstuk 04 - Voorbereiden van een nieuwe partitie: vermeld dat een swappartitie tussen het LFS en hostsysteem kan worden gedeeld, grammaticale wijzigingen. * 13 augustus 2002 [gerard]: Hoofdstuk 06: Verwijderd de --with-curses switch van de Bash installatie aangezien dit hier niet nodig is. * 9 augustus 2002 [timothy]: Bijgewerkt tot modutils-2.4.19, linux-2.4.19, gettext-0.11.5, binutils-2.13, textutils-2.1. * 9 augustus 2002 [timothy]: Hoofdstuk 06 - Vim: de link alternatieve editors uit hints naar BLFS gewijzigd. * 8 augustus 2002 [gerard]: Hoofdstuk 06 - Ncurses: verwijderd de --disable-termcap configure optie. Termcap is nu standaard gedeactiveerd, dus deze optie is niet nodig (overgebleven van lang geleden toen het nodig was). * 8 augustus 2002 [gerard]: Hoofdstuk 06 - Linux: Toegevoegd de opdracht cp include/asm-generic /usr/include. There are programs which use the files in there, as well as headers in the asm directory may be split up in the future, and put in the asm-generic. * 8 augustus 2002 [gerard]: Appendix A - Gettext: de ontbrekende programmabeschrijving van msgcat toegevoegd. * 4 augustus 2002 [timothy]: Toegevoegd zlib-1.1.4. * 3 augustus 2002 [timothy]: Bijgewerkt tot man-pages-1.52, man-1.5k, gettext-0.11.4, modutils-2.4.18. * 29 juli 2002 [timothy]: Verwijderd Reiserfsprogs. Bijgewerkt tot util-linux-2.11t and file-3.39. * 29 juli 2002 [timothy]: Hoofdstuk 04 & 05 - Creating a new partition, Introduction, Why static: grammaticale wijzigingen. Diffutils, Fileutils, Grep, Texinfo: set LDFLAGS=-static before configure instead of as an argument to make. GCC: appended HAVE_GAS_HIDDEN to auto-host.h. * 29 juli 2002 [timothy]: Hoofdstuk 06 - Glibc: added --disable-profile flag. * 29 juli 2002 [timothy]: Hoofdstuk 08 - Linux: added information about modules and kernel documentation. * 29 juli 2002 [timothy]: Hoofdstuk 09 - Rebooting the system: added a command to remove the static directory. * 8 juli 2002 [timothy]: Hoofdstuk 09 - Rebooting the system: Pointed to BLFS as the next step. * 3 juli 2002 [timothy]: Hoofdstuk 06 - Sysvinit: Simplified the sed command and updated the installation description because init now prints "Sending processes" instead of "Sending all processes". * 2 juli 2002 [markh]: Internal change - Made all patches use a &package-patch-version; entity and removed all hardcoding of patch versions. * 30 juni 2002 [timothy]: Bijgewerkt tot man-pages-1.51 en automake-1.6.2 * 24 juni 2002 [timothy]: Hoofdstuk 06 - Shadow, Util-linux, LFS-Bootscripts: Inhoud van package bijgewerkt. * 23 juni 2002 [timothy]: Hoofdstuk 05 & 06 - Net-tools, Perl, Texinfo, Autoconf, Automake, File, Libtool, Bin86, Vim, Linux, Bison, Less, Man-pages, Groff, Bzip2, E2fsprogs, Grep, Lilo, Modutils, Procps, Psmisc, Reiserfsprogs: Inhoud van package bijgewerkt. * 23 juni 2002 [timothy] Hoofdstuk 05 & 06 - M4, Bzip2, File, E2fsprogs: Toegevoegd "last checked against" for uniformity. GCC: Verwijderd i686-specifieke programma's. * 16 juni 2002 [timothy]: Hoofdstuk 06 - Gettext: Inhoud van package bijgewerkt. * 14 juni 2002 [timothy]: Hoofdstuk 05 & 06 - Binutils, Bzip2, Diffutils, Grep: Inhoud van package bijgewerkt. GCC: Beschrijving van c++filt bijgewerkt. * 13 juni 2002 [timothy]: Hoofdstuk 09 - The End: Changed $LFS/etc/lfs-4.0 to $LFS/etc/lfs and put the version number inside this file. * 12 juni 2002 [timothy]: Hoofdstuk 05 - GCC: Modified the build instructions and command explanations to only build the C compiler. The C++ compiler is not needed until after the second GCC build. * 12 juni 2002 [timothy]: Hoofdstuk 06 - Shadow: grammaticale wijzigingen. * 11 juni 2002 [timothy]: Hoofdstuk 05 & 06 - Gawk: Een lijst met inhoud van packages en beschrijvingen aangemaakt. Fileutils: Verwijderd een verwarrende paragraaf over de fileutils patch. GCC: De inhoud van het package bijgewerkt. * 11 juni 2002 [timothy] Alle software: De geschatte benodigde diskruimte bijgewerkt. * 9 juni 2002 [markh]: Hoofdstuk 06 - Creating Directory's: Changed usr,usr/local to just usr/local as we use the -p option to mkdir which will create the usr directory anyways. * 7 juni 2002 [timothy] Hoofdstuk 06 - Reiserfsprogs: een beschrijving voor unpack toegevoegd. * 7 juni 2002 [timothy] Hoofdstuk 02 - Hoe om hulp te vragen: de FAQ genoemd. * 6 juni 2002 [markh] - Hoofdstuk 05 - Tidy up explanations following the /static change. * 5 juni 2002 [timothy]: Preface - Who would not want to read this book: applied a revised version of Scot's grammar patch. * 5 juni 2002 [timothy]: Hoofdstuk 09 - Rebooting the system, Lilo, Bootscripts: named the hint authors. Hoofdstuk 06 - Vim: updated the hint URL. Hoofdstuk 05 - Gawk: om verwarring te voorkomen, vermeld dat de patch in Hoofdstuk 06 zal worden toegepast. * 3 juni 2002 [timothy] Hoofdstuk 01 - FAQ: edited to include reporting typos. * 31 mei 2002 [gerard] Hoofdstuk 05 - Findutils: Toegevoegd de CPPFLAGS...re_max_failures correctie die nodig is op Glibc-2.1 systemen. * 30 mei 2002 [markh]: Hoofdstuk 05 & 06 - Bijgewerkt tot binutils-2.12.1. * 30 mei 2002 [markh]: Hoofdstuk 05 - Bash: Verwijderd sectie over "last two commands executing anyways" because we no longer have the commands referred to there. * 30 mei 2002 [gerard]: Hoofdstuk 06 - Glibc: De diverse sed correcties vervangen door een reguliere patch. * 30 mei 2002 [gerard]: Hoofdstuk 06 - Gawk: De sed correctie vervangen door een reguliere patch. * 30 mei 2002 [gerard]: Hoofdstuk 05 - Fileutils: De sed correctie vervangen door een reguliere patch. * 30 mei 2002 [gerard]: Hoofdstuk 06 - Ed: De sed correctie vervangen door een reguliere patch. * 28 mei 2002 [gerard]: Hoofdstuk 06 - Changing ownership: removed the explicit command to chown /lost+found. This is done by the first command now that proc isn't mounted anymore in hoofdstuk 5. * 27 mei 2002 [gerard]: Bijgewerkt tot ncurses-5.2-2.patch (this patch is smaller than the previously used one). * 26 mei 2002 [gerard]: Bijgewerkt tot: automake-1.6.1, bin86-0.16.3, file-3.38, gawk-3.1.1, gcc-3.1, gettext-0.11.2, modutils-2.4.16, psmisc-21 en util-linux-2.11r. Toegevoegd gcc-3.1 compile fix patches voor ncurses, perl en vim. * 26 mei 2002 [gerard]: Hoofdstuk 05+06 - Binutils: Verwijderd de tooldir instelling uit hoofdstuk 05-binutils, de beschrijving verplaatst naar hoofdstuk 06-binutils. * 26 mei 2002 [gerard]: Hoofdstuk 05 - Gawk & Findutils: de installatie vereenvoudigd door de libexecdir aanpassingen te verwijderen. We kunnen ermee leven dat er een $LFS/static/libexecdir wordt aangemaakt. De gehele $LFS/static directory is is toch tijdelijk, waardoor we ons er niet al te druk om maken hoe het eruit ziet. * 26 mei 2002 [gerard]: Hoofdstuk 06 - Aanmaken van directory's: de opdracht cd / verwijderd en de twee chmod opdrachten gewijzigd om in plaats daarvan gebruik te maken van absolute directorypaden. * 25 mei 2002 [markh]: Hoofdstuk 06 - Een paar kleine correcties met betrekking tot het verwijderen van de $LFS variabele waar het niet is gewenst. * 23 mei 2002 [gerard]: De keep_chap5_and_chap6_sep lfs-hint geïplementeerd. Highlights of the change: toegevoegd findutils en util-linux aan hoofdstuk 5, installed everything from hoofdstuk 5 into $LFS/static and re-ordered the installation of packages in hoofdstuk 6 to prevent hard-wiring the wrong path (bestanden uit $LFS/static). * 23 mei 2002 [gerard]: Appendix A - E2fsprogs: Toegevoegd nog wat meer beschrijvingen. * 23 mei 2002 [gerard]: Appendix A - Bin86: Toegevoegd nog wat beschrijvingen. * 23 mei 2002 [gerard]: Appendix A - Flex: Toegevoegd nog wat beschrijvingen. * 23 mei 2002 [gerard]: Appendix A - Glibc: Toegevoegd nog wat meer beschrijvingen. * 18 mei 2002 [gerard]: Appendix A - E2fsprogs: Toegevoegd nog wat beschrijvingen. * 18 mei 2002 [gerard]: Appendix A - Glibc: Toegevoegd some more beschrijvingen. * 17 mei 2002 [markh]: Changed all chown X.X's to chown X:X's which is less likely to run into problems (according to info chown). * 16 mei 2002 [gerard]: Hoofdstuk 01 - Mirrorsites: Toegevoegd http interface naar FTP mirror op idge.net * 16 mei 2002 [gerard]: Appendix A - Glibc: Toegevoegd nog wat beschrijvingen. * 15 mei 2002 [markh]: Hoofdstuk 05 - Bzip2. De instructies gewijzigd die gaan over hardlinks in oudere distro's ala het Hoofdstuk 05 gzip instructies. * 11 mei 2002 [markh]: Diverse XML correcties; hoofdzakelijk het aanpassen van tags en het verwijderen van de foute in de HTML-uitvoer. * 9 mei 2002 [gerard]: Appendix A - Glibc: De ontbrekende beschrijvingen opgevuld. * 6 mei 2002 [gerard]: Hoofdstuk 06 - Shadow: De symlink lokatie gecorrigeerd van vigr in /usr/sbin * 2 mei 2002 [gerard]: Hoofdstuk 06 - Procps: De twee enkele aanhalingstekens veranderd in twee dubbele aanhalingstekens (de twee enkele aanhalingstekens kunnen worden aangezien voor één dubbel aanhalingteken wat een foutmelding zal veroorzaken). * 2 mei 2002 [gerard]: Gewijzigd de opdrachten cd dir && ln -sf in één enkele opdracht (zoals ln -sf bash $LFS/bin/sh. Hetzelfde geldt voor cd dir && mv/cp constructies die nu zijn vervangen door constructies als mv $LFS/usr/bin/{bzcat,bzip2} $LFS/bin * 2 mei 2002 [markh]: Verwijderd de sectie "Verwijderen van oude NSS library files". * 1 mei 2002 [gerard]: Verwijderd alle Glibc-2.0 workarounds - gzip patch, sh-utils patch, met betrekking tot libnss bestanden. Om de export VAR=VALUE...unset VAR constructies verwijderd en deze gewijzigd in VAR=VALUE ./configure constructies. * 26 april 2002 [marcheerdink]: Hoofdstuk 06 Findutils: toegevoegd libexecdir=/usr/bin aan de make opdracht om een onjuist libexecdir directorypad in updatedb te corrigeren. * 25 april 2002 [gerard]: Hoofdstuk 06 Glibc: een notitie toegevoegd dat je eerst de directory /usr/lib/locale aan moet maken als je handmatig een aantal locales wilt installeren, in plaats van allemaal. * 21 april 2002 [gerard & markh]: Bijgewerkt tot MAKEDEV-1.5 * 12 april 2002 [markh]: Toegevoegd entities/ directory aan cvs en index.xml opgesplitst. * 10 april 2002 [marcheerdink]: Bijgewerkt tot de volgende packages: bison-1.35, diffutils-2.8.1, texinfo-4.2, util-linux-2.11q * 9 april 2002 [marcheerdink]: Toegevoegd --disable-perl-regexp aan de grep configure vlaggen ter voorkoming van het linken met een niet bestaande statische prcr library. * 8 april 2002 [gerard]: Toegevoegd de http://ftp.de.linuxfromscratch.org mirror (als aanvulling op ftp://ftp.de). _________________________________________________________________ Mailinglijsten en archieven De linuxfromscratch.org server host de volgende voor het publiek toegankelijke mailinglijsten: * lfs-support * lfs-dev * lfs-announce * lfs-security * lfs-book * lfs-chat * alfs-discuss * blfs-dev * blfs-book * blfs-support _________________________________________________________________ lfs-support De mailinglijst lfs-support voorziet in ondersteuning aan gebruikers die een LFS systeem aan het opbouwen zijn zover als tot aan het einde van het boek. Verzoeken om hulp bij het installeren van software buiten het basissysteem moeten worden gericht aan de lijst blfs-support. _________________________________________________________________ lfs-dev De lfs-dev mailinglijst bespreekt kwesties die strict zijn gerelateerd aan het LFS-BOOK. Als er problemen met het boek aan het licht komen, een fout of twee moet worden gerapporteerd of er suggesties zijn ter verbetering van het boek, dan is dit de juiste mailinglijst. Verzoeken om hulp moeten worden gericht aan lfs-support of blfs-support. _________________________________________________________________ lfs-announce De lfs-announce lijst is een moderated lijst. Je kunt je erop inschrijven, maar je kunt geen berichten naar deze lijst posten. Deze lijst wordt gebruikt om nieuwe stabiele releases aan te kondigen. Naar de lfs-dev lijst wordt tevens informatie over ontwikkelaarsreleases gepost. Als een gebruiker reeds is ingeschreven op de lfs-dev lijst, dan heeft het weinig zin ook in te schrijven op deze lijst omdat alles wat wordt gepost naar de lfs-announce lijst tevens naar de lfs-dev lijst zal worden gepost. _________________________________________________________________ lfs-security De mailinglijst lfs-security is er voor discussies over aan beveiliging gerelateerde kwesties. Beveiligingskwesties of beveiligingsproblemen met een package gebruikt door LFS, moeten aan deze lijst worden geadresseerd. _________________________________________________________________ lfs-book De lfs-book lijst wordt gebruikt door de LFS-BOOK editors om het onderhoud van het lfs-book te coördineren, zoals XML issues en dergelijke. De feitelijk bespreking over wat er zou moeten worden toegevoegd of verwijderd vindt plaats in lfs-dev. _________________________________________________________________ lfs-chat De lfs-chat lijst is een verblijfplaats voor leden van de LFS gemeenschap (hier behoor jij tevens toe) en er wordt gewoon over van alles gechat. Het hoeft zelfs niet met de computer te maken te hebben. Alles kan, niets is off-topic. _________________________________________________________________ alfs-discuss De lijst alfs-discuss bespreekt de ontwikkeling van ALFS, de afkorting voor Automated Linux From Scratch. Het doel van dit project is een installatiehulpmiddel te ontwikkelen dat automatisch een LFS-systeem installeert, dus het versnellen van de compilatie door het handmatig moeten opgeven van de opdrachten weg te nemen. _________________________________________________________________ blfs-dev Op de blfs-dev mailinglijst wordt de ontwikkeling van het BLFS-BOOK (Boven/na LFS) besproken. Dit is de mailinglijst voor het aanleveren van foutrapportages, en het doen van suggesties voor het verbeteren van het BLFS boek. Verzoeken om hulp bij programma's die buiten de basisopbouw en -setup van LFS vallen (niet die slechts in het BLFS boek) moeten worden gericht aan blfs-support. _________________________________________________________________ blfs-book De lijst blfs-book wordt gebruikt door de BLFS-BOOK editors om het onderhoud van het BLFS boek te coördineren, zoals XML broncode issues en dergelijke. De feitelijke discussies over wat er zou moeten worden toegevoegd en verwijderd zou plaats moeten vinden op blfs-dev. _________________________________________________________________ blfs-support De lijst blfs-support gaat over ondersteuningsverzoeken voor software die niet wordt gecompileerd of geïnstalleerd in het LFS-boek. Alle software buiten wat wordt geïnstalleerd als onderdeel van het LFS basissysteem kan hier worden besproken. _________________________________________________________________ Mailarchieven Alle lijsten worden gearchiveerd en kunnen online worden ingezien op [261]http://archive.linuxfromscratch.org/mail-archives of gedownload vanaf [262]http://ftp.linuxfromscratch.org/mail-archives of [263]ftp://ftp.linuxfromscratch.org/mail-archives. _________________________________________________________________ Hoe naar een lijst te posten Je hoeft niet op een mailinglijst te zijn ingeschreven om er naar te kunnen posten. Als je echter naar een lijst post waarop je niet bent ingeschreven, zorg dan dat je dit in je e-mail vermeld, zodat de leden van de lijst je in de CC: header van een e-mail kunnen plaatsen zodat je de reacties ontvangt. Het postadres van een lijst staat in het formaat lijstnaam@linuxfromscratch.org waarbij lijstnaam één van de lijsten kan zijn in de sectie Beschikbare lijsten. Voorbeelden van postadressen zijn lfs-dev@linuxfromscratch.org, lfs-support@linuxfromscratch.org en blfs-support@linuxfromscratch.org. _________________________________________________________________ Hoe je in te schrijven? Op elk van bovengenoemde mailinglijsten kan worden ingeschreven door een e-mail te sturen naar [264]listar@linuxfromscratch.org met als onderwerp van het bericht subscribe listname. Op meerdere lijsten kan tegelijkertijd worden ingeschreven door van één e-mail gebruik te maken. Dit wordt bewerkstelligd door de onderwerpregel leeg te laten en alle opdrachten in het berichtenvenster van het e-mailbericht te plaatsen. De e-mail komt er ongeveer zo uit te zien: To: listar@linuxfromscratch.org Subject: subscribe lfs-dev subscribe blfs-support subscribe alfs-discuss Nadat de e-mail is verzonden, zal het Listar programma reageren met een e-mailverzoek om bevestiging van het inschrijvingsverzoek. Nadat deze bevestiging is teruggezonden, zal Listar nogmaals een e-mail sturen met het bericht dat de gebruiker is ingeschreven op de lijst(en) met een introductiemelding voor die bepaalde lijst. _________________________________________________________________ Hoe uitschrijven? Om je van een lijst uit te schrijven, stuur je een e-mail naar [265]listar@linuxfromscratch.org en schrijft in de onderwerpregel van het bericht unsubscribe lijstnaam. Met één e-mail kan op meerdere lijsten tegelijkertijd worden uitgeschreven. Dit wordt gedaan door de onderwerpregel van het bericht leeg te laten en alle opdrachten in het berichtenvenster van de e-mail te plaatsen. De e-mail ziet er dan ongeveer zo uit: To: listar@linuxfromscratch.org Subject: unsubscribe lfs-dev unsubscribe blfs-support unsubscribe alfs-discuss Nadat de e-mail is verzonden, zal het Listar programma reageren met een emailverzoek om bevestiging van het uitschrijvingsverzoek. Nadat deze bevestigingsemail terug is gestuurd, zal Listar nogmaals een e-mail terugsturen met de melding dat de gebruiker is uitgeschreven van de lijst(en). _________________________________________________________________ Andere lijstmodi Voor de modi die door een gebruiker kunnen worden ingesteld, is het versturen van een e-mail nodig naar [266]listar@linuxfromscratch.org. De modi zelf worden ingesteld door het schrijven van de van toepassing zijnde opdrachten in de onderwerpregel van het bericht. Zoals de naam al impliceert, vertelt de Set opdracht wat te schrijven om een modus in te stellen. De Unset opdracht vertelt wat te schrijven om een modus uit te zetten. Het woord "lijstnaam" in het voorbeeld met onderwerpheaders hieronder moet worden vervangen door de naam van de lijst waarop de modus moet worden toegepast. Moet meer dan één modus worden ingesteld (voor dezelfde lijst of meerdere lijsten) met een enkele e-mail, dan kan dit worden bewerkstelligd door de onderwerpregel leeg te laten en door in plaats daarvan alle opdrachten in het berichtenvenster van het bericht te schrijven. _________________________________________________________________ Digests Set opdracht: set lijstnaam digest Unset opdracht: unset lijstnaam digest Alle lijsten hebben de digest modus beschikbaar, welke kan worden ingesteld nadat een gebruiker zich heeft ingeschreven op een lijst. In digest modus worden individuele berichten niet meer ontvangen zoals ze naar de lijst worden gepost, maar in plaats daarvan zal per dag één e-mail worden ontvangen met alle berichten die gedurende die dag naar de lijst zijn gepost. Er bestaat nog een tweede digest modus genaamd digest2. Wanneer een gebruiker deze modus heeft ingesteld, zal het de dagelijkse digests ontvangen, maar ook de individuele berichten blijven ontvangen zoals ze naar de lijsten zijn gepost. Voor het instellen van deze modus, vervang je in de opdracht digest door digest2 _________________________________________________________________ Vacation Set opdracht: set lijstnaam vacation Unset opdracht: unset lijstnaam vacation Als een gebruiker een tijdje weggaat of wenst te stoppen met het ontvangen van berichten van de lijsten, maar zich nog niet wil uitschrijven, dan kan hij de inschrijving omzetten in vacation modus. Dit heeft hetzelfde effect als uitschrijven, echter zonder het uitschrijvingsproces door te lopen en dan later het inschrijvingsproces weer door te moeten lopen. _________________________________________________________________ News server Alle mailinglijsten gehost op linuxfromscratch.org zijn ook toegankelijk via de NNTP-server. Alle berichten gepost naar een mailinglijst zullen worden gekopieerd naar de corresponderende nieuwsgroep, en vice versa. De news server is te bereiken op news.linuxfromscratch.org. _________________________________________________________________ FAQ Mocht je fouten aantreffen, vragen hebben, of een typfout in het boek aantreffen, raadpleeg dan alsjeblieft de FAQ (Frequently Asked Questions) pagina. [267]http://www.linuxfromscratch.org/faq/ _________________________________________________________________ Contact informatie Stuur je e-mailberichten alsjeblieft naar één van de LFS mailinglijsten. Zie [268]Hoofdstuk 1 - Mailinglijsten en archieven voor meer informatie over de beschikbare mailinglijsten. Stuur een e-mail naar [269]gerard@linuxfromscratch.org als je Gerard Beekmans persoonlijk nodig hebt. _________________________________________________________________ Hoofdstuk 2. Belangrijke informatie _________________________________________________________________ Over $LFS Lees het volgende alsjeblieft zorgvuldig door: in de loop van dit boek zal de variabele LFS frequent worden gebruikt. $LFS moet te allen tijde worden vervangen door de directory waarop de partitie met het LFS-systeem is gemount. Hoe de partitie aan te maken en waar het te mounten zal zeer gedetailleerd worden uitgelegd in Hoofdstuk 4. Laten we bijvoorbeeld veronderstellen dat de LFS-partitie is gemount op /mnt/lfs. Wanneer je wordt verteld een opdracht als ./configure --prefix=$LFS/static uit te voeren, dan moet je in werkelijkheid uitvoeren ./configure --prefix=/mnt/lfs/static. Het is van belang dat dit gebeurt ongeacht waar het valt te lezen; of het nu gaat om opdrachten die in een shell moeten worden uitgevoerd of dat een bestand wordt bewerkt of aangemaakt. Een mogelijke oplossing is het instellen van de omgevingsvariabele LFS. Op deze wijze kan $LFS letterlijk worden ingevoerd in plaats van het te vervangen door /mnt/lfs. Dit wordt bewerkstelligd door de uitvoering van: export LFS=/mnt/lfs Als je nu wordt verteld een opdracht uit te voeren zoals ./configure --prefix=$LFS/static, dan kun je dit letterlijk overtikken. Je shell zal $LFS vervangen door /mnt/lfs wanneer het de opdrachtregel verwerkt (wanneer je dus de entertoets indrukt na de opdracht te hebben ingetikt). Mocht je van plan zijn $LFS te gaan gebruiken, vergeet dan niet dat je de variabele LFS altijd in moet stellen. Als de variabele niet is ingesteld en in een opdracht wordt gebruikt, dan zal $LFS worden genegeerd en wat er overblijft zal worden uitgevoerd. Een opdracht als echo "root:x:0:0:root:/root:/bin/bash" > $LFS/etc/passwd zonder ingestelde LFS variabele zorgt er dan voor dat het bestand /etc/passwd op je hostsysteem opnieuw wordt aangemaakt. Eenvoudig gesteld: het zal je huidige password databasebestand ruïneren. Een manier om te zorgen dat $LFS te allen tijde is ingesteld is door het toe te voegen aan de bestanden /root/.bash_profile en /root/.bashrc waardoor elke keer als je als root inlogt of met su naar root overschakelt, de LFS variabele wordt ingesteld. _________________________________________________________________ Over SBU's SBU's zijn Static Bash Units en het is onze manier om te identificeren hoeveel tijd het kost om een package te compileren. Waarom gebruiken we geen normale tijden zoals iedereen? Het grootste probleem is dat tijden niet accuraat kunnen zijn, zelfs geen beetje. Zoveel mensen installeren LFS op zoveel verschillende systemen, de tijd die het in beslag neemt om iets te compileren, varieert teveel. Een package kan op het ene systeem 20 minuten in beslag nemen, maar dat package kan 3 dagen in beslag nemen op een ander systeem (dit is geen overdrijving). Dus in plaats daarvan hebben we het over een Static Bash Unit of SBU. Het werkt als volgt: het allereerste package dat je in dit boek compileert is Bash in Hoofdstuk 5 en het zal statisch worden gelinkt. De tijd die het in beslag neemt om dit package te compileren zal de basis zijn en wordt de SBU genoemd. Alle andere compileertijden zijn relatief aan de tijd die het in beslag neemt om Bash te installeren. GCC-3.2 duurt bijvoorbeeld ongeveer 9.5 SBU's en het is bewezen dat dit aantal tamelijk consistent is onder de verschillende systemen. Dus vermenigvuldig 9.5 met het aantal seconden die de installatie van Bash in beslag neemt (de SBU waarde) en je krijgt een vrij dichte benadering van hoelang de compilatie van GCC op je systeem duurt. Noot: We hebben gemerkt dat SBU's niet goed werken op op SMP gebaseerde machines. Dus het gaat niet meer op als je het geluk hebt te beschikken over een SMP-setup. _________________________________________________________________ Waar de gedownloade software te bewaren In de loop van dit document, zullen we ervan uitgaan dat alle packages die zijn gedownload, ergens worden geplaatst onder $LFS/usr/src. Ondanks dat het er niet toe doet waar je de gedownloade packages bewaart, raden we je aan ze in ieder geval te bewaren op de LFS partitie. Dit is zinnig aangezien je die bestanden moet kunnen benaderen wanneer je met chroot $LFS benadert en wanneer je in het LFS systeem boot, alhoewel de toegang waneer eenmaal geboot op andere wijzen zou kunnen geschieden. $LFS/usr/src is gewoon een logische plaats om de broncode te bewaren, maar per definitie geen vereiste. Je kunt zelfs een subdirectory onder $LFS/usr/src aanmaken als je dat wilt voor de opslag van tarballs. Op die wijze kun je de tarballs onderscheiden van tijdelijke builddirectory's, maar nogmaals, dat is aan jou. In het volgende hoofdstuk is een lijst opgenomen met alle packages die moeten worden gedownload. De LFS partitie is nog niet aangemaakt, dus je kunt het daar nog niet opslaan. Sla het voorlopig elders op, en verplaats de packages, zodra de LFS partitie is aangemaakt. _________________________________________________________________ Hoe de software te installeren Voordat je begint het LFS-boek te gaan gebruiken, willen we je erop wijzen dat bij alle hierin gebruikte opdrachten wordt verondersteld dat je gebruik maakt van de bash-shell. Het kan zijn dat de opdrachten werken als je hier geen gebruik van maakt, maar we kunnen dat niet garanderen. Gebruik bash als je het jezelf makkelijk wilt maken. Voordat je feitelijk iets met een package kunt beginnen, moet je het eerst uitpakken. Vaak zijn de packagebestanden ingepakt met tar en gecomprimeerd met gzip of bzip. We zullen niet elke keer beschrijven hoe een archief uit te pakken. We zullen dat eenmaal uitleggen en wel in deze sectie. Om mee te beginnen, ga je naar de directory $LFS/usr/src: cd $LFS/usr/src Als een bestand met tar is ingepakt en met gzip is gecomprimeerd, dan wordt het uitgepakt met behulp van één van de volgende twee opdrachten, afhankelijk van de naam van het bestand: tar -xvzf filename.tar.gz tar -xvzf filename.tgz Is een bestand met tar ingepakt en met bzip2 gecomprimeerd, dan wordt het uitgepakt met: bzcat filename.tar.bz2 | tar -xv Tegenwoordig is op de meeste tar programma's, maar niet op allemaal, een patch toegepast die het mogelijk maakt bzip2 bestanden direct te gebruiken. Ze maken of gebruik van de -I, de -y of de -j parameter, welke hetzelfde werkt als de -z paramater voor de afhandeling van gzip bestanden. De bovenstaande constructie werkt echter altijd ongeacht hoe op je hostsysteem werd besloten de tarpatch toe te passen. Als een bestand slechts is ingepakt in een tar-archief, dan wordt het uitgepakt met: tar -xvf filename.tar Wanneer een archief wordt uitgepakt, zal een nieuwe directory worden aangemaakt onder de huidige directory (en in dit boek wordt verondersteld dat de archieven worden uitgepakt onder de $LFS/usr/src directory). Ga alsjeblieft naar die nieuwe directory voordat je verdergaat met de installatie-instructies. Nogmaals, elke keer dat er in dit boek een package zal worden geïnstalleerd, is het aan jou om het archief met broncode uit te pakken en naar de nieuw aangemaakte directory te gaan. Zo nu en dan zul je te maken krijgen met enkele bestanden, zoals patchbestanden. Deze bestanden zijn gewoonlijk gecomprimeerd met gzip of bzip. Voordat dergelijke bestanden kunnen worden gebruikt, moeten ze worden gedecomprimeerd. Als een bestand is gecomprimeerd met gzip dan wordt het uitgepakt met: gunzip filename.gz Als een bestand is gecomprimeerd met bzip2 dan wordt het uitgepakt met: bunzip2 filename.bz2 Nadat een package is geïnstalleerd, kun je er twee dingen meedoen: of je verwijdert de directory met de broncode, of je behoudt deze. We raden je aan het te verwijderen. Als je dit niet doet en dezelfde broncode later in het boek opnieuw probeert te gebruiken (bijvoorbeeld het hergebruiken van de broncodestructuren van Hoofdstuk 5 in Hoofdstuk 6), dan werkt het wellicht niet zoals je verwacht. De broncodestructuren uit Hoofdstuk 5 bevatten de instellingen van de hostdistributie, die niet altijd van toepassing zijn op het LFS systeem nadat je de chroot omgeving hebt geactiveerd. Zelfs het uitvoeren van iets als make clean garandeert niet altijd een zuivere broncodestructuur. Dus bespaar jezelf een hoop gedoe en verwijder gewoon de directory met broncode onmiddellijk nadat je het hebt geïnstalleerd, maar houdt de gedownloade tarball beschikbaar voor wanneer je het weer nodig hebt. Er is één uitzondering; de directorystructuur met de broncode van de kernel. Houd deze in de buurt aangezien je ze later in dit boek nog nodig hebt wanneer we de kernel gaan configureren en compileren. Voor die tijd is de kernelbroncode niet nodig, dus de broncodestructuur zal niet in de weg staan. Als je echter diskruimte tekort komt, dan kun je de directorystructuur met de broncode van de kernel verwijderen en het weer uitpakken wanneer het nodig is. _________________________________________________________________ Welk Platform? Het is de bedoeling dat LFS zoveel mogelijk platformonafhankelijk is. De ontwikkeling van LFS vindt echter plaats op het x86 platform. We pogen waar mogelijk informatie op te nemen over verschillen voor andere platformen zoals PPC. Als je een probleem ervaart tijdens het compileren welke niet is gerelateerd aan het x86 platform, vraag dan gerust om hulp op de mailinglijsten. Nog beter, als je een oplossing aandraagt voor een bepaald probleem gerelateerd aan één van de andere platformen, laat ons dit dan alsjeblieft weten op de lfs-dev mailinglijst. We zullen het dan (onder voorwaarde dat het werkt) opnemen in het boek. _________________________________________________________________ Hoe om hulp vragen Als je tijdens het gebruik van dit boek problemen tegenkomt, en je probleem niet in de FAQ wordt vermeld, dan zul je bemerken dat de meeste mensen op Internet Relay Chat (IRC) en op de mailinglijsten bereid zijn je te helpen. Een overzicht van de LFS mailinglijsten is te vinden in [270]Hoofdstuk 1 - Mailinglijsten en archieven. Voeg bij je verzoek om hulp zoveel mogelijk relevante informatie toe ter assistentie bij het diagnostiseren en oplossen van je probleem. _________________________________________________________________ Te benoemen Afgezien van een beknopte uitleg van het probleem dat je ervaart, is het volgende essentieel in je verzoek: * de versie van het boek dat je gebruikt (nu 4.0), * het package of de sectie waarmee je problemen ervaart, * de exacte foutmelding of het symptoom dat je krijgt, * of je van het boek bent afgeweken. (Noot: dat vermeldend wil niet zeggen dat we je niet zullen helpen als je bent afgeweken van het boek. Uiteindelijk gaat het bij LFS om keuze. Het zal ons gewoon helpen bij het achterhalen van mogelijke andere oorzaken van je probleem.) _________________________________________________________________ Configureerproblemen Wanneer er iets misgaat gedurende de fase waarbij het configure script wordt uitgevoerd, bekijk dan de laatste regels van de config.log. Het kan zijn dat er in dit bestand fouten staan die zijn aangetroffen tijdens de configuratie die niet op het scherm werden afgedrukt. Voeg de relevante regels in als je besluit om hulp te vragen. _________________________________________________________________ Compileerproblemen Om ons te helpen bij het vinden van de oorzaak van het probleem, zijn zowel de schermuitvoer als de inhoud van diverse bestanden van nut. De schermuitvoer van zowel het ./configure script als de uitvoering van make kan daarbij van pas komen. Neem niet blind het geheel op, maar aan de andere kant, voeg ook weer niet te weinig in. Als voorbeeld is hier de schermuitvoer van make: gcc -DALIASPATH=\"/mnt/lfs/usr/share/locale:.\" -DLOCALEDIR=\"/mnt/lfs/usr/share/locale\" -DLIBDIR=\"/mnt/lfs/usr/lib\" -DINCLUDEDIR=\"/mnt/lfs/usr/include\" -DHAVE_CONFIG_H -I. -I. -g -O2 -c getopt1.c gcc -g -O2 -static -o make ar.o arscan.o commands.o dir.o expand.o file.o function.o getopt.o implicit.o job.o main.o misc.o read.o remake.o rule.o signame.o variable.o vpath.o default.o remote-stub.o version.o opt1.o -lutil job.o: In function `load_too_high': /lfs/tmp/make-3.79.1/job.c:1565: undefined reference to `getloadavg' collect2: ld returned 1 exit status make[2]: *** [make] Error 1 make[2]: Leaving directory `/lfs/tmp/make-3.79.1' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/lfs/tmp/make-3.79.1' make: *** [all-recursive-am] Error 2 In dit geval voegen veel mensen gewoon het laatste deel in, waar wordt aangegeven make [2]: *** [make] Error 1 en het deel daaronder. Dit is voor ons niet genoeg om het probleem te diagnostiseren omdat het ons alleen vertelt dat er iets misging, niet wat er misging. Het gehele deel, zoals in het voorbeeld hiervoor, is wat zou moeten worden ingesloten wil het behulpzaam zijn, omdat daar de opdracht in is opgenomen die werd uitgevoerd en de foutmelding(en) van die opdracht. Een uitstekend artikel over het vragen om hulp op het Internet in het algemeen is geschreven door Eric S. Raymond. Het is online beschikbaar op [271]http://www.tuxedo.org/~esr/faqs/smart-questions.html. Lees het en volg de aanwijzingen in dat document op en je krijgt naar alle waarschijnlijkheid eerder een reactie en ook de hulp die je in feite nodig hebt. II. Deel II - Installeren van het LFS-systeem Inhoudsopgave 3. [272]Te downloaden packages 4. [273]Voorbereiden van een nieuwe partitie 5. [274]Voorbereiden van het LFS systeem 6. [275]Installeren van basissysteemsoftware 7. [276]Instellen van systeemopstartscripts 8. [277]Het LFS systeem opstartbaar maken 9. [278]Het einde _________________________________________________________________ Hoofdstuk 3. Te downloaden packages _________________________________________________________________ Introductie Hieronder tref je een lijst aan met de packages die je moet downloaden voor het samenstellen van een Linux basissysteem. De weergegeven versienummers corresponderen met de softwareversies waarvan bekend is dat ze werken en waarop dit boek is gebaseerd. Alle URL's hieronder refereren naar de LFS hoofdserver. Er zijn verscheidene FTP mirrors beschikbaar van waaraf je de bestanden tevens kunt downloaden. De adressen hiervan zijn te vinden in [279]Hoofdstuk 1 - Mirrorsites. Het LFS FTP archief bevat alleen de versies van de packages die in dit boek worden gebruikt. Je kunt de officiële downloadsites gegeven in [280]Aanhangsel A erop nazien om vast te stellen of er wel of geen nieuwer package beschikbaar is. Als je een nieuwer package download, zouden we het waarderen van je te horen of het je lukte het package zonder problemen te installeren met behulp van de instructies in dit boek. _________________________________________________________________ Te downloaden packages Doorzoek FTP: [281]ftp://ftp.linuxfromscratch.org/ Doorzoek HTTP: [282]http://ftp.linuxfromscratch.org/ Je kunt of één enkele tarball downloaden met alle gebruikte packages om een LFS systeem te compileren: Alle LFS Packages - 105,560 KB: [283]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/lfs-packages-4.0. tar [284]http://ftp.linuxfromscratch.org/lfs-packages/4.0/lfs-packages-4.0 .tar Of de volgende packages individueel downloaden: Autoconf (2.53) - 739 KB: [285]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/autoconf-2.53.tar .bz2 [286]http://ftp.linuxfromscratch.org/lfs-packages/4.0/autoconf-2.53.ta r.bz2 Automake (1.6.3) - 465 KB: [287]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/automake-1.6.3.ta r.bz2 [288]http://ftp.linuxfromscratch.org/lfs-packages/4.0/automake-1.6.3.t ar.bz2 Bash (2.05a) - 1,400 KB: [289]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/bash-2.05a.tar.bz 2 [290]http://ftp.linuxfromscratch.org/lfs-packages/4.0/bash-2.05a.tar.b z2 Bin86 (0.16.3) - 113 KB: [291]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/bin86-0.16.3.tar. bz2 [292]http://ftp.linuxfromscratch.org/lfs-packages/4.0/bin86-0.16.3.tar .bz2 Binutils (2.13) - 9,651 KB: [293]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/binutils-2.13.tar .bz2 [294]http://ftp.linuxfromscratch.org/lfs-packages/4.0/binutils-2.13.ta r.bz2 Bison (1.35) - 613 KB: [295]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/bison-1.35.tar.bz 2 [296]http://ftp.linuxfromscratch.org/lfs-packages/4.0/bison-1.35.tar.b z2 Bzip2 (1.0.2) - 610 KB: [297]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/bzip2-1.0.2.tar.b z2 [298]http://ftp.linuxfromscratch.org/lfs-packages/4.0/bzip2-1.0.2.tar. bz2 Diffutils (2.8.1) - 642 KB: [299]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/diffutils-2.8.1.t ar.bz2 [300]http://ftp.linuxfromscratch.org/lfs-packages/4.0/diffutils-2.8.1. tar.bz2 E2fsprogs (1.27) - 1,176 KB: [301]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/e2fsprogs-1.27.ta r.bz2 [302]http://ftp.linuxfromscratch.org/lfs-packages/4.0/e2fsprogs-1.27.t ar.bz2 Ed (0.2) - 158 KB: [303]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/ed-0.2.tar.bz2 [304]http://ftp.linuxfromscratch.org/lfs-packages/4.0/ed-0.2.tar.bz2 Ed Patch (0.2) - 1 KB: [305]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/ed-0.2.patch.bz2 [306]http://ftp.linuxfromscratch.org/lfs-packages/4.0/ed-0.2.patch.bz2 File (3.39) - 151 KB: [307]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/file-3.39.tar.bz2 [308]http://ftp.linuxfromscratch.org/lfs-packages/4.0/file-3.39.tar.bz 2 Fileutils (4.1) - 1,217 KB: [309]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/fileutils-4.1.tar .bz2 [310]http://ftp.linuxfromscratch.org/lfs-packages/4.0/fileutils-4.1.ta r.bz2 Fileutils Patch (4.1) - 1 KB: [311]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/fileutils-4.1.pat ch.bz2 [312]http://ftp.linuxfromscratch.org/lfs-packages/4.0/fileutils-4.1.pa tch.bz2 Findutils (4.1) - 226 KB: [313]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/findutils-4.1.tar .bz2 [314]http://ftp.linuxfromscratch.org/lfs-packages/4.0/findutils-4.1.ta r.bz2 Findutils Patch (4.1) - 1 KB: [315]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/findutils-4.1.pat ch.bz2 [316]http://ftp.linuxfromscratch.org/lfs-packages/4.0/findutils-4.1.pa tch.bz2 Flex (2.5.4a) - 278 KB: [317]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/flex-2.5.4a.tar.b z2 [318]http://ftp.linuxfromscratch.org/lfs-packages/4.0/flex-2.5.4a.tar. bz2 Gawk (3.1.1) - 1,420 KB: [319]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/gawk-3.1.1.tar.bz 2 [320]http://ftp.linuxfromscratch.org/lfs-packages/4.0/gawk-3.1.1.tar.b z2 Gawk Patch (3.1.1-2) - 1 KB: [321]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/gawk-3.1.1-2.patc h.bz2 [322]http://ftp.linuxfromscratch.org/lfs-packages/4.0/gawk-3.1.1-2.pat ch.bz2 GCC (3.2) - 20,043 KB: [323]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/gcc-3.2.tar.bz2 [324]http://ftp.linuxfromscratch.org/lfs-packages/4.0/gcc-3.2.tar.bz2 GCC Patch (3.2) - 4 KB: [325]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/gcc-3.2.patch.bz2 [326]http://ftp.linuxfromscratch.org/lfs-packages/4.0/gcc-3.2.patch.bz 2 GCC nofixincludes Patch (3.2) - 1 KB: [327]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/gcc-3.2-nofixincl udes-2.patch.bz2 [328]http://ftp.linuxfromscratch.org/lfs-packages/4.0/gcc-3.2-nofixinc ludes-2.patch.bz2 Gettext (0.11.5) - 2,489 KB: [329]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/gettext-0.11.5.ta r.bz2 [330]http://ftp.linuxfromscratch.org/lfs-packages/4.0/gettext-0.11.5.t ar.bz2 Glibc (2.2.5) - 12,114 KB: [331]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/glibc-2.2.5.tar.b z2 [332]http://ftp.linuxfromscratch.org/lfs-packages/4.0/glibc-2.2.5.tar. bz2 Glibc Patch (2.2.5-2) - 8 KB: [333]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/glibc-2.2.5-2.pat ch.bz2 [334]http://ftp.linuxfromscratch.org/lfs-packages/4.0/glibc-2.2.5-2.pa tch.bz2 Glibc-linuxthreads (2.2.5) - 164 KB: [335]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/glibc-linuxthread s-2.2.5.tar.bz2 [336]http://ftp.linuxfromscratch.org/lfs-packages/4.0/glibc-linuxthrea ds-2.2.5.tar.bz2 Grep (2.5) - 545 KB: [337]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/grep-2.5.tar.bz2 [338]http://ftp.linuxfromscratch.org/lfs-packages/4.0/grep-2.5.tar.bz2 Groff (1.18) - 1,739 KB: [339]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/groff-1.18.tar.bz 2 [340]http://ftp.linuxfromscratch.org/lfs-packages/4.0/groff-1.18.tar.b z2 Gzip (1.2.4a) - 179 KB: [341]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/gzip-1.2.4a.tar.b z2 [342]http://ftp.linuxfromscratch.org/lfs-packages/4.0/gzip-1.2.4a.tar. bz2 Gzip Patch (1.2.4b) - 1 KB: [343]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/gzip-1.2.4b.patch .bz2 [344]http://ftp.linuxfromscratch.org/lfs-packages/4.0/gzip-1.2.4b.patc h.bz2 Kbd (1.06) - 559 KB: [345]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/kbd-1.06.tar.bz2 [346]http://ftp.linuxfromscratch.org/lfs-packages/4.0/kbd-1.06.tar.bz2 Kbd Patch (1.06-3) - 3 KB: [347]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/kbd-1.06-3.patch. bz2 [348]http://ftp.linuxfromscratch.org/lfs-packages/4.0/kbd-1.06-3.patch .bz2 Less (374) - 189 KB: [349]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/less-374.tar.bz2 [350]http://ftp.linuxfromscratch.org/lfs-packages/4.0/less-374.tar.bz2 LFS-Bootscripts (1.10) - 27 KB: [351]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/lfs-bootscripts-1 .10.tar.bz2 [352]http://ftp.linuxfromscratch.org/lfs-packages/4.0/lfs-bootscripts- 1.10.tar.bz2 Libtool (1.4.2) - 653 KB: [353]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/libtool-1.4.2.tar .bz2 [354]http://ftp.linuxfromscratch.org/lfs-packages/4.0/libtool-1.4.2.ta r.bz2 Lilo (22.2) - 292 KB: [355]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/lilo-22.2.tar.bz2 [356]http://ftp.linuxfromscratch.org/lfs-packages/4.0/lilo-22.2.tar.bz 2 Linux (2.4.19) - 25,432 KB: [357]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/linux-2.4.19.tar. bz2 [358]http://ftp.linuxfromscratch.org/lfs-packages/4.0/linux-2.4.19.tar .bz2 M4 (1.4) - 249 KB: [359]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/m4-1.4.tar.bz2 [360]http://ftp.linuxfromscratch.org/lfs-packages/4.0/m4-1.4.tar.bz2 Make (3.79.1) - 794 KB: [361]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/make-3.79.1.tar.b z2 [362]http://ftp.linuxfromscratch.org/lfs-packages/4.0/make-3.79.1.tar. bz2 MAKEDEV (1.7) - 8 KB: [363]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/MAKEDEV-1.7.bz2 [364]http://ftp.linuxfromscratch.org/lfs-packages/4.0/MAKEDEV-1.7.bz2 Man (1.5k) - 168 KB: [365]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/man-1.5k.tar.bz2 [366]http://ftp.linuxfromscratch.org/lfs-packages/4.0/man-1.5k.tar.bz2 Man Patch (1.5k) - 1 KB [367]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/man-1.5k.patch.bz 2 [368]http://ftp.linuxfromscratch.org/lfs-packages/4.0/man-1.5k.patch.b z2 Man-pages (1.52) - 569 KB: [369]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/man-pages-1.52.ta r.bz2 [370]http://ftp.linuxfromscratch.org/lfs-packages/4.0/man-pages-1.52.t ar.bz2 Modutils (2.4.19) - 213 KB: [371]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/modutils-2.4.19.t ar.bz2 [372]http://ftp.linuxfromscratch.org/lfs-packages/4.0/modutils-2.4.19. tar.bz2 Ncurses (5.2) - 1,308 KB: [373]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/ncurses-5.2.tar.b z2 [374]http://ftp.linuxfromscratch.org/lfs-packages/4.0/ncurses-5.2.tar. bz2 Ncurses Patch (5.2-2) - 1 KB: [375]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/ncurses-5.2-2.pat ch.bz2 [376]http://ftp.linuxfromscratch.org/lfs-packages/4.0/ncurses-5.2-2.pa tch.bz2 Netkit-base (0.17) - 49 KB: [377]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/netkit-base-0.17. tar.bz2 [378]http://ftp.linuxfromscratch.org/lfs-packages/4.0/netkit-base-0.17 .tar.bz2 Net-tools (1.60) - 194 KB: [379]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/net-tools-1.60.ta r.bz2 [380]http://ftp.linuxfromscratch.org/lfs-packages/4.0/net-tools-1.60.t ar.bz2 Patch (2.5.4) - 149 KB: [381]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/patch-2.5.4.tar.b z2 [382]http://ftp.linuxfromscratch.org/lfs-packages/4.0/patch-2.5.4.tar. bz2 Perl (5.8.0) - 8,416 KB: [383]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/perl-5.8.0.tar.bz 2 [384]http://ftp.linuxfromscratch.org/lfs-packages/4.0/perl-5.8.0.tar.b z2 Procinfo (18) - 22 KB: [385]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/procinfo-18.tar.b z2 [386]http://ftp.linuxfromscratch.org/lfs-packages/4.0/procinfo-18.tar. bz2 Procps (2.0.7) - 153 KB: [387]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/procps-2.0.7.tar. bz2 [388]http://ftp.linuxfromscratch.org/lfs-packages/4.0/procps-2.0.7.tar .bz2 Procps Patch (2.0.7) - 1 KB: [389]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/procps-2.0.7.patc h.bz2 [390]http://ftp.linuxfromscratch.org/lfs-packages/4.0/procps-2.0.7.pat ch.bz2 Psmisc (21) - 172 KB: [391]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/psmisc-21.tar.bz2 [392]http://ftp.linuxfromscratch.org/lfs-packages/4.0/psmisc-21.tar.bz 2 Sed (3.02) - 221 KB: [393]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/sed-3.02.tar.bz2 [394]http://ftp.linuxfromscratch.org/lfs-packages/4.0/sed-3.02.tar.bz2 Shadow (4.0.3) - 760 KB: [395]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/shadow-4.0.3.tar. bz2 [396]http://ftp.linuxfromscratch.org/lfs-packages/4.0/shadow-4.0.3.tar .bz2 Sh-utils (2.0) - 824 KB: [397]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/sh-utils-2.0.tar. bz2 [398]http://ftp.linuxfromscratch.org/lfs-packages/4.0/sh-utils-2.0.tar .bz2 Sh-utils Hostname Patch (2.0-hostname) - 1 KB: [399]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/sh-utils-2.0-host name.patch.bz2 [400]http://ftp.linuxfromscratch.org/lfs-packages/4.0/sh-utils-2.0-hos tname.patch.bz2 Sh-utils Patch (2.0) - 1 KB: [401]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/sh-utils-2.0.patc h.bz2 [402]http://ftp.linuxfromscratch.org/lfs-packages/4.0/sh-utils-2.0.pat ch.bz2 Sysklogd (1.4.1) - 67 KB: [403]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/sysklogd-1.4.1.ta r.bz2 [404]http://ftp.linuxfromscratch.org/lfs-packages/4.0/sysklogd-1.4.1.t ar.bz2 Sysvinit (2.84) - 76 KB: [405]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/sysvinit-2.84.tar .bz2 [406]http://ftp.linuxfromscratch.org/lfs-packages/4.0/sysvinit-2.84.ta r.bz2 Tar (1.13) - 730 KB: [407]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/tar-1.13.tar.bz2 [408]http://ftp.linuxfromscratch.org/lfs-packages/4.0/tar-1.13.tar.bz2 Tar Patch (1.13) - 1 KB: [409]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/tar-1.13.patch.bz 2 [410]http://ftp.linuxfromscratch.org/lfs-packages/4.0/tar-1.13.patch.b z2 Texinfo (4.2) - 1,175 KB: [411]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/texinfo-4.2.tar.b z2 [412]http://ftp.linuxfromscratch.org/lfs-packages/4.0/texinfo-4.2.tar. bz2 Textutils (2.1) - 1,847 KB: [413]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/textutils-2.1.tar .bz2 [414]http://ftp.linuxfromscratch.org/lfs-packages/4.0/textutils-2.1.ta r.bz2 Util-linux (2.11u) - 1,073 KB: [415]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/util-linux-2.11u. tar.bz2 [416]http://ftp.linuxfromscratch.org/lfs-packages/4.0/util-linux-2.11u .tar.bz2 Vim (6.1) - 2,823 KB: [417]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/vim-6.1.tar.bz2 [418]http://ftp.linuxfromscratch.org/lfs-packages/4.0/vim-6.1.tar.bz2 Vim Patch (6.1) - 1 KB: [419]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/vim-6.1.patch.bz2 [420]http://ftp.linuxfromscratch.org/lfs-packages/4.0/vim-6.1.patch.bz 2 Zlib (1.1.4) - 144 KB: [421]ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/zlib-1.1.4.tar.bz 2 [422]http://ftp.linuxfromscratch.org/lfs-packages/4.0/zlib-1.1.4.tar.b z2 Totale omvang van alle packages: 105,560 KB (103.88 MB) _________________________________________________________________ Hoofdstuk 4. Voorbereiden van een nieuwe partitie _________________________________________________________________ Introductie In dit hoofdstuk zal de partitie worden voorbereid waarop we het LFS systeem zullen hosten. We zullen de partitie zelf aanmaken, er een bestandssysteem op aanmaken en het mounten. _________________________________________________________________ Aanmaken van een nieuwe partitie Het is mogelijk LFS op een enkele partitie aan te maken - de partitie waarop je oorspronkelijke distributie is geïnstalleerd. Ondanks dat dit niet is aan te bevelen voor je eerste LFS installatie, kan het handig zijn als je diskruimte te kort komt. Als je de moed hebt, kijk dan eens naar de hint Installeer LFS naast bestaande systemen op dezelfde partitie op [423]http://hints.linuxfromscratch.org/hints/lfs_next_to_existing_syst ems.txt. Voordat we ons nieuwe Linux systeem kunnen gaan samenstellen, hebben we een lege Linux partitie nodig waarop we het kunnen gaan opbouwen. We raden een partitieomvang aan van tenminste 1 GB. Dit voorziet in voldoende ruimte voor het opslaan van de tarballs en het compileren van alle packages. Je zult waarschijnlijk meer ruimte nodig hebben als je van plan bent extra software te installeren en het LFS systeem als je primaire Linux systeem te gaan gebruiken. Als reeds een voor Linux bestemde partitie beschikbaar is, dan kan deze subsectie worden overgeslagen. Aangezien in je systeemgeheugen slechts een beperkte hoeveelheid data tegelijkertijd kan worden bewaard, raden we aan wat diskruimte voor swapbestanden apart te zetten. Een swapbestand is de plaats waar items in het geheugen kunnen worden opgeslagen totdat ze worden aangeroepen. Deze diskruimte kan worden gedeeld tussen je hostsysteem en je LFS-systeem. Als je reeds de beschikking hebt over een swappartitie, dan hoef je er waarschijnlijk niet nog een bij te maken. Anders zou je met behulp van een fdisk programma een swappartitie aan kunnen maken. Je moet in ieder geval de bestemming van de swappartitie (zoals hda2) onthouden aangezien we dit nodig zullen hebben bij het aanmaken van het bestand /etc/fstab. Het programma cfdisk (of een ander fdisk-achtig) programma moet worden opgestart met de van toepassing zijnde harddisk als argument (zoals /dev/hda als op de primaire IDE masterdisk een nieuwe partitie moet worden aangemaakt). Met behulp van dit programma maak je een Linux native partitie aan. Raadpleeg alsjeblieft de documentatie van je fdisk programma (de manpages zijn vaak een prima uitgangspunt) voor informatie over het aanmaken van Linux native partities en het wegschrijven van partitietabellen. De bestemming van je nieuwe partitie moet worden onthouden. Het kan iets zijn als hda11. Naar deze nieuw aangemaakte partitie zal in dit boek worden gerefereerd als de LFS partitie. _________________________________________________________________ Een bestandssysteem aanmaken op de nieuwe partitie Zodra de partitie is aangemaakt, moeten we een nieuw bestandssysteem op die partitie creëren. Tegenwoordig wordt standaard het ext2 bestandssysteem gebruikt, maar het zogenoemde journaling bestandssysteem wordt ook steeds populairder. We veronderstellen dat je een ext2 bestandssysteem wilt aanmaken. Instructies voor andere bestandssystemen zijn echter te vinden op [424]http://beyond.linuxfromscratch.org/view/cvs/postlfs/filesystems.h tml. Voor het aanmaken van een ext2 bestandssysteem, gebruik je de opdracht mke2fs. De LFS partitie wordt als de enige optie aan de opdracht gebruikt en het bestandssysteem wordt aangemaakt. mke2fs /dev/xxx Vervang "xxx" door de bestemming van de partitie (zoals hda11). _________________________________________________________________ De nieuwe partitie mounten Nu we een bestandssysteem hebben aangemaakt, is het klaar voor gebruik. Het enige dat we nog moeten doen om de partitie te kunnen benaderen (zoals voor het lezen van de gegevens vanaf en schrijven van de gegevens naar de partitie) is het te mounten. Als het onder /mnt/lfs is gemount, kan het worden benaderd door met cd naar de /mnt/lfs directory te gaan. In dit boek zal worden verondersteld dat de partitie onder /mnt/lfs werd gemount. Het doet er niet toe voor welke directory wordt gekozen, zorg gewoon dat je onthoudt welke naam je koos. Maak de directory /mnt/lfs aan door uitvoering van: mkdir -p /mnt/lfs Mount nu de LFS partitie met: mount /dev/xxx /mnt/lfs Vervang "xxx" door de bestemming van de partitie (zoals hda11). Deze directory (/mnt/lfs) is de LFS variabele waarover je eerder hebt gelezen in Hoofdstuk 2. Als je van plan was gebruik te maken van de omgevingsvariabele LFS dan moet export LFS=/mnt/lfs nu worden uitgevoerd. Als je besloot meerdere partities voor LFS (bijvoorbeeld $LFS en $LFS/usr) aan te maken, mount ze dan als volgt: mkdir -p /mnt/lfs && mount /dev/xxx /mnt/lfs && mkdir /mnt/lfs/usr && mount /dev/yyy /mnt/lfs/usr Uiteraard vervang je /dev/xxx en /dev/yyy door de van toepassing zijnde partitie bestemmingen. _________________________________________________________________ Hoofdstuk 5. Voorbereiden van het LFS systeem _________________________________________________________________ Introductie In dit hoofdstuk zullen we een minimaal Linux systeem gaan compileren en installeren. Dit systeem zal net genoeg tools bevatten dat we in het volgende hoofdstuk kunnen beginnen met het construeren van het uiteindelijke LFS systeem. De bestanden die in dit hoofdstuk worden gecompileerd, zullen worden geïnstalleerd onder de directory $LFS/static, om ze gescheiden te houden van de bestanden die in het volgende hoofdstuk worden geïnstalleerd. Aangezien de hier gecompileerde packages louter tijdelijk zijn, willen we niet dat ze het spoedige LFS systeem zullen bevuilen. Het belangrijkste te leren wat een Linux systeem doet functioneren is te exact te weten waar elk package voor wordt gebruikt, en waarom de gebruiker of het systeem het nodig heeft. Voor dit doel is een beknopte beschrijving opgenomen van de inhoud van elk package direct na de installatie-instructies. Op veel van onze packages moet een patch worden toegepast voordat ze kunnen worden gecompileerd. We passen alleen patches toe wanneer en waar ze nodig zijn. Dus erger je niet als het lijkt alsof instructies voor een patch ontbreken. Tijdens de installatie van verscheidene packages zul je waarschijnlijk allerlei soorten compileerwaarschuwingen op je scherm voorbij zien scrollen. Deze zijn normaal en ze kunnen gerust worden genegeerd. Het zijn gewoon wat ze aangeven te zijn: waarschuwingen -- voornamelijk over onjuist, maar niet onwettig gebruik van de C of C++ syntax. Het is gewoon dat C-standaards nogal vaak zijn gewijzigd en een aantal packages maakt nog steeds gebruik van de oudere standaard, wat niet zo'n probleem is. Zorg dat de LFS omgevingsvariabele is ingesteld als je besluit er gebruik van te maken voordat je van start gaat. Geef de volgende opdracht: echo $LFS Controleer voor de zekerheid of de uitvoer de juiste directory naar het mountpoint van de LFS partitie bevat (bijvoorbeeld /mnt/lfs). _________________________________________________________________ Waarom statisch linken? (Met dank aan Plasmatic voor het posten van deze tekst naar één van de LFS mailinglijsten waarop dit hoofdzakelijk is gebaseerd.) Bij het maken (compileren) van een programma, worden in plaats van het iedere keer weer opnieuw schrijven van alle functies bij het schrijven van een nieuw programma voor de omgang met de kernel, hardware, bestanden, enz. al deze functies bewaard in een library. glibc, die je later zult installeren, is één van deze belangrijke library's, waarin code staat voor alle basisfuncties die door programma's worden gebruikt, zoals het openen van bestanden, het afdrukken van informatie naar het scherm, en het krijgen van feedback van de gebruiker. Wanneer een programma wordt gecompileerd, worden deze library's met code gelinkt met het nieuwe programma, zodat dit programma gebruik kan maken van de functies in de library. Deze library's kunnen echter nogal groot zijn (libc.a bijvoorbeeld kan vaak zo rond de 2.5 MB zijn), dus wellicht dat je aan het programma geen aparte kopie van elke library wilt hebben gekoppeld. Stel je voor dat je een eenvoudige opdracht hebt als ls waaraan een extra 2.5 MB is gekoppeld! In plaats van de library onderdeel uit te laten maken van het programma, of statisch te linken, wordt de library als een apart bestand opgeslagen, wat alleen wordt geladen wanneer het programma het nodig heeft. Dit is wat we dynamisch linken noemen, aangezien de library dynamisch wordt geladen, op moment dat het programma het nodig heeft. Dus nu hebben we een 1 KB bestand en een 2.5 MB bestand, maar nog steeds hebben we geen ruimte bespaard (behalve misschien RAM totdat de library nodig is). Het werkelijke voordeel van dynamisch linken zit hem in dat we slechts één kopie van de library nodig hebben. Als zowel ls en rm van dezelfde library gebruik maken, dan hebben we geen twee kopieën van de library nodig, aangezien ze beiden de code uit hetzelfde bestand kunnen halen. Zelfs wanneer in het geheugen, delen de twee programma's dezelfde code, in plaats van duplicaten in het geheugen te laden. Dus besparen we niet alleen harddiskruimte, maar ook kostbaar RAM. Als het dynamisch linken zoveel ruimte bespaart, waarom dan alles statisch gelinkt? Dat komt omdat wanneer je met chroot je gloednieuwe (maar zeer onvolledige) LFS omgeving activeert, deze dynamische library's niet beschikbaar zullen zijn, omdat ze zich elders op het systeem in je oude directorystructuur bevinden (/usr/lib bijvoorbeeld) die niet toegankelijk is binnen je LFS root ($LFS). Dus om je nieuwe programma's te kunnen uitvoeren binnen de chroot omgeving, moet je ervoor zorgen dat de library's statisch zijn gelinkt wanneer je ze compileert, vandaar de --enable-static-link, --disable-shared, en -static vlaggen die in Hoofdstuk 5 worden gebruikt. Eenmaal in Hoofdstuk 6 bouwen we als eerste de hoofdset met systeemlibrary's, glibc. Zodra deze is aangemaakt, beginnen we met het opnieuw bouwen van alle programma's die we in Hoofdstuk 5 compileerden, maar ditmaal dynamisch gelinkt, zodat we voordeel kunnen trekken uit de ruimtebesparende mogelijkheden. En dat is waarom je die rare -static vlaggen moet gebruiken. Als je probeert alles zonder deze vlaggen de bouwen, dan zul je er snel genoeg achterkomen wat er gebeurt zodra je de chroot omgeving van je nieuw verminkte LFS systeem activeert. Als je meer wilt weten over Dynamically Linked Libraries, raadpleeg dan een boek of website over programmeren, vooral een Linux gerelateerde site. _________________________________________________________________ Aanmaken van de $LFS/static directory Zoals uitgelegd in de introductie van dit hoofdstuk, zal alles wat we in dit hoofdstuk installeren, worden geïnstalleerd onder de directory $LFS/static. Op deze manier wordt de LFS partitie niet vervuild met een boel tijdelijke bestanden. We hoeven deze directory alleen maar aan te maken, zodat we met de installatie kunnen beginnen. Maak met de volgende opdracht deze directory simpelweg aan: mkdir $LFS/static Wellicht dat je de packages die je in Hoofstuk 3 downloadde naar deze $LFS/static directory wilt verplaatsen, en wellicht een subdirectory genaamd $LFS/static/src aan wilt maken om ze daarin te bewaren. _________________________________________________________________ Installeer alle software als een onbevoorrechte gebruiker Wanneer je gedurende Hoofdstuk 5 bent ingelogd als root, is het mogelijk dat een aantal bestanden op je hostsysteem zullen worden overschreven door degenen die je compileerde en installeerde in Hoofdstuk 5. Er kunnen diverse redenen zijn waarom dit gebeurt, bijvoorbeeld omdat de $LFS omgevingsvariabele niet is ingesteld. Het overschrijven van een aantal bestanden op je hostsysteem zal naar alle waarschijnlijkheid allerlei problemen veroorzaken, dus het is een goed idee gedurende Hoofdstuk 5 te zijn ingelogd als een onbevoorrechte gebruiker. Om ervoor te zorgen dat de omgeving zo zuiver mogelijk is, zullen we een nieuwe gebruiker "lfs" aanmaken die kan worden gebruikt tijdens het bouwen van de statische installatie. Uitvoeren van de volgende opdrachten als root zal een nieuwe gebruiker "lfs" aanmaken: useradd -s /bin/bash -m lfs && passwd lfs Nu moeten we de juiste permissies toekennen aan de directory $LFS/static zodat "lfs" hier naar kan schrijven: chown -R lfs $LFS/static Nu kun je inloggen als gebruiker "lfs". Je kunt dit op twee manieren doen: of op de normale wijze via de console of de display manager, of met su - lfs. Wanneer je als gebruiker "lfs" werkt, typ je de volgende opdrachten om een goede omgeving op te zetten waarin je kunt werken: cat > ~/.bash_profile << "EOF" umask 022 LFS=/mnt/lfs LC_ALL=POSIX CC='gcc -s' export LFS LC_ALL CC EOF source ~/.bash_profile Deze profile zorgt dat de umask is ingesteld op 022 zodat nieuw aangemaakte bestanden en directory's de correcte permissies zullen krijgen. Het is te adviseren deze instelling tijdens je LFS installatie te behouden. Ook zijn de omgevingsvariabelen $LFS, $LC_ALL, en $CC ingesteld. $LFS is reeds in eerdere hoofdstukken uitgelegd. $LC_ALL is een variabele die wordt gebruikt voor internationalisatie. Wanneer je hostdistributie een glibc versie ouder dan 2.2.4 gebruikt, kan de $LC_ALL variabele op iets anders ingesteld dan "C" of "POSIX" tijdens het doorlopen van Hoofdstuk 5 voor problemen zorgen wanneer je de chroot omgeving verlaat van Hoofdstuk 6 en probeert hier naartoe terug te keren. Door dit in te stellen op "POSIX" ("C" is een alias voor "POSIX") zorgen we ervoor dat alles naar verwachting zal werken in de chroot omgeving. $CC is een variabele die we instellen om te voorkomen dat debugging symbolen in onze statische packages worden gecompileerd. Door deze symbolen tijdens de linkfase van de compilatie achterwege te laten, besparen we harddiskruimte en verminderen de tijd die nodig is voor het bouwen ervan. _________________________________________________________________ Installeren van Bash-2.05a Geschatte compileertijd: 1 SBU Geschatte benodigde diskruimte: 24 MB _________________________________________________________________ Installatie van Bash Voor je gaat proberen Bash te installeren, moet je controleren of zich in je distributie de bestanden /usr/lib/libcurses.a en /usr/lib/libncurses.a bevinden. Als je hostdistributie een LFS-systeem is, dan zullen alle bestanden aanwezig zijn als je de instructies in het boek die je nu aan het lezen bent exact hebt opgevolgd. Als beide bestanden ontbreken, dan moet je het ncurses development package installeren. Dit package wordt vaak iets als ncurses-dev genoemd. Als dit package reeds is geïnstalleerd, of je hebt het net geïnstalleerd, controleer dan nogmaals op de twee bestanden. Vaak ontbreekt (nog) het bestand libcurses.a. Als dit zo is dan maak je libcurses.a aan als een symlink door uitvoering van de volgende opdrachten als gebruiker root: ln -s libncurses.a /usr/lib/libcurses.a Nu kunnen we verdergaan. Installeer Bash door uitvoering van de volgende opdrachten: ./configure --enable-static-link \ --prefix=$LFS/static --with-curses && make && make install Als de make install fase eindigt met iets tussen de regels als dit: install-info: unknown option `--dir-file=/mnt/lfs/usr/info/dir' usage: install-info [--version] [--help] [--debug] [--maxwidth=nnn] [--section regexp title] [--infodir=xxx] [--align=nnn] [--calign=nnn] [--quiet] [--menuentry=xxx] [--info-dir=xxx] [--keep-old] [--description=xxx] [--test] [--remove] [--] filename make[1]: *** [install] Error 1 make[1]: Leaving directory `/mnt/lfs/usr/src/bash-2.05a/doc' make: [install] Error 2 (ignored) dan betekent dit waarschijnlijk dat je gebruik maakt van DEbian-2.2 (potato), en dat je een oude versie hebt van het texinfo package. Dit is geen ernstige foutmelding: de info pages zullen worden geïnstalleerd wanneer we bash dynamisch compileren in Hoofdstuk 6, dus je kunt het negeren. Er is gemeld dat de huidige release van Debian (3.0; ook bekend als Woody) dit probleem niet kent. _________________________________________________________________ Verklaring van de opdrachten --enable-static-link: Deze configure optie zorgt dat bash statisch wordt gelinkt. --prefix=$LFS/static: Deze configure optie installeert alle bestanden van Bash onder de $LFS/static directory, wat de /static directory wordt, wanneer in de chroot omgeving of gereboot in LFS. --with-curses: Dit zorgt ervoor dat bash wordt gelinkt met de curses library in plaats van de standaard termcap library die verouderd raakt. Het is niet persé nodig de statische bash te linken met libncurses (het kan voorlopig ook worden gelinkt met een statisch termcap omdat we Bash in Hoofdstuk 6 toch opnieuw zullen installeren, waarbij we gebruik zullen gaan maken van libncurses), maar het is een goede test om erachter te komen of het ncurses package goed is geïnstalleerd. Zo niet, dan zul je later in dit hoofdstuk problemen ondervinden wanneer je het Texinfo package installeert. Voor dat package is ncurses nodig, en termcap kan hierbij niet betrouwbaar worden gebruikt. De &&'s aan het einde van elke regel zorgen dat de volgende opdracht alleen wordt uitgevoerd als de voorgaande opdracht eindigt met een returnwaarde 0 succes aanduidend. In geval al deze opdrachten onder de shell worden gekopieerd en geplakt, dan is het van belang je te verzekeren dat als .configure mislukt, make niet wordt uitgevoerd en evenzo, als make mislukt dat make install niet wordt uitgevoerd, enzovoort. _________________________________________________________________ Inhoud van Bash Als laatste vergeleken met versie 2.05a. _________________________________________________________________ Programmabestanden bash, sh (link naar bash) en bashbug _________________________________________________________________ Beschrijvingen bash bash is de Bourne-Again SHell, een op velerlei gebruikte opdrachtinterpreter onder Unix systemen. Het bashprogramma leest vanaf standaardinvoer, het toetsenbord. Een gebruiker typt iets en het programma zal wat is ingetikt evalueren en er iets mee doen, zoals het uitvoeren van een programma. _________________________________________________________________ bashbug bashbug is een shellscript om de gebruiker te helpen bij het samenstellen en mailen van foutrapporten in standaardformaat met betrekking tot bash. _________________________________________________________________ sh sh is een symlink naar het bashprogramma. Wanneer het als sh wordt aangeroepen, probeert bash zo goed mogelijk het opstartgedrag van historische versies van sh na te doen, en conformeert het bovendien aan de POSIX standaard. _________________________________________________________________ Bash installatie afhankelijkheden Als laatste vergeleken met versie 2.05a. Bash: bash, sh Binutils: ar, as, ld, ranlib, size Diffutils: cmp Fileutils: chmod, cp, install, ln, ls, mkdir, mv, rm Gcc: cc, cc1, collect2, cpp0, gcc Grep: egrep, grep Make: make Gawk: awk Sed: sed Sh-utils: basename, echo, expr, hostname, sleep, uname Texinfo: install-info Textutils: cat, tr, uniq _________________________________________________________________ Installeren van Binutils-2.13 Geschatte compileertijd: 2.05 SBU Geschatte benodigde diskruimte: 160 MB _________________________________________________________________ Installatie van Binutils Van dit package is bekend dat het slecht functioneert wanneer je de standaard optimalisatie vlaggen hebt gewijzigd (waaronder de -march en -mcpu opties). Binutils kan het beste met rust worden gelaten. Daarom raden we aan de omgevingsvariabelen die de standaardoptimalisaties overschrijven, zoals CFLAGS en CXXFLAGS, ze bij het compileren van binutils uit te zetten of aan te passen. Je bent gewaarschuwd. Installeer Binutils door uitvoering van de volgende opdrachten: mkdir ../binutils-build && cd ../binutils-build && ../binutils-2.13/configure --prefix=$LFS/static --disable-nls && make LDFLAGS=-all-static && make install _________________________________________________________________ Verklaring van de opdrachten mkdir ../binutils-build: In de installatie instructies van Binutils wordt aanbevolen een aparte directory voor de compilatie aan te maken in plaats dat het package binnen de bronstructuur wordt gecompileerd. Dus maken we een binutils-build directory aan en werken van daaruit verder. --disable-nls: Deze optie deactiveert de internationalisatie (ook bekend als i18n). We hebben dit voor onze statische programma's niet nodig en nls veroorzaakt vaak problemen wanneer je statisch linkt. LDFLAGS=-all-static: Het instellen van de variabele LDFLAGS op de waarde -all-static zorgt dat binutils statisch wordt gelinkt. _________________________________________________________________ Inhoud van Binutils Als laatste vergeleken met versie 2.12.1. _________________________________________________________________ Programmabestanden addr2line, ar, as, gasp, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings en strip _________________________________________________________________ Beschrijvingen addr2line addr2line zet programma-adressen om in bestandsnamen en regelnummers. Gegeven een adres en een uitvoerbaar bestand, gebruikt het de debugging informatie in het uitvoerbare bestand om erachter te komen welke bestandsnaam en welk regelnummer zijn geassocieerd met een gegeven adres. _________________________________________________________________ ar Het programma ar maakt archieven aan, past ze aan en extraheert ze. Een archief is een enkel bestand bestaande uit een verzameling andere bestanden in een structuur die het mogelijk maakt de oorspronklijke individuele bestanden weer uit op te halen (genaamd leden van het archief). _________________________________________________________________ as as is primair bedoeld voor het assembleren van de uitvoer van de GNU C compiler, gcc, voor gebruik door de linker ld. _________________________________________________________________ gasp gasp is de Assembler Macro Preprocessor. _________________________________________________________________ gprof gprof toont call graph profile data. _________________________________________________________________ ld ld combineert een aantal object- en archiefbestanden, verplaats hun data en bundelt symboolreferenties. Vaak bestaat de laatste stap bij het bouwen van een nieuw gecompileerd uit te voeren programma uit een aanroep naar ld. _________________________________________________________________ nm nm geeft de symbolen uit objectbestanden weer. _________________________________________________________________ objcopy objcopy utility kopieert de inhoud van een objectbestand naar een ander bestand. objcopy gebruik de GNU BFD Library om objectbestanden te lezen en schrijven. Het kan het doelobjectbestand in een ander formaat schrijven dan dat van het bronobjectbestand. _________________________________________________________________ objdump objdump toont informatie over één of meer objectbestanden. De opties bepalen welke specifieke informatie weer te geven. Deze informatie is voornamelijk handig voor programmeurs die werken aan de compilatietools, in tegenstelling tot de programmeurs die gewoon willen dat hun programma wordt gecompileerd en werkt. _________________________________________________________________ ranlib ranlib genereert een index naar de inhoud van een archief, en slaat het in het archief op. De index geeft elk symbool weer gedefinieerd door een lid van het archief wat een verplaatsbaar objectbestand is. _________________________________________________________________ readelf readelf toont informatie over elf type binary's. _________________________________________________________________ size size geeft de sectie omvang --en de totale omvang-- voor elk van de objectbestanden in de lijst met argumenten. Standaard wordt voor elk objectbestand of elke module in een archief één regel uitvoer gegenereerd. _________________________________________________________________ strings Voor elk opgegeven bestand, print string de afdrukbare tekenreeksen die tenminste 4 tekens lang zijn (of het aantal opgegeven met een optie aan het programma) en worden gevolgd door een niet afdrukbaar teken. Standaard print het alleen de tekenreeksen uit de geïnitialiseerde en geladen delen van objectbestanden. Bij bestanden van een ander type, print het de tekenreeksen uit het gehele bestand. strings is voornamelijk handig voor het vaststellen van de inhoud van bestanden die niet bestaan uit tekst. _________________________________________________________________ strip strip verwerpt alle of specifieke symbolen uit objectbestanden. In de lijst met objectbestanden mogen archieven zijn opgenomen. Minstens één objectbestand moet zijn opgegeven. Strip past de bestanden genoemd als argument aan, in plaats dat het aangepaste kopieën onder een andere naam wegschrijft. _________________________________________________________________ Bibliotheekbestanden libbfd.[a,so] en libopcodes.[a,so] _________________________________________________________________ Beschrijvingen libbfd libbfd is de Binary File Descriptor library. _________________________________________________________________ libopcodes libopcodes is een native library voor het omgaan met opcodes en het wordt gebruikt gedurende het bouwen van utility's zoals objdump. Opcodes zijn feitelijk "leesbare tekst" versies van instructies voor de processor. _________________________________________________________________ Binutils installatie afhankelijkheden Als laatste vergeleken met versie 2.11.2. Autoconf: autoconf, autoheader Automake: aclocal, automake Bash: sh Binutils: ar, as, ld, nm, ranlib, strip Diffutils: cmp Fileutils: chmod, cp, ln, ls, mkdir, mv, rm, rmdir, touch Flex: flex Gcc: cc, cc1, collect2, cpp0, gcc Glibc: ldconfig Grep: egrep, fgrep, grep M4: m4 Make: make Gawk: gawk Sed: sed Sh-utils: basename, echo, expr, hostname, sleep, true, uname Texinfo: install-info, makeinfo Textutils: cat, sort, tr, uniq _________________________________________________________________ Installeren van Bzip2-1.0.2 Geschatte compileertijd: 0.07 SBU Geschatte benodigde diskruimte: 6 MB _________________________________________________________________ Installatie van Bzip2 Installeer Bzip2 door uitvoering van de volgende opdrachten: make CC="gcc -static" && make PREFIX=$LFS/static install Alhoewel het strict genomen geen onderdeel uitmaakt van een LFS basissysteem, is het waard te vermelden dat voor Tar een patch kan worden gedownload waarmee met het programma tar met behulp van bzip2/bunzip2 aangemaakte bestanden eenvoudig kunnen worden ge(de)comprimeerd. Met een gewone tar, moet je constructies als bzcat file.tar.bz | tar -xv of tar --use-compress-prog=bunzip2 -xvf file.tar.bz2 gebruiken om bzip2 en bunzip2 met tar te kunnen gebruiken. Deze patch voorziet in de optie -j zodat je een bzip2 archief kunt uitpakken met tar -xvfj file.tar.bz2. Het toepassen van deze patch zal later worden genoemd wanneer het Tar package wordt geïnstalleerd. _________________________________________________________________ Verklaring van de opdrachten make CC="gcc -static": Deze methode gebruiken we om gcc te laten weten dat we bzip2 statisch willen hebben gelinkt. _________________________________________________________________ Inhoud van Bzip2 Als laatste vergeleken met versie 1.0.2 _________________________________________________________________ Programmabestanden bunzip2 (link naar bzip2), bzcat (link naar bzip2), bzcmp, bzdiff, bzegrep, bzfgrep, bzgrep, bzip2, bzip2recover, bzless en bzmore _________________________________________________________________ Beschrijvingen bunzip2 bunzip2 decomprimeert bestanden die zijn gecomprimeerd met bzip2. _________________________________________________________________ bzcat bzcat (of bzip2 -dc) decomprimeert alle opgegeven bestanden naar standaarduitvoer. _________________________________________________________________ bzcmp, bzdiff bzcmp en bzdiff worden gebruikt om het cmp of diff programma aan te roepen voor met bzip2 gecomprimeerde bestanden. _________________________________________________________________ bzegrep, bzfgrep, bzgrep bzegrep, bzfgrep, en bzgrep roepen respectievelijk of egrep, fgrep of grep aan voor met bzip2 gecomprimeerde bestanden. _________________________________________________________________ bzip2 bzip2 comprimeert bestanden door gebruik te maken van het Burrows-Wheeler block sorting tekstcompressie algoritme en Huffman codering. De compressie is over het algemeen aanmerkelijk beter dan dat wordt bereikt met de meer conventionele op LZ77/LZ78 gebaseerde compressors en benadert de performance van de PPM family statistical compressors. _________________________________________________________________ bzip2recover bzip2recover herstelt data van beschadigde bzip2 bestanden. _________________________________________________________________ bzless bzless is een filter waarmee de bestudering van gecomprimeerde of gewone tekstbestanden mogelijk is, waarbij een scherm tegelijkertijd wordt weergegeven op een softcopy terminal, zoals bij less. _________________________________________________________________ bzmore bzmore is een filter waarmee de bestudering van gecomprimeerde of gewone tekstbestanden mogelijk is, waarbij een scherm tergelijkertijd wordt weergegeven op een softcopy terminal, zoals bij more. _________________________________________________________________ Bibliotheekbestanden libbz2.a, libbz2.so (link naar libbz2.so.1.0), libbz2.so.1.0 (link naar libbz2.so.1.0.2) en libbz2.so.1.0.2 _________________________________________________________________ libbz2 libbz2 is de library voor de implementatie van een verliesvrije, blok-sorterende gegevenscompressie, gebruik makend van het Burrows-Wheeler algoritme. _________________________________________________________________ Bzip2 installatie afhankelijkheden Als laatste vergeleken met versie 1.0.1. Bash: sh Binutils: ar, as, ld, ranlib Fileutils: cp, ln, rm Gcc: cc1, collect2, cpp0, gcc Make: make _________________________________________________________________ Installeren van Diffutils-2.8.1 Geschatte compileertijd: 0.39 SBU Geschatte benodigde diskruimte: 10 MB _________________________________________________________________ Installatie van Diffutils Installeer Diffutils door uitvoering van de volgende opdrachten: LDFLAGS=-static CPPFLAGS=-Dre_max_failures=re_max_failures2 \ ./configure --prefix=$LFS/static --disable-nls && make && make install _________________________________________________________________ Verklaring van de opdrachten CPPFLAGS=-Dre_max_failures=re_max_failures2: De variabele CPPFLAGS is een variabele die wordt gelezen door het programma cpp (C PreProcessor). De waarde van deze variabele vertelt de preprocessor elk voorkomen van re_max_failures die het vindt te vervangen door re_max_failures2 voordat het 't bronbestand overdraagt aan de compiler zelf voor de compilatie. Dit package ondervindt problemen bij het statisch linken op systemen waarop een oudere Glibc versie draait en deze constructie corrigeert dat probleem. _________________________________________________________________ Inhoud van Diffutils Als laatste vergeleken met versie 2.8.1. _________________________________________________________________ Programmabestanden cmp, diff, diff3 en sdiff _________________________________________________________________ Beschrijvingen cmp en diff cmp en diff vergelijken beiden twee bestanden en rapporteren de verschillen tussen deze twee bestanden. Beide programma's bieden extra opties waarmee bestanden in verschillende situaties met elkaar kunnen worden vergeleken. _________________________________________________________________ diff3 Het verschil tussen diff en diff3 is dat diff 2 bestanden met elkaar vergelijkt en diff3 3 bestanden met elkaar vergelijkt. _________________________________________________________________ sdiff sdiff voegt twee bestanden samen en geeft interactief als uitvoer het resultaat. _________________________________________________________________ Diffutils installatie afhankelijkheden Als laatste vergeleken met versie 2.7. Bash: sh Binutils: ld, as Diffutils: cmp Fileutils: chmod, cp, install, mv, rm Gcc: cc1, collect2, cpp0, gcc Grep: egrep, grep Make: make Sed: sed Sh-utils: date, hostname Textutils: cat, tr _________________________________________________________________ Installeren van Fileutils-4.1 Geschatte compileertijd: 0.94 SBU Geschatte benodigde diskruimte: 40 MB _________________________________________________________________ Installatie van Fileutils De programma's uit het statisch gelinkte package Fileutils kunnen op bepaalde systemen segmentatiefouten veroorzaken, als op je distributie Glibc-2.2.3 is geïnstalleerd. Het schijnt voornamelijk te gebeuren op machines voorzien van een AMD CPU, maar er zijn ook één of meer gevallen bekend met een Intel systeem. Als je systeem in deze categorie valt, pas dan de patch toe. In een aantal gevallen kan bij het toepassen van deze patch het resultaat zijn dat dit package helemaal niet kan worden gecompileerd, zelfs als je een machine hebt met een AMD CPU waarop Glibc-2.2.3 (of hoger) is geïnstalleerd. Als dat het geval is, dan moet je de directory fileutils-4.1 verwijderen en de tarball nogmaals uitpakken voordat je verdergaat. We geloven dat dit het geval kan zijn als je distributie op een of andere wijze Glibc-2.2.3 heeft aangepast, maar op dit moment zijn details hierover niet beschikbaar. Ter correctie van dit package om het juist op een AMD/Glibc-2.2.3 machine te kunnen installeren, voer je de hierna volgende opdracht uit. Probeer deze correctie niet uit als Glibc-2.2.3 niet op je systeem is geïnstalleerd. Het zal naar alle waarschijnlijkheid resulteren in allerlei soorten compileerproblemen. patch -Np1 -i ../fileutils-4.1.patch Installeer Fileutils door uitvoering van de volgende opdrachten: LDFLAGS=-static \ ./configure --disable-nls --prefix=$LFS/static && make && make install Zodra je Fileutils hebt geïnstalleerd, kun je testen of het probleem aangaande segmentatiefouten is voorkomen door uit te voeren: $LFS/static/bin/ls. Als dit werkt, dan is het in orde. Zo niet, dan moet je de installatie opnieuw uitvoeren, met de patch als je die niet gebruikte, en zonder de patch als je deze wel gebruikte. _________________________________________________________________ Verklaring van de opdrachten patch -Np1 -i ../fileutils-4.1.patch: Dit wordt gebruikt voor het corrigeren van een probleem bij het statisch compileren van fileutils op glibc 2.2.3 systemen. Als dit niet wordt gedaan, dan bestaat de mogelijkheid dat alle fileutils programma's segmentatiefouten veroorzaken zodra de chroot omgeving in Hoofdstuk 6 wordt geactiveerd. _________________________________________________________________ Inhoud van Fileutils Als laatste vergeleken met versie 4.1. _________________________________________________________________ Programmabestanden chgrp, chmod, chown, cp, dd, df, dir, dircolors, du, install, ln, ls, mkdir, mkfifo, mknod, mv, rm, rmdir, shred, sync, touch en vdir _________________________________________________________________ Beschrijvingen chgrp chgrp wijzigt de groep van elk gegeven bestand in een benoemde groep, wat een naam van een groep kan zijn of een numeriek groeps-ID. _________________________________________________________________ chmod chmod wijzigt de permissies van elk gegeven bestand overeenkomstig de modus, wat een symbolische representatie kan zijn van de te maken wijzigingen of een octaal getal dat het bitpatroon voorstelt voor de nieuwe permissies. ____