I run OpenBSD on a few soekris net4801s, which don’t have a whole lot of memory. To ensure that I am efficiently using the hardware, I build custom kernels that contain just the devices needed to load and run the OpenBSD kernel on the soekris. This minizes the kernel memory footprint, and allows me to eeek out a few extra pages of spare memory. To build a custom kernel with just the devices I need, I usually start by running the dmassage utility to identify the devices on my system:
$ dmassage -t
root \-mainbus0 |-bios0 | \-pcibios0 |-cpu0 \-pci0 |-auich0 | \-audio0 |-ichpcib0 | \-isa0 | |-fdc0 | | \-fd0 | |-isadma0 | |-npx0 | |-pckbc0 | | |-pckbd0 | | | \-wskbd0 | | \-pmsi0 | | \-wsmouse0 | \-pcppi0 | |-midi0 | \-spkr0 |-ne3 |-pchb0 |-pciide0 | |-atapiscsi0 | | \-scsibus0 | | \-cd0 | \-wd0 |-uhci0 | \-usb0 | \-uhub0 \-vga1 \-wsdisplay0
Once I have the devices, I use my OpenBSD kernel build procedure, but trim the devices that aren’t displayed by dmassage. This works pretty well, and allows me to maximize the hardware in my Soekris.