config/drivers.conf: which drivers are compiled in

y or n per optional driver (virtio-gpu, stdvga, e1000, rtl8139, native r8169, AC'97, AHCI, NVMe), all y except the native
r8169, overridable with make DRV_X=n. Only drivers nothing else calls can be optional; the registry #ifdefs them and the
Makefile leaves their objects out. Built with every one off (links, none of their symbols present), with r8169 on, and
by default.

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 08:59:55 +01:00
commit 1334f446cc
6 changed files with 139 additions and 16 deletions

45
config/drivers.conf Normal file
View file

@ -0,0 +1,45 @@
# Which drivers are compiled into the kernel.
#
# y compiled in, and enabled: it is offered every device it can drive
# n not compiled in: the code is not linked and the kernel never knows it
#
# Everything is y unless it says otherwise. Change a line, or override one for
# a single build:
#
# make DRV_E1000=n DRV_NVME=n
#
# A changed value rebuilds only kernel/drivers/registry.o and the link.
#
# These are the drivers that can be left out cleanly: nothing else in the kernel
# calls them, they are only offered a device by the registry
# (kernel/drivers/registry.c). The others cannot be, because the rest of the
# kernel calls into them directly, and are not listed:
#
# vga_fb the boot framebuffer: the console and the crash screen draw on it
# xhci, usb core, usb hid / storage / hub
# the keyboard and the root disk can arrive over USB, bio.c and
# the hotplug thread call in, and so does the I2C-HID touchpad
# PS/2, IDE, the 16550 UART
# fixed-address legacy devices (kernel/dev/)
#
# Linux's own drivers, run in a process by ldlsd, are not here: they are files in
# the image (make ldls-r8169), not code in the kernel.
# --- display --------------------------------------------------------------
DRV_VGA_PCI = y # the stdvga/Bochs card (the framebuffer driver stays regardless)
DRV_VIRTIO_GPU = y # QEMU's virtio-gpu: mode setting and an explicit flush
# --- network ----------------------------------------------------------------
DRV_E1000 = y # Intel 8254x and 8257x
DRV_RTL8139 = y # Realtek 8139 (the one Realtek part QEMU emulates)
# The native RTL8168/8111 driver. Off by default because the laptop's NIC is
# driven by Linux's r8169 under LDLS (etc/schinit/ldls-r8169.job), and a driver
# here would claim the device first. Turn it on for a machine without that job.
DRV_R8169 = n
# --- storage ----------------------------------------------------------------
DRV_AHCI = y # SATA
DRV_NVME = y # NVMe SSDs
# --- audio ------------------------------------------------------------------
DRV_AC97 = y # Intel AC'97 (QEMU's and old boards')