Linux remastern

Linux-Installation als Live-CD

ZIEL: Das aktuelle, auf Festplatte installierte Linux-Betriebssystem soll geklont und zu einem Live-Linux umgewandelt werden.

Siehe dazu:

Voraussetzungen:

  • Debian 9 (Stretch)

  • Software: apt-get install git zip squashfs-tools genisoimage aufs-tools aufs-dkms

  • Sehr viel Speicherplatz auf /tmp

Wir prüfen letzteres nach:

$> df -h /tmp
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/sda7       658M    1,4M  608M    1% /tmp
$>

Das ist viel zu wenig Platz!

Speicherplatz erweitern

Bei den Skripten von linux-live.org lässt sich zwar in der Datei ‚.config‘ der Speicherort für die letztendlichen Abbilddateien ändern, nicht aber der Ort für die temporären Zwischenergebnisse. Das Verzeichnis /tmp muss einfach eine Unmenge von Daten aufnehmen können.

Mittels des fest im Kernel intergrierten OverlayFS ist es aber relativ einfach, Anleihe an einer anderen, gemounteten Partition zu nehmen, wobei die Daten letztlich dort abgelegt werden, auch wenn sie unter /tmp erscheinen.

Wir sehen nach, welche Partitionen viel Platzreserven haben:

$> df -h
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
udev            488M       0  488M    0% /dev
tmpfs           100M    4,3M   96M    5% /run
/dev/sda1       9,5G    1,3G  7,7G   15% /
tmpfs           499M       0  499M    0% /dev/shm
tmpfs           5,0M       0  5,0M    0% /run/lock
tmpfs           499M       0  499M    0% /sys/fs/cgroup
/dev/sda5       3,4G    238M  3,0G    8% /var
/dev/sda8        35G     49M   33G    1% /home
tmpfs           100M       0  100M    0% /run/user/0
tmpfs           100M       0  100M    0% /run/user/1000
/dev/sda7       658M    1,4M  608M    1% /tmp
$>

Gemäß der bei der Debian-Installation ausgewählten, automatischen Aufteilung der Festplatte ist unter ‚/home‘ eine Menge freier Speicherplatz vorhanden. Wir legen daher dort ein temoräres Verzeichnis an:

$> mkdir /home/tmp

Weiterhin benötigen wir ein Arbeitsverzeichnis für OverlayFS, das auf der selben, üppig bemessenen Partition liegen muss:

$> mkdir /home/work

Nun kann /tmp überlagert werden:

$> mount -t overlay -o lowerdir=/tmp,upperdir=/home/tmp,workdir=/home/work overlay /tmp

Wodurch wir jetzt genug Speicherplatz haben:

$> df -h /tmp
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
overlay          35G     49M   33G    1% /tmp
$>

ACHTUNG: Nach einem späteren Neustart oder einem manuellen ‚umount /tmp‘ sind alle hinzugekommenen Daten nicht mehr unter /tmp sondern nur noch im Verzeichnis /home/tmp zu finden.

Nun kann es bequem im Verzeichnis /tmp losgehen, wobei alle Daten eigentlich im Verzeichnis /home/tmp landen.

Klonen des Git-Repositories:

$> cd /tmp
$> git clone https://github.com/Tomas-M/linux-live.git
Klone nach 'linux-live' ...
remote: Counting objects: 920, done.
remote: Total 920 (delta 0), reused 0 (delta 0), pack-reused 920
Empfange Objekte: 100% (920/920), 4.53 MiB | 2.89 MiB/s, Fertig.
Löse Unterschiede auf: 100% (451/451), Fertig.
$>

In das neue Skriptverzeichnis hineinwechseln und das Live-System bauen:

$> cd linux-live/
$> bash build
Changing current directory to /tmp/linux-live
Building intramfs image...
...
reating ISO file for CD boot...
Creating ZIP for USB boot...
  adding: linux/ (stored 0%)
  adding: linux/bin.sb (stored 0%)
  adding: linux/opt.sb (stored 0%)
  adding: linux/etc.sb (stored 0%)
...
  adding: linux/srv.sb (stored 0%)
  adding: readme.txt (stored 0%)
finished. Find your result in /tmp
$>

$> ls -lh /tmp/linux-x*
-rw-r--r-- 1 root root 384M Aug 21 16:09 /tmp/linux-x86_64.iso
-rw-r--r-- 1 root root 383M Aug 21 16:09 /tmp/linux-x86_64.zip
$>

Am Schluss haben wir zwei Images von unserem aktuellen System vorliegen, die ISO-Datei lässt sich am schnellsten in einer VM testen…