Eigene Slackware-Pakete erstellen

Was unter Windows und MacOS gang und gäbe ist, will ich auf Linux ja auch haben. Ein wichtiger Grund für mich Slackware zu nutzen, ist die Unabhängigkeit von einem Pakete-Manager und vergleichsweiße einfache Erstellung der Distributionseigenen Pakete für Slackware. Den ein Paket kann man später einfacher aus dem System entfernen.

Heute war so ein Fall, wo ich eine bestimmte Software haben wollte, aber es für meine Distribution nicht gibt. Ich habe ein Buch um Python zu lernen, aktuell zu Python3 Version 3.4.5. Ein blick in Slackbuilds.org zeigt mir, das Python3 Version 3.6.0 gerade aktuell ist. Das möchte ich erstmal aber nicht haben. Ein händisches Anpassen der Slackbuild-Skripte brachte kein Erfolg. Von früher her kenne ich aber Wege, wie man händisch auch so sein Programm kompilieren und Paketieren kann.

Der Beitrag von Christian Schneider Slackware Packages erstellen hat mich wieder auf den Kurs gebracht. Immerhin wußte ich noch, das ich bei .configure den –prefix setzen musste…

Ich baue mir also mein python3-3.4.5 selbst. Hier mein Weg.

  1. Downloaden von Python3-3.4.5
  2. In einem Ordner Python3-3.4.5 auspacken
  3. Ins Terminal gehen und in den Ordner mit Python wechseln
  4. .configure –prefix=/usr ausführen, das bestimmt das Ziel wo die Software später landet.
  5. grep -r DESTDIR * ausführen und die Ausgabe nach DESTDIR Eintrag suchen.
  6. Ist es gefunden worden, führt man make DESTDIR=/tmp/packages/python3-3.4.5 install aus. Falls nicht, make prefix=/tmp/packages/python3-3.4.5/usr install.
  7. Nun wechselt man in den python-Ordner, cd /tmp/packages/python3-3.4.5 und mit makepkg /tmp/python3-3.4.5.txz baut man sich sein Paket. Wichtig ist die die Zielangabe, weil ein bauen im selben Ordner, makepkg mit einem Fehler fehlschlägt.
  8. Das paket installieren und nutzen.

Fertig! 🙂

Ich kann jetzt Python3.4.5 für das Selbststudium nutzen und später ein aktuelles Python wählen. Solange ich aber das Buch abarbeiten will, will ich soviel wie möglich gleich haben. Auf Windows und MacOS habe ich auch Python3-3.4.5 laufen. Alles ist also überall gleich. Herrlich 🙂

Eigenen Linux-Kernel kompilieren (backen) – Slackware

Anleitungen, wie man einen eigenen Linux-Kernel kompiliert gibt es ja genug. Dennoch möchte ich “meine” Version des ganzen aufschreiben, auch weil es vielleicht jemand anderes braucht.

Los gehts!

Herunterladen des Kernels von der Projekt, zum Beispiel:

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.6.tar.xz

Danach wechseln nach /usr/src und den heruntergeladenen kernel entpacken, zum Beispiel:

tar xf /home/heinrich/Downloads/linux-linux-4.9.6.tar.xz

Den alten link “linux” entfernen

rm linux

und einen neuen Link zum aktuellem Kernel erstellen

ln -s /usr/src/linux-4.9.6 linux

Danach in den Ordner mit dem neuem Kernel wechseln

cd linux

Hier hat man nun mehrere Methoden zur Auswahl. Mit localmodconfig kann man eine auf das eigene System .config-Datei erstellen. Man kann gänzlich eigenen .configs erstellen oder auch des Distributors verwenden. Ich habe mir einmalig eine eigene .config-Datei erstellt, die ich später für weitere kompilierungen und experimente nutze.

make localmodconfig

Kernel und die Module kompilieren

make bzImage modules

Anschließend die Module installieren mit

make modules_install

Nachdem die kompilation und die installation erfolgreich durchgelaufen ist, muss man noch den erstellten Kernel ins /boot-Verzeichnis kopieren, samt der .config und System.map.

cp arch/x86_64/boot/bzImage /boot/vmlinuz-custom-4.9.6
cp System.map /boot/System.map-custom-4.9.6
cp .config /boot/config-custom-4.9.6

Danach ins /boot-Verzeichnis wechseln, die alte System.map löschen und neue System.map aus dem neuem Kernel verlinken.

cd /boot
rm System.map
ln -s System.map-custom-4.9.3 System.map

Jetzt muss lilo nur noch den neuen Kernel kennen lernen.

In etc/lilo.conf nun um den neuen Kernel ergänzen

image = /boot/vmlinuz-custom-4.9.6
  root = /dev/sda2
  label = Kernel-4.9.6
  read-only

speichern und anschließend lilo als Befehl ausführen. Fertig!

Fazit

Ich habe es ähnlich nach der Wiki von Alien gemacht, das zwar einen älteren Kernel beschreibt und es auch auf den aktuellen 4er Kernel angewendet werden kann.

http://alien.slackbook.org/dokuwiki/doku.php?id=linux:kernelbuilding

Den Befehl localmodconfig habe ich aus einem heise.de-kernel-log-Artikel, finde den Artikel momentan nicht. Sobald ich es finde, reiche ich es hier nach. Dieser Befehl war der Grund warum ich einen neuen Kernel bauen wollte. Früher habe ich die .config-Dateien meines Distributors genommen, oder gänzlich eigenes erstellt. Mit localmodconfig soll automatisch für das locale System passendes .config erstellt werden, das wiederum für einen bootbaren Kernel sorgt.

Mich interessiert es noch, wie man einen Kernel patcht und wie man auch ein Slackware-Paket erstellt. Sollte ich es herausgefunden haben, werde ich es auch nieder schreiben.