SchOS/kernel
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Nexoniarz 7d44eb75a3 console: put the kernel log on screen from the first line
Everything the kernel printed went to the serial port and nowhere else until
the first program started and called console_takeover(). On a machine with a
UART that is fine. On one without -- a laptop, a Chromebox, anything built
this century -- the screen showed the loader's progress bar and then nothing
at all, for the whole of boot, on exactly the machines where something was
going wrong.

A report of "it shows Loading SchOS and freezes" cannot be acted on. The same
boot with a log on it says which line it stopped after, and that is usually
the whole diagnosis.

The loader has already put a framebuffer on the screen and described it in the
boot block, so there was a perfectly good console sitting unused for the
entire early boot. kmain attaches it on its first line now.

Not gated on the F8 verbose menu, which was the first instinct and is wrong:
F8 is no use to someone whose machine resets before they can read anything.
This is what Linux does too -- the log is the default and `quiet splash` is
the thing you ask for. The splash survives until the kernel's first message,
and a boot that succeeds clears the lot when the shell starts, so the only
people who ever see this are the people who need to.

vt_init is idempotent now, because the early attach brings the terminals up
before main() reaches its usual call and the second one must not wipe six
screens of boot messages.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VQ7Qx8E1q1M1bbCq8QLHS2
2026-09-13 14:59:14 +02:00
..
arch/x86_64 time: read the clock from the TSC, not from counting interrupts 2026-09-13 13:57:26 +02:00
core console: put the kernel log on screen from the first line 2026-09-13 14:59:14 +02:00
dev console: put the kernel log on screen from the first line 2026-09-13 14:59:14 +02:00
drivers kernel: the clock ran 7x slow because the GPU never acknowledged its interrupt 2026-09-12 21:34:36 +02:00
fs time: read the clock from the TSC, not from counting interrupts 2026-09-13 13:57:26 +02:00
net net: the DHCP lease goes to the log, not over the user's shell 2026-09-12 19:59:05 +02:00
proc init: a hang is as detectable as a death, and PID 1 comes back 2026-09-13 14:27:22 +02:00
sys time: read the clock from the TSC, not from counting interrupts 2026-09-13 13:57:26 +02:00
kernel.ld Initial commit: Schunix as it stands before the SchOS rename 2026-08-09 13:47:01 +02:00