Hallo zusammen,
Ich versuche den Kernel für das Meizu Pro 5 zu kompilieren und auf das 
Handy zu flashen.
Ich verwende den Kernel von hier: https://github.com/meizuosc/m576
Ich habe den kernel mit dem Compiler aus dem Compiler aus dem Packet 
gcc-aarch64-linux-gnu aus dem Ubuntu xenial repo kompiliert, 
"aarch64-linux-gnu-gcc -v" liefert folgendes:
1  | daniel@Daniels-Surface-Pro-3:~/projects/m576$ aarch64-linux-gnu-gcc -v
  | 
2  | Using built-in specs.
  | 
3  | COLLECT_GCC=aarch64-linux-gnu-gcc
  | 
4  | COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/aarch64-linux-gnu/5/lto-wrapper
  | 
5  | Target: aarch64-linux-gnu
  | 
6  | Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.1' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-arm64-cross/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-arm64-cross --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-arm64-cross --with-arch-directory=aarch64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libgcj --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=aarch64-linux-gnu --program-prefix=aarch64-linux-gnu- --includedir=/usr/aarch64-linux-gnu/include
  | 
7  | Thread model: posix
  | 
8  | gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.1)
  | 
Ist das der richtige Crosscompiler?
Den Kernel habe ich mit folgender Kommandozeile kompiliert:
1  | make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- pro5_defconfig
  | 
2  | make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
  | 
Ich verwende "abootimg" (ebenfals aus dem repo), um das bootimage zu 
erstellen. Ich habe dazu zuerst mit dd eine Kopie des momentanen 
boot.img vom handy gemacht, und dann mit "abootimg -x boot.img" die 
Dateien "initrd.img" "zImage" und "bootimg.cfg" extrahiert. bootimg.cfg 
habe ich noch leicht angepasst, sieht nun so aus:
1  | pagesize = 0x1000
  | 
2  | kerneladdr = 0x40080000
  | 
3  | ramdiskaddr = 0x42000000
  | 
4  | tagsaddr = 0x40000100
  | 
5  | name = Custom 1
  | 
6  | cmdline = debug systempart=/dev/disk/by-partlabel/system datapart=/dev/disk/by-partlabel/userdata
  | 
Ich habe zuerst mit diesen Dateien ein neues bootimg erstellt, geflasht 
und gestartet:
1  | abootimg --create bootimg.img -f bootimg.cfg -k zImage -r initrd.img
  | 
2  | fastboot flash recovery bootimg.img
  | 
3  | fastboot oem reboot recovery
  | 
Das hat noch funktioniert. Dann habe ich das erstellte Image, 
arch/amd64/boot/Image nach zImage kopiert und das ganze wiederholt. Aber 
danach ist es direkt nach Anzeige des Meizu logos (wird vom bootloader 
angezeigt) eingefroren. Ich habe keine Ahnung warum, und ich habe noch 
keinen Weg gefunden beim Booten die Kernelmessages anzuzeigen. Es ist 
echt zum verzweifeln.
Hat irgendjemand einen Tipp, was ich noch versuchen könnte, oder was ich 
falsch mache?
PS: Weil ich eine neueren Compilerversion verwende als damals als der 
Kernel erstellt wurde (den Compiler konnte ich noch nicht finden), 
musste ich minimale Anpassungen am kernel machen damit dieser 
Kompiliert. Allerdings nichts was die Funktionsweise beeinflussen würde. 
Die Änderungen sind als Patch im Anhang.