## 44.2. Reading Kernel Boot Output

As your Unix machine boots up, it will display a message for each device driver as it initializes. This is a good way to tell what devices your kernel was able to find. The exact output varies, but here is the output for hard drive controllers, hard drives, and network cards from a FreeBSD machine and a Debian Linux machine:

>     # FreeBSD
>     atapci0: <Intel ICH ATA66 controller> port 0xffa0-0xffaf at device 31.1 on pci0
>     ata0: at 0x1f0 irq 14 on atapci0
>     ata1: at 0x170 irq 15 on atapci0
>     ad0: 19569MB <ST320430A> [39761/16/63] at ata0- master UDMA66
>     afd0: 239MB <IOMEGA ZIP 250 ATAPI> [239/64/32] at ata0-slave using PIO3
>     acd0: CDROM <ATAPI CDROM> at ata1-master using PIO4
>     rl0: <D-Link DFE-530TX+ 10/100BaseTX> port 0xbc 00-0xbcff
>         mem 0xefdfff00-0xefdfffff irq 11 at device 4.0 on pci1

>     # Linux
>     PIIX4: IDE controller on PCI bus 00 dev 39
>     PIIX4: not 100% native mode: will probe irqs later
>         ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:DMA, hdb:pio
>         ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:pio, hdd:pio
>     hda: WDC WD307AA-32BAA0, ATA DISK drive
>     ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
>     hda: WDC WD307AA-32BAA0, 29333MB w/2048kB Cache, CHS=3739/255/63, UDMA
>     Partition check:
>      hda: hda1 hda2 hda3
>     rtl8139.c:v1.07 5/6/99 Donald Becker
>         http://cesdis.gsfc.nasa.gov/linux/drivers/rtl8139.html
>     eth0: RealTek RTL8139 Fast Ethernet at 0xd400, IRQ 11, 00:50:ba:d3:9e:14.

More specifically, in the line:

>     atapci0: <Intel ICH ATA66 controller> port 0xffa0-0xffaf at device 31.1 on pci0

`atapci` is the name of the device; `0` is the number of the device (devices are generally numbered sequentially with the first one probed getting the number 0); `<Intel ICH ATA66 controller>` is the name of the specific driver that successfully attached to this device; `port 0xffa0-0xffaf at device 31.1` is physical address information about where this particular device is located; and finally, `on` `pci0` tells us this device is attached to the first PCI bus (since `pci` is the device name of a PCI bus and 0 is the number assigned to the first PCI bus probed).

Note that in both FreeBSD and Linux, each line gives information about which driver is being used, hardware addresses, and options. Other platforms give similar information during boot. Often if you have a device that's not being recognized, you will see a line in the boot output telling you that a device was found but no driver for it could be found. If you would like more information, you may be able to boot your machine with boot -v from the bootstrap prompt -- the BSDs and Solaris support -v. This enables verbose booting, which prints out a lot more information during device probing and may help you understand why a device driver couldn't be found. Linux doesn't have any straightforward way to get verbose information like this, but you can use lspci to show every device on the PCI bus, whether there's an active driver for that device or not.

-- DJPH

Copyright © 2003 O'Reilly & Associates. All rights reserved.