Build your own "siduction-like" ISO

Aus Siduction Wiki DE
Wechseln zu: Navigation, Suche

Introduction / Einführung

BEWARE: Not suited for newbies!!!
No support in IRC #siduction.
This is SID (Still In Development) ;)

Since siduction 17.1 the 32bit version (i386) was dropped. As devil wrote: "maintaining an extra kernel for 32-bit is what makes this cumbersome. As I wrote in the release notes, a Liquorix-Kernel or one by Debian will work perfectly fine here."

But also in 2017 you can get a "kind of" siduction for 32 bit machines. This could save some older machines - especially laptops - from being scrapped.


ACHTUNG: Für Anfänger nicht geeignet!!!
Diese Anleitung bedingt keinen Support im #siduction-Channel.
Bitte beachten Sie, die Anleitung befindet sich in steter Überarbeitung!

Seit siduction 17.1 gibt es keine offizielle Unterstützung für 32-Bit-Architektur. Wie devil schrieb: "maintaining an extra kernel for 32-bit is what makes this cumbersome. As I wrote in the release notes, a Liquorix-Kernel or one by Debian will work perfectly fine here." -> „einen Extra-Kernel für 32 Bit zu pflegen ist aufwendig. Wie ich in den Release-Notes schrieb, würde aber ein Liquorix- oder Debian-Kernel hier perfekt funktionieren.“

Wer es sich zutraut, kann auf diese Weise auch ab 2017 noch in den Genuss „einer Art“ siduction für 32-bit-Maschinen kommen. Dies kann speziell für ältere Rechner die Rettung vor dem Wertstoffhof bedeuten.

Preparation / Vorbereitung

Install the necessary programs / Installation der nötigen Programme

# apt install python-apt python-configobj cdebootstrap debootstrap git
# apt install genisoimage subversion subversion-tools syslinux-common python-fll grub-common syslinux 
# apt install squashfs-tools syslinux-utils isolinux gdisk reprepro xorriso

Create some folders / Verzeichnisse anlegen

$ cd $home
$ mkdir fll && cd fll 
$ mkdir pyfll

Install the build environment pyfll / Die Umgebung pyfll installieren

$ git clone https://git.siduction.org/extra/pyfll.git

RTFM / Lesestoff:

$ cat ~/fll/pyfll/pyfll/doc/fll.8.txt

The documentation is spare, but at least you can read the pyfll file (python code) itself.
Die Dokumentation ist knapp, aber man kann ja immer noch pyfll (python code) anschauen.

You will find some configuration files in this folder: / Konfigurations-Dateien befinden sich dort:

~/fll/pyfll/pyfll/conf

