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
..
acpi.h
acpi: uACPI, for interrupt routing, the power button and power-off
2026-10-22 16:12:28 +02:00
asm.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
audio.h
audio: /dev/dsp, AudioEngine, and an AC'97 under it
2026-09-24 14:23:13 +02:00
blkdev.h
vfs: room for 32 disks and partitions, 32 mounts, 16 SchFS volumes
2026-10-23 12:19:50 +02:00
buf.h
Raise the disk ceiling: 64-bit blocks, no FSSIZE panic, LBA48
2026-08-10 18:50:31 +02:00
config_sinit.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
date.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
dbg.h
debugger: D5, the network transport -- and the plan closes
2026-09-14 15:33:53 +02:00
defs.h
mm: the loader jumped out from under itself, and 3 GB was never the limit
2026-09-25 15:23:55 +02:00
device.h
audio: /dev/dsp, AudioEngine, and an AC'97 under it
2026-09-24 14:23:13 +02:00
display.h
gfx: the second head shows the boot, not just what comes after it
2026-09-22 21:47:35 +02:00
dma.h
dma: the 4 MB cap was the refusal, not the arena
2026-09-14 22:52:20 +02:00
elf.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
errno.h
schfs: a format version policy, and refusing is not falling back
2026-09-12 17:13:59 +02:00
fat.h
vfs: room for 32 disks and partitions, 32 mounts, 16 SchFS volumes
2026-10-23 12:19:50 +02:00
fb.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
fcntl.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
file.h
hwreport: describe a machine onto a USB stick, from a Linux-style /sys
2026-10-23 12:54:11 +02:00
font.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
fs.h
init survives stray signals; commands are 4-34x faster
2026-08-09 15:54:05 +02:00
fsstat.h
licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0
2026-10-22 08:48:45 +02:00
gfx.h
gfx: draw the console in RAM, and write it to the card write-combined
2026-10-22 23:46:58 +02:00
hwinfo.h
hwreport: describe a machine onto a USB stick, from a Linux-style /sys
2026-10-23 12:54:11 +02:00
input.h
usb-hid: bind an absolute pointer, and plumb EV_ABS through
2026-08-10 18:27:01 +02:00
ioperm.h
ldls: a second driver, and everything it found
2026-09-14 15:20:07 +02:00
irq.h
acpi: uACPI, for interrupt routing, the power button and power-off
2026-10-22 16:12:28 +02:00
kbd.h
kbd: three layouts, and the arrow keys were sitting on top of UTF-8
2026-09-20 01:09:32 +02:00
keymap.h
kbd: three layouts, and the arrow keys were sitting on top of UTF-8
2026-09-20 01:09:32 +02:00
klog.h
debugger: D5, the network transport -- and the plan closes
2026-09-14 15:33:53 +02:00
kmem.h
kmem: a slab allocator, and what the fixed tables actually cost
2026-09-22 09:32:06 +02:00
logo.h
docs: a branding folder, and the three marks are not interchangeable
2026-09-12 18:19:09 +02:00
memlayout.h
mm: the loader jumped out from under itself, and 3 GB was never the limit
2026-09-25 15:23:55 +02:00
mmu.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
mp.h
boot: stop assuming the machine is an emulator
2026-10-22 10:29:12 +02:00
netdev.h
net: a frame wakes the stack, instead of waiting for the clock
2026-09-12 17:23:46 +02:00
netuser.h
ldls: L4 was free after all, and the plan closes
2026-09-14 13:37:04 +02:00
param.h
audio: /dev/dsp, AudioEngine, and an AC'97 under it
2026-09-24 14:23:13 +02:00
pci.h
acpi: uACPI, for interrupt routing, the power button and power-off
2026-10-22 16:12:28 +02:00
pciuser.h
licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0
2026-10-22 08:48:45 +02:00
posix.h
licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0
2026-10-22 08:48:45 +02:00
proc.h
proc: real CPU time, a tty number, and an exe that is a symlink
2026-09-22 02:45:00 +02:00
qr.h
docs: four directories, and a rule for when a thing leaves the roadmap
2026-09-12 17:13:35 +02:00
sbuf.h
debugger: D5, the network transport -- and the plan closes
2026-09-14 15:33:53 +02:00
schboot.h
hwreport: describe a machine onto a USB stick, from a Linux-style /sys
2026-10-23 12:54:11 +02:00
schfs.h
unix: a bound socket is a file
2026-09-22 10:06:10 +02:00
schinit.h
licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0
2026-10-22 08:48:45 +02:00
sleeplock.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
socket.h
unix: a bound socket is a file
2026-09-22 10:06:10 +02:00
spinlock.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
stat.h
unix: a bound socket is a file
2026-09-22 10:06:10 +02:00
syscall.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
text.h
gfx: one glyph blitter, and a terminal cell is a surface
2026-09-23 17:57:16 +02:00
theme.h
gfx: the console and the crash screen stop drawing on a driver by name
2026-08-15 17:04:10 +02:00
traps.h
irq: MSI first, and poll the INTx lines that never arrive
2026-10-22 10:29:24 +02:00
ttf.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
types.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
uaccess.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
usb.h
usb: plug and play -- hot-plug, unplug, every interface, real mice
2026-10-22 11:38:13 +02:00
user.h
hwreport: describe a machine onto a USB stick, from a Linux-style /sys
2026-10-23 12:54:11 +02:00
virtio.h
hybrid: a modeset, from a process
2026-09-14 01:36:05 +02:00
vmap.h
gfx: draw the console in RAM, and write it to the card write-combined
2026-10-22 23:46:58 +02:00
vt.h
licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0
2026-10-22 08:48:45 +02:00
x86.h
audio: /dev/dsp, AudioEngine, and an AC'97 under it
2026-09-24 14:23:13 +02:00