OpenJDK-Problem bei 32Bit Raspian mit 64Bit-Kernel auf RBP4

  • Anscheinend habe ich wohl dieses Problem: raspian 32bit - update && sudo apt upgrade on raspian 32bit the kernel automatically gets updated to arm64bit??

    Auf dem RBP4 läuft ein 32bit Bullseye. Seit dem letzten Update gibt sich der Kernel nicht mehr als armv7 sondern als

    Code
    $ uname -m
    aarch64

    aus. "Innen drin" läuft aber immer noch 32bit:

    Code
    $ dpkg --print-architecture
    armhf

    Das scheint nun das OpenJDK durcheinander zu bringen.


    Eigentlich möchte ich das signal-cli aktualisieren. Und das benutzt Java. Auf einem anderen, reinen 64bit-Bullseye RBP3 hat das nach dieser Anleitung signal-libs-build/README.md at main · exquo/signal-libs-build auch gut funktioniert. Benutzt habe ich dabei das libsignal_jni.so aus aarch64-linux-gnu.
    Auf dem RBP4 mit diesem 32/64bit-Mix kommt das OpenJDK 17.0.7 aber wohl durcheinander.
    Mit dem armv7 libsignal_jni.so liefert es:

    Code
    OpenJDK Client VM warning: You have loaded library /tmp/sqlite-3.42.0.0-0f400914-7879-44a8-a1c3-caff394ac89c-libsqlitejdbc.so which might have disabled stack guard. The VM will try to fix the stack guard now.
    It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
    Failed to load native library:sqlite-3.42.0.0-0f400914-7879-44a8-a1c3-caff394ac89c-libsqlitejdbc.so. osinfo: Linux/aarch64
    java.lang.UnsatisfiedLinkError: /tmp/sqlite-3.42.0.0-0f400914-7879-44a8-a1c3-caff394ac89c-libsqlitejdbc.so: /tmp/sqlite-3.42.0.0-0f400914-7879-44a8-a1c3-caff394ac89c-libsqlitejdbc.so: falsche ELF-Klasse: ELFCLASS64 (Possible cause: can't load AARCH64 .so on a ARM platform)

    Mit dem für aarch64 dieses:

    Code
    OpenJDK Client VM warning: You have loaded library /tmp/14333869506710036415libsignal_jni.so which might have disabled stack guard. The VM will try to fix the stack guard now.
    It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
    WARN  Manager - Failed to call libsignal-client: /tmp/14333869506710036415libsignal_jni.so: /tmp/14333869506710036415libsignal_jni.so: falsche ELF-Klasse: ELFCLASS64 (Possible cause: can't load AARCH64 .so on a ARM platform)
    Missing required native library dependency: libsignal-client

    Wie kann ich dem OpenJDK erklären, dass es die 32bit-Module laden soll?

  • OpenJDK-Problem bei 32Bit Raspian mit 64Bit-Kernel auf RBP4? Schau mal ob du hier fündig wirst!

  • Auf dem RBP4 läuft ein 32bit Bullseye. Seit dem letzten Update gibt sich der Kernel nicht mehr als armv7 sondern als

    Code
    $ uname -m
    aarch64

    aus. "Innen drin" läuft aber immer noch 32bit:

    Code
    $ dpkg --print-architecture
    armhf

    Wie sind die Ausgaben von:

    Code
    uname -r
    ls -la /usr/lib/modules
    ls -la /boot | grep -i kernel
    dpkg --print-foreign-architectures
    dmesg | head -n 3

    ?

  • Hallo rpi444:

  • Code
    $ dmesg | head -n 3
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083]
    [    0.000000] Linux version 6.1.21-v8+ (dom@buildbot) (aarch64-linux-gnu-gcc-8 (Ubuntu/Linaro 8.4.0-3ubuntu1) 8.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023

    Wie hast Du das 32-bit-bullseye installiert bzw. wie hast Du das update gemacht? Welche Meldungen hat es beim update, gegeben?

  • Wie hast Du das 32-bit-bullseye installiert bzw. wie hast Du das update gemacht?

    Das hatte ich vor einiger Zeit als Image auf die SD-Karte kopiert.
    Weil ich für das signal-cli das JDK-17 brauchte, hatte ich dann jetzt ein "sudo apt update && sudo apt upgrade" gemacht.
    Dabei habe ich mir dann wohl den 64bit-Kernel "eingefangen", wie in raspian 32bit - update && sudo apt upgrade on raspian 32bit the kernel automatically gets updated to arm64bit?? beschrieben.

  • Dabei habe ich mir dann wohl den 64bit-Kernel "eingefangen", wie in ...

    Hm, ... seltsam.

    Hast Du schon:

    Code
    If you still need the 32-bit kernel you can put arm_64bit=0 in /boot/config.txt and reboot.

    probiert?

  • Hm, ... seltsam.

    Hast Du schon:

    Code
    If you still need the 32-bit kernel you can put arm_64bit=0 in /boot/config.txt and reboot.

    probiert?

    rpi444 Bedankt!
    Damit funktioniert jetzt das JDK wieder und damit auch das signal-cli!
    Zum Vergleich:

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!