This article is also available in Polish (polski).
NetBSD on ThinkPad T400 — Daily Driver, No Sugar Coating
version 1.0, 2026-07-15
Purpose
This is not a "how to install NetBSD" guide. Installing NetBSD takes 10 minutes and is simpler than any Linux. This document describes what happens after — when the system is up but nothing works the way you want. A record of real experiences using NetBSD as the main OS on a ThinkPad T400. No sugar coating. No "this is great, highly recommend".
Hardware
| Component | Model |
|---|---|
| Model | ThinkPad T400 (last with 16:10 display and a real keyboard) |
| CPU | Intel Core 2 Duo P8600 (2.40 GHz, Penryn, 45nm) |
| RAM | 8 GB DDR3 (yes, the GM45 chipset handles 8 GB despite spec saying 4 GB) |
| GPU | Intel GM45 (GMA 4500MHD) |
| Storage | 128 GB SSD (SATA II — this is not a fast drive) |
| Display | 1280×800, matte CCFL panel |
| WiFi | Intel WiFi Link 5100 AGN (iwn) |
| System | NetBSD 11 amd64 |
WiFi — Don't Even Try at First
The Intel WiFi Link 5100 card (iwn driver) requires firmware. NetBSD doesn't bundle it in the installer. Your first WiFi attempt ends with iwn0: could not load firmware. Don't waste time on this during installation.
Solution: plug in an Ethernet cable. Install via wired connection. Only after a full install do you fetch the firmware:
# pkgin install iwn-firmware # ifconfig iwn0 up # wpa_supplicant -Biwn0 -c /etc/wpa_supplicant.conf # dhcpcd iwn0
Manual fiddling with /etc/ifconfig.iwn0, /etc/wpa_supplicant.conf, /etc/rc.conf. No NetworkManager here — you do everything yourself.
Kernel — Pain That Pays Off
The generic NetBSD kernel (GENERIC) works. But if you want everything to work well, you compile your own. This means:
- Download sources (
src.tgz) - Configure the kernel via
config(1) - Cut everything unnecessary — RAID controllers, FireWire, Bluetooth, CardBus, dozens of network drivers you'll never use
- Add only what's in the T400 —
wd(4)for SATA,wm(4)for Gigabit Ethernet,iwn(4)for WiFi,acpi(4)for power management,wsdisplay(4)for console - Build:
./build.sh -j2 kernel=MYKERNEL
On the Core 2 Duo P8600, kernel compilation takes ~15-20 minutes. Not bad. But you do it several times before nailing the perfect config. Afterwards, the kernel weighs a few MB instead of dozens and boots in a second.
Configuration — Everything by Hand
.bashrc, Paths, Aliases
NetBSD gives you /bin/sh by default, not bash. If you want bash — install it (pkgin install bash), change the shell in /etc/passwd. Then manually configure ~/.bashrc, ~/.profile, add paths to /usr/pkg/bin, /usr/pkg/sbin — because NetBSD keeps packages in /usr/pkg, not /usr like Linux.
X11 — Works Out of the Box
The intel(4) driver for GM45 works with default config. Just launch your window manager via ~/.xinitrc. dwm and bandw-wm start without touching xorg.conf.
# ~/.xinitrc exec dwm # or in rotation: # exec bandw-wm
Packages — No Miracles
pkgin is simple and works. But the pkgsrc repository on NetBSD is smaller than on Linux. Some things simply don't exist. So — you compile from source. And if there's no source — you write it yourself. Yes, I'm a masochist. Compiling everything from code is my natural state.