Twelve login terminals, root only, console fixes, a faster build, a Niveus splash, and X back on evdev

- tty1-tty12 all run login; the image has only root. /dev/tty7..12 could not
  be written (cdev.c knew minors 10-16 only), which sent their jobs into a
  restart storm that took the supervisor down; fixed, and stat reports them as
  Linux's tty7..12.
- Erasing text at a prompt did nothing: erase_one sent a bare backspace, which
  only moves; it and the echo path now send back-blank-back through vt_feed.
- A white cursor block was left at the end of every line of a verbose boot:
  a line feed at the bottom scrolls the pixels, cursor included, and the
  cursor was erased after the scroll. It comes off first now. A blank cell is
  also marked dirty, which it was not.
- ldlsd died with a general protection fault on real hardware in its variadic
  log function: Linux module code calls with an 8-byte-aligned stack and an
  unset %al, and the prologue's movaps faults. LDLS guest code is built with
  -mstackrealign.
- make iso took over a minute for any change, because staging r8169 rewrote
  the same files and every mtime moved; it now replaces files only if their
  contents differ (about 10 s).
- The loader's splash is redrawn in the boot manager's style, and the boot
  manager shows its cursor whenever a pointer device exists.
- xf86-input-libinput is out of the image again: with it Xorg took both
  keyboard and pointer from libinput and, on the user's laptop, neither worked.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EVRhxi9zpdW2uDUN4FVcao
This commit is contained in:
Nexoniarz 2026-10-26 17:43:44 +01:00
commit 2aef583aad
23 changed files with 290 additions and 155 deletions

View file

@ -0,0 +1,20 @@
# A login on /dev/tty10: every one of the twelve virtual terminals asks who is there.
# Alt+F10 (or Ctrl+Alt+F10) shows it. Twelve manifests rather than one with a
# range, because schinit has no notion of a template.
Label = os.schos.tty10-shell
Program = /bin/sh
Args = sh /etc/schos-getty
RunAtLoad = yes
KeepAlive = yes
Environment = TERM=linux
Environment = PATH=/bin:/usr/bin
ControllingTerminal = yes
StandardIn = /dev/tty10
StandardOut = /dev/tty10
StandardError = /dev/tty10
ThrottleInterval = 1

View file

@ -0,0 +1,20 @@
# A login on /dev/tty11: every one of the twelve virtual terminals asks who is there.
# Alt+F11 (or Ctrl+Alt+F11) shows it. Twelve manifests rather than one with a
# range, because schinit has no notion of a template.
Label = os.schos.tty11-shell
Program = /bin/sh
Args = sh /etc/schos-getty
RunAtLoad = yes
KeepAlive = yes
Environment = TERM=linux
Environment = PATH=/bin:/usr/bin
ControllingTerminal = yes
StandardIn = /dev/tty11
StandardOut = /dev/tty11
StandardError = /dev/tty11
ThrottleInterval = 1

View file

@ -0,0 +1,20 @@
# A login on /dev/tty12: every one of the twelve virtual terminals asks who is there.
# Alt+F12 (or Ctrl+Alt+F12) shows it. Twelve manifests rather than one with a
# range, because schinit has no notion of a template.
Label = os.schos.tty12-shell
Program = /bin/sh
Args = sh /etc/schos-getty
RunAtLoad = yes
KeepAlive = yes
Environment = TERM=linux
Environment = PATH=/bin:/usr/bin
ControllingTerminal = yes
StandardIn = /dev/tty12
StandardOut = /dev/tty12
StandardError = /dev/tty12
ThrottleInterval = 1

View file

@ -1,13 +1,6 @@
# An interactive shell on /dev/tty3.
#
# NVT is 6 (include/dev/vt.h) and the kernel creates all six terminals, but only
# two ever had anything running on them -- so Alt+F3 switched to a terminal
# that was working perfectly and had nobody to talk to, which looks exactly
# like a broken one.
#
# Identical to tty2-shell apart from the number. Six manifests rather than one
# with a range, because schinit has no notion of a template and inventing one
# for six lines each is the wrong trade.
# A login on /dev/tty3: every one of the twelve virtual terminals asks who is there.
# Alt+F3 (or Ctrl+Alt+F3) shows it. Twelve manifests rather than one with a
# range, because schinit has no notion of a template.
Label = os.schos.tty3-shell
Program = /bin/sh

View file

