Inhaltsverzeichnis
Kernel
Übersicht
welchen Kernel nehmen?
Überblick der Kernel-features auf github
offiziellen Kernel kompilieren
4.4.70 auf GitHub
sudo apt-get install git make gcc-arm-linux-gnueabihf u-boot-tools git clone https://github.com/BPI-SINOVOIP/BPI-R2-bsp.git bpi-r2 cd bpi-r2 ./build.sh
siehe auch Patch für build.sh
- Option 4 für Einstellungen am Kernel,
- 1 um alles zu kompilieren,
- 3 um nur den Kernel zu kompilieren, Option 6 danach, um die kompilierten Daten in den SD-Ordner zu kopieren
wenn alles durchlaufen ist, ist der Kernel im Ordner SD/BPI-BOOT und die Module in SD/BPI-ROOT
der Kernel kann direkt auf die Boot-Partition geschrieben werden (Pfad beachten, vorher Backup!) die Module müssen als Root rüberkopiert werden
cp SD/BPI-BOOT/bananapi/bpi-r2/linux/uImage /media/$USER/BPI-BOOT/bananapi/bpi-r2/linux/ sudo cp -r SD/BPI-ROOT/lib/modules/4.4.70-BPI-R2-Kernel /media/$USER/BPI-ROOT/lib/modules/
meinen 4.4er Kernel kompilieren
4.4.x auf GitHub
sudo apt-get install git make gcc-arm-linux-gnueabihf u-boot-tools git clone https://github.com/frank-w/BPI-R2-4.4.git bpi-r2 cd bpi-r2 ./build.sh
Installation wie beim offiziellen Kernel
kompilierter Kernel 4.4.x
v1.2.1 (23. Nov 2017),incl. mt76x2/x3 WLAN-Treiber
Bootloader (u-boot): https://drive.google.com/file/d/11XQ4n6WYSj7gGPtMwug4SITtYn0GZxOb/view?usp=sharing
https://drive.google.com/drive/folders/1kkFyxeHoskszI7CpSsL6Wi6ROjDrBLOB?usp=sharing
das 4.4-Archiv (Kernelversion-BPI-R2-Kernel_boot+root.tgz) enthält 2 Ordner, deren Inhalt auf die SD/MMC mit dem selben Namen kopiert werden müssen.
- BPI-BOOT ⇒ boot-Partition, uImage=Kernel-file, backup first your existing uImage before overwriting it
- BPI-ROOT ⇒ partition mit dem Betriebssystem, hier liegen die Kernel-Module (/lib/modules/kernelname). Mit jedem neuen Kernel wird ein neuer Ordner angelegt, so dass ein Backup nicht unbedingt nötig ist, außer es ist die selbe Kernelversion.
eigenen (neueren) Kernel verwenden
http://forum.banana-pi.org/t/what-s-the-best-practice-to-build-own-kernel/3937
Patches, die noch nicht im Mainline-Kernel sind: https://patchwork.kernel.org/project/linux-mediatek/list/
mein github-repo verwenden
standard-kernel-Repo verwenden + patches
für Ramdisk-version: config from user RyderLee Ramdisk
pcie.patch damit der PCIe-Slot (wenn CONFIG_PCIEPORTBUS,CONFIG_PCIEPORTBUS,CONFIG_PCIEPORTBUS aktiviert)
Script zum kompilieren/kopieren angepasste defconfig
da beim 4.4.70 mmc0=sd-karte und mmc1=emmc habe ich dieses auch beim 4.14er Kernel durchgeführt (sonst muss man u-boot und ggf. die Mount-Points im System permanent ändern)
einfach in der arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts und der arch/arm/boot/dts/mt7623.dtsi den mmc1-Block über den mmc0-Block setzen mmc-swap.diff
wie build.sh verwenden
- cd in das Kernel-Verzeichnis
- oder git pull/git fetch
- letztes „tag“ von 4.14: „git tag|grep 4.14“ #evtl. aktuelle Änderung sichern: “git diff > file.diff” (auch aktuelle Revision merken)
- „git reset –hard v4.14“ #« tag ändern wenn neueres existiert (löscht alle Änderungen!)
- alternativ git stash,git checkout tags/4.14.x,git stash apply
- die defconfig und Patch (mmc_pcie.patch) in das Kernel-Verzeichnis kopieren (über „linux“)
- das Script zum kompilieren/kopieren in das Verzeichnis „linux“ innerhalb des Kernel-Verzeichnisses kopieren.
- dann in „linux“ reingehen und folgendes ausführen
patch -p1 < ../mmc_pcie.patch ./build.sh importconfig #mt7623n_evb_fwu_defconfig (.txt entfernt) muss in übergeordnetem Verzeichnis existieren ./build.sh config #starte menuconfig ./build.sh #starte make & Kopiervorgang
kompilierter 4.14.x
https://drive.google.com/drive/folders/1EGN1TvqCpDHdOAS-mjRg9ipi0kahnOUV?usp=sharing
das 4.14-Archiv (bpi-r2_kernelversion_gitbranch.tar.gz) enthält 2 Ordner, deren Inhalt auf die SD/MMC mit dem selben Namen kopiert werden müssen.
- BPI-BOOT ⇒ boot-Partition, uImage=Kernel-file, backup first your existing uImage before overwriting it
- BPI-ROOT ⇒ partition mit dem Betriebssystem, hier liegen die Kernel-Module (/lib/modules/kernelname). Mit jedem neuen Kernel wird ein neuer Ordner angelegt, so dass ein Backup nicht unbedingt nötig ist, außer es ist die selbe Kernelversion. Die Dateien in den anderen Ordnern sind großteils für den internen WLAN-Chip (wmt-tools, firmware, config) und müssen nicht jedesmal kopiert werden (ändern sich kaum bis gar nicht). Diese sind nur mit vorhanden für Personen, welche sich ein Image selbst bauen.
DTS ändern
dts(i)-Definition aus neuerem Kernel (arch/arm/boot/dts/) in älteren einbauen