Some predefined config file examples / Einige Vorlagen: (https://git.siduction.org/extra/pyfll/src/master/pyfll/conf)

 ~/fll/pyfll/pyfll/conf/kde_i386.conf
 ~/fll/pyfll/pyfll/conf/kde_amd64.conf
 ~/fll/pyfll/pyfll/conf/lxde_amd64.conf 
 ~/fll/pyfll/pyfll/conf/lxde_i386.conf 
 ~/fll/pyfll/pyfll/conf/lxqt_amd64.conf
 ~/fll/pyfll/pyfll/conf/lxqt_i386.conf

Copy the file for your intended build / Die passende Datei kopieren

$ cp ~/fll/pyfll/pyfll/conf/lxqt_patience_i386.conf ~/fll/fll.conf

At the moment only the lxde and lxqt config files for i386 are up to date as they already contain the reference to the liquorix kernel. For all other i386 flavours you should adapt these two files to your need.
Im Augenblick sind nur die lxde- und lxqt-Version der i386-Konfig-Files aktuell und enthalten bereits die Einträge für den liquorix-Kernel. Alle anderen "Flavours" müssen aus diesen beiden Files erstellt werden.

[ 'packages' ]
profile = lxqt
...
[ 'options' ]
build_dir           = /var/cache/pyfll
output_dir          = /srv/iso/lxqt/i386
...
FLL_FLAVOUR         = "lxqt"

Configuration / Konfiguration

Define some directories / Verzeichnisse anpassen

$ $EDITOR ~/fll/fll.conf
build_dir = /var/cache/pyfll
output_dir = /srv/iso/lxqt/i386
build_log = ~/fll/log/lxqt-i386.log

Start the build process / Erzeugen der ISO-Datei

For an easy start you'll find some executables in ~/fll/pyfll with all necessary configuration.
Der Einfachheit liegen im Ordner ~/fll/pyfll aufführbare Dateien, dort sind alle nötigen Voreinstellung schon gemacht.

It is preferred to use your own config - e.g. lxqt_patience_i386.conf with the above mentioned fll.conf.
Es ist jedoch sinnvoll, die oben erwähnte eigene Konfiguration zu verwenden

$ su  
# time ~/fll/pyfll/pyfll/fll -c ~/fll/fll.conf -v

It's also possible to work as user if you create a simple entry in /etc/sudoers.d:
Es kann auch als User gearbeitet werden, wenn ein einfacher Eintag in /etc/sudoers.d erstellt wird:

$USERNAME $HOSTNAME = NOPASSWD: /bin/su

(Replace $USERNAME & $HOSTNAME with your username and hostname / Für $USERNAME & $HOSTNAME die aktuellen Namen eintragen.)

Optimization / Optimierungen

mount build_dir as tmpfs (use your RAM)

melmarker (20170308): "It turns out that a few simple settings can speed up the build process a lot:

  • build in tmpfs - that will improve the build time dramatically
  • use apt-cacher-ng, especially if the internetconnection is slow

The tempfs thing gives an unbelivable boost - ok, one should have sufficient memory. Right now it takes between 7-9 min to build an image on my older local machine with warm apt-cache."

Use at least 8G for the build / Dateisystemgröße mindestens 8G:

# mount -t tmpfs -o size=8G,mode=0755 tmpfs /var/cache/pyfll

Optional apt-cacher-ng

A local cache for the *.deb packages will dramatically reduce the build speed, especially if you consecutively build more flavours (nox, lxqt,...) .
Ein lokaler Zwischenspeicher für die *.deb-Pakete beschleunigt die Erzeugung, besonders wenn mehrere Varianten (nox, lxqt,...) nacheienander gebaut werden sollen.

# apt-get install apt-cacher-ng 

In fll.conf add the entry for apt_cacher (beware apt_cacher instead of statt apt-cacher as predefined in the template):
In der Datei fll.conf kann nun der Eintrag ergänzt werden - Achtung apt_cacher (statt apt-cacher wie im Template auskommentiert):

apt_cacher          = http://127.0.0.1:3142

All *.deb will be stored in /var/cache/apt-cacher-ng and reused in the following builds.
Die *.deb-Pakete landen in /var/cache/apt-cacher-ng und müssen beim nächsten Durchlauf nicht erneut aus dem Internet geladen werden.

Try your shiny new ISO in kvm/qemu / Ausprobieren mit kvm/qemu

kvm = Kernelbased Virtual Machine is now part of qemu.

# apt-get install qemu-system-x86 qemu-utils qemu-kvm ovmf

Easy kvm call to test an ISO, 2G RAM, network and sound:
Einfacher Aufruf (2G RAM, Netzwerk und Sound):

$ kvm -m 2G -soundhw ac97 -usbdevice tablet -cdrom /srv/iso/.../siduction.iso

Create a bootable ISO USB stick / Einen bootfähigen USB-Stick erzeugen

# cat /srv/iso/.../siduction-lxqt-i386.iso > /dev/sdX

or / oder

# dd if=/srv/iso/.../siduction-lxqt-i386.iso of=/dev/sdX bs=1M

(without bs=... this command will take some more time) / Ohne den Parameter bs=... kann das Kopieren länger dauern.

Have fun! / Viel Spass