Een usb-stick met Ubuntu’s live cd is erg handig om op elke computer je favoriete distributie te gebruiken. Maar het wordt nóg leuker wanneer je die cd eerst helemaal aan jouw wensen aanpast! In deze workshop leggen we stap voor de stap uit hoe je dat precies doet.

Wil je serieus aan de slag met Ubuntu’s live-omgeving? Dan kan je er bijna niet omheen om die eerst aan te passen. De kans is immers klein dat het standaard iso-bestand alle applicaties bevat die jij nodig hebt. Misschien mis je enkele -voor jou essentiële- programma’s of wil je overbodige programma’s verwijderen. Ook allerlei instellingen van het systeem, de desktopomgeving of individuele programma’s wil je wellicht aanpassen. Dat is allemaal mogelijk, al zijn sommige zaken meer geschikt om pas achteraf te wijzigen (zie kader: Persistent storage). 

In deze workshop vertrekken we van een standaard iso-image dat we downloaden van http://www.ubuntu.com/download/desktop (Ubuntu Desktop 16.04 LTS amd64 in ons geval). Je kan ook volledig van nul een Ubuntu live cd aanmaken. Dat is een behoorlijk omslachtige procedure, die enkel is weggelegd voor gevorderde gebruikers. Een bestaand iso-bestand aanpassen, is immers veel eenvoudiger. Ben je niet zo’n fan van de Unity-interface? Download dan één van de andere Ubuntu-images (zoals Kubuntu of Xubuntu) om deze workshop te volgen. Enige kennis van de commandline is wel vereist, ongeacht welk image je gekozen hebt.

 

Persistent storage

Wanneer je een bootable usb-stick aanmaakt voor Ubuntu, krijg je de optie om persistent storage in te schakelen. Je usb-stick bestaat dan uit twee partities: een bootable partitie van ongeveer 1GB en een lege partitie met de rest van de opslagruimte. Die eerste partitie bevat de inhoud van het iso-bestand en de tweede dient om wijzigingen in de live-omgeving te bewaren. In principe moet je deze workshop dus niet volgen om de live cd aan te passen. 

Ook in het standaard iso-bestand kan je al jouw wijzigingen laten bewaren op de tweede partitie. Toch is een aangepaste live cd nog altijd beter. Om te beginnen is de tweede partitie -in tegenstelling tot de live cd- niet gecomprimeerd. Programma’s die je nadien installeert, nemen dus meer plaats in dan in het iso-bestand. Bovendien is een aangepaste iso gemakkelijker om jouw Ubuntu-versie te delen met meerdere personen of om ze te installeren. De persistent storage-partitie gebruik je het beste alleen voor documenten of instellingen die geregeld wijzigen.

 

Benodigdheden

Controleer eerst of je systeem aan de volgende eisen voldoet:

•Je gebruikt het beste exact dezelfde Ubuntu-versie als die van de live cd die je wilt aanpassen. In principe kan je deze workshop ook volgen met andere versies of zelfs met andere distributies, maar in zeldzame gevallen geeft dit problemen. In elk geval moet de architectuur van jouw systeem overeenkomen met die van de live cd (32- of 64-bits). Een andere optie is om je PC te booten met de Ubuntu live cd, een externe schijf (met ext3- of ext4-bestandsysteem) aan te koppelen en in die omgeving de live cd aan te passen;

•De pakketten squashfs-tools en genisomage zijn geïnstalleerd;

•Qua schijfruimte heb je minstens 8GB nodig om het iso-bestand van Ubuntu 16.04 Desktop aan te passen. Je moet immers het iso-bestand downloaden (1.4GB), het bestandssysteem erin decomprimeren (3.9GB) en opnieuw comprimeren (1.4GB) en tot slot je eigen iso aanmaken (1.4GB). Installeer je veel extra pakketten, dan heb je uiteraard meer opslagruimte nodig!

 

Op verkenning

