SchOS/ports
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Nexoniarz 52e6e9b756 build: the sysroot was 194 MB of duplicated toybox, and links exposed a bug
ports/toybox already installed its applets as hard links to one multicall
binary, with a cp fallback. The links had never happened: the install is
stamped, the stamp predated the ln, and 236 separate 784 KB copies had been
sitting in sysroot/bin ever since. Forcing the install: 194 MB -> 13 MB.

Which immediately broke everything, in a way worth writing down.

**/bin/ping exists twice.** toybox has a ping applet and cmd/ping is a
first-party program that talks to lwIP directly. The install rule for cmd/
programs was `cp`, and cp onto an existing hard link writes *through* it -- so
copying cmd/ping over the applet of the same name replaced the contents of the
shared inode and all 236 links became ping. `cat /proc/uptime` answered
"ping: not a dotted-quad address".

Invisible until the links existed: while the applets were separate copies,
overwriting one affected exactly one. Fixed from both directions, because it
can be hit either way -- the cmd/ rule removes the target before copying, and
toybox skips names SchOS provides itself.

**The USB test image stopped fitting.** mkfs writes each hard link as its own
copy, so /bin expanded to over 60 MB on the way in. That image exists to prove
the USB driver can read one block, and bootcheck asserts on its 16 MB size, so
it excludes /bin rather than growing.

The ISO is the point of all this: 196 MB before, 62 MB now, and it boots to a
shell with RAMROOT=1.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VQ7Qx8E1q1M1bbCq8QLHS2
2026-09-13 14:43:35 +02:00
..
fastfetch kernel: processes have an environment now, and zsh is the shell 2026-09-12 23:26:50 +02:00
JetBrains_Mono Initial commit: Schunix as it stands before the SchOS rename 2026-08-09 13:47:01 +02:00
lwip net: a TCP/IP stack, and AF_INET on the sockets that were already there 2026-08-15 16:02:48 +02:00
mk ports: ncurses, so zsh's line editor has a terminal to drive 2026-09-12 21:34:36 +02:00
mksh kernel: processes have an environment now, and zsh is the shell 2026-09-12 23:26:50 +02:00
musl Build and tools work on Linux, macOS and BSD as well as Windows 2026-08-09 14:24:53 +02:00
ncurses kernel: processes have an environment now, and zsh is the shell 2026-09-12 23:26:50 +02:00
Roboto Initial commit: Schunix as it stands before the SchOS rename 2026-08-09 13:47:01 +02:00
toybox build: the sysroot was 194 MB of duplicated toybox, and links exposed a bug 2026-09-13 14:43:35 +02:00
zsh ports: zsh reinstalled on every make, and eventually stopped working 2026-09-13 13:57:26 +02:00
Makefile kernel: processes have an environment now, and zsh is the shell 2026-09-12 23:26:50 +02:00