Why is a character device created for each block device? The man pages say it is a "raw device", without further explanation.
A character device is a subset of functionality of a block device, or a block device is a superset of a character device.
Why are all possible combinations of unit + partition created under /dev even though there's no corresponding device in the machine?
NetBSD, by design, does not follow the dynamic devfs model, instead the
/dev files/nodes are static and upon
open() the kernel can start some devices and load kernel modules behind the scenes. In Linux, FreeBSD, MacOS, DragonFly this is the opposite. You need to load a kernel driver to see a node created in
How can one find which devices are really used and what hardware they represent (besides reading dmesg)?
drvctl -lt is a good starting point. It depends on the type of a device. Some of them can be probed with
$ sysctl hw.disknames
hw.disknames = wd0 cgd0