Beyond Linux From Scratch

BLFS & X- window system: de beproeving.

Door Sjaaksken op vrijdag 23 mei 2014 15:36 - Reacties (9)
CategorieŰn: BLFS, XORG, Views: 2.796

Na het installeren van de belangrijkste BLF paketten, komt pas de echte beproeving: het installeren van een grafische omgeving. Enter: the X-windows system, het Úchte werk. Dat merk je al vanaf de eerste stap: het klaarzetten voor de installatie van de Xorg Protocol headers. Standaard wordt deze installatie in de folder /usr gezet, maar om correct te zijn pak je beter een subfolder (mijn idee was om /usr/X11 te gebruiken zoals dit voor veel distributies het geval is). De stappen die je dient te nemen om de installatie folder te veranderen zijn echter heel warrig geschreven. Zo moet je zelf een aantal keer deze installatiefolder configureren. Dit laat veel ruimte voor fouten. In mijn geval ben ik vier maal moeten herbeginnen omdat de Xorg protocol headers niet gevonden konden worden na installatie. Na een zorgvuldige controle van elke lijn in de voorbereiding van deze installatie, werden de protocol headers correct gevonden. Extra moeilijkheid in mijn geval was het feit dat ik in een chroot-omgeving compileer (en dus sommige environment variabelen handmatig moet instellen).

Eens de environment variabelen correct geconfigureerd raken, lukt het uiteindelijk om de x-org paketten te installeren. Zelfs de installatie van de beeld driver (intel in mijn geval) verliep vlekkeloos. Maar daarna botste ik echter weer op een probleem: bij de pagina x-org drivers wordt er verklaard dat er tenminste ÚÚn werkende driver ge´nstalleerd moet worden. Na het succesvol installeren van de intel-driver kon ik - dacht ik - aannemen dat dit voldoende was. Echter verder beneden op die pagina staan de belangrijke input-drivers. Indien je deze niet volledig installeert, kan je wel in 'X' booten maar werkt je input niet meer, en rest er niets anders dan herstarten. Weeral een stukje van de puzzel die je zelf moet leggen.

De xterm sessie ziet er wel heerlijk oldskool uit:
Xorg-2014-04-24 xterm

Nu is xterm alleen natuurlijk niet voldoende. Mijn eerstvolgende doel: KDE (gewoon omdat dit voor GNOME in het BLFS boek staat). Daarvoor zijn zo goed als alle X-libraries vereist. Verwacht je maar aan een hele resem paketten en weinig visueel resultaat. Maar als je op dit punt aangekomen bent, is dat natuurlijk niets nieuws. Hetzelfde geldt voor de KDE core paketten. Tegen dat je hier door geworsteld bent, los je compileer problemen op alsof het niets meer is. Een heel arsenaal aan zoekmiddelen geven altijd wel die ene oplossing voor een compileer probleem, waardoor je weer een paketje verder kan gaan. En op het einde van de tunnel: licht.
Gegarandeerd een glorieus moment, die eerste keer dat je kde kan opstarten.

kraaknieuw: KDE eerste start
KDE system monitor
KDE start menu


Een kraaknieuwe installatie, voelt een beetje aan alsof je een nieuw speeltje krijgt. Ik heb ervoor gekozen om steeds zoveel mogelijk functionaliteit in de paketten te compileren, dus met zoveel mogelijk 'optional' dependencies ge´nstalleerd. Dat vergt extra tijd maar is natuurlijk wel (eindelijk) visueel merkbaar, daar de paketten gebruik kunnen maken van systeem notificaties en veel meer met elkaar integreren. Wat je ook kan doen is zo snel mogelijk de KDE core paketten installeren en achteraf de rest installeren, dan moet je natuurlijk nog best de core paketten eens achteraf hercompileren. KDE werkt lekker snel, neemt momenteel maar 170 mb geheugen in. Next: GNOME....

BLFS: the scenic route!

Door Sjaaksken op woensdag 7 mei 2014 16:36 - Reacties (6)
Categorie: BLFS, Views: 3.161

Na de initiŰle overwinning op LFS kon ik het succes proeven. BLFS werd het nieuwe doel, met als persoonlijke target om een volledig werkende graphische omgeving te compileren. Nu LFS geen geheimen meer heeft, kan dit niet moeilijk zijn toch?

Fout. BLFS is geen procedure zoals je die met LFS van begin tot eind stap voor stap volgt. Meer nog, buiten de rangschikking van de paketten per hoofdstuk (netwerk, general libs,.. ) en de vereiste 'dependencies' per pakket heb je bijna geen leidraad om aan een BLFS te beginnen. Toegegeven, je leert veel bij door het zelf uit te moeten zoeken en dat is deels ook de bedoeling van BLFS, maar de kans om fouten te maken, en vooral om vast te komen zitten, is enorm groot. Gelukkig wordt er momenteel wel werk gemaakt van een nieuwe wiki om de dependencies beter te rangschikken.

