Probleme mit Cross Compiling auf Ubuntu 16.04.1-desktop-amd64

  • Hallo!

    Ich bin neu hier (bin auch ein absoluter Frischling was Linux angeht) und auf der Suche nach jemandem der mir bei einem Problem helfen kann. Ich arbeite gerade an meinem Masterprojekt, mit drei Raspberry Pi 3. Diese möchte ich Echtzeitfähig machen. Ich habe einen bereits Echtzeitfähig gemacht, aber nicht so wie ich es eigentlich wollte. Ich habe den pre-compiled Kernel von Frank Durre verwendet (http://www.frank-durr.de/?p=203) Eigentlich wollte ich aber selbst einen Kernel patchen. Also über Ubuntu 16.04.1 (VirtualBox 5.1.14) cross compilen. Habe hierzu den Kernel 4.9.9 plus dazugehörigen rt Patch heruntergeladen und bin seiner Anleitung und auch der Anleitung anderer gefolgt doch gab es immer irgendwelche Probleme die ich alleine nicht lösen konnte. Entweder wusste ich nicht wie ich den Kernel konfigurieren soll oder das Kompilieren ist fehlgeschlagen (ich glaube auf Grund der falschen Konfiguration).
    Hat jemand eventuell eine idiotensichere Anleitung oder kann mich hierbei supporten?

  • Probleme mit Cross Compiling auf Ubuntu 16.04.1-desktop-amd64? Schau mal ob du hier fündig wirst!

  • Hallo Neuling84,

    herzlich Willkommen in unserem Forum!

    Ich glaube jetzt nicht, dass sich irgendjemand mit Deinem Link beschäftigen wird, um herauszufinden, was Du falsch gemacht haben könntest. Denn das geht ja gar nicht.

    Du solltest beschreiben, was Du gemacht hast:

    • Was hast Du wo heruntergeladen?
    • Was hast Du wie konfiguriert?
    • Welche Linux-kommandos hast Du in welcher Abfolge eingegeben?
    • Welche Rückmeldungen gab es jeweils?
    • Was hat ohne Beanstandung funktioniert - wo gab es Rückmeldungen, die Dich irritiert haben und mit denen Du nichts anzufngen weißt?

    Die Betonung liegt auf DU! Was hast Du gemacht? Nicht: Was hat Frank Durre geschreiben, das er gemacht habe!

    Hier haben einige Erfahrung im Kernel compilieren und könnten Dir weiter helfen. Aber Du musst uns schon mitteilen, was Du gemacht hast, und was die Ergebnisse waren.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo Andreas,

    erstmal vielen Dank, dass du mir helfen möchtest! Und ja, natürlich ist es schwer zu sagen was ich falsch gemacht habe. Es ist auch sehr aufwändig hier jeden Schritt den ich gemacht habe wiederzugeben, aber ich versuche es.
    Der erste Versuch sah wie folgt aus:
    1. habe den Kernel 4.9.9 und den RT Preemt patch-4.9.9-rt6.patch.gz hier heruntergeladen:
    Kernel:

    Code
    https://www.kernel.org/pub/linux/kernel/v4.x/


    RT Patch:

    Code
    https://www.kernel.org/pub/linux/kernel/projects/rt/4.4/older/

    2. Neuen Ordner angelegt und hier gespeichert:

    Code
    1. cd ~/src
    2. mkdir -p linux-4.9.9
    3. cd linux-4.9.9

    3. Datei entpackt und Kernel gepatched:

    Code
    1. tar -xvzf linux-4.9.9.tar.gz
    2. cd linux-4.9.9
    3. zcat ../patch-4.9.9-rt6.gz | patch -p1

    4. Dateien aufgeräumt:

    Code
    1.  cd ~/src/linux-4.9.9/linux-4.9.9
    2. make mrproper

    5. Aktuelle config Datei des laufenden Kernels vom Raspberry Pi kopiert und auf Ubuntu im Pfad ~/src/linux/ gespeichert und in ".config umbenannt":

    Code
    sudo zcat /proc/config.gz > .RasPiConfig


    (damit ich mir die Konfiguration des Kernels erspare)

    6. Kernel konfiguriert:

    Code
    1.  cd ~/src/linux-4.9.9/linux-4.9.9
    2. make ARCH=arm CROSS_COMPILE=~/src/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- olddefconfig

    Warnings: HOSTCC scripts/basic/fixdep
    HOSTCC scripts/kconfig/conf.o
    SHIPPED scripts/kconfig/zconf.tab.c
    SHIPPED scripts/kconfig/zconf.lex.c
    SHIPPED scripts/kconfig/zconf.hash.c
    HOSTCC scripts/kconfig/zconf.tab.o
    HOSTLD scripts/kconfig/conf
    scripts/kconfig/conf --olddefconfig Kconfig
    #
    # using defaults found in /boot/config-4.4.0-31-generic
    #
    /boot/config-4.4.0-31-generic:1631:warning: symbol value 'm' invalid for RXKAD
    /boot/config-4.4.0-31-generic:3589:warning: symbol value 'm' invalid for SERIAL_8250_FINTEK
    /boot/config-4.4.0-31-generic:7526:warning: symbol value 'm' invalid for EXT4_ENCRYPTION
    /boot/config-4.4.0-31-generic:8395:warning: symbol value 'm' invalid for KVM
    #
    # configuration written to .config

    7. Kompilieren des Kernels mit:

    Code
    1.  cd ~/src/linux-4.9.9/linux-4.9.9
    2. make -j 4 ARCH=arm CROSS_COMPILE=~/src/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-

    Fehlermeldung: scripts/kconfig/conf --silentoldconfig Kconfig
    CHK include/config/kernel.release
    Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
    Makefile:1066: recipe for target 'prepare-compiler-check' failed
    make: *** [prepare-compiler-check] Error 1
    make: *** Waiting for unfinished jobs....
    UPD include/config/kernel.release
    make: *** wait: No child processes. Stop.

    Ich glaube ja, dass nicht das .config file verwendet wird, welches ich vom aktuellen Kernel vom RasPi kopiert habe.


    Der Versuch einen neuen Kernel runterzuladen und zu patchen nach der Anleitung von Frank Durre hat bis zum patchen des Kernels funktioniert, aber ich habe mich beim Patchen nicht ausgekannt.
    1. Download Kernel:

    Code
    1. cd ~src/linux_git
    2. git clone https://github.com/raspberrypi/linux.git
    3. cd linux

    2. Download Patch:

    Code
    # wget https://www.kernel.org/pub/linux/kernel/projects/rt/4.4/older/patch-4.4.9-rt17.patch.gz

    3. unzip and patch:

    Code
    # zcat patch-4.4.9-rt17.patch.gz | patch -p1


    Und ab hier weiß ich nicht mehr weiter.

    patching file Documentation/hwlat_detector.txt
    patching file Documentation/kernel-parameters.txt
    Hunk #1 succeeded at 1833 with fuzz 2 (offset 204 lines).
    patching file Documentation/sysrq.txt
    patching file Documentation/trace/histograms.txt
    patching file Makefile
    Reversed (or previously applied) patch detected! Assume -R? [n]
    # Was muss ich hier eingeben?

    Apply anyway? [n]
    # Was muss ich hier eingeben?


    Die nächsten Schritte wären die folgenden (kann ich aber nicht ausführen, wenn ich nicht weiß wie das mit dem patchen funktioniert.
    4. Installation Tool Chain für ARM:

    Code
    1. git clone https://github.com/raspberrypi/tools.git
    [2. export ARCH=arm
    3. export CROSS_COMPILE=/home/user/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-
    4. export INSTALL_MOD_PATH=/home/user/rtkernel

    5. Kernel config:

    Code
    1. export KERNEL=kernel7
    2. make bcm2709_defconfig

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!