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 cda5908660 Build and tools work on Linux, macOS and BSD as well as Windows
Developed from both Windows and Linux, so nothing in the build should
care which host it runs on. It did, in four places.

Toolchain: one path instead of two. clang is a cross-compiler by
construction, so a single LLVM install targets bare-metal ELF, 16/32-bit
code below 1 MB, and Linux/musl userland from any host -- which is how
the Windows build already worked. The GNU branch beside it had drifted
into passing --no-warn-rwx-segments, a hard error on lld, which is the
default linker on both FreeBSD and macOS; and it required a brewed
x86_64-elf-gcc before anything built on a Mac at all. GNU is kept as a
fallback (USE_GNU=1) but clang+lld is chosen whenever both are present.
Host tools use the host's own cc; only mingw needs naming explicitly.

tools/mkschfs.c included <sys/sysmacros.h> unconditionally on non-mingw
hosts. That header is glibc/musl only -- macOS and the BSDs have neither
the header nor a need for it, since major()/minor() come from
<sys/types.h> there. Now guarded on __linux__.

Ports verified tarballs with `sha256sum -c -`, which does not exist on
macOS (shasum), FreeBSD/NetBSD (sha256), or OpenBSD (cksum -a sha256),
and each spells its check mode differently. tools/sha256check.sh picks
whichever of the five the host has and compares digests itself.

nproc is coreutils, so absent on macOS and BSD; falls through to sysctl
-n hw.ncpu before defaulting to 4.

The PowerShell tools now run under pwsh on any OS: QEMU is found on PATH
(the scoop location is a Windows-only fallback), and path literals use
forward slashes -- Join-Path $root 'build\x' produces a *filename
containing a backslash* on a Unix host. The backslash sweep is limited
to known directory prefixes on purpose: bootcheck sends
printf 'caf\303\251' to the guest to test UTF-8, and a blanket
substitution would have quietly changed what that asserts.

Also fixes six tools left booting build/fs.img, which stopped being
bootable when SchFS became the root filesystem: crashshot, dispshot,
fbshot, splashshot, textshot and ttyshot all take build/schfs.img now,
and the -SchFS switches that used to select it are gone.

Verified on Windows: full build, and bootcheck green. The Linux, macOS
and BSD paths are written from their documented behaviour and are NOT
executed here -- this machine has no WSL and no second host.
2026-08-09 14:24:53 +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 Rename Schunix to SchOS; the kernel becomes SchIFT 2026-08-09 14:09:59 +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 Build and tools work on Linux, macOS and BSD as well as Windows 2026-08-09 14:24:53 +02:00
projects Rename Schunix to SchOS; the kernel becomes SchIFT 2026-08-09 14:09:59 +02:00
tools Build and tools work on Linux, macOS and BSD as well as Windows 2026-08-09 14:24:53 +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 Rename Schunix to SchOS; the kernel becomes SchIFT 2026-08-09 14:09:59 +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 Build and tools work on Linux, macOS and BSD as well as Windows 2026-08-09 14:24:53 +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