Heb je Ubuntu’s iso-bestand gedownload? Ga dan naar de Downloads-map, klik rechts op het iso-bestand en kies Openen met > Schijfkopiekoppelaar. In het volgende venster kies je de optie Map openen om de inhoud van het iso-bestand te bekijken. Klik vervolgens rechts op een lege plaats in het venster en kies In terminal openen. De live cd bevat verschillende mappen die we verderop al dan niet nodig hebben:

•Boot, EFI en isolinux bevatten de nodige bestanden om de live cd te booten. Daarin hoef je niets te wijzigen, tenzij je boot-opties wilt aanpassen of een andere kernel wilt installeren.

•Dists, install, pool en preseed bevatten bestanden die nodig zijn voor de installatie van Ubuntu naar je harde schijf. In die mappen hoef je in geen geval iets te wijzigen.

•Casper bevat de kernel (vmlinuz.efi), de initial ramdisk (initrd.lz) en het eigenlijke bestandssysteem van de live cd (filesystem.squashfs). De filesystem.*-tekstbestanden bevatten meer informatie over het squashfs-bestand, zoals de grootte of de geïnstalleerde pakketten. De meeste bestanden in deze map gaan we verderop aanpassen.

•Het bestand md5sum.txt bevat checksums van alle bestanden in het iso-bestand. Die checksums moet je uiteraard updaten na elke wijziging.

In Linux kan je iso-bestanden enkel readonly mounten. Wil je de inhoud aanpassen, dan moet je die dus eerst kopiëren naar een andere map. Daarvoor maken we de map /home/filip/Ubuntu/iso aan. Specifiek voor de live cd moet je ook het filesystem.squashfs-bestand decomprimeren: dit doen we in /home/filip/Ubuntu/squashfs.

 

Chroot

In ~/Ubuntu/squashfs zie je nu het root-bestandssysteem van de live cd met de bekende mappen bin, boot, etc, enzovoorts. Je kan hier meteen bestanden aanpassen, toevoegen of verwijderen, maar erg ver kom je daarmee niet. Wil je bijvoorbeeld extra software installeren, dan moet je eigenlijk het apt-get-commando uitvoeren. Maar let op: je moet dat uitvoeren op het root-bestandssysteem van de iso in plaats van het root-bestandssysteem van je desktop of laptop! Met het chroot-commando start je een nieuwe shell met de opgegeven directory als root-bestandssysteem. Bijvoorbeeld:

 

sudo chroot ~/Ubuntu/squashfs

 

Bekijk je nu bijvoorbeeld het bestand /etc/apt/sources.list, dan is dit in werkelijkheid /home/filip/Ubuntu/squashfs/etc/apt/sources.list. Erg functioneel is deze shell nog niet: er ontbreken immers enkele essentiële directories zoals /dev, /run, /proc en /sys. Die eerste twee mount je vanaf je host-systeem (dus buiten de chroot), die laatste twee mount je in de chroot. Vervolgens pas je de $HOME- en $LC_ALL-variabelen nog aan (anders krijg je rare foutmeldingen te zien) en stel je alvast de correcte tijdzone in. Dat laatste hoef je slechts éénmaal te doen, terwijl je de variabelen na elk chroot-commando steeds opnieuw moet instellen. Voordat je extra software installeert, kopieer je het bestand /etc/apt/sources.list van jouw systeem naar de chroot. Zo beschik je over dezelfde repositories als op jouw systeem en vind je zeker al jouw favoriete programma’s terug. Daarna update je de package index en installeer je de gewenste pakketten, bijvoorbeeld VLC:

 

apt-get update

apt-get install vlc

 

Heb je geen boodschap aan de standaard games die Ubuntu bevat? Dan verwijder je ze met het volgende commando:

 

apt-get purge gnome-mahjongg gnome-sudoku gnome-mines aisleriot

 

Squashfs updaten

Voorlopig houden we het even op deze twee wijzigingen. We moeten de chroot nu netjes opschonen voordat we de iso opnieuw aanmaken. Standaard bewaart apt een kopie van alle gedownloade pakketbestanden onder /var/cache/apt. Die heb je uiteraard niet meer nodig in de live cd, dus je kunt dit verwijderen met apt-get clean. Verwijder ook alle tijdelijke bestanden onder /tmp en unmount daarna de verschillende mounts waarmee we de chroot hebben opgezet.

