A 64-bit operating system written from the metal up: SMP kernel, copy-on-write filesystem, Linux syscall ABI, Alpine packages, X11 on real hardware.
  • C 90.2%
  • Makefile 3.2%
  • PowerShell 2.3%
  • Shell 1.7%
  • Python 1.3%
  • Other 1.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Nexoniarz 754d96ebc5 tools: group scripts by what runs them
tools/windows/   .ps1   (pwsh, so usable from Linux and macOS too)
  tools/posix/     .sh
  tools/python/    .py
  tools/           .c and .pl

The .c and .pl files stay at the top level because they are not
host-specific: the build compiles or invokes them on every platform.

Call sites updated in the Makefile, ports/mk/port.mk, docs and the
project memory. The one thing that does not survive a move on its own is
a script deriving the repo root from its own location -- all nine
PowerShell tools used Split-Path $PSScriptRoot -Parent, and memory-sync.sh
used dirname/.., both of which quietly become tools/ one level deeper.
Two levels now.

Two pre-existing Windows failures surfaced while verifying, both real and
neither caused by the move:

  - schfs_fsck.c did not compile under mingw at all: --extract uses
    POSIX mkdir(path,mode), symlink() and link(), none of which mingw
    has. That took the whole tool with it, and `make schfs-check` with
    it. mkdir maps to _mkdir; symlink and link fail loudly rather than
    writing a regular file in their place, because an extracted tree
    that differs from the image while reporting success defeats the
    point of --extract.
  - the round-trip test then failed at `ln -s`, since Git Bash cannot
    create symlinks without developer mode. It skips with a message now.
    Not a fudge: mkschfs's mingw build cannot see a symlink either, so
    the test would have compared a tree with none against an image with
    none and called it a pass -- coverage reporting itself as present
    while being absent.

Verified on Windows: build clean, all seven bootcheck suites green,
make schfs-check passes.
2026-08-09 14:38:02 +02:00
.claude/memory Carry project memory in the repo, with tools/memory-sync.sh 2026-08-09 14:27:22 +02:00
Assets Rename Schunix to SchOS; the kernel becomes SchIFT 2026-08-09 14:09:59 +02:00
boot Rename Schunix to SchOS; the kernel becomes SchIFT 2026-08-09 14:09:59 +02:00
cmd Rename Schunix to SchOS; the kernel becomes SchIFT 2026-08-09 14:09:59 +02:00
docs tools: group scripts by what runs them 2026-08-09 14:38:02 +02:00
include Rename Schunix to SchOS; the kernel becomes SchIFT 2026-08-09 14:09:59 +02:00
kernel Rename Schunix to SchOS; the kernel becomes SchIFT 2026-08-09 14:09:59 +02:00
lib Rename Schunix to SchOS; the kernel becomes SchIFT 2026-08-09 14:09:59 +02:00
ports tools: group scripts by what runs them 2026-08-09 14:38:02 +02:00
projects Rename Schunix to SchOS; the kernel becomes SchIFT 2026-08-09 14:09:59 +02:00
tools tools: group scripts by what runs them 2026-08-09 14:38:02 +02:00
.#README Initial commit: Schunix as it stands before the SchOS rename 2026-08-09 13:47:01 +02:00
.gitattributes Initial commit: Schunix as it stands before the SchOS rename 2026-08-09 13:47:01 +02:00
.gitignore Carry project memory in the repo, with tools/memory-sync.sh 2026-08-09 14:27:22 +02:00
LICENSE Rename Schunix to SchOS; the kernel becomes SchIFT 2026-08-09 14:09:59 +02:00
LICENSE.MIT Rename Schunix to SchOS; the kernel becomes SchIFT 2026-08-09 14:09:59 +02:00
Makefile tools: group scripts by what runs them 2026-08-09 14:38:02 +02:00
NOTICE Rename Schunix to SchOS; the kernel becomes SchIFT 2026-08-09 14:09:59 +02:00
run.ps1 Rename Schunix to SchOS; the kernel becomes SchIFT 2026-08-09 14:09:59 +02:00