The boot, as it happens

Real serial output from the ESP32-C6 board. No emulator, no mock — this is what arrives at 115200 baud on ttyACM0. The log is what acceptance means: if these lines do not appear, the commit does not ship.

[ 0.012] Mikronix v0.0.1 (esp32-c6-amoled206) [ 0.015] console0: uart0 115200 8N1 [ 0.021] mm: heap 32K, selftest ok [ 0.031] mainbus0 at root [ 0.038] iic0 at mainbus0 sda=8 scl=7 100kHz [ 0.052] sh8601 at gpspi2: 410x502 16-bit [ 0.071] rtc0 at iic0 addr 0x51: PCF85063 [ 0.084] pmic0 at iic0 addr 0x34: AXP2101 [ 0.097] gpio0: /dev/gpio registered [ 0.110] mikrofs: mounted / (61 inodes, 97 blocks) [ 0.120] devfs on /dev [ 0.126] init: /etc/rc [ 0.140] hostname=mikronix [ 0.150] Mikronix boot complete mikronix> uname -a Mikronix mikronix 0.0.1 esp32 #1 riscv32 mikronix> cat /etc/motd Mikronix — built the NetBSD way, on a chip.

The board is a Waveshare ESP32-C6 2.06" AMOLED: SH8601 QSPI display, FT5x06 touch, AXP2101 power, PCF85063 real-time clock, ES8311 codec. Every driver is register-level — no vendor blobs, no RTOS shim under the drivers.

The same kernel on your desktop

$ make kernel MACHINE=host cc -O2 -g -Wall -Wextra -std=c99 -Isys/arch/host ... generated build/host/ioconf.c: 4 drivers ld -o build/host/mnx.elf $ ./build/host/mnx.elf mainbus0 at root iic0 at mainbus0 eeprom0 at iic0 mikrofs: mounted / mikronix>

One sys/ tree, two machines. The backends differ; the kernel does not.