Linux Bibel online ~ Eigene Distribution

Creative Commons Lizenzvertrag
Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 3.0 Österreich Lizenz.

Change language by Google translator: ...

In diesem Artikel werden wir uns damit befassen wie wir aus einer bestehenden Distribution, beispielsweise aus Ubuntu oder Debian eine für uns maßgeschneiderte Variante bauen die wir beispielsweise als Live-System nutzen oder natürlich auch installieren können. Natürlich werden wir auch lernen wie wir uns komplett von Beginn an unsere eigene Distribution erstellen indem wir einen Kernel nehmen sowie eine freie Partition auf der Festplatte, den Kernel mit nötigen Funktionen ausstatten, ein Dateisystem herum anpassen und das System mit nötiger Software versorgen um langsam aber sicher von einer Datei zu einem laufenden System zu kommen.

Wozu könnte man eine eigene Distribution benötigen wenn es doch schon so viele gibt? Nun, gerade Administratoren von Firmen-Netzwerken kennen die Problematik - da kommen ein paar neue Rechner die ins System eingehängt werden sollen, jeder wird mit gewisser Software bestückt, auf jedem werden Einstellungen vorgenommen und Rechte gesetzt - alles in allem eine Menge Arbeit die viel Zeit verschlingt. Administratoren großer Windows-Netzwerke nutzen in solchen Fällen ganz einfach Software die diese Geschichte für sie vornimmt, Sie installieren das System, das installierte System nimmt nun nach Vorlagen die Einstellungen des Administrators vor und zieht wenn möglich benötigte Software automatisch nach. Selbst dies kostet noch immer viel Zeit.
Nehmen wir nun ein angepasstes Linux-System auf dem wir Einstellungen vor nehmen, installieren dort gewünschte Software und setzen passende Rechte - stellen aus diesem angepassten System ein installierbares Live-System her fällt nur noch die Installation an - alle Software, Einstellungen und Rechte werden übernommen.
Natürlich hat ein eigenes angepasstes System auch weitere Vorteile, man hat sein eigenes System immer dabei, etwa auf DVD oder USB-Stick, man kann Freunden schnell ein Linux-System installieren ohne lange dabei herum werkeln zu müssen, man kann es als Rettungssystem nutzen und vieles mehr.
Die von Grund auf neu erstellte Linux-Distribution ist schließlich lernen wie Linux wirklich funktioniert, dadurch verseht man auch Probleme selbst und direkt zu lösen, Zusammenhänge verstehen oder ganz einfach das ultimativ angepasste Linux.

Ohne Hilfsmittel zum eigenen Live-System

In diesem Beispiel nutzen wir eine bestehende installierte Linux-Distribution basierend auf Debian, also etwa Debian selbst, Ubuntu, Kubuntu, Linux Mint oder eine ähnliche ohne unnötige zusätzliche Software zu installieren, alles was wir benötigen sind einige System-Anwendungen und ein CD-/DVD-Image der gewünschten Distribution - dieses Image sollte die selbe Version des Installierten Systems sein.
Was wir durch diese Variante erhalten ist ein angepasstes Image der installierten Distribution mit gewünschter Software und minimal gestarteten Dienste.

Als erstes lädt man sich natürlich das ISO-Image der Distribution herunter und speichert dieses in einem beliebigen Verzeichnis, im Beispiel liegt ganz einfach im Home-Verzeichnis "/home/robert" die Datei "debian-live-8.6.0-amd64-kde-desktop.iso ", also "/home/robert/debian-live-8.6.0-amd64-kde-desktop.iso". Nun benötigen wir einige System-Software die wir ganz einfach über die Paket-Verwaltung durch die Pakete "build-essential debootstrap squashfs-tools genisoimage syslinux-common" installieren.

Nach der Installation dieser Pakete können wir direkt an die Erstellung unseres eigenen ISO-Images gehen. Nun müssen wir das ISO-Image erst mal an passender Stelle mounten / einhängen um benötigte Dateien von diesem zu kopieren - ansonsten müssten wir uns diese vom installierten System zusammen suchen und dies wäre eine Menge Arbeit. Wir hängen also nun unser ISO-Image als Nutzer root auf dem Terminal unter dem System-Verzeichnis "/mnt" ein:

mount -o loop /home/robert/debian-live-8.6.0-amd64-kde-desktop.iso /mnt

Schon finden wir unter "/mnt" den Inhalt der CD/DVD. Nun erstellt man sich am besten in seinem Home-Verzeichnis ein neues Verzeichnis das man beispielsweise "iso" nennt, also "/home/robert/iso" und kopiert sich die nötigen Dateien vom Image in dieses Verzeichnis. Dies sind nun die Verzeichnisse "boot isolinux" sowie bei 64Bit-Systemen das Verzeichnis "efi" und das versteckte Verzeichnis ".disk", dazu legen wir das Verzeichnis "casper" an in dem sich dann das Live-System befinden wird, zusätzlich das Verzeichnis "squashfs". Weil es am schnellsten geht nutzen wir dazu gleich das Terminal als normaler Nutzer:

cp /mnt/boot /home/robert/iso cp /mnt/isolinux /home/robert/iso cp /mnt/efi /home/robert/iso cp /mnt/.disk /home/robert/iso mkdir /home/robert/iso/casper mkdir /home/robert/iso/squashfs

