SchOS/NOTICE
Nexoniarz eab13241a0 hwreport: describe a machine onto a USB stick, from a Linux-style /sys
hwreport writes one folder to the first read-write FAT mount, or mounts
the first USB stick that takes vfat itself and unmounts it afterwards:
summary.txt (machine, firmware, CPU, memory, every PCI and USB device
with its driver or "-- no driver"), dmesg.txt, lspci.txt in the shape of
lspci -nnk -xxx, lsusb.txt, dmi.txt, memmap.txt, the ACPI tables as raw
.dat files iasl -d reads, and copies of /proc. Serials, the UUID and the
MSDM/SLIC tables (a Windows licence key) are left out.

It reads /sys, which is new: sysfs at Linux's paths and in Linux's
formats -- /sys/bus/pci/devices with uevent, config and resource,
/sys/bus/usb/devices, /sys/firmware/acpi/tables, dmi/tables, memmap
and efi, /sys/class/dmi/id. toybox's lspci and lsusb work unmodified
against it. The USB core now keeps a table of attached devices for it.

The machine's name comes from SMBIOS (kernel/dev/dmi.c). The UEFI loader
hands over the entry point from the configuration table, the kernel
falls back to the 0xF0000 scan, and the log gets Linux's "DMI:" line.

Two bugs found on the way:

- The loader handed over at most 40 memory-map entries, in firmware
  order. A laptop's UEFI map is 60-150 descriptors with RAM above 4 GB
  listed last, so that is what was dropped. The entries now have their
  own area at 0x31000 with room for 256, are sorted before merging, and
  the kernel's 32 usable regions keep the largest when there are more.
- MemTotal and sysinfo's totalram were PHYSTOP, an address, which counts
  the PCI hole: a 6 GB machine reported 8. Now the usable RAM, summed.

usb.ids moves to /usr/share/hwdata, where lsusb looks for it, and
pci.ids joins it (`make pci-ids`, BSD-3-Clause like usb.ids).

Checked under QEMU q35: the report written to a FAT32 stick, fsck.fat
clean, DSDT.dat disassembled by iasl on the host, lspci -k and lsusb
showing names, 6 GB of RAM seen as 6137 MB.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S1giNvrHTrPMPw7V6x1kQ4
2026-10-23 12:54:11 +02:00

246 lines
13 KiB
Text

