Benutzer-Werkzeuge

Webseiten-Werkzeuge



bpi-r2:kernel

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
bpi-r2:kernel [2019/08/14 21:05] – [debugging] frankbpi-r2:kernel [2023/06/08 17:06] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Kernel ======
 +===== Übersicht =====
 +welchen Kernel nehmen?
  
 +Überblick der Kernel-features auf [[https://github.com/frank-w/BPI-R2-4.14/blob/4.14-main/README.md|github]]
 +===== offiziellen Kernel kompilieren =====
 +4.4.70 auf [[https://github.com/BPI-SINOVOIP/BPI-R2-bsp|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 [[https://github.com/BPI-SINOVOIP/BPI-R2-bsp/issues/18|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 [[https://github.com/frank-w/BPI-R2-4.4|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 ====
 +
 +https://github.com/frank-w/BPI-R2-4.14.git
 +
 +==== standard-kernel-Repo verwenden + patches ====
 +
 +<hidden>
 +defconfig von [[https://github.com/BPI-SINOVOIP/BPI-R2-bsp/blob/master/linux-mt/arch/arm/configs/mt7623n_evb_bpi_defconfig|GitHub]] nach arch/arm/configs/ kopieren
 +
 +defconfig von GitHub importiert und angepasst {{ :bpi-r2:mt7623n_evb_bpi_defconfig.txt |Dateindung .txt entfernen}}
 +<code bash>
 +  sudo apt-get install git make gcc-arm-linux-gnueabihf u-boot-tools
 +  git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git bpi-r2
 +  cd bpi-r2
 +
 +  export CROSS_COMPILE=arm-linux-gnueabihf-
 +  export ARCH=arm
 +  export INSTALL_MOD_PATH=$(pwd)/mod/
 +  mkdir $INSTALL_MOD_PATH
 +
 +  #git reset --hard v4.14-rc5
 +  cp pfad/zu/mt7623n_evb_bpi_defconfig arch/arm/configs/
 +  make mt7623n_evb_bpi_defconfig
 +  make
 +
 +  ...
 +
 +  #cat arch/arm/boot/zImage arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dtb >zImage_dtb
 +  cat arch/arm/boot/zImage arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dtb > arch/arm/boot/zImage-dtb
 +  #mkimage -A arm -O linux -C none -T kernel -a 0x80008000 -e 0x80008000 -d zImage_dtb uImage
 +  mkimage -A arm -O linux -T kernel -C none -a 80008000 -e 80008000 -n "Linux Kernel 4.14" -d arch/arm/boot/zImage-dtb ./uImage
 +  
 +  rm -r $INSTALL_MOD_PATH/lib
 +  make modules_install
 +  
 +  cp uImage /media/$USER/BPI-BOOT/bananapi/bpi-r2/linux/  #<< mountpunkt anpassen
 +  sudo cp -r $INSTALL_MOD_PATH/lib /media/$USER/BPI-ROOT/ #<< mountpunkt anpassen
 +</code>
 +</hidden>
 +
 +
 +für Ramdisk-version: 
 +{{ :bpi-r2:mt7623n_evb_ryderlee_defconfig.txt | config from user RyderLee}}
 +{{ :bpi-r2:rootfs_ttys0_rng.cpio.gz |Ramdisk}}
 +
 +{{ :bpi-r2:pcie.patch |}}
 +damit der PCIe-Slot (wenn CONFIG_PCIEPORTBUS,CONFIG_PCIEPORTBUS,CONFIG_PCIEPORTBUS aktiviert)
 +
 +{{ :bpi-r2:build.sh |Script zum kompilieren/kopieren}}
 +{{ :bpi-r2:mt7623n_evb_fwu_defconfig.txt | 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 {{ :bpi-r2:mmc-swap.diff |}}
 +
 +==== wie build.sh verwenden ====
 +
 +  - cd in das Kernel-Verzeichnis
 +    - git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/
 +    - 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 {{ :bpi-r2:mt7623n_evb_fwu_defconfig.txt | defconfig}} und Patch ({{ :bpi-r2:mmc_pcie.patch |}}) in das Kernel-Verzeichnis kopieren (über "linux")
 +  - das {{ :bpi-r2:build.sh |Script zum kompilieren/kopieren}} in das Verzeichnis "linux" innerhalb des Kernel-Verzeichnisses kopieren.
 +  - dann in "linux" reingehen und folgendes ausführen
 +<code bash>
 +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
 +</code>
 +
 +==== 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
 +
 +  * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/mt7623.dtsi|mt7623.dtsi]]
 +  * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts|mt7623n-bananapi-bpi-r2.dts]] => [[https://github.com/BPI-SINOVOIP/BPI-R2-bsp/blob/master/linux-mt/arch/arm/boot/dts/mt7623n-bpi-r2.dts|mt7623n-bpi-r2.dts]]
 +
 +===== debugging =====
 +
 +  * https://kernelnewbies.org/FAQ/LinuxKernelDebug101
 +  * https://elinux.org/Debugging_by_printing
 +  * https://www.kernel.org/doc/Documentation/printk-formats.txt
 +===== Links =====
 +
 +  * [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git|Linux]] [[https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/?h=linux-4.14.y|Linux-Stable]]
 +  * [[https://elixir.bootlin.com/linux/latest/source/kernel|Elixir Cross Referencer]]
 +  * [[https://patchwork.kernel.org/project/linux-mediatek/list/|MTK-Patchwork]] [[http://lists.infradead.org/pipermail/linux-mediatek/|MTK-Archive]]
 +  * [[https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git|Net]] [[https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git|Net-Next]] [[https://marc.info/?l=linux-netdev|Netdev-ML-Archive]]
bpi-r2/kernel.txt · Zuletzt geändert: 2023/06/08 17:06 von 127.0.0.1