Buiten de dependencies is er natuurljik nog het probleem van het ingeven van de juiste commando's voor het configureren en compileren van paketten alsook het aanmaken van systeemwijde config bestanden. Overtypen is vragen om problemen, vreemd genoeg blijft het boek BLFS echt heel vaag over wat de beste methode is om deze code over te nemen van het boek. Ergens wordt er gewag gemaakt van een tekstbrowser te gebruiken (daar je nog geen gui omgeving hebt), maar hiervoor ontbreekt vooral een duidelijke 'how to' en meer nog, het configureren van een wifi verbinding wordt zo goed als volledig buiten beschouwing gelaten, zelfs een gewone lan verbinding via dhcp wordt niet concreet overlopen. Hier laat het boek toch al wel enkele grote steken vallen. Ikzelf heb na eindeloos code overtypen de stap gemaakt naar het werken in een chroot omgeving, net zoals met LFS het geval was. Na enig opzoekingswerk online bleek dit mogelijk te zijn, echter voor sommige paketten kom je daarmee in de problemen en dien je alsnog rechtstreeks in je (B)LFS systeem te booten (oa. voor de paketten die de random number generator /dev/urandom nodig hebben). Een beetje duidelijkheid hieromtrent zou welkom zijn in het begin van het boek, en de eerste stappen in BLFS zouden eigenlijk gericht moeten zijn om zo snel mogelijk een werkende internetverbinding en een tekstbrowser op te zetten.

Een ander euvel is dat het versie nummer van BLFS veranderde tijdens mijn build. Voor de laatste versie gebruikt men een generieke URL. Als je deze generieke URL opslaat kom je dus zonder het te weten op een andere, nieuwere versie van BLFS terecht. Door de zeer lange build-tijd van het systeem zou je toch verwachten dat dit vermeden zou worden door geen generieke url's te gebruiken maar effectief naar het versienummer te verwijzen. Door het installereren van nieuwere paketten, kan je later in de problemen komen door kleine verschillen in de nieuwere versies, waardoor je soms een andere versie van het pakket dient te downloaden en te compileren. Complexe materie dus, goed kijken of er geen nieuwe versie van BLFS uitgekomen is is dus de boodschap, ofwel altijd de link naar het expliciete versienummer van BLFS gebruiken.

Een goed idee tijdens het bouwen van BLFS is om een tabel aan te maken met de paketten die je al gebouwd hebt. Zonder een dergelijke lijst is het praktisch onmogelijk om aan de wirwar van paketten en dependencies uit te kunnen geraken. Ikzelf heb een rekenblad gemaakt met verschillende tabbladen, waar ik het onderscheid gemaakt heb tussen ge´nstalleerde paketten, paketten die een 'unmet dependency' hebben (tijdelijk) en paketten die ik later nog eens dien te hercompileren, aangezien je het pakket zelf al in een vroeg stadium van je BLFS build nodig hebt, maar er veel recommended paketten gebruik van maken. Door te hercompileren vergroot je de bruikbaarheid van deze paketten. Dubbel werk, en het is niet verplicht maar aangezien je toch al zoveel moeten compileren hebt om aan een BLFS te geraken, kost dit echt niet veel moeite.

Elk bladzijde in het BLFS boek heeft dezelfde structuur: je hebt je pakket, de downloadlink en daaronder de dependencies: required, recommended en optional. Alle "Required" dependencies zijn natuurlijk verplicht om eerste te installeren, zoniet kom je in de problemen (meestal al tijdens de configuratie van de compilatie). "Recommended" betekent dus dat je deze ofwel best eerst installeert, ofwel beslist om later hetzelfde pakket nog eens te compileren. In sommige gevallen heb je best wel veel "Recommended" dependencies dus kan je beter later nog eens hercompileren.

Iets om goed in het oog te houden zijn de versie nummers, van sommige paketten worden er twee verschillende versies gecompileerd (gstreamer0.10 en gstreamer1.0, etc..) Soms trekken deze versienummers zo hard opeen dat je bij het configureren van een pakket, zelfs met lijst van ge´nstalleerde paketten, je toch soms je hoofd breekt over het feit dat er een noodzakelijk pakket niet ge´nstalleerd is. Het kost veel moeite om in te zien dat er dan een cijfertje verschil zit in het versienummer en dat er een tweede pakket bestaat dat nog ge´nstalleerd dient te worden. Je grijze hersenmassa wordt trouwens wel steeds aan het werk gezet.

Wanneer kan je nu besluiten dat je BLFS af is? Voor sommigen is dat als alle paketten ge´nstalleerd zijn, voor anderen betekent het dat je een draaiende gui omgeving zoals Gnome of KDE hebt. Je kan eigenlijk al spreken van een BLFS zodra je een minimale extra functionaliteit ge´nstalleerd hebt op je bestaande LFS build. Een BLFS kan dus alles zijn, een firewall, een router, een NAS -systeem of alles tegelijk. In mijn geval ga ik voor een volledig draaiende desktop-omgeving. Meer daarover in een volgende post.

edit: kleine correcties