docs: architecture describes what is built now
kernel (threads, demand paging, TLB shootdowns, dynamic linking, RAM direct map), syscalls, filesystem (/proc, /sys, /dev), terminals (12, VT handshake, ptys), networking (r8169 through LDLS), LDLS (module sets; Linux code may ship), devices (what stays in the kernel; hybrid.md's lasting content), boot (the loader's placement of the kernel), graphics (fbdev, GMMOS, QR 1-40), audio (ALSA over OSS), debugging, usb. New: packages.md (the apk root) and desktop.md (Xorg on the framebuffer). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EVRhxi9zpdW2uDUN4FVcao
This commit is contained in:
parent
655c7d8d01
commit
2556a955b3
15 changed files with 921 additions and 341 deletions
|
|
@ -271,10 +271,12 @@ copied file is a file to be understood, attributed and maintained forever.
|
|||
|
||||
[architecture/ldls.md](architecture/ldls.md) runs Linux drivers. This section
|
||||
was written when SchOS was Apache-2.0 and the boundary below was a legal
|
||||
necessity. Under GPL-2.0-or-later it is a **project policy** instead: shipping
|
||||
a GPL-2.0-only `.ko` with SchOS would now be lawful, provided the source goes
|
||||
with it. It is still not done, because a module we never ship is a module we
|
||||
never have to vouch for, track upstream, or provide source for.
|
||||
necessity. Under GPL-2.0-or-later it was a **project policy** instead, and the owner
|
||||
has since set the policy aside: Linux code and firmware blobs **may be shipped** with
|
||||
SchOS, provided the source goes with them (GPLv2 §3). The repository still carries no
|
||||
`.ko` — they are staged from the build machine's Linux kernel (`make ldls-stage`,
|
||||
`make ldls-r8169`) — so shipping one is a decision about a release, and the release has
|
||||
to carry the corresponding source.
|
||||
|
||||
### LDLS is ours
|
||||
|
||||
|
|
@ -298,10 +300,9 @@ GPLv2 §0 is explicit about where its obligations attach:
|
|||
> by this License; they are outside its scope. **The act of running the Program
|
||||
> is not restricted.**
|
||||
|
||||
So: we ship LDLS and no modules. The user obtains a module from wherever they
|
||||
get their software and runs it on their own machine. `RAMDISK_EXCLUDE` and the
|
||||
`*.ko` rule in `.gitignore` keep that boundary mechanical rather than
|
||||
intentional.
|
||||
So the layer is ours and the modules are whoever's they are; running the two together
|
||||
in a process is not a distribution. `RAMDISK_EXCLUDE` and the `*.ko` rule in `.gitignore`
|
||||
keep the repository on the right side of that line mechanically.
|
||||
|
||||
### `EXPORT_SYMBOL_GPL` does not apply
|
||||
|
||||
|
|
@ -322,7 +323,7 @@ show.
|
|||
|
||||
### BTF: the layouts are not in our source at all
|
||||
|
||||
§3 of the plan has one uncomfortable row — struct layouts. A compiled driver
|
||||
Rule 3 of [architecture/ldls.md](architecture/ldls.md) has one uncomfortable row — struct layouts. A compiled driver
|
||||
indexes fields by offset, so the shim has to reproduce them exactly, and a
|
||||
field-for-field match *looks* like transcription even when it is not.
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue