Wir backen uns einen Kernel für Raspbian, der Linux Container unterstützt
Dezember 5th, 2013 FriedemannIm Rahmen eines FH-Projektes setze ich mich zur Zeit mit Linux Containern (LXC) auseinander. Über die Konfiguration und die notwendigen Einstellungen werde ich demnächst einmal etwas schreiben. Zunächst möchte ich allerdings einen Artikel verfassen, der darauf eingeht wie man sich einen Kernel für die Raspberry-Pi Distribution „Raspbian“ kompiliert, der auch mit diesen Containern umgehen kann.
Dieser Beitrag basiert hauptsächlich, wenn nicht sogar vollständig, auf diesen Blog-Eintrag: http://raspberrypicloud.[…]-for-the-raspberry-pi/
Ich gehe in diesem Beitrag davon aus, dass ihr Raspbian bereits erfolgreich installiert habt.
Die Schritte werden allesamt als root-User ausgeführt. Hierzu gebt einfach in der Konsole
1 | sudo -s |
ein. Dann müsst ihr nicht vor jeden Befehl ein sudo setzen.
Schritt 1 – Vorbereitungen
Zunächst solltet ihr euer OS auf den neuesten Stand bringen:
1 | # apt-get update && apt-get upgrade |
Nachdem das OS auf den neuesten Stand gebracht worden ist, installiert ihr euch erst einmal git und die benötigten Kernel Entwicklertools:
1 | # apt-get install git-core ncurses-dev |
Schritt 2 – Die Firmware updaten
Achtung. Dieser Schritt dauert eine Weile. Ihr könnt in der Zeit ein paar Kaffees trinken 🙂 Alternativ könnt ihr die Daten natürlich auch von einem anderen Rechner aus die Dateien herunterladen und später auf die SD-Karte transferieren
1 2 3 4 5 6 7 | # cd /opt # git clone git://github.com/raspberrypi/firmware.git # cd firmware/boot # cp * /boot # cd ../modules # cp -r * /lib/modules # reboot |
Schritt 4 – Die Größe des Swaps anpassen
Da es zu Problemen während des Checkouts aufgrund einer zu kleinen Auslagerungsdatei kommen kann, muss die Größe des Swaps angepasst werden:
1 2 3 4 | # nano /etc/dphys-swapfile # den Wert auf 500 setzen # sudo dphys-swapfile setup # reboot |
Schritt 5 – Den Ofen vorheizen
Der nächste Schritt dauert lange – WIRKLICH lange.
1 2 3 4 5 6 | # cd /opt # mkdir raspberrypi # cd raspberrypi # git clone git://github.com/raspberrypi/linux.git # cd linux # zcat /proc/config.gz > .config |
Schritt 6 – Das Swap-File wieder verringern
Analog zu Schritt 4:
1 2 3 4 | # nano /etc/dphys-swapfile # den Wert auf 100 setzen # dphys-swapfile setup # reboot |
Schritt 6 – Möge das Backen beginnen
Kernel Optionen
Zunächst müssen einige Einstellungen in für den Kernel getan werden. Dies geht folgendermaßen:
1 2 | # cd /opt/raspberrypi/linx # make menuconfig |
Dort wählt ihr die folgenden Punkte an:
- General -> Control Group Support -> Memory Resource Controller for Control Groups (Und die drei Unterpunkte)
- General -> Control Group Support -> cpuset support
- Device Drivers -> Character Devices -> Support multiple instances of devpts
- Device Drivers -> Network Device Support -> Virtual ethernet pair device
Ab in den Ofen
1 2 3 4 5 6 7 8 9 | # make # make modules_install # cd /opt/raspberrypi # git clone git://github.com/raspberrypi/tools.git # cd tools/mkimage # python ./imagetool-uncompressed.py /opt/raspberrypi/linux/arch/arm/boot/Image # cp /boot/kernel.img /boot/kernel-old.img # cp kernel.img /boot/ # reboot |
Die aktuelle Version der LXC – Linux-Container – installieren
Die bei Raspbian mitgelieferte Version der LXC ist ziemlich alt. Daher bauen wir uns unsere eigene Version mit Blackjack und N….:
1 2 3 4 5 6 | # mkdir /opt/lxc # cd /opt/lxc # git clone https://github.com/lxc/lxc.git # apt-get install automake libcap-dev # cd lxc # ./autogen.sh && ./configure && make && make install |
Testen
Nun kann alles getestet werden. Bei dem Aufruf von
1 | # lxc-checkconfig |
sollte der User-Namespace „missing“ sein (veraltete Kernel Option, die es nicht mehr gibt) und die Cgroup Namespaces required).
Leave a Reply