Nun erstellen wir das Dateisystem sowie das eigentliche Live-System, hier gilt es ein wenig aufzupassen, man nutzt dazu unbedingt die Architektur und den Namen der genutzten Distribution, im Beispiel "amd64" für 64Bit-Prozessoren sowie "stretch" für Debian Stretch, wir wechseln in das Verzeichnis "squashfs" und erstellen das Dateisystem:

cd /home/robert/iso/squashfs debootstrap --arch amd64 stretch squashfs

Was wir hiermit erstellt haben ist ein minimales auf Debian Stretch basierendes System mit 64Bit, uns fehlen hier jedoch noch einige Dinge die wir absolut benötigen, so etwa unter anderem der Kernel und natürlich so einiges an Software. Damit wir dies alles installieren können müssen wir das gerade erstellte System zum laufen bringen. Dazu bringen wir diverse in unserem installierten Systeme vorhandenen Verzeichnisse mit System-Daten in unser Squashfs-Verzeichnis ein - als Administrator:

mount --bind /dev /home/robert/iso/squashfs/dev mount -t devpts devpts /home/robert/iso/squashfs/dev/pts mount -t proc proc Home/robert/iso/squashfs/proc mount -t sysfs sysfs /home/robert/squashfs/sys

Was wir bisher geleistet haben ist - Sie werden es nicht glauben ein lauffähiges System das wir in einem Container wie etwa unter Docker schon laufen lassen können - zu virtualisieren ist jedoch gar nicht nötig. Was dieses System noch benötigt ist eine Verbindung zum Internet, es nutzt die aktive Verbindung des installierten und laufenden Systems, da es abgeschottet läuft benötigt es jedoch noch einen DNS-Server (Name-Server), wir nutzen einfach die die auch unser aktives System nutzt, wir kopieren also die nötigen Informationen in unser erstelltes Live-System:

cp /etc/resolv.conf /home/robert/iso/squashfs/etc

Mit unserem erstellten System kommen wir nun schon in das Netz, was wir noch benötigen um auch Software zu installieren ist die Repositorys. Auch hier nutzen wir unsere vom laufenden System genutzten und kopieren diese:

cp /etc/apt/sources.list /home/robert/iso/squashfs/etc/apt/ cp /etc/apt/sources.list.d/ /home/robert/iso/squashfs/etc/apt/

Damit wären wir soweit, wir haben ein System das mit unserem real laufenden Kernel läuft, die Daten unseres laufenden System nutzt, ins Internet kann und Software der Distribution installieren kann. Wir müssen nur noch die Quellen aktualisieren was durch ein:

cd /home/robert/iso/ chroot squashfs apt update

möglich ist. Nachdem die Quellen aktualisiert wurden gilt es nur noch benötigte Software zu installieren, als wichtigstes natürlich den Kernel, unter Debian führt etwa:

chroot squashfs apt install linux-image-amd64

zum Ziel, für ein 32Bit-System unter Ubuntu der Kernel "linux-image-generic". Noch nötig wären die Pakete "tzdata console-setup", wichtig - da es sich um ein Live-System handelt - mit dem Kernel wird auch der Bootloader GRUB installiert der konfiguriert werden will - dieser fragt bei der Konfiguration nach der Festplatte zum Starten, geben Sie hier nichts an und beenden die Konfiguration, würden Sie eine Platte angeben würde das Live-System nicht starten. Unter Ubuntu installieren Sie zusätzlich "casper ubiquity-casper lupin-casper" und unter Debian "live-boot".

Nun müssen Sie nur noch einen grafischen Desktop Ihrer Wahl installieren und gewünschte Software. Nach der Installation aller Software starten Sie den Befehl:

chroot squashfs update-initramfs -k all -c

Um die Konfiguration zu speichern und:

zcat squashfs/boot/initrd.img* | lzma -9c > iso casper/initrd.lz cp squashfs/boot/vmlinuz* iso/casper/vmlinuz

Damit komprimieren Sie die Ramdisk und kopieren Sie sowie den Kernel an die richtige Stelle, wir entfernen noch unnötige Dateien:

umount squashfs/dev/pts squashfs/dev squashfs/proc squashfs/sys rm -rf squashfs/etc/resolv.conf rm -rf squashfs/usr/sbin/policy-rc.d

Um auf dem Datenträger Platz zu sparen führen wir folgenden Befehl aus:

mksquashfs squashfs /home/robert/iso/casper/filesystem.squashfs -noappend

Nun gilt es daraus nur noch ein bootfähiges ISO-Image zu erstellen:

genisoimage -cache-inodes -r -J -1 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o meine_distro.iso iso

Soll das ISO-Image nicht nur auf CD/DVD gebrannt werden sondern auch auf USB-Sticks zum Einsatz kommen:

isohybrid meine_distro.iso

Weitere

In Kürze folgen weitere und einfachere Varianten der Erstellung der eigenen Distribution bis hin zur vollständig neuen Distribution.

Mehr Tipps rund um das Terminal finden Sie im Linux Bibel Terminal-Wiki

Suche Nach oben Startseite Mail an den Autor Links rund um Linux









SiteLock