Live Linux werd Speciaal voor de cursus gemaakt (zie beschrijving hieronder) om thuis te kunnen oefenen. Live Linux kun je als iso-bestand (ca. 800 MB) downloaden. Na het downloaden moet je het iso-bestand als een DVD-image op een DVD branden. Met deze DVD kun je dan de computer opstarten en werken met openSUSE 11.4 vanaf de DVD zonder openSUSE zelf te installeren. Meer informatie vind je in de cursus (Menu - bol onderaan rechts op deze pagina -, klikken op Cursus Ontdekken, gebruiken en beheersen, klikken op Live Linux).
Het openSUSE KIWI Image System levert een oplossing om een compleet Linux besturingssysteem in een beeld (image) voor Linux ondersteunende hardware platformen en virtuele systemen als Xen, Qemu en VMware te plaatsen. De KIWI architectuur werkt op twee niveau's. Het eerste niveau, gebaseerd op een valide softwarebron, maakt een fysieke uitbreiding (physical extend) op basis van een beschrijving (image description). Het tweede niveau zet de uitbreiding om naar een beeld van een besturingssysteem. Het resultaat van het tweede niveau noemen we een logische uitbreiding (logical extend) of kortweg een beeld.
Een gewone installatie start vanaf een softwarebron en installeert software tot het systeem compleet is. Tijdens dit proces moet de gebruiker soms tussenkomen. Een beeld van een besturingssysteem bestaat reeds uit een volledig in een bestand ingekapseld besturingssysteem dat eventueel voor een bepaalde taak werd voorgeconfigureerd. Zo'n besturingssysteem werkt vanaf het ogenblik dat het op opslagmedia wordt geplaatst, zowel op vluchtige (volatile) als niet vluchtige media. Het maken van een beeld gebeurt zonder tussenkomst van de gebruiker.
Dit betekend dat alle benodigdheden voor het ingekapselde systeem moeten voldaan zijn voor het beeld wordt aangemaakt. Deze benodigdheden worden vastgelegd in een beschrijving (image description tree) die alle informatie bevat om het beeld aan te maken.
Kenmerken
Bij de cursus Linux Deel 1 krijgen de cursisten een Live Linux DVD. Dit kunnen ze gebruiken om te oefenen. De Live Linux DVD moet aan enkele voorwaarden voldoen. De Live Linux DVD moet op zoveel mogelijk pc-systemen werken. Daarnaast moet de Live Linux DVD aansluiten op het gebruikte systeem in klas. En als laatste moest ik de Live Linux DVD zelf kunnen aanpassen (taal, land, software, edm.). Dit alles vond ik bij KIWI.
Om ervoor te zorgen dat de Live Linux DVD op zoveel mogelijk pc-systemen werkt, koos ik voor de architectuur x86. Dit kan eenvoudig door KIWI te installeren op een x86 systeem en daarop het beeld aan te maken. Standaard gebruikt KIWI de architectuur waarop het beeld wordt aangemaakt. M.a.w. ik ben op zoek gegaan naar een x86-systeem (VMWare Player) en heb daarop het beeld aangemaakt. Dualcore of niet speelt daarbij geen rol.
Installeer de pakketten kiwi, kiwi-config-openSUSE, kiwi-doc en kiwi-desc-isoboot. Daarbij installeert Yast de afhankelijke pakketten syslinux, kiwi-tools, clicfs, squashfs en enkele perl onderdelen. De KIWI-scripts zijn hoofdzakelijk geschreven in perl en gebruiken XML om de beschrijving van het beeld te lezen. syslinux wordt gebruikt om op te starten van een CD/DVD. squashfs en clicfs zijn bestandssystemen die compressie gebruiken om het beeld zo klein mogelijk te maken (zo past ruim 2000 MB data op een CD van 700 MB).
Zelf een Live Linux DVD bouwen is pas noodzakelijk als je een Live Linux DVD wilt die afwijkt van degene die je kunt downloaden van de site van openSUSE. Onze Live Linux DVD moet standaard (zonder tussenkomst van de gebruiker) het azerty-toetsenbord gebruiken en alle software nederlandstalig aanbieden. Dit kan door de beeldbeschrijving als volgt aan te passen. Open als root de beeldbeschrijving in het bestand /usr/share/openSUSE-kiwi/livecd-kde/config.xml met kwrite.
Met de tags
<preferences> ... <keytable>be-latin1</keytable> <locale>nl_NL</locale> ... </preferences>
in de groep <preferences> kun je het toetsenbord en de taal instellen zoals die in nederlandstalig België gebruikt worden. Indien de tags standaard niet gebruikt worden, voeg je ze toe anders pas je ze aan.
Als softwarebron gebruik ik de gedownloade openSUSE-11.3-Oss softwarebron die ik met de root-opdracht rsync -rlptDvuh --progress --chmod=Dugo+w --delete ftp5.gwdg.de::pub/opensuse/distribution/11.4/repo/oss/ /var/backup/opensuse4pinda/repos/oss/
afgehaald heb.
Deze lokale softwarebron kun je met de volgende opdrachten via http beschikbaar maken:
sudo zypper install thttpd
sudo /usr/sbin/thttpd -r -d /var/backup/opensuse4snt/repos/
sudo yast2 firewall services add zone=EXT tcpport=http
Pas de repository-tags aan tot
<repository type="yast2"> <!--source path="http://download.opensuse.org/distribution/11.3/repo/oss/"/--> <source path="http://192.168.92.3/oss/"/> </repository> <repository type="rpm-md"> <source path="http://download.opensuse.org/repositories/openSUSE:/11.4:/Live/standard/"/> </repository> <repository type="rpm-md"> <!--source path="http://download.opensuse.org/update/11.4/"/--> <source path="http://192.168.92.3/update/"/> </repository>
De tweede softwarebron bevat extra pakketten die enkel nodig zijn voor live systemen. De derde softwarebron bevat de gedownloade officiële update's. Als je de softwarebronnen op het internet wilt gebruiken, gebruik je de licht grijze regels. Deze regels beginnen met <!-- en eindigen op --> waardoor het commentaar wordt en ze dus uitgeschakeld zijn. Het uitschakelen van regels door er commentaar van te maken is handig bij het testen van een aanpassing. Verander de originele regel in commentaar en plaats de aanpassing in een nieuwe regel. Als je later dan naar de originele configuratie wilt terugkeren, verwijder je de pas aangemaakte nieuwe regel en activeer je de oorspronkelijke regel door de commentaar-tekens te verwijderen. Na het opstarten van de Live Linux DVD krijg je de kans openSuSE vanaf de Live Linux DVD op de harde schijf van de computer te installeren. Na de installatie wordt bij de eerste start vanaf harde schijf direct via het internet gezocht naar eventuele updates die dan uitgevoerd kunnen worden. Zolang deze zoektocht naar updates blijft duren kan geen hardware- en/of software geïnstalleerd worden. M.a.w. even geduld.
Om alle software nederlandstalig te kunnen gebruiken ging ik ten rade bij een reeds geïnstalleerd openSUSE-systeem bij Software installeren/verwijderen. Via Beeld Talen kon ik bij de Code nl opsporen welke softwarepakketten noodzakelijk zijn om nederlandstalig te kunnen werken. Na een vergelijkende studie tussen het geïnstalleerde systeem en het beeld kwam ik tot het toevoegen van de volgende tags in de groep waar de packages staan.
<!-- PACKAGES BEGIN --> <!-- Nederlands BEGIN --> <package name="aspell-nl"/> <package name="bundle-lang-common-nl"/> <package name="bundle-lang-kde-nl"/> <package name="kde4-l10n-nl"/> <package name="desktop-translations"/> <package name="OpenOffice_org-LanguageTool-nl"/> <package name="libreoffice-l10n-nl"/> <package name="translation-update-nl"/> <package name="yast2-trans-nl"/> <!-- Nederlands EINDE -->
Om ruimte te besparen voeg ik niet alleen pakketten toe, maar heb ik de taal-pakketten voor het Duits en Russisch verwijderd (in commentaar geplaatst). Daar we de ondertussen verschenen updates in de Live DVD opnemen, zijn enkele pakketten overbodig of vervangen door recentere exemplaren. Verwijder de volgende overbodig geworden pakketten:
<!--package name="libktcore12"/--> <!--package name="opensuse-codecs-installer"/-->
Om een opstartbare USB-stick te kunnen aanmaken, installeer je het pakket imagewriter door de volgende regel toe te voegen:
<package name="imagewriter"/>
Naast de beeldbeschrijving in het config.xml bestand wordt het script config.sh gebruikt om het beeld aan te maken. Om onze doelstelling te bereiken, pas je als root het script /usr/share/openSUSE-kiwi/livecd-kde/config.sh aan.
#chkconfig boot.langset on
Deze regel schakelde ik met het # uit en zorgt bij het opstarten van de Live Linux DVD voor het instellen van de taalspecifieke instellingen. Dit gaat voor de combinatie azerty-toetsenbord en Nederlands helemaal fout. Door het aanpassen van de twee volgende regels gaat het wel goed.
baseUpdateSysConfig /etc/sysconfig/keyboard KEYTABLE be-latin1.map.gz baseUpdateSysConfig /etc/sysconfig/keyboard YAST_KEYBOARD belgian,pc104
Nieuw aan Live Linux is de mogelijkheid om deze op een USB-stick te plaatsen. Live Linux wordt dan vanaf de USB-stick opgestart. Indien de USB-stick een capaciteit van minstens 2 GB heeft, gebruikt Live Linux de resterende ruimte als opslagplaats voor bestanden en instellingen (persistent). Persistente Live Linux USB-sticks worden bij de eerste start voorzien van een data-partitie, waarop bestanden en instellingen opgeslagen worden. Na deze eerste start bevat deze partitie instellingen die specifiek zijn voor de hardware waarop de Live Linux USB-stick voor de eerste maal werd gestart. M.a.w. een persistente Live Linux USB-stick werkt alleen goed op één computer. Het voordeel van de beschrijfbare Live Linux heeft als nadeel dat het de Live Linux USB-stick slechts op één toestel goed werkt. Op de site van openSUSE staat beschreven hoe je een iso-bestand op een USB-stick plaatst (ook via Windows). Daar deze bewerking nogal wat risico's inhoud (per ongeluk overschrijven van de harde schijf) heb ik een script geschreven die de procedure grafisch en veiliger laat verlopen.
De scripts plaats je in de map /usr/share/openSUSE-kiwi/livecd-kde/root/usr/local/bin/. Alle bestanden die je in de map /usr/share/openSUSE-kiwi/livecd-kde/root/ plaatst, komen in het beeld in de hoofdmap terecht. De scripts zullen dus in het beeld in de map /usr/local/bin/ staan.
#!/bin/bash # # Copyright (c) 2009-2011 SNT Brugge. All rights reserved. # # Author: Dany Pinoy <dany.p@snt-brugge.be> # # Create a Live USB disk # dialoogtitel="Live USB Flash Drive aanmaken" if [ -d /livecd ]; then # opgestart vanaf Live Linux isofile=$(more /proc/mounts | grep "/livecd" | cut -d ' ' -f 1) password="" else isofile=$(kdialog --title "Selecteer het Live ISO-bestand" --getopenfilename ~ "*.iso") if [ $? == "1" ]; then exit fi password=$(kdialog --title "$dialoogtitel" --password "Om de Live USB aan te maken, zijn root-rechten nodig.") if [ $? == "1" ]; then exit fi fi if [ /dev/$(ls -l /dev/dvd | awk '{ print $11 }') == $isofile ]; then # opgestart vanaf DVD for i in $(echo $password | su -c "/sbin/fdisk -l" | /usr/bin/grep "/dev/[sh]d[ab][123456789]" | /usr/bin/grep "7 HPFS/NTFS" | /usr/bin/cut -f 1 -d ' '); do echo $password | su -c "/bin/mkdir $(/bin/echo $i | /usr/bin/sed -e s/dev/mnt/)" echo $password | su -c "/bin/mount -t ntfs-3g $i $(/bin/echo $i | /usr/bin/sed -e s/dev/mnt/)" done # Aanwezige Linux-partities mounten for i in $(echo $password | su -c "/sbin/fdisk -l" | /usr/bin/grep "/dev/[sh]d[ab][123456789]" | /usr/bin/grep "83 Linux" | /usr/bin/cut -f 1 -d ' '); do echo $password | su -c "/bin/mkdir $(/bin/echo $i | /usr/bin/sed -e s/dev/mnt/)" echo $password | su -c "/bin/mount $i $(/bin/echo $i | /usr/bin/sed -e s/dev/mnt/)" done # Aanwezige FAT-partities mounten for i in $(echo $password | su -c "/sbin/fdisk -l" | /usr/bin/grep "/dev/[sh]d[ab][123456789]" | /usr/bin/grep "b W95 FAT" | /usr/bin/cut -f 1 -d ' '); do echo $password | su -c "/bin/mkdir $(/bin/echo $i | /usr/bin/sed -e s/dev/mnt/)" echo $password | su -c "/bin/mount $i $(/bin/echo $i | /usr/bin/sed -e s/dev/mnt/)" done isofile=$(kdialog --title "Selecteer het Live ISO-bestand" --getopenfilename /mnt/ "*.iso") if [ $? == "1" ]; then exit fi fi kdialog --title "$dialoogtitel" --msgbox "Steek de aan te maken USB Flash Drive in de computer." sleep 3 for i in /sys/class/block/sd?; do /sbin/udevadm info -a -p $i | grep -qx ' SUBSYSTEMS=="usb"' && radiolist=$radiolist${i##*/}" \""$(/sbin/udevadm info --query=property -p $i | grep ID_MODEL= | /usr/bin/cut -f 2 -d '=')"\" off "; done # of # for i in *; do # [[ $(cd $i; pwd -P) = */usb*/* ]] && echo $i; # done device="/dev/"$(eval kdialog --title "'Live USB Flash Drive aanmaken'" --radiolist "'Selecteer uw USB Flash Drive'" $radiolist) if [ $? == "1" ]; then exit fi if [ $(echo $isofile | cut -c -8) == $device ]; then kdialog --title "$dialoogtitel" --sorry "Doel en bron zijn dezelfde USB-stick.\n\nLive USB Flash Drive aanmaken wordt afgebroken." exit fi echo $password | su -c "/bin/umount -l $device" kdialog --title "$dialoogtitel" --yesno "Bij het aanmaken van de Live USB Flash Drive zullen alle gegevens op de USB Flash Drive verloren gaan?\n\nWilt U nog doorgaan?" if [ $? == "1" ]; then exit fi if [ -f $isofile] ]; then isogrootte=`ls -s --block-size=M $isofile | cut -f 1 -d 'M'` else isogrootte=$[`echo $password | su -c "/sbin/fdisk -s $isofile"` / 1024] fi dbusref=$(kdialog --title "$dialoogtitel" --progressbar "Aanmaken Live USB Flash Drive op $device" $[$isogrootte / 4]) # 755 is de grootte van het iso-bestand in MB for i in `seq 0 $[$isogrootte / 4]`; # 755 is de grootte van het iso-bestand in MB do echo $password | su -c "dd if=$isofile of=$device bs=4M seek=$i skip=$i count=1" # echo $password | su -c "dd if=$isofile of=/tmp/test.iso bs=4M seek=$i skip=$i count=1" # test qdbus $dbusref org.freedesktop.DBus.Properties.Set org.kde.kdialog.ProgressDialog value $i done sync qdbus $dbusref org.kde.kdialog.ProgressDialog.close kdialog --title "$dialoogtitel" --msgbox "De persistente (beschrijfbare) Live USB Flash Drive is klaar om gebruikt te worden."Een Live Linux USB-stick kan niet meer gebruikt worden als een gewone USB-stick. Als je Linux definitief op de harde schijf van de computer geplaatst hebt, moet je de USB-stick aanpassen voor normaal gebruik. Dit kan met het volgende script.
#!/bin/bash # # Copyright (c) 2009-2011 SNT Brugge. All rights reserved. # # Author: Dany Pinoy <dany.p@snt-brugge.be> # # Wipe a Live USB disk # dialoogtitel="Live USB Flash Drive wissen" if [ -d /livecd ]; then password="" else password=$(kdialog --title "$dialoogtitel" --password "Om de Live USB te wissen, zijn root-rechten nodig.") if [ $? == "1" ]; then exit fi fi isofile=$(more /proc/mounts | grep "/livecd" | cut -d ' ' -f 1) kdialog --title "$dialoogtitel" --msgbox "Steek de te wissen USB Flash Drive in de computer." sleep 3 for i in /sys/class/block/sd?; do /sbin/udevadm info -a -p $i | grep -qx ' SUBSYSTEMS=="usb"' && radiolist=$radiolist${i##*/}" \""$(/sbin/udevadm info --query=property -p $i | grep ID_MODEL= | /usr/bin/cut -f 2 -d '=')"\" off "; done # of # for i in *; do # [[ $(cd $i; pwd -P) = */usb*/* ]] && echo $i; # done device="/dev/"$(eval kdialog --title "'Live USB Flash Drive wissen'" --radiolist "'Selecteer uw USB Flash Drive'" $radiolist) if [ $? == "1" ]; then exit fi if [ $(echo $isofile | cut -c -8) == $device ]; then kdialog --title "$dialoogtitel" --sorry "Live USB Flash drive wordt gebruikt.\n\nLive USB Flash Drive verwijderen wordt afgebroken." exit fi kdialog --title "$dialoogtitel" --yesno "Bij het wissen van de Live USB Flash Drive zullen alle gegevens op de USB Flash Drive verloren gaan?\n\nWilt U nog doorgaan?" if [ $? == "1" ]; then exit fi mount | grep $device if [ $? == "0" ]; then kdialog --title "$dialoogtitel" --sorry "De te wissen USB Flash Drive is gekoppeld.\n\nLive USB Flash Drive verwijderen wordt afgebroken." exit fi dbusref=$(kdialog --title "$dialoogtitel" --progressbar "Wissen Live USB Flash Drive $device" 60) echo $password | su -c "mkfs.vfat -I -F 32 ${device}" qdbus $dbusref org.kde.kdialog.ProgressDialog.close kdialog --title "$dialoogtitel" --msgbox "De Live USB Flash Drive kan nu terug als gewone USB Flash Drive gebruikt worden."
Om het starten van de scripts te vereenvoudigen, plaats ik deze in het K menu. Dit kan door de twee volgende bestanden in de map /usr/share/openSUSE-kiwi/livecd-kde/root/usr/share/applications/ te plaatsen. De in deze map geplaatste desktop-bestanden bevatten K menu items die verschijnen in de categorie Programma's > Programma's.
Het bestand /usr/share/openSUSE-kiwi/livecd-kde/root/usr/share/applications/Live USB aanmaken.desktop
[Desktop Entry] Exec=sh /usr/local/bin/createliveusb.sh GenericName[nl]=Live USB aanmaken GenericName=Live USB creator Icon=drive-removable-media-usb-pendrive Name[nl]=Live USB aanmaken Name=Live USB creator Type=Application Categories=System;Utility;Archiving; X-SuSE-translate=true
Het bestand /usr/share/openSUSE-kiwi/livecd-kde/root/usr/share/applications/Live USB verwijderen.desktop
[Desktop Entry] Exec=sh /usr/local/bin/wipeliveusb.sh GenericName[nl]=Live USB verwijderen GenericName=Live USB wiper Icon=drive-removable-media-usb-pendrive Name[nl]=Live USB verwijderen Name=Live USB wiper Type=Application Categories=System;Utility;Archiving; X-SuSE-translate=true
Voeg de bestanden toe aan het gecomprimeerde bestand /usr/share/openSUSE-kiwi/livecd-kde/config-cdroot.tgz. Dit gecomprimeerde bestand bevat alle bestanden die later uitgepakt op de root van de Live Linux DVD terechtkomen.
Nu we klaar zijn met de beschrijving van het beeld kunnen we het beeld voorbereiden met de root opdrachten
rm -r /tmp/myiso
cd /usr/share/openSUSE-kiwi
kiwi --prepare ./livecd-kde --root /tmp/myiso
De eerste opdracht is enkel nodig indien je al eens een beeld hebt voorbereid. Wees geduldig.
Het iso-bestand wordt aangemaakt met de root opdracht
kiwi --create /tmp/myiso --type iso -d /tmp/myiso-result
Deze opdracht heeft eveneens tijd nodig om het iso-bestand in de map /tmp/myiso-result aan te maken. Het Live Linux systeem kun je testen door een virtuele computer (VMware Player) via het iso-bestand te starten. Een tweede test bestaat uit het branden van het iso-bestand op een DVD-schijf en deze schijf te gebruiken als opstartschijf op verschillende computers. Voor een derde test start je een computer met de Live Linux DVD en maak je een Live Linux USB-stick aan. Start daarna een computer via de pas aangemaakte Live Linux USB-stick op en controleer of deze persistent is. Persistentie kun je testen door een ander bureaublad in te stellen en de computer opnieuw vanaf de Live Linux USB-stick op te starten. De aanpassing moet de heropstart overleven. Nogmaals de opmerking: een Live Linux USB-stick werkt maar op één computer, nml. de eerste waarvan hij opstarte.
De aangepaste bestanden: Download.