Reference

Boot options

Every option the SlopOS kernel reads from its command line, with values, defaults and effects.

This page lists every option the kernel reads from its command line, grouped by what it controls. The parsers are the source of truth: most options are read in boot/src/early_init.rs and boot/src/boot_drivers.rs, the test options in ktesting/src/config.rs, the diagnostic console in slopos-ostd/src/kconsole/config.rs and the Intel GPU options in drivers/src/xe_logic/cmdline.rs.

How to pass options

The command line is a list of options separated by spaces. The boot loader (Limine) hands it to the kernel, and the build scripts write it into the loader configuration when they build an image, so changing it means rebuilding the image.

How you bootCommand line
just iso, just boot-live, just boot-log (live ISO)BOOT_CMDLINE, default tests=off root=initramfs, plus boot.debug=on when DEBUG=1 and roulette=skip when ROULETTE=0
just boot, just boot-fast, just boot-debug (development disk)tests=off, plus the same DEBUG and ROULETTE additions
just test and the other test recipestests=on tests.shutdown=on tests.verbosity=summary boot.debug=on roulette=skip mount=LABEL=slopos-media:/media, plus the tests.* options the runner adds from its flags (see Test output format)
Any just recipe that builds a test imageTEST_CMDLINE replaces the test command line; TEST_CMDLINE_EXTRA appends to the self-hosting recipes' command line
BOOT_CMDLINE='tests=off root=initramfs lockdep=warn' just boot-live
TEST_CMDLINE='tests=on tests.shutdown=on tests.run=*ext2*' just test-raw

Rules that apply to every option:

  • An option the kernel does not know is ignored.
  • A known option with a malformed value is ignored, and the default stays. Most options log a Boot option: ... ignored line when that happens.
  • Where an option appears twice, the last one wins, with two exceptions: mount= is repeatable, and boot.debug=on beats boot.debug=off.
  • On/off options accept only the spellings listed in their row. The test options and the diagnostic console also accept true/false, yes/no, enabled/disabled and 1/0.

Root filesystem and mounts

OptionValuesDefaultEffect
root=auto, initramfs, disk, or a deviceautoChooses what / is. auto uses the first disk if it mounts writable, and otherwise the initramfs (the in-memory filesystem shipped with the kernel). initramfs uses the initramfs and attaches no root disk, so a live boot never touches the machine's disks. disk requires the disk as root. A device is named in any spelling mount(2) accepts: nvme0n1p2, /dev/vda, PARTUUID=..., UUID=..., LABEL=...; if that device is absent, the boot falls back to the initramfs and logs it.
mount=SOURCE:/PATH, repeatablenoneAfter the root is up, mounts the ext2/3/4 volume SOURCE at /PATH, in command-line order, so a later entry may mount inside an earlier one. SOURCE takes the same spellings as root=. A failure logs one MOUNT: line and the boot continues.
verity=requirerequireoffThe root disk must mount with a verity trailer (integrity data), or the fs init boot step fails. A boot with no disk at all still passes.

Disks and Filesystem explain how the root is chosen and mounted.

Display and input

OptionValuesDefaultEffect
video=framebufferflagoffKeeps the firmware framebuffer as the display and stops any GPU driver from taking it over.
serial_mirror=offflagmirroring onStops copying the text console's output to the serial port.
i8042.legacyflagoffBrings up the PS/2 keyboard and mouse controller at fixed addresses during boot, instead of through the ACPI device list.
tp.offflagoffSkips the Intel LPSS I²C controllers and the I²C-HID touchpad behind them.
tp.pollflagoffDrives the touchpad by polling instead of interrupts.
tp.debugflagoffVerbose touchpad bring-up logging, and a periodic check for sleeping tasks that missed their wake-up.
platform.debugflagoffVerbose logging while the kernel searches the ACPI tables for platform devices (the PS/2 controller, the touchpad).

Intel GPU (xe)

These are recovery and expert overrides for the Intel Xe display driver. Without them the driver takes over the display when it binds.

OptionValuesDefaultEffect
xe.modeset=on, offonoff leaves the firmware framebuffer in place and touches no display register.
xe.diag=on, offoffLogs decoded display registers (XE-DIAG: lines) while probing.
xe.nocursor=on, offoffSkips the hardware cursor plane; the compositor draws the cursor itself.
xe.pipe=A, B, C (either case)detectedForces which display pipe is treated as the active one.
xe.wdog_ms=decimal milliseconds100How long the driver checks that the display is still scanning after switching it over, before it rolls back to the firmware framebuffer.
xe.force_did=hex with 0x prefixthe device's own IDTreats the GPU as this PCI device ID, for hardware not yet in the driver's table.

Logging, diagnostics and profiling

