[Toybox] android kernel builds

Rob Landley rob at landley.net
Sun Jul 16 01:11:51 PDT 2023


On 7/14/23 12:08, enh via Toybox wrote:
> heh, i hadn't noticed that toybox-built kernels mention the fact before...
> 
> ~/aosp-master-with-phones/bionic$ adb shell uname -a
> Linux localhost 6.3.0-mainline-g0526833d4674-ab10303652 #1 SMP PREEMPT Mon Jun
> 12 08:24:48 UTC 2023 riscv64 Toybox

Did that build _on_ risc64 or _for_ risc64?

Hmmm, I wonder where it's getting that from. ("Toybox" is the first word of help
output, nonzero chance this is in error). I can't easily reproduce your kernel
build, but let's see...

https://source.android.com/docs/setup/build/building-kernels

Um...

https://android.googlesource.com/kernel/manifest/+/refs/heads/common-android-mainline/default.xml#14

Er...

https://android.googlesource.com/kernel/common/+/refs/heads/android-mainline/fs/proc/version.c

Sigh, bounce off include/linux/utsname.h and where is init_uts_ns initialized...
https://android.googlesource.com/kernel/common/+/refs/heads/android-mainline/init/version.c
leads us to the ACTUAL version string at:

https://android.googlesource.com/kernel/common/+/refs/heads/android-mainline/init/version-timestamp.c#28

So yes, it ends with UTS_VERSION. So...

https://android.googlesource.com/kernel/common/+/refs/heads/android-mainline/init/Makefile#35

utsver=$$(echo '$(pound)'"$(build-version)" $(smp-flag-y) $(preempt-flag-y)
"$(build-timestamp)" | cut -b -64);

No, that's the "SMP PREEMPT Mon Jun 12 08:24:48 UTC 2023" part, and toybox cut
-b -64 is not producing an error message, so where does it get riscv64 and
Toybox? It's calling...

https://android.googlesource.com/kernel/common/+/refs/heads/android-mainline/init/build-version

Nope, that's not it... Hmmm:

https://android.googlesource.com/kernel/common/+/refs/heads/android-mainline/init/version-timestamp.c#12

Is something outputting the fields in order? Where is UTS_DOMAINNAME set... it's
dynamic at runtime? But /proc/version wouldn't... Oh. duh.

$ toybox uname -o
Toybox

You didn't _run_ cat /proc/version, you ran toybox uname -a. Which
means it's not the kernel saying "Toybox", it's toybox saying it.

Blah. Long tangent (started Friday!) because I didn't read the problem statement
closely enough. Yes, toybox says "toybox" when you ask it what userspace you're
running. Because I refused to ever describe anything as "GNU/Linux", which is
what the other one says for the -o extension.

Rob

P.S. And then on sheer autopilot I ran a grep -r 'uname -a' * in the kernel
source to go "and now that I've found THAT, here's where the build is..." NO.
Wrong. Step away from the keyboard.


More information about the Toybox mailing list