Table of Contents

Slackware Live Edition

Voorwoord

Welkom bij de Slackware Live Edition! Dit is een versie van Slackware-current (binnenkort uit te brengen als versie 14.2), die kan worden gestart vanaf een DVD of een USB-stick. Het is een ISO-image bedoeld als een showcase van wat je zo allemaal met Slackware kunt doen. Slackware Live Edition bevat een standaard installatie, zonder extra of aangepaste pakketten of een andere kernel, maar wel met alle sterke punten van deze Linux distributie. De ISO wordt “from scratch” dus uit het niets gemaakt uit een lokale kopie van alle Slackware pakketen (die je tevoren moet downloaden), met hulp van de “liveslak” scripts.

Slackware Live Edition hoeft niet te worden geïnstalleerd op de harde schijf van een computer (maar je hebt die mogelijkheid wel als je dat wilt: middels het ​setup2hd​ script). Je kunt de Live versie op USB-stick met je meenemen in in je broekzak. Je hebt daarmee een voorgeconfigureerd Slackware OS dat in een minuut operationeel is op elke computer met een USB-poort waar je je handen op kunt leggen.

De USB-versie is “persistent” - wat betekent dat het Live Operating System je wijzigingen op de USB-stick opslaat. De CD/DVD versies (en de USB stick als je de persistentie niet aanzet) werken zonder persistentie, wat betekent dat alle wijzigingen die je doet tijdens het werken met het Live Operating System verloren gaan wanneer je de computer opnieuw start.

Om je gevoelige persoonlijke gegevens te beschermen in het geval dat je je USB-stick verliest (of in het geval de USB stick wordt gestolen) kun je je persistente USB Live Operating System voorzien van een versleutelde home directory en/of een versleuteld persistentie-bestand. De versleutelde data komt beschikbaar voor het Live Operating System wanneer je tijdens het opstarten vanaf de USB stick het wachtwoord intypt dat alleen jij kent.

Waarom nog een Live variant van Slackware

Dit zijn de redenen die ik had om het Slackware Live Edition project te starten:

  1. Maak een “live” versie van de echte originele Slackware distributie; daarmee kan iedereen met Slackware kennis maken zonder het eerst te moeten installeren. De kernel berichten tijdens het opstarten scrollen over het scherm net als bij een geïnstalleerd Slackware systeem; er zijn geen aangepaste wallpapers, etcetera. Bedoeld voor educatieve, evaluatie en demonstratie doeleinden.
  2. Het project moet zich richten op slackware-current, de “bleeding edge”. Veel mensen willen weten hoe de ontwikkelversie van Slackware er uit ziet, maar zijn huiverig om Slackware-current op hun computer te installeren uit angst dat niet alles stabiel is en goed werkt en zodoende zorgt voor productiviteitsverlies.
  3. Zorg voor een manier om een Live ISO te genereren vanuit niet meer dan een lokale mirror van Slackware pakketten. Dat moet volledig gescript en deterministisch kunnen gebeuren.
  4. Maar nog steeds moet het project in staat zijn om de inhoud en functionaliteit van het Live OS aan te passen. Bijvoorbeeld door uitgeklede of minimalistische versies van Slackware aan te bieden, maar ook door het opnemen van 3rd party pakketten in een aparte variant.
  5. Bied de mogelijkheid om via een script en een ISO bestand een beschrijfbare bootable USB-stick te creëren met Slackware Live er op (dit verschilt van de manier om middels 'dd' of 'cp' de hybride ISO naar een USB-stick te kopieren - de USB stick zal op deze manier niet verder te beschrijven zijn omdat het zich gedraagt als een DVD medium).
  6. KISS: Keep It Simple Stupid! Ofwel: houd de implementatie eenvoudig en begrijpelijk.

ISO varianten