Alles staat nu klaar om het iso-bestand te updaten. Daarvoor moet je eerst een aantal bestanden in de casper-directory updaten. Om te beginnen, comprimeer je het aangepaste bestandssysteem onder ~/Ubuntu/squashfs tot filesystem.squashfs. Standaard gebruikt mksquashfs gzip-compressie en ook de Ubuntu live cd is op die manier gecomprimeerd. Gzip-compressie is niet erg cpu- of geheugenintensief en dus een veilige keuze om je live cd op de meest uiteenlopende hardware te draaien. Maar voor moderne systemen kan je net zo goed xz-compressie gebruiken. Tijdens onze test resulteerde dit in een ongeveer 21% kleiner filesystem.squashfs-bestand (1166MB voor xz in plaats van 1477MB voor gzip). Wil je dit ook eens testen, voeg dan volgende opties toe aan het einde van het mksquashfs-commando: 

-comp xz -b 1M

 

Iso aanmaken

Genereer daarna een nieuw filesystem.manifest-bestand met alle geïnstalleerde pakketten en bewaar de huidige grootte van het squashfs-bestand in filesystem.size. Bereken dan de checksums van alle gewijzigde bestanden voor md5sums.txt. Is dit allemaal probleemloos verlopen, dan maak je een nieuw iso-bestand aan op basis van de directory ~/Ubuntu/iso.

Is het iso-bestand klaar? Test dit dan eerst in een virtuele machine met KVM of Virtualbox. Zo weet je meteen of je geen cruciale stap hebt overgeslagen, waardoor het iso-bestand niet meer boot. Boot je iso prima, dan kan je ‘m op een dvd branden of kopiëren naar een usb-stick. Omdat alle computers booten via usb ondersteunen, is er eigenlijk geen reden meer om een dvd te branden. Booten van dvd is immers een heel stuk trager dan van een usb-stick, tenzij je een erg oude of trage stick gebruikt. Bovendien hebben heel wat nieuwe systemen zelfs geen optische drive meer aan boord. Er bestaan verschillende programma’s om een bootable usb-stick aan te maken. Ubuntu zelf bevat bijvoorbeeld het programma Opstartschijf maken. Aangezien dit in het vorige nummer van Linux Magazine al uitgebreid aan bod is gekomen, gaan we hier nu niet dieper op in.

 

Verder aanpassen

In het voorbeeld hierboven hebben we alleen extra software toegevoegd of overbodige software verwijderd. Uiteraard stoppen de mogelijkheden daar niet. Ben je van plan om de live cd langdurig te gebruiken, dan maak je het beste één (of meerdere) gebruikersaccounts aan in de chroot-omgeving. Vergeet ook niet om een wachtwoord in te stellen! Vervolgens kan je allerlei instellingen tweaken voor die gebruiker(s) door configuratiebestanden in de homedirectory aan te passen. Ook grafische programma’s kan je configureren in de chroot, maar daarvoor zijn enkele extra stappen vereist. Om te beginnen vraag je buiten de chroot-omgeving de waarde op van de DISPLAY-variabele:

 

echo $DISPLAY

:0

 

Nadat de chroot is opgezet, log je in met je persoonlijke account. Vervolgens geef je de DISPLAY-variabele dezelfde waarde als op je desktop/laptop en start je een grafisch programma. Dit verschijnt nu binnen je gewone desktop, hoewel het echt vanuit de chroot gestart is. Houd ook even de output in het terminalvenster in de gaten. Bepaalde programma’s werken mogelijk niet correct vanuit de chroot. In die gevallen zijn de foutmeldingen in het terminalvenster erg behulpzaam om een oplossing te vinden.

We hopen dat deze workshop je voldoende inzicht heeft gegeven in de werking van een live cd. Zoals je ziet, is het niet erg moeilijk om jouw eigen Ubuntu-versie te maken!