OptionValuesDefaultEffect
boot.debug=on, 1, true / off, 0, falseoffSets the kernel log level to debug, or back to info. bootdebug=on and bootdebug=off are older spellings of the same option.
prof=ononoffSamples where CPU time goes (user, kernel, idle, the hottest kernel addresses, the tasks blocked in the kernel) and prints PROF[...] lines at the end of a test run.
kconsole=on, off, or a hex maskonWhich classes of diagnostic console commands may run. on is informational commands only (mask 0x1); 0x3 adds the commands that take the machine down (0x2); off disables the console.
kconsole.serial=on/offonWhether a serial BREAK arms the diagnostic console.
kconsole.arm_ms=milliseconds, up to 655353000How long the console waits for a command key after it is armed.
kconsole.max_lines=lines, up to 65535512The most lines one command may print.
kconsole.probe_ms=milliseconds, up to 65535250How long the all-CPU probe waits for each CPU to answer.
lockdep=off, warn, panic (on = panic)panicWhat the lock-order checker does when it finds two locks taken in an order that could deadlock. warn reports each distinct pair once and keeps booting; off skips the ordering checks but still tracks which locks each CPU holds.
watchdog=on, offonEnables the watchdog that reports a CPU that has stopped making progress.
watchdog.miss_threshold=positive integer100Consecutive heartbeat samples (one per timer tick) a CPU may miss before it is reported. 0 is refused.
watchdog.panic=on, offon bare metal, off under a hypervisorWhether a long stall panics the kernel: five thresholds long, or one threshold when the stalled CPUs are waiting on each other in a cycle. Under a hypervisor a virtual CPU the host has paused looks the same as a stalled one, which is why the default differs.

Panics and recovery

OptionValuesDefaultEffect
panic=rebootreboothaltA kernel panic resets the machine instead of halting it. An installed system uses this so that a boot slot that panics falls back to the loader's default entry.
panic.on_oops=on, 1, trueoffMakes every kernel panic fatal, turning off recovery of panics in task context.
panic.oops_limit=integer100How many panics the kernel may recover from in one boot; the panic that crosses the limit is fatal. 0 removes the limit.
panic.boot=ononoffPanics as soon as boot initialisation finishes. just test-install uses it to build a broken slot to roll back from.
panic.recover_smoke=on, 1, trueoffRuns the panic recovery smoke tasks after boot and enables the test_panic system call, which otherwise returns ENOSYS.
panic.post_boot_unwind=ononoffRaises a deliberate panic after boot that unwinds; halts the machine.
panic.fatal_smoke=ononoffRaises a deliberate fatal panic from deep in the call stack; halts the machine.
panic.nested_drop_smoke=ononoffRaises a panic from a destructor during a recoverable unwind; halts the machine.

The last three check that a panic prints one clean === KERNEL PANIC === report. just test never sets them.

Security and resource limits

OptionValuesDefaultEffect
authority=off, warn, enforce (on = enforce)enforceWhat a capability check does when a program lacks the capability. warn reports each missing capability once and allows the call; off skips the checks. See Permissions.
quota=off, warn, enforce (on = enforce)enforceWhat a resource limit does when a program would exceed it. warn grants and counts; off still counts but never refuses. See Resource limits.
mem.commit=percent100How much memory, as a percentage of usable physical memory, the kernel may promise to private mappings. Values above 400 are capped at 400; 0 counts but sets no ceiling. See Memory.

Scheduling

OptionValuesDefaultEffect
sched.ap_pause_ms=millisecondsmeasured defaultHow long the kernel waits for the other CPUs to pause when it needs all of them stopped. 0 removes the time limit and falls back to a fixed number of attempts.

Tests

OptionValuesDefaultEffect
tests=on/offoffRuns the test harness. Any value that is not an on/off spelling also turns it on; tests=off also clears tests.shutdown. Write tests=on exactly: only that spelling also puts userland into test mode (init runs the userland tests and the Wheel of Fate cannot reboot the machine).
tests.run=globs separated by commasall testsRuns only tests whose module::name matches one of the globs.
tests.skip=globs separated by commasnoneSkips matching tests.
tests.suite=namenoneShorthand for tests.run=*NAME*; also turns the harness on.
tests.verbosity=quiet, summary, verbosesummaryquiet prints only failures; verbose adds the captured log of passing tests. Any other value means summary.
tests.warn_ms=milliseconds, optional ms suffix0 (off)Marks passing tests slower than this as OVER_TIME. tests.timeout= is another name for it.
tests.shutdown=on/offoffExits QEMU through its isa-debug-exit device when the tests finish.
tests.stacktrace_demo=on/offoffParsed but currently has no effect.
roulette=skipskipspinSkips the Wheel of Fate at startup.

The output these options control is described in Test output format.

In the source

WhereWhat
boot/src/early_init.rsRoot, panic, logging, lockdep, authority, quota, watchdog, scheduling, memory and test-mode options
boot/src/boot_drivers.rsDisplay and input options
boot/src/boot_services.rsmount= and what root= does at boot
ktesting/src/config.rstests.*
slopos-ostd/src/kconsole/config.rskconsole.*
drivers/src/xe_logic/cmdline.rsxe.*
justfile (boot_cmdline, test_cmdline)What the just recipes pass

On this page