De “liveslak” scripts kunnen een verscheidenheid aan Slackware varianten genereren:

  1. Een complete 64bit Slackware-current Live Edition (in een 2,6 GB ISO);
  2. Een afgeslankte XFCE ISO (700 MB) met XDM als grafische login manager. Het past op een CDROM medium of een 1 GB USB-stick;
  3. Een ISO-image (3,1 GB) van Slackware64-current met Plasma 5 in plaats van KDE 4, met een toevoeging van een aantal andere pakketten uit de alienBOB repositories: vlc, libreoffice, calibre, qbittorrent, ffmpeg, chromium, openjdk, veracrypt.
  4. Een Mate variant (1,7 GB), waar KDE 4 is vervangen door Mate (een Gnome 2 afsplitsing);
  5. Een Cinnamon variant (een afsplitsing van de Gnome 3 Shell die Slackware's KDE 4 vervangt).
  6. Een Custom variant waarmee je het Live OS je eigen naam en een eigen pakket lijst kunt meegeven evenals een eigen post-installatie configuratie.

Downloaden ISO images

De meest bezochte downloadlocaties zijn:

Gebruikers Documentatie

Het ISO-image gebruiken

De ISO images zijn hybride, wat betekent dat je ze ofwel kunt branden op DVD, ofwel met de 'dd' of 'cp' commando's de inhoud van de ISO kan kopiëren naar een USB-stick. Bij beide methoden krijg je een live-omgeving die je zal toestaan om veranderingen aan te brengen en schijnbare “schrijfacties” naar de harde schijf“ kunt doen. De veranderingen die je aanbrengt in het filesysteem zullen in werkelijkheid in een RAM-schijf worden bewaard, zodat een reboot het Live besturingssysteem in zijn oorspronkelijke staat zal herstellen. Met andere woorden, de gegevens worden niet persistent bewaard.

Slackware Live Edition kent twee gebruikersaccounts: “root” en “live”. Ze hebben wachtwoorden en standaard zijn die wachtwoorden … je raadt het al: “root” en “live”. Standaard zal de Live ISO starten in runlevel 4, dat wil zeggen dat je een grafische login te zien zult krijgen. De bootloader stelt je in staat om een niet-Amerikaanse taal en/of toetsenbordindeling en (bij het opstarten van een UEFI-systeem) een aangepaste tijdzone te kiezen. De commandoregel van de bootloader kan natuurlijk ook nog handmatig verder aangepast worden om je eigen tweaks aan te brengen.

Slackware Live Edition wijkt zo weinig mogelijk af van de manier waarop een reguliere Slackware opstart. Nadat je de Live boot fase afrondt en het eigenlijke Operating System gestart is log je in als gebruiker “live”. Vanaf dat moment ben je in een gewone Slackware omgeving.

Opstarten van het Live OS

BIOS boot

Slackware Live Edition maakt gebruik van syslinux om de Linux kernel op BIOS computers op te starten. Beter gezegd, wordt de “isolinux” variant geïnstalleerd in het ISO image en de “extlinux” variant wordt geïnstalleerd in de Linux-partitie van de USB Live versie.

Syslinux toont een grafisch boot menu met een mooie Slackware achtergrond en verschillende keuzemogelijkheden:

Je kunt een toetsenbord layout kiezen die past bij je computer. Ook kun je Slackware opstarten in een andere taal dan het Engels. Als je de US-Engels interfacetaal aanhoudt zul je waarschijnlijk nog steeds de tijdzone willen veranderen, omdat die standaard op UTC staat ingesteld. Je moet een aangepaste tijdzone handmatig opgeven door het toevoegen van “tz=JouwGeografie/JouwLokatie”, omdat het syslinux bootmenu je niet een selectie van tijdzones biedt. In syslinux kun je de boot commandoregel bewerken door op <TAB> te drukken. Druk dan op <ENTER> om de computer op te starten na het doen van je wijzigingen of <ESC> om je bewerking ongedaan maken en terug te keren naar het menu.

UEFI boot

Op UEFI computers verzorgt Grub2 de boot en het zal een soortgelijk menu tonen (en met hetzelfde thema) als het Syslinux menu:

Een Grub menu regel kan worden bewerkt door op de “e” toets te drukken. Na het maken van je wijzigingen op de boot commandline, druk je op <F10> om de computer op te starten. Om je wijzigingen te negeren, druk je op <ESC>.

Een ander verschil tussen Syslinux en Grub2 menu's: in Grub2 kun je een niet-VS-toetsenbord, taal en/of tijdzone selecteren en daarna keer je telkens terug naar het hoofdmenu. Je moet nog steeds “Start SLACKWARE Live” kiezen om de computer op te starten. In het Syslinux menu brengt alleen het toetsenbord keuzemenu je terug naar het hoofdmenu. Echter, elke niet-Amerikaanse *taal* selectie resulteert onmiddellijk in het opstarten van Slackware Live; zonder terug te keren naar het hoofdmenu. Dit is een beperking van syslinux. Het zou exponentieel meer menu bestanden vereisen om een menu te construeren met meer keuzemogelijkheden. Grub2 ondersteunt variabelen die het gemakkelijk maken om de eigenschappen van een menu-item dynamisch te wijzigen.

Overdracht van ISO inhoud naar USB-stick

Een script is beschikbaar waarmee je de inhoud van een ISO-image kunt overbrengen naar een USB-stick, waarbij een aantal functionele wijzigingen kunnen worden gedaan aan het Live OS, afhankelijk van de parameters van het script.

De USB-stick zal worden gewist en opnieuw geformatteerd bij het uitvoeren van dit script! Voordat eventueel dataverlies plaatsvindt, zal het script je daarvoor waarschuwen. Op dat moment kun je oordelen of het veilig is om door te gaan.

Dit script, genaamd 'iso2usb.sh', accepteert de volgende parameters:

  -c | --crypt grootte|perc  Voeg een LUKS-versleutelde /home directory toe;
                             waarde van de parameter is de gewenste grootte van
                             het containerbestand in kB, MB, GB, of als een
                             percentage van de vrije ruimte.
                             Voorbeelden: '-c 125M', '-c 1.3G', '-c 20%'.
  -f | --force               Negeer de meeste waarschuwingen (met uitzondering
                             van de back-out vraag).
  -h | --help                Deze hulptekst.
  -i | --infile <filename>   Het volledige pad naar het ISO image-bestand.
  -o | --outdev <filename>   De devicenaam van de USB drive.
  -p | --persistence <name>  Niet-standaard naam van de 'persistente' directory
                             of bestand (standaard naam is 'persistence').
  -r|--refresh ​              Ververs de USB stick met de inhoud van de ISO.
                             Stick wordt niet geformatteerd, gebruikersgegevens worden niet geraakt.
  -u | --unattended          Script zal aflopen zonder enige interactie.
  -v | --verbose             Toon uitgebreide voortgangsberichten.
  -w | --wait <nummer>       Stel <nummer> seconden wachttijd in waarin de
                             kernel het USB systeem kan initialiseren.
  -C | --cryptpersistfile grootte|perc
                             Gebruik een LUKS versleuteld 'persistence' bestand
                             in plaats van een directory (voor gebruik op
                             FAT-bestandssysteem).
  P | --persistfile          Gebruik een niet-versleuteld 'persistence' bestand
                             in plaats van een directory (voor gebruik op
                             FAT-bestandssysteem).

Voorbeelden:

# ./iso2usb.sh -i ~/download/slackware64-live-14.2.iso -o /dev/sdX

# ./iso2usb.sh -i slackware64-live-14.2.iso -o /dev/sdX -c 750M -w 15

# ./iso2usb.sh -i slackware64-live-current.iso -o /dev/sdX -c 30% -P

# ./iso2usb.sh -i slackware64-live-current.iso -o /dev/sdX -c 30% -C 300M

Misschien heb je gemerkt dat de parameter ”-P“ geen waarde meekrijgt voor de grootte van het bestandssysteem. Dit komt omdat het onversleutelde container bestand wordt gemaakt als een “sparse” bestand dat begint bij een grootte “nul” en dynamisch mag groeien tot maximaal 90% van de aanvankelijke vrije ruimte op de Linux partitie van de USB-stick.

PXE opstarten van het Live OS

Slackware Live Edition kan vanaf het netwerk opstarten met behulp van het PXE-protocol waarbij de bestanden op de PXE server via NFS ge-exporteerd worden. Doe een loop-mount van het ISO bestand en kopieer de inhoud van de ISO naar (bijvoorbeeld) een nieuwe map genaamd slackware-live onder de directory van je TFTP-server's top directory /tftproot. Exporteer die map via NFS. Vervolgens moeten regels zoals hieronder worden toegevoegd aan het bestand pxelinux.cfg/default dat de configuratie van je PXE server bevat (hierbij wordt er van uit gegaan dat je NFS-server het IP-adres 192.168.0.1 heeft):

label liveslak
kernel slackware-live/boot/generic
append initrd=slackware-live/boot/initrd.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 kbd=us tz=Europe/Amsterdam locale=us_EN.utf8 nfsroot=192.168.0.1:/tftpboot/slackware-live hostname=pxelive

Zoals in het bovenstaande voorbeeld te zien is, wordt een bootparameter nfsroot gebruikt voor netwerk boot. De parameter waarde definieert het IP-adres van de NFS server en het pad van de NFS export waar de inhoud van de Slackware Live ISO is uitpepakt. Hint: om een lijst van de ge-exporteerde shares van je NFS server te zien, gebruik je het commando showmount -e localhost op de NFS-server.

Eigenlijk zijn er twee boot parameters beschikbaar om netwerk boot goed te ondersteunen. De tweede boot parameter nic is meestal niet nodig. Deze kan worden gebruikt om de eigenschappen van de netwerkconfiguratie in de Live omgeving te definiëren, zoals de naam van de netwerkinterface, een statisch IP-adres en dergelijke. Indien Slackware Live opstart in een netwerk waar een DHCP-server actief is, dan zal de parameter nic niet nodig zijn omdat Slackware Live Edition alle details zelf kan uitzoeken.

Syntax van deze twee parameters:

nfsroot=ip.ad.dr.ess:/pad/naar/liveslak
nic=<driver>:<interface>:<dhcp|static>[:ipaddr:netmask[:gateway]]
  

Een aantal voorbeelden die gebruikmaken van de twee netwerk boot parameters:

nfsroot=192.168.1.1:/tftproot/slackware-Live
nic=auto:eth0:dhcp
nic=auto:eth0:static:10.0.0.21:24:
nic=:eth1:static:192.168.1.6:255.255.255.248:192.168.1.1

Nadat de PXE server is geconfigureerd aan de hand van bovenstaande richtlijnen (DHCP, TFTP en NFS servers), kun je één van je PXE-compatibele computers starten, de BIOS boot onderbreken en “netwerk boot” selecteren. Bij de PXE prompt typ of selecteer je het juiste label (in het bovenstaande voorbeeld zou dat liveslak zijn). Je ziet dat de kernel en initrd worden gedownload en opgestart, en dan zal het Live OS net zo starten als wanneer het wordt geladen van een lokaal medium.

Als de DHCP server te veel tijd nodig heeft voor het beantwoorden van het verzoek van de PXE client, zal het DHCP client programma tegen een time-out aanlopen en het opstarten van je Live OS zal mislukken omdat het Live bestandssysteem dat via NFS gemount moet worden niet beschikbaar zal zijn. In dat geval kun je proberen de wachttijd voor de DHCP-client te verhogen voordat dat programma besluit dat er geen IP adres van de server gaat komen. Voeg de boot parameter dhcpwait=30 (voorbeeld) waar 30 het aantal seconden is dat de DHCP client moet wachten op een reactie van de server. Je moet natuurlijk een waarde kiezen die voldoende groot is voor je lokale netwerk.
De standaard DHCP wachttijd voor het Live OS is 20 seconden.

Persistentie wordt niet ondersteund voor het opstarten via het netwerk (PXE); op dit moment ondersteunt het overlay bestandssysteem (overlayfs) geen NFS als een beschrijfbare laag in het gecombineerde Live bestandssysteem.

PXE server

Slackware Live Edition is niet alleen in staat om op te starten als een PXE-client; het is tevens in staat om zelf als een PXE server te fungeren.

Wat betekent dat?

Een praktisch voorbeeld zou zijn dat je een USB stick met Slackware Live Edition naar een LAN-party meebrengt. Gebruik de USB stick om een van de computers op te starten. Vervolgens zijn alle andere computers in het (bekabelde) LAN in staat om vanaf het netwerk op te starten om een paar minuten later dezelfde Slackware Live Edition te hebben draaien. De computer met de USB stick fungeert als de PXE-server en alle andere computers zijn diens PXE clients, die de Slackware data lezen vanaf die USB stick. De client computers nemen een aantal instellingen over van de server, zoals tijdzone, taal en toetsenbord instellingen. Die via PXE meegegeven standaard configuratie kan alsnog worden veranderd op de boot commandoregel. De PXE clients zullen niet 'persistent' zijn. Als de server toegang tot het internet heeft, zullen de PXE clients eveneens toegang hebben.

Hoe de PXE server te starten?

Na het opstarten van het Live OS kun je een script “pxeserver” starten vanaf de console in runlevel 3 of van een X-terminal in runlevel 4. Het script zal alle benodigde informatie zelfstandig proberen te verzamelen. De ontbrekende gegevens worden via een dialoog interface aan de gebruiker opgevraagd. Als het script niet in staat is te achterhalen welke bekabelde netwerkinterface het moet gebruiken, kun je de naam van de interface (bijvoorbeeld eth1) meegeven aan de commandoregel voor het script als een enkele parameter:

# pxeserver eth1

De PXE server gebruikt het dnsmasq programma om DNS diensten aan te bieden aan de PXE clients. Het dnsmasq programma zal zijn interne DHCP server inschakelen als het lokale netwerk geen DHCP server heeft. Dnsmasq start ook een TFTP server waarmee de PXE-clients verbinding maken om de boot-bestanden (kernel en initrd) te downloaden voor het opstarten. Het pxeserver script start ook een NFS server die door de initial ramdisk (initrd) van het Live OS zal worden gebruikt om de squashfs modules te downloaden zodat het Live OS gestart kan worden. De PXE server kan meerdere netwerk interfaces hebben, bijvoorbeeld een draadloze interface die is verbonden met de buitenwereld en een bedrade interface die verbonden is met een andere computer (de PXE-client) of aangesloten op een switch met een heleboel potentiële PXE clients daarachter. In zo'n geval zal de PXE server “packet forwarding” aanzetten, zodat de PXE clients toegang tot de buitenwereld krijgen via de bedrade interface.

Indien de server meerdere netwerk interfaces heeft, is het belangrijk om te weten dat dnsmasq alleen zal binden aan de interface waar PXE clients contact mee zoeken. In een multi-NIC situatie waarin een tweede NIC is verbonden met de buitenwereld (je lokale netwerk), betekent dit dat de DHCP/DNS servers die gestart zijn door dnsmasq niet zullen interfereren met een bestaande DHCP server in het lokale netwerk.

Zodra de PXE server actief is, zal het pxeserver script de activiteiten van dnsmasq in een dialoogvenster tonen, zodat de goede werking van de PXE clients kan worden gecontroleerd.

Als de PXE-server computer over voldoende RAM geheugen beschikt, is het sterk aan te raden om het Live OS van de server op te starten vanaf de USB-stick met de boot parameter toram. Wanneer meer dan een paar PXE clients beginnen met het lezen van OS bestanden vanaf de PXE-server, zal de de leessnelheid van de USB-stick een knelpunt worden. Het draaien van het server OS in RAM zal dit potentiele knelpunt vermijden.

Boot parameters uitgelegd

Druk op <F2> in het syslinux opstart scherm voor een overzicht van de (meeste) boot parameters. Bij het opstarten van Grub kan het menu “Help op opstartparameters” worden gekozen. Het Grub helpscherm is lelijk, ik weet het, maar Grub kan het niet beter.

De volgende parameters worden herkend door Slackware Live Edition. Om op te starten met de standaardwaarden druk je op ENTER.

Desktop Environment

0 | 1 | 2 | 3 | 4 | 5 | 6 | S | s | single ⇒

Selecteer een runlevel.
De standaard is 4 voor grafische login.

kbd=fr xkb=ch,fr ⇒

Voorbeeld van een aangepaste X toetsenbordindeling.
De parameter xkb kan waarden "​XkbLayout,​XkbVariant,​XkbOptions"​ krijgen.
De boot menu's zullen een aantal van deze automatisch configureren
maar uiteraard kunnen de waarden handmatig nog worden aangepast.
Let op dat de optionele XkbOptions kan bestaan uit meerdere door komma's gescheiden waarden.
De XkbLayout en XkbVariant waarden mogen geen komma bevatten.
Je kunt ook enkel de XkbVariant instellen via bijvoorbeeld "​kbd=ch xkb=,​fr"​

livepw=“eenstring” ⇒

Wijzig het wachtwoord voor de gebruiker "live".
Het wachtwoord wordt doorgegeven als een leesbare tekst string.

locale=nl_NL kbd=nl tz=Europe/Amsterdam ⇒

Voorbeeld configuratie van taal, toetsenbord en/of tijdzone.

rootpw=“eenstring” ⇒

Wijzig het wachtwoord voor de gebruiker "root".
Het wachtwoord wordt doorgegeven als een leesbare tekst string.

Custom software

load=nvidia ⇒

Laden en configureren van Nvidia drivers indien beschikbaar
in de ISO (niet voor SLACKWARE en XFCE varianten).

load=mod1[,mod2[,…]] ⇒

Laad een of meer squashfs modules uit de directory "/liveslak/optional".
Standaard wordt geen van deze "optionele" modules geladen bij het opstarten.

noload=mod1[,mod2[,…]] ⇒

Voorkom laden van één of meer squashfs modules uit de directory
"/liveslak/addons".
Standaard worden alle "addons" modules geladen bij het opstarten.

Network boot

dhcpwait=<numseconds> ⇒

Maximale wachttijd voor de DHCP-client om een netwerkinterface
te configureren (standaard: 20 seconden).

nfsroot=ip.ad.dr.ess:/pad/naar/liveslak ⇒

Definieert het IP-adres van de NFS-server, en het pad naar
de uitgepakte inhoud van Slackware Live Edition.

nic=<driver>:<interface>:<dhcp|static>[:ipaddr:netmask[:gateway]] ⇒

Configureer de netwerk interface voor PXE boot, meestal is deze
parameter niet nodig wanneer je netwerk een DHCP server bevat.
Specificeer een driver als udev de interface niet detecteert. Benoem
de interface als Slackware Live die niet kan achterhalen. Bij 'static'
moet ook ipaddr en netmask worden opgeven. De gatewway is optioneel,
maar die kan nodig zijn om toegang te krijgen tot Internet bijvoorbeeld.

Hardware gerelateerd

localhd ⇒

Initialiseer RAID/LVM op de lokale harde schijven.

tweaks=tweak1[,tweak2,[,…]] ⇒

Geïmplementeerde tweaks:
nga - geen glamor 2D versnelling, dit vermijdt de foutmelding
  "EGL_MESA_drm_image vereist".
tpb - scroll met de TrackPoint terwijl middelste muisknop ingedrukt wordt.
syn - start syndaemon voor een betere ondersteuning van Synaptics touchpads.
ssh - start de SSH server (standaard uitgeschakeld).

nomodeset ⇒

Opstarten zonder kernel mode instelling, nodig met sommige machines.

rootdelay=10 ⇒

Voeg 10 seconden vertraging aan de kernel toe om USB initializatie
meer tijd te geven.  Probeer deze optie als het opstarten mislukt.
Standaard is 5.

swap ⇒

Laat het Live OS alle swappartities activeren op de lokale hardware.
Standaard wordt geen swap partitie aangeraakt.

Media tweaks

hostname=jouw_eigen_hostnaam[,kenmerk] ⇒

Geef een aangepaste hostnaam. Het kenmerk 'fixed' kan worden toegevoegd
om wijziging van hostnaam te verhinderen in geval van een netwerk boot.

livemedia=/dev/sdX ⇒

Vertel het init script welke partitie het Slackware Live besturingssysteem
bevat dat je wilt opstarten. Dit kan nodig zijn als je een ander exemplaar
van Slackware Live hebt geïnstalleerd op een andere partitie.
Ook worden geaccepteerd: UUID of LABEL.

livemedia=/dev/sdX:/path/to/live.iso ⇒

Gebruik dit als je het Live OS van een ISO-bestand wilt starten dat zich
op een lokale harde schijf partitie bevindt.

livemain=directoryname ⇒

Gebruik dit als je de inhoud hebt gekopieerd
van de ISO naar een andere directory dan "liveslak".

luksvol=bestand1[:/mountpoint1][,bestand2[:/mountpoint2],…] ⇒

Mount LUKS container "bestand1" op mount point "/mountpoint1"
in het Live bestandssysteem. Meerdere bestanden moeten worden gescheiden
door een komma.
Geef "luksvol=" om te *voorkomen* dat enige LUKS container gemount wordt,
met inbegrip van een versleutelde /home.

nop ⇒

Geen persistentie, dat wil zeggen start met het maagdelijke OS
en sla geen veranderingen op.
Nuttig indien je "persistence" directory beschadigd raakte.
Als je alle persistente data wilt negeren tijdens het opstarten,
waaronder LUKS data, gebruik dan de boot parameters "nop luksvol=".

nop=wipe ⇒

Wis alle gegevens in de persistentie directory of -container.
Nuttig ingeval de persistente gegevens corrupt geraakt zijn.

persistence=naam ⇒

Gebruik dit als je gebruik maakt van een ander
directory/bestand dan "persistence" voor het opslaan van persistente data.

toram ⇒

kopieert het besturingssysteem vanuit het opstartmedium naar RAM voordat
het start. Het opstartmedium kan dan na het opstarten verwijderd worden.

Problemen oplossen

blacklist=mod1[,mod2[,…]] ⇒

Zet een of meer kernel modules op de zwarte lijst van de kernel
om te voorkomen dat ze geladen worden, in geval ze problemen
veroorzaken tijdens het gebruik. Scheid modulenamen met komma's.

debug ⇒

Bij uitvoeren van 'init' wordt op strategische locaties gepauzeerd.
Informatie wordt getoond over de status van het overlay filesystem
en mounts.

rescue ⇒

Na de initialisatie kom je in een "rescue shell" terecht om onderhoud
uit te voeren op laag niveau.

Lay-out van de ISO

De Live ISO bevat drie mappen in de root van het bestandssysteem:

De USB-variant met persistentie kan een extra map in de root hebben:

Ontwikkelaar Documentatie

Scripts en gereedschappen

make_slackware_live.sh

Het eerste script:

Het script “make_slackware_live.sh” creëert een ISO-bestand dat het Live OS bevat. Dankzij Linux kernel 4.x en het squashfs-tools pakket in Slackware, is (her)compilatie van Slackware inhoud of het installeren van 3rd party pakketten niet nodig om een Slackware Live ISO te creeren.

De werking van het script kan worden onderverdeeld in meerdere afzonderlijke fases. Het proces verloopt als volgt:

Installeer de Slackware pakketten

Eerste fase:

Configureer het Live bestandssysteem met zinvolle defaults

Fase twee:

Configureer de boot fase van het Live OS

Fase drie:

Maak de ISO image

Fase vier:

Klaar! Je kunt het ISO-bestand en de MD5 checksum in de /tmp directory vinden.

iso2usb.sh

Het tweede script:

Het gebruik van het “iso2usb.sh” script wordt in detail uitgelegd in een eerdere paragraaf “Overdracht van ISO inhoud naar USB-stick”.

Deze paragraaf beschrijft hoe het script de ISO aanpast voor een verbeterde USB functionaliteit.

Mount een bestandssysteem in een versleutelde container

Het script zal een bestand van de gewenste grootte aanmaken in de root van de Live partitie met het programma 'dd'. Het commando 'cryptsetup luksCreate' begint de versleuteling, waarbij de vraag wordt gesteld “weet je dit zeker, type de hoofdletters YES”, waarna een codeerwachtwoord drie keer moet worden ingevoerd (twee voor het initializeren, en één voor het openen van de container). Wanneer dit container bestand wordt gebruikt voor een versleutelde /home, is de bestandsnaam “slhome.img”. Het script kopieert de bestaande inhoud van de /home map uit de ISO naar de container, die later in de plaats van /home in het Live bestandssysteem gemount wordt (waardoor de bestaande /home gemaskeerd wordt). Het Live OS wordt geconfigureerd om de container te ontsleutelen en het bestandssysteem te mounten. Die configuratiegegevens worden geschreven in het bestand ”/luksdev“ in de initrd door het toevoegen van een regel die enkel bevat: ”/slhome.img“. Het iso2usb.sh script ondersteunt alleen het creëren en configureren van een versleutelde /home, maar je kunt additionele versleutelde containers maken en die mounten op andere locaties in het bestandssysteem van de ISO. Om dit te laten werken, moet je zelf het ”/luksdev“ bestand bewerken en een regel ”/jouw/container.img:/jouw/mountpoint“ toevoegen, dwz de padnaam van de container en de directory waar deze container gemount moet worden staan op één regel, gescheiden door een dubbele punt. Het Live 'init' script zal de mount directory aanmaken als deze ontbreekt.

Gebruik van een container voor het opslaan van persistente data

Een tweede type versleutelde container kan worden gebruikt voor het opslaan van persistente data. Het Live 'init' script controleert of het persistentie moet inschakelen in deze volgorde:

  1. Is het USB bestandssysteem beschrijfbaar? Zo ja,
    1. Bestaat een directory /persistence ? Als dat zo is, wordt die gebruikt; zo niet,
    2. Bestaat een bestand met de naam /persistence.img ? Zo ja, dan wordt het bestand gemount en als het een versleutelde container blijkt te zijn, wordt om het LUKS wachtwoord gevraagd tijdens het opstarten.
Het toevoegen van USB wachttijd

Voor langzame USB media kan de standaard 5 seconden wachttijd tijdens het opstarten soms onvoldoende zijn voor de kernel om de partities op je USB apparaat te detecteren. Het script kan optioneel meer wachttijd toevoegen. Het doet dit door het bestand ”/wait-for-root“ te bewerken in de initrd en de waarde op te hogen die daar is opgeslagen (standaard wordt de waarde “5” geschreven door het “make_slackware_live.sh” script).

makemod

Het derde script:

Met het “makemod” script kun je eenvoudig een Slackware Live module maken, met een Slackware pakket of een directory boom als de invoerparameter.

Gebruik:

# makemod <pakketnaam|directory> modulenaam.sxz

Je kunt de module die je zojuist hebt gemaakt (let op de bestandsnaam conventies voor een Slackware Live module, zie paragraaf “Slackware Live module format”) naar de optional/ of naar de addons/ directory van het Live OS kopiëren . Als je het module bestand kopiëert naar de optional/ of addons/ directory van de liveslak brondirectory dan zal “make_slackware_live.sh” de module toevoegen bij het genereren van de ISO image.

setup2hd

Het vierde script:

Het “setup2hd” script stelt je in staat om het draaiende Live besturingssysteem te installeren op de lokale harde schijf van je computer. Het “setup2hd” script is een aangepaste Slackware 'installer', zodat het installatie proces bekend zal voorkomen. In tegenstelling tot een standaard Slackware installatie is hier geen 'SOURCE' selectie, omdat het script weet waar het de squashfs modules kan vinden. Nadat je de doelpartitie(s) hebt geselecteerd, worden alle actieve modules van de Live OS variant (SLACKWARE, PLASMA5, MATE, …) uitgepakt op de harde schijf. Nadat de extractie is voltooid, geeft het script een overzicht van de modules die zijn verwerkt. Het zal ook een voorbeeld commando laten zien om resterende inactieve of uitgezette modules handmatig uit te pakken. De laatste stap in de installatie is als vanouds de reguliere Slackware installer die de Slackware configuratiescripts start.

pxeserver

Het vijfde script:

Het pxeserver script werkt als volgt:

Het creëren van een Live ISO vanuit het niets

Een ISO-image van Slackware live Edition creëren vereist dat je computer Slackware 14.2 (64-bit) draait. Oudere versies van Slackware hebben een kernel die te oud is om gebruik te maken van de “overlayfs” kernel functionaliteit - noodzakelijk om liveslak te ondersteunen. Ook ontbreken de squashfs programma's. Daarom ook kan een Slackware Live Edition alleen worden gemaakt voor Slackware 14.2 of nieuwer.

Een lokale kopie van een Slackware distributie (14.2) is noodzakelijk omdat de pakketten daarin worden gebruikt bij het opbouwen van de ISO.

Je moet ook de “liveslak” script collectie downloaden via een van de URLs aan het eind van deze pagina.

Liveslak is een directorystructuur met scripts, bitmaps en configuratiebestanden. Slechts 5 scripts zijn bedoeld om te worden uitgevoerd door jou, de gebruiker. Deze scripts (“make_slackware_live.sh”, “iso2usb.sh”, “makemod”, “setup2hd” en “pxeserver”) worden nader toegelicht in het hoofdstuk “Scripts en gereedschappen” hogerop. Bij het maken van een Live ISO vanuit het niets, hoef je alleen maar het “make_slackware_live.sh” script uit te voeren.

Layout van liveslak

De toplevel 'liveslak' map bevat de volgende submappen:

De toplevel 'liveslak' directory bevat de volgende bestanden:

Genereer de ISO

Het “make_slackware_live.sh' script van liveslak accepteert optionele parameters om het proces van Live OS generatie te beinvloeden:

Parameters van het script zijn:
 -h                 Deze helptekst.
 -a arch            Machine architectuur (default: x86_64).
                    Gebruik i586 voor een 32bit ISO, x86_64 voor 64-bit.
 -d desktoptype     SLACKWARE (full Slack), KDE4 (basis KDE4),
                    XFCE (basis XFCE), PLASMA5 (vervangt KDE4),
                    MATE (gnome2 fork vervangt KDE4), CINNAMON (fork van
                    gnome3 shell vervangt KDE4).
 -e                 Gebruik ISO boot-load-grootte van 32 voor computers
                    waar de ISO anders niet zal opstarten (standaard: 4).
 -f                 Gedwongen re-generatie van alle squashfs modules,
                    aangepaste configuraties en nieuwe initrd.img.
 -m pkglst[,pkglst] Modules toevoegen gedefinieerd door pkglists/<pkglst>,...
 -r serie[,serie]   Vernieuw slechts één of een paar pakket series.
 -s slackrepo_dir   Directory die de Slackware repository bevat.
 -t <doc | mandoc>  Verklein de ISO (verwijder man pages en/of documentatie).
 -v                 Toon debug/error output.
 -z versie          Bepaal de Slackware versie (standaard: current).
 ​-G ​                ​Genereer ISO bestand vanuit bestaande directory structuur
 -H <hostnaam>      Hostnaam voor het Live OS (standaard: darkstar).
 ​-M ​                Voeg multilib toe (enkel voor x86_64).
 -O <outfile>       Custom bestandsnaam van de ISO.
 -R <runlevel>      Runlevel om mee op te starten (standaard: 4).
 -X                 Gebruik xorriso plaats van mkisofs/isohybrid.

Het script maakt gebruik van pakket repositories om een Live ISO te creëren. De pakketten zullen worden geïnstalleerd in een tijdelijke map.

Om een Live ISO te creëren voor een van deze varianten, moet een lokale kopie aanwezig zijn van alle gebruikte pakket repositories (dit kan een over het netwerk gemounte directory zijn). Een lokale mirror van de officiele Slackware repository is in ieder geval verplicht en moet handmatig worden klaargezet. Alle pakketten die worden gebruikt uit een 3rd party repository kunnen door “make_slackware_kive.sh” gedownload worden vanaf een externe server indien een rsync URL voor de repository in ./pkglists/*.conf is geconfigureerd.

Wanneer aan alle voorwaarden is voldaan, is een enkel commando voldoende om de ISO te genereren. Het volgende voorbeeld zal een ISO bestand voor een pure Slackware Live Edition (64bit -current) maken:

# ./make_slackware_live.sh

Hier is een ander voorbeeld waarbij een MATE variant wordt gemaakt, runlevel '3' als standaard wordt ingesteld en er een aangepast pad voor de Slackware pakket repository wordt gespecificeerd (houd er rekening mee dat het script zoekt naar een subdirectory “slackware64-current” onder deze directory als deze ISO wordt gegenereerd op basis van slackware64-current):

# ./make_slackware_live.sh -d MATE -R 3 -s ~ftp/pub/Slackware

Indien je wilt weten welke pakket sets worden gebruikt in de ondersteunde Desktop Environments, brengt de volgende commandoregel uitkomst:

# grep ^SEQ_ make_slackware_live.sh

Voor MATE vind je:

SEQ_MSB="tagfile:a,ap,d,e,f,k,l,n,t,tcl,x,xap,xfce,y pkglist:slackextra,mate local:slackpkg+"

Dat betekent dat de meeste Slackware pakket series (met uitzondering van KDE en KDEI) worden geïnstalleerd met behulp van hun tagfiles, en daar bovenop worden twee pakket lijsten geïnstalleerd die in de pkglists/ subdirectory gedefinieerd zijn: 'slackextra' en 'mate'. Tot slot zal “slackpkg+” worden geïnstalleerd vanuit de subdirectory local64/.

Mogelijkheden tot aanpassen van het Live OS

Je kunt je eigen aangepaste Live OS creëren door het veranderen van bepaalde eigenschappen in het configuratiebestand 'make_slackware_live.conf'. Sommige van de dingen die je kunt veranderen zijn:

Dit is het gedeelte in “make_slackware_live.conf' dat zich bezighoudt met deze aanpassingen. Twee variabelen zijn vereist als je je eigen aangepaste Live OS wilt maken: 'LIVEDE ' en 'SEQ_CUSTOM'. De rest is optioneel (maar meestal toch nuttig):

# VERPLICHT:
# Definieer een nieuwe naam voor je eigen variant van Slackware Live Edition:
#LIVEDE="CINELERRA"

# VERPLICHT:
# Je eigen aangepaste pakket sequentie voor een aangepaste Live ISO.
# In dit voorbeeld zou je twee bestanden moeten creëren,
# "pkglists/cinelerra.conf" en "pkglists/cinelerra.lst" die respectievelijk
# de  pakket locatie en pakket lijst definiëren.
#SEQ_CUSTOM="min,xbase,xapbase,xfcebase,cinelerra"

# OPTIE:
# Gebruik een andere naam dan "​min" voor de pakkettenlijst die de generieke kernel bevat:
#​MINLIST="​min"​

# OPTIE:
# Je aangepaste distro naam (zichtbaar in het opstartscherm en bestandsnamen):
#DISTRO="cinelerra"

# OPTIE:
# Naam van het 'live'​ gebruikersaccount in de Live omgeving:
#​LIVEUID="​live"​

# OPTIE:
# Marker gebruikt voor het vinden van de Slackware Live bestanden:
#MARKER="CINELERRA"

# OPTIE:
# Het bestandssysteem label van de ISO:
#MEDIALABEL="CINELERRA"

# OPTIE:
# De ISO hoofdmap:
#LIVEMAIN="cinelerra"

# OPTIE:
# Voeg je eigen Live OS aanpassingen toe aan de functie custom_config():
#custom_config() {
#  # Voeg je eigen code hier toe, als je functionaliteit nodig hebt
#  # die niet wordt gedekt door het hoofdscript:
#}

Interne werking van Slackware Live Edition

Overlayfs, squashfs

Overlayfs en squashfs zorgen voor de echte magie hier. Zoals eerder uitgelegd, maakt het squashfs programma uit een directory structuur een enkel gecomprimeerd archiefbestand. Het doet dit op een speciale manier, eerder zoals mkisofs dit doet dan zoals tar een archief creëert. De resulterende module kan worden ge”loop“mount om het bestandssysteem er binnen in te benaderen.

Wanneer je een aantal van deze loop-mounted squashfs modules hebt, en elk bevat een deel van het bestandssysteem van het Live OS, ga je vervolgens deze fractionele bestandssystemen “op elkaar stapelen” om zodoende het volledige bestandssysteem op te bouwen (net als Kuifje deed in Het Geheim van de Eenhoorn, toen hij verschillende doorschijnende stukken perkament over elkaar heen legde en de vellen tegen het licht hield om het volledige beeld te zien). Overlayfs is de kernelmodule die deze 'superpositie' van de fractionele bestandssystemen uitvoert. Overlayfs stapelt een of meer read-only fractionele bestandssystemen en precies één beschrijfbaar bestandssysteem op elkaar. Dit beschrijfbare bestandssysteem is wat het Live OS de schijn geeft dat het naar een harde schijf klan schrijven - de schrijfacties naar het overlay filesystem worden echter gedaan naar RAM (in dat geval heb je een echt Live OS) of naar een 'persistent' bestandssysteem dat op een beschrijfbaar medium ligt (een Live USB stick met “persistence” is een voorbeeld van deze situatie).

De initrd en het init script

De initiele ram disk (initrd) die wordt gebruikt voor de Slackware Live Edition is een standaard Slackware initrd image dat gemaakt wordt met Slackware's “mkinitrd” programma, met slechts één wijziging: het ”/init“ script. De juiste naam voor een 'initrd' is tegenwoordig overigens 'initramfs', een afkorting van “initiëel ram filesysteem”, omdat dit het eerste bestandssysteem bevat dat in het kernelgeheugen wordt geladen wanneer de computer opstart. De voornaamste functie van het init script van een initrd is om het “root” bestandssysteem klaar te maken vóór de daadwerkelijke start van het OS begint. Wanneer het besturingssysteem dan wordt gestart, krijgt het een “root” bestandssysteem aangeboden dat klaar voor gebruik is. Een voorbeeldgeval is natuurlijk een LUKS-versleuteld “root” bestandssysteem dat eerst middels een wachtwoord moet worden ontsleuteld. Een ander voorbeeld is een “root” bestandssysteem dat is opgeslagen op logische volumes (LVM). Er is ook dan wat werk vooraf nodig om het “root” bestandssysteem toegankelijk te maken en te kunnen beginnen met het echte “init” programma van het OS (PID 1). Net als in de voorgaande voorbeelden heb je een initializatie-script in een initrd nodig om het “root” bestandssysteem van een Live OS beschikbaar te maken. Slackware's eigen standaard initrd ondersteunt geen Live omgeving. Daarom is het standaard “init” script uit het “mkinitrd” pakket uitgebreid met functionaliteit die noodzakelijk is voor “liveslak”.

Wat doet het 'liveslak' init script?

Slackware Live module format

Een Slackware Live module bevat een directory structuur, die is 'samengeperst' in een gecomprimeerd archiefbestand door het programma “squashfs”. Het compressie-algoritme dat wordt gebruikt is “XZ”, waarmee de keuze voor de bestandsextensie van de module ”.sxz“ betekenis krijgt: “squashed with xz”.

Slackware Live Edition vereist van de squashfs modules dat ze zich houden aan een conventie voor de bestandsnaam:

  1. Voorbeeld van een systeem module: 0099-slackware_zzzconf-14.2-x86_64.sxz
  2. Voorbeeld van een optionele module: 0060-nvidia-352.79_4.4.12-14.2-x86_64.sxz

Andere Slackware gebaseerde Live distributies

Natuurlijk gingen veel mensen mij voor, en omdat ik als een n00b in Linux Live land begon, heb ik veel geleerd over hoe een Live distro werkt door simpelweg te “spelen” met deze andere Slackware gebaseerde Live distributies. Sta mij toe om ze te noemen en respect te tonen:

SLAX

Website: https://www.slax.org/

SLAX was de oorspronkelijke Live spinoff van Slackware. De linux-live scripts die worden gebruikt om een SLAX ISO maken werden gegeneraliseerd, zodat ze een Live versie kunnen creëren van een willekeuring Linux besturingssysteem dat al op een harde schijf is voorgeïnstalleerd. De ontwikkeling van SLAX leek een paar jaar geleden te zijn gestopt, maar de ontwikkelaar lijkt recentelijk de draad te hebben opgepakt.

De Live functionaliteit van SLAX is gebaseerd op aufs en unionfs. Deze bestandssystemen vereisen een op maat gemaakte kernel waar aufs ondersteuning in gecompileerd is. Deze distro heeft een kleine omvang en zijn opstart scripts zijn herschreven met een focus op betere opstart snelheid.

Porteus

Website: http://ww.porteus.org/

Porteus werd opgericht als een afsplitsing van SLAX door de SLAX gemeenschap toen de ontwikkeling van SLAX leek te zijn beëindigd. Porteus heeft een actieve community van gebruikers waar het allemaal “draait om de modules”. Het gebruik van aufs plaats van overlayfs stelt Porteus in staat (net zoals SLAX) om squashfs modules nar believen in het lopende Live systeem toe te voegen en te verwijderen. Deze “killer feature” heeft de ontwikkeling van een groot aantal community modules aangewakkerd. Het lijkt erop dat de volgende generatie van Porteus zal worden gebaseerd op Arch Linux in plaats van Slackware; dit heeft te maken met het feit dat de oorspronkelijke Porteus ontwikkelaar het team verlaten heeft.

Salix Live

Website: http://www.salixos.org/download.html

Salix is een distributie op basis van Slackware met zijn eigen filosofie van “één programma per taak”. Hierdoor kon het aantal pakketten flink gereduceerd worden in vergelijking met de moeder distro, Slackware. Salix heeft het controleren van pakket-afhankelijkheden geïmplementeerd in zijn package management programma. Diverse Live edities van Salix zijn verkrijgbaar, die elk gebouwd zijn rondom en gericht op een andere Desktop Environment of Window Manager. Live-edities zijn beschikbaar voor XFCE en MATE.

Slackel

Website: http://www.slackel.gr/

Slackel is een Griekse distro op basis van zowel Slackware als Salix. Het wordt aangeboden in drie edities, die elk een Live variant hebben: KDE4, Openbox en Fluxbox. De Live scripts zijn een aanpassing van Salix-Live.

SlackEX

Website: http://slackex.exton.net/

Een website met live versies op basis van vele reguliere Linux-distributies. De SlackEX versie is losjes gebaseerd op Slackware met een aangepaste kernel en een aantal tools die geen deel uitmaken van Slackware zelf. Ik was niet in staat om de bronnen voor deze live distro te vinden.

Liveslak Bronnen

Slackware Live Edition wordt gecreëerd door de 'liveslak' scripts ontwikkeld en onderhouden door Eric Hameleers aka Alien BOB alien@slackware.com.

Bronnen