@ -1,13 +1,6 @@
# An interactive shell on /dev/tty4.
#
# NVT is 6 (include/dev/vt.h) and the kernel creates all six terminals, but only
# two ever had anything running on them -- so Alt+F4 switched to a terminal
# that was working perfectly and had nobody to talk to, which looks exactly
# like a broken one.
#
# Identical to tty2-shell apart from the number. Six manifests rather than one
# with a range, because schinit has no notion of a template and inventing one
# for six lines each is the wrong trade.
# A login on /dev/tty4: every one of the twelve virtual terminals asks who is there.
# Alt+F4 (or Ctrl+Alt+F4) shows it. Twelve manifests rather than one with a
# range, because schinit has no notion of a template.
Label = os.schos.tty4-shell
Program = /bin/sh

View file

@ -1,13 +1,6 @@
# An interactive shell on /dev/tty5.
#
# NVT is 6 (include/dev/vt.h) and the kernel creates all six terminals, but only
# two ever had anything running on them -- so Alt+F5 switched to a terminal
# that was working perfectly and had nobody to talk to, which looks exactly
# like a broken one.
#
# Identical to tty2-shell apart from the number. Six manifests rather than one
# with a range, because schinit has no notion of a template and inventing one
# for six lines each is the wrong trade.
# A login on /dev/tty5: every one of the twelve virtual terminals asks who is there.
# Alt+F5 (or Ctrl+Alt+F5) shows it. Twelve manifests rather than one with a
# range, because schinit has no notion of a template.
Label = os.schos.tty5-shell
Program = /bin/sh

View file

@ -1,27 +1,15 @@
# A root shell on /dev/tty6, with no login: the way in when login itself is
# what has broken. Every other terminal asks who is there.
#
# An interactive shell on /dev/tty6.
#
# NVT is 6 (include/dev/vt.h) and the kernel creates all six terminals, but only
# two ever had anything running on them -- so Alt+F6 switched to a terminal
# that was working perfectly and had nobody to talk to, which looks exactly
# like a broken one.
#
# Identical to tty2-shell apart from the number. Six manifests rather than one
# with a range, because schinit has no notion of a template and inventing one
# for six lines each is the wrong trade.
# A login on /dev/tty6: every one of the twelve virtual terminals asks who is there.
# Alt+F6 (or Ctrl+Alt+F6) shows it. Twelve manifests rather than one with a
# range, because schinit has no notion of a template.
Label = os.schos.tty6-shell
Program = /bin/zsh
Args = -zsh
Program = /bin/sh
Args = sh /etc/schos-getty
RunAtLoad = yes
KeepAlive = yes
Environment = TERM=linux
Environment = PATH=/bin:/usr/bin
Environment = HOME=/root
Environment = SHELL=/bin/zsh
ControllingTerminal = yes

View file

@ -0,0 +1,20 @@
# A login on /dev/tty7: every one of the twelve virtual terminals asks who is there.
# Alt+F7 (or Ctrl+Alt+F7) shows it. Twelve manifests rather than one with a
# range, because schinit has no notion of a template.
Label = os.schos.tty7-shell
Program = /bin/sh
Args = sh /etc/schos-getty
RunAtLoad = yes
KeepAlive = yes
Environment = TERM=linux
Environment = PATH=/bin:/usr/bin
ControllingTerminal = yes
StandardIn = /dev/tty7
StandardOut = /dev/tty7
StandardError = /dev/tty7
ThrottleInterval = 1

View file

@ -0,0 +1,20 @@
# A login on /dev/tty8: every one of the twelve virtual terminals asks who is there.
# Alt+F8 (or Ctrl+Alt+F8) shows it. Twelve manifests rather than one with a
# range, because schinit has no notion of a template.
Label = os.schos.tty8-shell
Program = /bin/sh
Args = sh /etc/schos-getty
RunAtLoad = yes
KeepAlive = yes
Environment = TERM=linux
Environment = PATH=/bin:/usr/bin
ControllingTerminal = yes
StandardIn = /dev/tty8
StandardOut = /dev/tty8
StandardError = /dev/tty8
ThrottleInterval = 1

View file

@ -0,0 +1,20 @@
# A login on /dev/tty9: every one of the twelve virtual terminals asks who is there.
# Alt+F9 (or Ctrl+Alt+F9) shows it. Twelve manifests rather than one with a
# range, because schinit has no notion of a template.
Label = os.schos.tty9-shell
Program = /bin/sh
Args = sh /etc/schos-getty
RunAtLoad = yes
KeepAlive = yes
Environment = TERM=linux
Environment = PATH=/bin:/usr/bin
ControllingTerminal = yes
StandardIn = /dev/tty9
StandardOut = /dev/tty9
StandardError = /dev/tty9
ThrottleInterval = 1