diff --git a/.claude/memory/schunix-iso-boot.md b/.claude/memory/schunix-iso-boot.md index af0c38f..a00f57d 100644 --- a/.claude/memory/schunix-iso-boot.md +++ b/.claude/memory/schunix-iso-boot.md @@ -5,7 +5,7 @@ metadata: node_type: memory type: project originSessionId: a665e14b-86bd-4b41-a228-51377f3e9225 - modified: 2026-08-09T20:03:23.603Z + modified: 2026-08-09T20:19:56.990Z --- **`make iso` produces a bootable `schunix.iso`** (added 2026-08-04). Always a @@ -83,7 +83,14 @@ list was not an option, because the ramdisk is linked into the kernel binary and what goes into it is a licensing question ([[schunix-ramdisk-root-sizing]]). `RAMDISK_NINODES` is gone: SchFS has no preallocated inode table. -**Not a live CD.** The disc boots from the ramdisk embedded in the kernel, not -from itself. Mounting it would need an ATAPI block driver (`kernel/dev/ide.c` -speaks only ATA — 0x20/0x30/0xC4, no PACKET) plus an ISO 9660 filesystem behind -`struct fs_ops`. Only the *bootloader* does ATAPI, in real mode. +**Not a live CD, and deliberately staying that way** (decided 2026-08-09). +The disc boots from the ramdisk embedded in the kernel, not from itself. +Mounting it as root would need an ATAPI block driver (`kernel/dev/ide.c` speaks +only ATA — 0x20/0x30/0xC4, no PACKET) plus an ISO 9660 filesystem behind +`struct fs_ops`; only the *bootloader* does ATAPI, and only in real mode. + +Nexoniarz called that work off: the ISO already boots a complete system from +the ramdisk, so it *is* the live environment, and an installer makes a +mountable disc redundant. The installer copies from the running root, so it +never reads the disc as a filesystem at all. See +[[schunix-roadmap-and-projects]]. diff --git a/.claude/memory/schunix-roadmap-and-projects.md b/.claude/memory/schunix-roadmap-and-projects.md index c9c0b1e..24a633b 100644 --- a/.claude/memory/schunix-roadmap-and-projects.md +++ b/.claude/memory/schunix-roadmap-and-projects.md @@ -5,7 +5,7 @@ metadata: node_type: memory type: project originSessionId: a665e14b-86bd-4b41-a228-51377f3e9225 - modified: 2026-08-04T23:05:57.185Z + modified: 2026-08-09T20:20:11.342Z --- **Set out 2026-08-04.** Recorded in `docs/roadmap.md`; the naming and the @@ -48,6 +48,36 @@ size, and dedups across images. Most of it exists — `tools/mkschfs.c` and `tools/mkfs.c` already do content dedup with an `(st_dev, st_ino)` fast path. `mksip` should share that code. +## The installer, scoped 2026-08-09 + +**A live CD is off the list.** The ISO boots a complete system from the +ramdisk, so it already is the live environment; an installer makes a mountable +disc redundant. That drops the ATAPI driver and ISO 9660 filesystem entirely +— see [[schunix-iso-boot]]. + +Nexoniarz chose the ambitious shape on both open questions: + +- **Both firmwares from the start**: GPT with a FAT ESP *and* a SchFS + partition, bootable on BIOS and UEFI. Needs a FAT writer and GPT code inside + the OS before anything can be installed at all. +- **`.sip` first**, rather than copying the running root. The installer applies + a package; `mksip` comes before anything installs. + +Dependency chain, each stage separately verifiable: + +1. **Raw block device** — *done*, commit 66152ad. `/dev/hda`, `/dev/hdb`, + major 8, minor = IDE device number. Verified against the host as an + independent oracle in both directions. **Limit: `devsw` passes the offset as + a 32-bit `uint`, so a raw disk stops at 4 GB** — widen before installing to + real hardware. +2. **`.sip` format + `mksip`**, sharing the dedup path in `mkschfs.c`. Test it + the way the SchFS round-trip is tested: build, apply, `diff -r` against the + source tree ([[schfs-phase2-mount]]). +3. **In-OS tooling**: GPT writer, FAT ESP writer, native SchFS formatter. +4. **Bootable target**: bootblock + stage2 for BIOS, ESP + BOOTX64.EFI + kernel + for UEFI. +5. **`schinst`** in `projects/`, driving all of it. + **Confirmed order (2026-08-05):** finish USB, then sockets + raw input, then virtio-gpu.