Braucht man außer der Toolchain noch mehr Fremdquellen zum builden eines ARM64 Linux 4.4 Android Kernels ?

ich bin so vorgegangen:

Vorbereitung:

$ mkdir ~/git
$ cd ~/git
$ export ARCH=arm64
$ export SUBARCH=arm64
$ export CROSS_COMPILE=prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9/bin/aarch64-linux-android-
$ git clone <https:>//github.com/MrFlyingToasterman/android_kernel_oneplus_msm8998

Beziehen von Drittrepos und einbinden in die Kernel Source:

$ git clone <https:>//android.git.linaro.org/git-ro/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9-linaro.git prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9

Kernel Cross Compile build:

$ make oneplus5_defconfig
$ make --keep-going -i

Der eigentliche Fehler besteht darin dass er keine Regel für vmlinux findet..Hier mal der Stacktrace:

 CC      lib/argv_split.o
  CC      lib/bug.o
  CC      lib/cmdline.o
  CC      lib/cpumask.o
  CC      lib/ctype.o
  CC      lib/dec_and_lock.o
  CC      lib/decompress.o
  CC      lib/decompress_bunzip2.o
  CC      lib/decompress_inflate.o
  CC      lib/decompress_unlz4.o
  CC      lib/decompress_unlzma.o
  CC      lib/decompress_unlzo.o
  CC      lib/decompress_unxz.o
  CC      lib/dump_stack.o
  CC      lib/earlycpio.o
  CC      lib/extable.o
  CC      lib/fdt.o
  CC      lib/fdt_empty_tree.o
  CC      lib/fdt_ro.o
  CC      lib/fdt_rw.o
  CC      lib/fdt_strerror.o
  CC      lib/fdt_sw.o
  CC      lib/fdt_wip.o
  CC      lib/flex_proportions.o
  CC      lib/idr.o
  CC      lib/int_sqrt.o
  CC      lib/ioremap.o
  CC      lib/irq_regs.o
  CC      lib/is_single_threaded.o
  CC      lib/klist.o
  CC      lib/kobject.o
  CC      lib/kobject_uevent.o
  CC      lib/md5.o
  CC      lib/nmi_backtrace.o
  CC      lib/plist.o
  CC      lib/proportions.o
  CC      lib/radix-tree.o
  CC      lib/ratelimit.o
  CC      lib/rbtree.o
  CC      lib/seq_buf.o
  CC      lib/sha1.o
  CC      lib/show_mem.o
  CC      lib/string.o
  CC      lib/timerqueue.o
  CC      lib/vsprintf.o
  AR      lib/lib.a
  LINK    vmlinux
  LD      vmlinux.o
prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9/bin/aarch64-linux-android-ld: cannot find arch/arm64/mm/built-in.o: Datei oder Verzeichnis nicht gefunden
prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9/bin/aarch64-linux-android-ld: cannot find ipc/built-in.o: Datei oder Verzeichnis nicht gefunden
prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9/bin/aarch64-linux-android-ld: cannot find drivers/built-in.o: Datei oder Verzeichnis nicht gefunden
make: [Makefile:946: vmlinux] Fehler 1 (ignoriert)
make[1]: *** Keine Regel vorhanden, um das Ziel „vmlinux“, 
  benötigt von „arch/arm64/boot/Image“, zu erstellen. 

Noch ein paar Informationen über mein Betriebssystem:

OS: Arch Linux
Kernel: x86_64 Linux 4.11.9-1-ARCH
CPU: Intel Core i5-2520M @ 4x 3.2GHz [25.0°C]
GPU: intel
RAM: 2286MiB / 7867MiB
...zur Frage

Ich habe des Rätzels Lösung!

OnePlus hat den Fehler verursacht, der Kernel ist zurzeit nicht Buildbar.

Die betroffenen Files:

drivers/bluetooth/btfm_slim.c
drivers/bluetooth/btfm_slim_codec.c
drivers/bluetooth/btfm_slim_wcn3990.c
drivers/bluetooth/btfm_slim_wcn3990.h
drivers/gpu/msm/Makefile
drivers/gpu/msm/kgsl_events.c
drivers/media/platform/msm/camera_v2/common/cam_smmu_api.c
drivers/media/platform/msm/camera_v2/sensor/msm_sensor.h
drivers/net/ethernet/msm/Makefile
drivers/platform/msm/ipa/ipa_v2/Makefile
drivers/platform/msm/ipa/ipa_v3/Makefile
drivers/platform/msm/mhi/mhi_ssr.c
drivers/power/supply/qcom/qpnp-smbcharger.c
drivers/soc/qcom/Makefile
include/trace/events/msm_cam.h
kernel/printk/printk.c
security/pfe/pfk_ecryptfs.c
security/pfe/pfk_ecryptfs.h
security/pfe/pfk_ext4.c
security/pfe/pfk_ext4.h
sound/soc/msm/msm8996.c
sound/soc/msm/msm8998.c

Mehr dazu hier: https://github.com/adinkwok/oneplus5-kernel/commit/ec4ec687ba23609b9c323145c7d509262b0f025f


Des weiteren hab ich die Fehlermeldung etwas falsch gelesen:

fatal error: ./ipa_trace.h: No such file or directory

fatal error: msm_isp.h: No such file or directory

fatal error: ./kgsl_trace.h: No such file or directory

Aufgrund dieser 3er Meldungen konnte VMLinux nicht gebuildet werden da es hierauf dependiert!

Man kann den Kernel allerdings trotzdem bauen wenn er mit der kompletten Source der OxygenOS Rom kompiliert wird!

Mehr zu dem Fehler hier: https://github.com/OnePlusOSS/android\_kernel\_oneplus\_msm8998/issues/3

...zur Antwort

Besorg dir ne Linux Maschine, am besten ne VM wenn du sowas nicht oft machst.

Es gibt die Möglichkeit genau zu Testen ob der Speicher in Ordnung ist:

und zwar das Programm Badblocks

Benutzt du so:
$ sudo badblocks -vsn /dev/sdX

Check vorher (nachdem deine microSD in der Maschine steckt) welches Bulkdevice du prüfen willst:

$ lsblk

(Ne Linux livecd bietet sich auch sehr hierfür an: vleicht was kleines wie Knoppix)

(Hab grade mal nachgesehen: Der Befehl badblocks ist leider nicht in Android integriert, auch nicht mit BusyBox| Nichtmals im Termux apt tree.
Du wirst also GNU/Linux benutzen müssen.)

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.