raspbian-eigener-linux-kernel
no way to compare when less than two revisions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| — | raspbian-eigener-linux-kernel [2016/05/30 13:26] (aktuell) – angelegt benny | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Eigenen Linux Kernel für Raspberry Pi in Ubuntu 16.06 x64 VM cross-compilen/ | ||
| + | Da der aktuelle VXLAN-Test, wie viele Ideen, auch dieses mal wieder ein paar Dinge voraussetzt die bisher wohl niemand gemacht hat, brauchen wir einen neuen Kernel für unseren Pi. :( | ||
| + | |||
| + | * VirtualBox mit < | ||
| + | * Da wir eigene Kernel kompilieren wollen, sollten sinnvollerweise mehr CPUs zugeordnet werden (z.B. 2 Stück) | ||
| + | * Es sollte " | ||
| + | * Ziel ist es eine CROSS-COMPILER Umgebung zu bauen | ||
| + | * Die meisten Anleitungen die ich gefunden habe sind bereits älter (2014) und für verschiedene Pi-Modelle nicht mehr aktuell! | ||
| + | * Erst einmal müssen wir folgende Pakete installieren: | ||
| + | < | ||
| + | sudo apt-get install git-core | ||
| + | sudo apt-get install gcc-4.7-arm-linux-gnueabi | ||
| + | sudo apt-get install build-essential | ||
| + | sudo apt-get install ncurses-dev | ||
| + | </ | ||
| + | * Damit wir die Kernel erfolgreich kompilieren können, brauchen wir die / | ||
| + | * Falls es diese Datei nicht gibt, was wahrscheinlich ist, folgendes eingeben: | ||
| + | < | ||
| + | sudo modprobe configs | ||
| + | </ | ||
| + | * Nun sollte die Datei / | ||
| + | * Wichtig ist dass man sich markiert welche config.gz (später dann " | ||
| + | * Nun legen wir uns in unserem HOME-Verzeichnis ein Arbeitsverzeichnis für die folgenden Aufgaben an, initialisieren es mit Git und laden die Tools von GitHub: | ||
| + | < | ||
| + | mkdir src | ||
| + | cd src/ | ||
| + | git init | ||
| + | git clone git:// | ||
| + | </ | ||
| + | * Dieser folgende Schritt erscheint mir überflüssig, | ||
| + | < | ||
| + | git clone --depth 1 git:// | ||
| + | </ | ||
| + | * Jetzt geben wir die Version noch einmal vor die wir haben wollen, dies habe ich aus anderen Anleitungen entsprechend dem aktuellen Kernel angepasst | ||
| + | < | ||
| + | mkdir linux-4.4.y | ||
| + | cd linux-4.4.y/ | ||
| + | git init | ||
| + | git fetch git:// | ||
| + | git checkout refs/ | ||
| + | </ | ||
| + | * Einmal aufräumen, nur zur Sicherheit (im linux-4.4.y Verzeichnis) | ||
| + | < | ||
| + | make mrproper | ||
| + | </ | ||
| + | * In dieses Verzeichnis ~/ | ||
| + | * "gzip -d config.gz", | ||
| + | * Wichtige Entscheidung: | ||
| + | * Für armv6l: | ||
| + | < | ||
| + | * Für armv7l: | ||
| + | < | ||
| + | * Ich habe erstmal mit dem Pi 3 losgelegt, also .. | ||
| + | < | ||
| + | export KERNEL=kernel7 | ||
| + | </ | ||
| + | * Unsere alte Konfiguration auf neuen Kernel anpassen lassen / übernehmen: | ||
| + | * Prüft dass ihr im ~/ | ||
| + | * Prüft dass die .config Datei in diesem Verzeichnis liegt die ihr übernehmen wollt | ||
| + | < | ||
| + | $ make ARCH=arm CROSS_COMPILE=~/ | ||
| + | </ | ||
| + | * In meinem Fall wollte ich nun das VXLAN-Modul bauen lassen, daher hab ich noch folgendes aufgerufen um das grafisch (ncurses, console) auszuwählen | ||
| + | < | ||
| + | make ARCH=arm CROSS_COMPILE=~/ | ||
| + | </ | ||
| + | * Navigiert durch **menuconfig**: | ||
| + | * Dem Hinweis dass ihr danach " | ||
| + | * Wir rufen " | ||
| + | * -j 2 nutzt die zwei Prozessoren die wir angegeben haben besser aus, ihr könnt hier selbst wählen was euer System verkraftet | ||
| + | * Der Vorgang dauert in etwa 15-20 Minuten, je nachdem was ihr für ein System einsetzt (Motto: Hubraum ist nur durch mehr Hubraum zu ersetzen!) | ||
| + | < | ||
| + | make -j 2 ARCH=arm CROSS_COMPILE=~/ | ||
| + | </ | ||
| + | * Nun legen wir ein Verzeichnis an, wo die " | ||
| + | < | ||
| + | mkdir / | ||
| + | </ | ||
| + | * Die " | ||
| + | < | ||
| + | make ARCH=arm CROSS_COMPILE=~/ | ||
| + | </ | ||
| + | * Neuen Kernel auf unseren Pi kopieren | ||
| + | * Der Kernel landet dann im Home-Verzeichnis des Benutzers " | ||
| + | < | ||
| + | scp arch/ | ||
| + | </ | ||
| + | * Zweites Terminal öffnen, die Module einsammeln und auf den Pi übertragen | ||
| + | < | ||
| + | cd /tmp | ||
| + | tar czf modules.tar.gz modules/ | ||
| + | scp modules.tar.gz pi@192.168.0.98: | ||
| + | </ | ||
| + | * SSH auf den Pi aufmachen, den Kernel irgendwie sinnvoll umbenennen und für den nächsten Boot hinterlegen | ||
| + | < | ||
| + | ssh pi@192.168.0.98 | ||
| + | pi@pi3:~ $ mv Image kernel_vxlan_4.4.11.y.img | ||
| + | pi@pi3:~ $ sudo cp kernel_vxlan_4.4.11.y.img /boot/ | ||
| + | pi@pi3:~ $ tar xvzf modules.tar.gz | ||
| + | ... wird entpackt nach modules/ ... | ||
| + | pi@pi3:~ $ sudo cp -r modules/ | ||
| + | pi@pi3:~ $ sudo vi / | ||
| + | # Am Ende der Datei einfügen oder den Eintrag ersetzen, vorher " | ||
| + | kernel=kernel_vxlan_4.4.11.y.img | ||
| + | # :wq zum Beenden | ||
| + | pi@pi3:~ $ sudo reboot | ||
| + | </ | ||
| + | * Nach dem Neustart des Pi werden wir von unserem neuen Kernel begrüsst und haben die Möglichkeit VXLAN als Modul zu laden | ||
| + | < | ||
| + | pi@pi3:~ $ uname -a | ||
| + | Linux pi3 4.4.11-v7+ #1 SMP Sat May 28 18:13:41 CEST 2016 armv7l GNU/Linux | ||
| + | pi@pi3:~ $ sudo modprobe vxlan | ||
| + | pi@pi3:~ $ sudo modprobe bridge | ||
| + | pi@pi3:~ $ lsmod | ||
| + | Module | ||
| + | joydev | ||
| + | evdev 11567 2 | ||
| + | openvswitch | ||
| + | nf_defrag_ipv6 | ||
| + | nf_conntrack | ||
| + | bnep | ||
| + | hci_uart | ||
| + | btbcm | ||
| + | bluetooth | ||
| + | brcmfmac | ||
| + | brcmutil | ||
| + | cfg80211 | ||
| + | cdc_ether | ||
| + | rfkill | ||
| + | r8152 34768 0 | ||
| + | snd_bcm2835 | ||
| + | snd_pcm | ||
| + | snd_timer | ||
| + | snd 53776 3 snd_bcm2835, | ||
| + | bcm2835_gpiomem | ||
| + | bcm2835_wdt | ||
| + | uio_pdrv_genirq | ||
| + | uio | ||
| + | vxlan 32491 0 | ||
| + | ip6_udp_tunnel | ||
| + | udp_tunnel | ||
| + | bridge | ||
| + | stp | ||
| + | llc | ||
| + | ipv6 352477 | ||
| + | </ | ||
| + | |||
| + | * Wer nun im Nachgang plant einen Kernel für seinen armv6l (Pi B v1/2) zu kompilieren, | ||
| + | * .config Datei wegsichern (beinhaltet ja nun die Modifikation mit VXLAN) | ||
| + | * make mrproper # räumt alles komplierte für armv7l weg | ||
| + | * export KERNEL=kernel # Um KERNEL=kernel7 zu ersetzen | ||
| + | * .config-Datei vom " | ||
| + | * rm -rf / | ||
| + | * Ansonsten einfach die Anleitung wieder befolgen | ||
raspbian-eigener-linux-kernel.txt · Zuletzt geändert: von benny
