I have done a apt-get update / apt-get upgrade which installed a 5.19 something -starfive kernel.
After a reboot the system is simply dead. A black screen. You can not even see a boot message. I suppose it tries to boot the new kernel and fails. Now I wonder why the repo has a kernel linked which is not bootable. This makes me wonder on whats the proper way to recover this. As there is no grub menu you can access or any other option to choose an older kernel or so. The only thing is to remove the SD card and put it into another computer and fiddle around that way.
The shipped 5.4 kernel is not good enough for me. I need support in the kernel for LVM and other stuff which is simply not available. I would recompile the kernel but I have not found the sources of this exact build or any way on how to get there. Furthermore compiling software seems broken in the current ubuntu repository. You can install clang but if you call “clang --version” it crashes. binutil lacks the gold linker (which is mandatory for objectiveC compilation). mold, another modern linker which might work apparently doesn’t know how to produce anything else than x86 code. it reports “mold: unknown -m argument: elf64lriscv”. And the standard linker ld.bfd messes up ObjC structures and optimizes stuff away it shouldnt (at least it did on intel).
the full-upgrade is what installed a new kernel and it s not a uconsole kernel but either a “generic” or “starfive” variant.
I now took the SD card out, changed the bootloader config to use the old kernel and booted again. It came back.
I now try to get clang working. The one from the repository installs but then fails when you run it
clang --version
spills out an error illegal instruction. And thats true for all versions of clang11,12,13,14.
Now I have to compile clang from sources. Thats probably going to take several days…
binutil is missing the ld.gold linker.
These two items is what I desperately need to get GNUStep compiled so I can write nice GUI apps for the uConsole. ObjectiveC makes things so much easier in that respect. gcc is not supporting a couple of very useful ObjectiveC features (ARC, @properties) so its not an option. clang works great on all my other platforms. Seems to be hard on the RiscV. On my RaspberryPi4 it was rather easy. (Thats why I ordered some CM4 adapter and CM4 modules to have a backup plan if RiscV is really too early).
What I am really impressed is about the build quality of the enclosure. Its super precise and very smooth to put together. I really like the uConsole over the devterm in that respect.
The only thing which is on the downside is the slow storage. Im not sure if this is because its a SD card (I’m using the fastest one I could get. a 1TB SAN DIsk Extreme Pro which should deliver > 100Mbyte/sec transfer speeds) or if its due to the CPU architecture or interfaces.
i just had a discussion with developers of clang. They say
<<Looks like a duplicate of #50090 ; there’s a hardware bug in Allwinner D1 CPUs handling the fence.tso instruction. I think there might be a workaround for the issue in newer kernels; try a newer version of Ubuntu.>>
Unfortunately your kernel does not have the workaround and the standard ubuntu kernel doesnt run on uconsole.
We really need a way to compile our own kernel version, preferrably a recent one (6.1 or 6.2).