SchOS
Copyright 2026 Nexoniarz
This product includes software developed as part of the SchOS project,
licensed under the GNU General Public License, version 2 or (at your option)
any later version. See LICENSE.
================================================================================
Third-party software
================================================================================
SchOS incorporates and redistributes software written by others. Their
licences apply to their code and are NOT superseded by the SchOS licence.
A built SchOS image contains binaries derived from all of the following.
--------------------------------------------------------------------------------
xv6-x86_64 / xv6 MIT License
--------------------------------------------------------------------------------
Copyright (c) 2006-2019 Frans Kaashoek, Robert Morris, Russ Cox,
Massachusetts Institute of Technology CSAIL
The SchIFT kernel is a derivative work of xv6. Substantial portions of
kernel/ -- notably the process, trap, virtual memory, buffer cache and v1
filesystem code -- descend from it, however heavily rewritten. The MIT licence
requires that this notice be preserved in all copies; see LICENSE.MIT.
--------------------------------------------------------------------------------
musl libc 1.2.5 MIT License
--------------------------------------------------------------------------------
Copyright (c) 2005-2020 Rich Felker and contributors
Built from ports/musl. Provides the C library every userland program links
against. See the extracted source's COPYRIGHT file for the full contributor
list, which the MIT terms require be carried along with binaries.
--------------------------------------------------------------------------------
toybox 0.8.12 Zero-Clause BSD (0BSD)
--------------------------------------------------------------------------------
Copyright (c) 2006-2024 Rob Landley and contributors
Built from ports/toybox. Supplies the standard command set in /bin -- 268
applets, which is defconfig's 236 plus a curated set from toys/pending/ (awk,
bc, diff and the rest); see ports/toybox/Makefile. 0BSD imposes no attribution
requirement at all; this entry is courtesy, not obligation.
--------------------------------------------------------------------------------
kilo (commit 323d93b) BSD 2-Clause
--------------------------------------------------------------------------------
Copyright (c) 2016 Salvatore Sanfilippo <antirez@gmail.com>
Built from ports/kilo. Supplies /bin/kilo and /bin/edit, the text editor. The
BSD 2-Clause terms require the copyright notice and disclaimer be retained in
binary distributions; the full text is installed at
/usr/share/licenses/kilo/LICENSE in every image.
--------------------------------------------------------------------------------
mksh R59c MirOS Licence
--------------------------------------------------------------------------------
Copyright (c) 2002-2023 Thorsten Glaser and contributors
Portions derived from the Public Domain Korn Shell (pdksh)
Built from ports/mksh. Supplies /bin/sh. The MirOS Licence is permissive and
requires the copyright notice be retained.
--------------------------------------------------------------------------------
zsh 5.9 MIT-like
--------------------------------------------------------------------------------
Copyright (c) 1992-2017 Paul Falstad, Richard Coleman, Zoltan Hidvegi,
Andrew Main, Peter Stephenson, Sven Wischnowsky, and others
Built from ports/zsh. Installed as /bin/zsh and used as the interactive shell;
/bin/sh remains mksh.
zsh's LICENCE notes that a few shell functions are licensed under the GNU
General Public Licence and states that, since no core function is affected,
those files may simply be omitted. They are. ports/zsh/Makefile removes four
files after extraction -- completions for darcs, qdbus, osc and zypper -- and
refuses to install if any of them is still present. No GPL-licensed file is
shipped in a SchOS image.
--------------------------------------------------------------------------------
ncurses 6.4 MIT License
--------------------------------------------------------------------------------
Copyright 2018-2022 Thomas E. Dickey
Copyright 1998-2018 Free Software Foundation, Inc.
Built from ports/ncurses. Linked into zsh so that its line editor can drive a
terminal, and into sysroot/bin/tinfotest. Built with --disable-database and
compiled-in fallbacks, so no terminfo files are installed.
--------------------------------------------------------------------------------
lwIP 2.2.0 BSD 3-Clause
--------------------------------------------------------------------------------
Copyright (c) 2001, 2002 Swedish Institute of Computer Science
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Fetched by ports/lwip and compiled into the kernel -- it is the TCP/IP stack,
not a userland library, so it is present in every built kernel image rather
than in a binary under /bin. The port layer written for SchOS
(kernel/net/lwip/) is GPL-2.0-or-later and is not part of lwIP; lwIP's own
sources are unmodified. Clause 3 is a no-endorsement term, not the four-clause
advertising requirement, so it combines with the GPL without difficulty.
--------------------------------------------------------------------------------
uACPI 6.1.1 MIT
--------------------------------------------------------------------------------
Copyright (c) 2022-2026 Daniil Tatianin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Fetched by ports/uacpi and compiled into the kernel: it is the ACPI AML
interpreter, used for PCI interrupt routing, the power button and power-off.
The host layer written for SchOS (kernel/acpi/) is GPL-2.0-or-later and is not
part of uACPI; uACPI's own sources are unmodified.
--------------------------------------------------------------------------------
Intel 8254x device identifiers BSD 3-Clause
--------------------------------------------------------------------------------
Copyright (c) 2001-2020, Intel Corporation
All rights reserved.
The PCI device IDs in include/e1000.h are transcribed from FreeBSD's
sys/dev/e1000/e1000_hw.h, which carries the Intel 3-clause BSD licence above
(verified: no advertising clause). Only the identifier constants are used --
data, not implementation. kernel/drivers/net/e1000/e1000.c is written from
Intel's public manual 317453 and contains no FreeBSD or Intel driver code.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the conditions of the 3-clause BSD
licence are met, including retention of this notice and the disclaimer, and
that neither the name of Intel Corporation nor the names of its contributors
are used to endorse or promote products derived from this software without
specific prior written permission.
--------------------------------------------------------------------------------
usb.ids -- USB vendor and product database BSD 3-Clause (dual-licensed)
--------------------------------------------------------------------------------
Maintained by Stephen J. Gowdy <linux.usb.ids@gmail.com>
http://www.linux-usb.org/usb.ids
Distributed by its maintainer under the terms of *either* the GNU General
Public License version 2 or later, *or* the 3-clause BSD Licence. SchOS takes
the BSD option, which was chosen while SchOS was Apache-2.0; either option is
compatible now, and the BSD one is kept because it asks less of anyone.
Shipped verbatim as /usr/share/hwdata/usb.ids. Cached in dist/ and refreshed
with `make usb-ids`, never automatically -- the version and date are in the
file's own header, so what shipped is always knowable.
--------------------------------------------------------------------------------
pci.ids -- PCI vendor and device database BSD 3-Clause (dual-licensed)
--------------------------------------------------------------------------------
Maintained by Albert Pool, Martin Mares and the PCI ID Project volunteers
https://pci-ids.ucw.cz/
Distributed under the terms of *either* the GNU General Public License version
2 or later, *or* the 3-clause BSD Licence, as its header states. SchOS takes
the BSD option, as for usb.ids.
Shipped verbatim as /usr/share/hwdata/pci.ids. Cached in dist/ and refreshed
with `make pci-ids`, never automatically.
--------------------------------------------------------------------------------
Roboto Apache-2.0
--------------------------------------------------------------------------------
Copyright the Roboto Project Authors (https://github.com/googlefonts/roboto)
Shipped as /usr/share/fonts/Roboto-Regular.ttf, from ports/Roboto. Licensed
under Apache-2.0. It is a separate data file loaded at run time, not code
linked into SchOS, so it sits beside the GPL as an aggregate and keeps its own
licence; the obligation is this notice. Intended for the desktop, window
manager and compositor.
--------------------------------------------------------------------------------
JetBrains Mono SIL OFL 1.1
--------------------------------------------------------------------------------
Copyright 2020 The JetBrains Mono Project Authors
(https://github.com/JetBrains/JetBrainsMono)
Shipped as /usr/share/fonts/JetBrainsMono-Regular.ttf, from ports/JetBrains_Mono
(full licence text at ports/JetBrains_Mono/OFL.txt). Intended for the terminal
and TTY.
Under the SIL Open Font License 1.1 the font remains under OFL even inside this
GPL-licensed system -- that does not reach any other part of SchOS -- and it may
not be sold on its own. Bundling it with an operating system is expressly
permitted. JetBrains Mono declares no Reserved Font Name, so a modified version
(a pre-rasterised bitmap, for instance) may keep the name.
Distinct from xv6 itself (LICENSE.MIT), which this project in turn derives from.
================================================================================
The build downloads upstream tarballs into dist/ and applies the patches in
ports/<name>/patches/. Nothing in ports/ is SchOS code; do not add first-party
work there. See docs/layout.md.
Licence questions -- what may be copied in, what may never be, and how to check
a NetBSD file's clause before using it -- are worked through in
docs/licensing.md.
fastfetch MIT
https://github.com/fastfetch-cli/fastfetch
Copyright (c) 2022 Linus Dierheimer and contributors
Built from source by ports/fastfetch and installed as /bin/fastfetch.
Unpatched: see the note at the top of that Makefile about why what it
cannot detect becomes work in the kernel rather than a patch here.