Hi everyone,
I wanted to share a milestone achievement regarding running an updated Ubuntu ecosystem on ultra-low-budget RISC-V hardware. I have successfully built and booted an Ubuntu 24.04.4 LTS (Noble Numbat) glibc image under Linux Kernel 5.10.4 on the miniature Milk-V Duo 256M board.
Proof-of-concept boot video on YouTube
Would love to hear your thoughts on optimization strategies for RAM footprint.
5 Likes
Ooh, one of my favorite pastimes. Is compiling packages with -Os an option? I guess not, because the ports repository isn’t just for tiny devices, but here’s hoping. When memory is at a premium making the binary smaller should avoid hitting swap, if any, which is a far greater performance killer than a few cycles slower loops, I’d imagine. Haven’t got any data to prove that hypothesis, though.
I don’t have any hardware to test, either. Can it run in a QEMU VM? TBH, I don’t have much use for such devices and don’t intend to buy one anytime soon, but I’d really like to take look around, to find things to remove and/or shrink by finding smaller packages. There used to be a time when I spent hours on end, “surfing” the package repository with aptitude’s excellent TUI, just for that purpose. Remove a package I don’t think necessary and if something breaks try to find alternatives — think: chronyd vs ntpd; the interactive solver is a really great helper.
But I don’t want make this an ad for aptitude, just providing some context.
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.

1 Like
Hi, @peterwhite23!
I just tested the toolchain on my build machine with QEMU version 11.0.0, and yes – the XuanTie C906 kernel is fully integrated! The flag for specifying the target CPU platform is available immediately:
-cpu thead-c906
While full system emulation (qemu-system-riscv64) remains challenging due to the proprietary peripherals of the Sophgo CV181X SoC, user-mode emulation should work without problems.
You can cleanly chroot into the rootfs environment on any modern x86_64 Linux machine by copying qemu-riscv64 to a directory and running it with the -cpu thead-c906 flag. QEMU will automatically map the user-defined C906 vector extensions directly to your host system architecture. This allows you to make the most of aptitude’s TUI solver, check dependencies, or run resource-intensive background daemons without having to use physical hardware.
However, in my case, my goal wasn’t to emulate this board, but rather to run a full-fledged operating system on this hardware without emulation.
1 Like