D. J. Bernstein

Installing UNIX on a ThinkPad T40 laptop

2008.03.02 note: http://www.linlap.com/wiki/IBM-Lenovo+Thinkpad+T40 is a much more up-to-date installation report from Bill Giannikos.
I purchased an IBM ThinkPad T40 model 237314U. I added a Cisco mini-PCI wireless card; I chose this instead of the Intel Centrino wireless card because the Cisco card is older and has better UNIX support. I also added a bigger battery, and called 1-800-772-2227 +3 +1 to obtain a recovery CD.

I decided to install two UNIX systems on the laptop: version 4.8 of FreeBSD, and version 2003.04.01 of a RedHat-based Linux distribution whimsically named KRUD. Summary of the results:

Disk usage: Timings:

More details on the suspend/resume problems:

Other UNIX-on-T40 web pages: http://thunk.org/tytso/linux/t40.html, http://www.w-m-p.com/linux-on-t40.html. The first page explains how you can use the wireless card under Linux if you're willing to jump through several hoops.

Linux: initial installation

I turned power on, pressed Access IBM, inserted Linux CD 1, clicked on ``Startup,'' and double-clicked on ``ATAPI CD-ROM drive.''

Linux installation steps:

  1. Choose graphics or text. I pressed Enter.
  2. Check CD integrity. I clicked Skip. (If double-checking is necessary, why isn't it done automatically as part of the remaining installation steps?)
  3. Welcome. I clicked Next.
  4. Language selection: English by default. I clicked Next.
  5. Keyboard selection: U.S. English by default. I clicked Next.
  6. Mouse selection: 3-button PS/2 mouse by default. I clicked Next.
  7. Installation type (personal desktop by default): I selected Workstation.
  8. Disk partitioning, automatic by default. I selected Disk Druid.
  9. Disk setup: I deleted all existing partitions, leaving 25633MB free space (1 to 3472). I then added /boot, ext3, 100MB; /, ext3, 15000MB; and swap, 1000MB, leaving the rest open for FreeBSD. Resulting partition table:
         /dev/hda1 /boot ext3   103MB    1   14
         /dev/hda2 /     ext3 15002MB   15 2046
         /dev/hda3       swap   997MB 2047 2181
         free                  9531MB 2182 3472
  10. Boot loader configuration. I clicked Next.
  11. Network configuration, use DHCP for eth0 by default. I set the hostname manually to ``whisper.''
  12. Firewall configuration, medium security by default. I changed it to High security.
  13. Additional language support. I clicked Next.
  14. Time zone selection. I clicked Chicago and clock-set-to-UTC.
  15. Account configuration. I set up a root password and added a few more accounts.
  16. Workstation Defaults. I accepted the default package list.
  17. About to install. I clicked Next.
The installer spent about 1500 seconds copying packages from the CD to the hard disk. Then more installation steps:
  1. Make a floppy boot disk. I skipped this.
  2. X configuration. My video card was correctly detected as a 32MB ATI Radeon Mobility 7500. I clicked Next.
  3. Monitor configuration. I selected Generic Laptop Display Panel 1024x768.
  4. Customize graphics configuration. I changed 16-bit color to 24-bit color.
Next step, reboot. Kudzu told me that it had detected new hardware, an Intel 82801DB AC card (which I recognized as a sound card); I clicked on Configure.

Next, I was presented with a first-boot configuration agent. It showed the correct date and time; I clicked Forward. Next screen, it offered to play a test sound on my sound card; that went well, and was comforting. Next screen: Red Hat Update Agent? I said no. Install additional software? No.

Finally I was presented with a login screen. I logged in as root and started a terminal.

Linux: compiling a new kernel

I decided to download and compile a new Linux kernel, for two reasons:

I downloaded linux-2.4.20.tar.bz2, patch-2.4.21-rc2.bz2, and patch-2.4.21-rc2-ac2.bz2 into /usr/src. I unpacked, configured, compiled, and installed the new kernel:

     bunzip2 < linux-2.4.20.tar.bz2 | tar -xf -
     bunzip2 < patch-2.4.21-rc2.bz2 | patch -p0
     mv linux-2.4.20 linux.21rc2
     bunzip2 < patch-2.4.21-rc2-ac2.bz2 | patch -p0
     mv linux.21rc2 linux-2.4.21-rc2-ac2
     cd linux-2.4.21-rc2-ac2
     cp /boot/config-2.4.18-27.8.0 .config
     make oldconfig
     # press Enter whenever prompted
     make dep
     # 75 seconds
     make bzImage
     # 245 seconds
     make modules
     # 1295 seconds
     make modules_install
     make install

Linux: boot configuration

I disabled several services I didn't want:
     chkconfig autofs off
     chkconfig isdn off
     chkconfig lpd off
     chkconfig netfs off
     chkconfig nfslock off
     chkconfig rhnsd off
     chkconfig sendmail off
     chkconfig sshd off
     chkconfig xinetd off
The services were continuing to run at this point, but I was planning to reboot soon.

I added

     options ide-cd dma=1
to the top of /etc/modules.conf to speed up CD/DVD access.

I added

     alias agpgart off
to the top of /etc/modules.conf to disable AGP, but added
     grep Xagp /proc/cmdline >/dev/null && insmod agpgart
to the bottom of /etc/rc.d/rc.local so that I could enable AGP at boot time.

I changed /boot/grub/grub.conf to

     title FreeBSD: wireless; no suspend/resume after X; slow video
	     root (hd0,a)
	     kernel /boot/loader
     title Linux without AGP: suspend/resume; no wireless; slow video
	     root (hd0,0)
	     kernel /vmlinux-2.4.21-rc2-ac2 ro root=LABEL=/
	     initrd /initrd-2.4.21-rc2-ac2.img
     title Linux with AGP: fast video; no suspend/resume; no wireless
	     root (hd0,0)
	     kernel /vmlinux-2.4.21-rc2-ac2 ro root=LABEL=/ Xagp
	     initrd /initrd-2.4.21-rc2-ac2.img
     title Linux with old kernel
	     root (hd0,0)
	     kernel /vmlinux-2.4.18-27.8.0 ro root=LABEL=/
	     initrd /initrd-2.4.18-27.8.0.img

I rebooted, pressed Access IBM, clicked on Setup, and told the BIOS not to suspend on LCD closing. (The other way seems to interfere with resuming. I haven't done extensive experiments.) I then continued booting from the new kernel.

Linux: copying packages from the CDs

I logged in as root, inserted CD 1 again, waited for it to be mounted automatically, started a terminal, and typed
     mkdir packages
     cp /mnt/cdrom/RedHat/RPMS/* packages
to copy all the packages to the hard disk. This took 212 seconds. (Without DMA, it would have taken almost twice as long.) I then inserted CD 2, waited for it to fail to be mounted automatically, selected it in the Disks menu, and typed
     cp /mnt/cdrom/RedHat/RPMS/* packages
which took another 270 seconds. Finally I inserted CD 3, mounted it as before, and typed
     cp /mnt/cdrom/RedHat/RPMS/* packages
     cp -r /mnt/cdrom/krud-extras packages
which took another 250 seconds.

Linux notes: hardware information

The following notes apply to Linux-with-AGP mode.

hdparm /dev/hdc says, among other things, using_dma=1.

cat /var/log/XFree86.0.log says Direct rendering enabled.

lspci says

     00:00.0 Host bridge: Intel Corp.: Unknown device 3340 (rev 03)
     00:01.0 PCI bridge: Intel Corp.: Unknown device 3341 (rev 03)
     00:1d.0 USB Controller: Intel Corp. 82801DB USB (Hub #1) (rev 01)
     00:1d.1 USB Controller: Intel Corp. 82801DB USB (Hub #2) (rev 01)
     00:1d.2 USB Controller: Intel Corp. 82801DB USB (Hub #3) (rev 01)
     00:1d.7 USB Controller: Intel Corp. 82801DB USB EHCI Controller (rev 01)
     00:1e.0 PCI bridge: Intel Corp. 82801BAM/CAM PCI Bridge (rev 81)
     00:1f.0 ISA bridge: Intel Corp.: Unknown device 24cc (rev 01)
     00:1f.1 IDE interface: Intel Corp.: Unknown device 24ca (rev 01)
     00:1f.3 SMBus: Intel Corp. 82801DB SMBus (rev 01)
     00:1f.5 Multimedia audio controller: Intel Corp. 82801DB AC'97 Audio (rev 01)
     00:1f.6 Modem: Intel Corp. 82801DB AC'97 Modem (rev 01)
     01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M7 LW [Radeon Mobility 7500]
     02:00.0 CardBus bridge: Texas Instruments PCI1250 PC card Cardbus Controller (rev 01)
     02:00.1 CardBus bridge: Texas Instruments PCI1250 PC card Cardbus Controller (rev 01)
     02:02.0 Network controller: AIRONET Wireless Communications: Unknown device a504
     02:08.0 Ethernet controller: Intel Corp. 82801BD PRO/100 VE (MOB) Ethernet Controller (rev 81)

dmesg says

     Linux version 2.4.21-rc2-ac2 (root@whisper) (gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7)) #3 Thu May 22 04:04:15 CDT 2003
     BIOS-provided physical RAM map:
      BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
      BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved)
      BIOS-e820: 00000000000d2000 - 00000000000d4000 (reserved)
      BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
      BIOS-e820: 0000000000100000 - 000000001ff60000 (usable)
      BIOS-e820: 000000001ff60000 - 000000001ff79000 (ACPI data)
      BIOS-e820: 000000001ff79000 - 000000001ff7b000 (ACPI NVS)
      BIOS-e820: 000000001ff80000 - 0000000020000000 (reserved)
      BIOS-e820: 00000000ff800000 - 0000000100000000 (reserved)
     0MB HIGHMEM available.
     511MB LOWMEM available.
     On node 0 totalpages: 130912
     zone(0): 4096 pages.
     zone(1): 126816 pages.
     zone(2): 0 pages.
     IBM machine detected. Enabling interrupts during APM calls.
     Kernel command line: ro root=LABEL=/ Xagp
     Initializing CPU#0
     Detected 1298.920 MHz processor.
     Console: colour VGA+ 80x25
     Calibrating delay loop... 2595.22 BogoMIPS
     Memory: 514760k/523648k available (1289k kernel code, 8500k reserved, 473k data, 124k init, 0k highmem)
     Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)
     Inode cache hash table entries: 32768 (order: 6, 262144 bytes)
     Mount cache hash table entries: 512 (order: 0, 4096 bytes)
     Buffer cache hash table entries: 32768 (order: 5, 131072 bytes)
     Page-cache hash table entries: 131072 (order: 7, 524288 bytes)
     Intel machine check architecture supported.
     Intel machine check reporting enabled on CPU#0.
     CPU:     After generic, caps: a7e9f9bf 00000000 00000000 00000000
     CPU:             Common caps: a7e9f9bf 00000000 00000000 00000000
     CPU: Intel(R) Pentium(R) M processor 1300MHz stepping 05
     Enabling fast FPU save and restore... done.
     Enabling unmasked SIMD FPU exception support... done.
     Checking 'hlt' instruction... OK.
     POSIX conformance testing by UNIFIX
     mtrr: v1.40 (20010327) Richard Gooch (rgooch@atnf.csiro.au)
     mtrr: detected mtrr type: Intel
     PCI: PCI BIOS revision 2.10 entry at 0xfd906, last bus=8
     PCI: Using configuration type 1
     PCI: Probing PCI hardware
     PCI: Probing PCI hardware (bus 00)
     PCI: Ignoring BAR0-3 of IDE controller 00:1f.1
     Transparent bridge - Intel Corp. 82801BAM/CAM PCI Bridge
     PCI: Discovered primary peer bus 09 [IRQ]
     PCI: Using IRQ router PIIX [8086/24cc] at 00:1f.0
     PCI: Found IRQ 11 for device 00:1f.1
     PCI: Sharing IRQ 11 with 00:1d.2
     PCI: Sharing IRQ 11 with 02:02.0
     isapnp: Scanning for PnP cards...
     isapnp: No Plug & Play device found
     Linux NET4.0 for Linux 2.4
     Based upon Swansea University Computer Society NET3.039
     Initializing RT netlink socket
     apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16)
     Starting kswapd
     VFS: Disk quotas vdquot_6.5.1
     pty: 2048 Unix98 ptys configured
     Serial driver version 5.05c (2001-07-08) with MANY_PORTS MULTIPORT SHARE_IRQ SERIAL_PCI ISAPNP enabled
     PCI: Found IRQ 11 for device 00:1f.6
     PCI: Sharing IRQ 11 with 00:1f.3
     PCI: Sharing IRQ 11 with 00:1f.5
     PCI: Sharing IRQ 11 with 02:00.1
     Real Time Clock Driver v1.10e
     Floppy drive(s): fd0 is 1.44M
     FDC 0 is a National Semiconductor PC87306
     NET4: Frame Diverter 0.46
     RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
     Uniform Multi-Platform E-IDE driver Revision: 7.00beta3-.2.4
     ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
     ICH4: IDE controller at PCI slot 00:1f.1
     PCI: Enabling device 00:1f.1 (0005 -> 0007)
     PCI: Found IRQ 11 for device 00:1f.1
     PCI: Sharing IRQ 11 with 00:1d.2
     PCI: Sharing IRQ 11 with 02:02.0
     ICH4: chipset revision 1
     ICH4: not 100% native mode: will probe irqs later
         ide0: BM-DMA at 0x1860-0x1867, BIOS settings: hda:DMA, hdb:pio
         ide1: BM-DMA at 0x1868-0x186f, BIOS settings: hdc:DMA, hdd:pio
     hda: FUJITSU MHS2030AT, ATA DISK drive
     blk: queue c03129a0, I/O limit 4095Mb (mask 0xffffffff)
     hdc: HL-DT-STDVD-ROM GDR8083N, ATAPI CD/DVD-ROM drive
     ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
     ide1 at 0x170-0x177,0x376 on irq 15
     hda: attached ide-disk driver.
     hda: host protected area => 1
     hda: 52502322 sectors (26881 MB) w/2048KiB Cache, CHS=3472/240/63, UDMA(100)
     ide-floppy driver 0.99.newide
     Partition check:
      hda: hda1 hda2 hda3
     ide-floppy driver 0.99.newide
     md: md driver 0.90.0 MAX_MD_DEVS=256, MD_SB_DISKS=27
     md: Autodetecting RAID arrays.
     md: autorun ...
     md: ... autorun DONE.
     NET4: Linux TCP/IP 1.0 for NET4.0
     IP Protocols: ICMP, UDP, TCP, IGMP
     IP: routing cache hash table of 4096 buckets, 32Kbytes
     TCP: Hash tables configured (established 32768 bind 65536)
     Linux IP multicast router 0.06 plus PIM-SM
     NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
     RAMDISK: Compressed image found at block 0
     Freeing initrd memory: 128k freed
     VFS: Mounted root (ext2 filesystem).
     Journalled Block Device driver loaded
     kjournald starting.  Commit interval 5 seconds
     EXT3-fs: mounted filesystem with ordered data mode.
     Freeing unused kernel memory: 124k freed
     usb.c: registered new driver usbdevfs
     usb.c: registered new driver hub
     PCI: Found IRQ 11 for device 00:1d.7
     PCI: Setting latency timer of device 00:1d.7 to 64
     ehci-hcd 00:1d.7: Intel Corp. 82801DB USB EHCI Controller
     ehci-hcd 00:1d.7: irq 11, pci mem e0849000
     usb.c: new USB bus registered, assigned bus number 1
     ehci-hcd 00:1d.7: enabled 64bit PCI DMA
     PCI: 00:1d.7 PCI cache line size set incorrectly (0 bytes) by BIOS/FW.
     PCI: 00:1d.7 PCI cache line size corrected to 32.
     ehci-hcd 00:1d.7: USB 2.0 enabled, EHCI 1.00, driver 2003-Jan-22
     hub.c: USB hub found
     hub.c: 6 ports detected
     usb.c: registered new driver hiddev
     usb.c: registered new driver hid
     hid-core.c: v1.8.1 Andreas Gal, Vojtech Pavlik <vojtech@suse.cz>
     hid-core.c: USB HID support drivers
     mice: PS/2 mouse device common for all mice
     EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,2), internal journal
     Adding Swap: 1020592k swap-space (priority -1)
     kjournald starting.  Commit interval 5 seconds
     EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,1), internal journal
     EXT3-fs: mounted filesystem with ordered data mode.
     parport0: PC-style at 0x3bc [PCSPP,TRISTATE]
     ip_tables: (C) 2000-2002 Netfilter core team
     eepro100.c:v1.09j-t 9/29/99 Donald Becker http://www.scyld.com/network/eepro100.html
     eepro100.c: $Revision: 1.36 $ 2000/11/17 Modified by Andrey V. Savochkin <saw@saw.sw.com.sg> and others
     PCI: Found IRQ 11 for device 02:08.0
     divert: allocating divert_blk for eth0
     eth0: Intel Corp. 82801BD PRO/100 VE (MOB) Ethernet Controller, 00:09:6B:E3:E8:BB, IRQ 11.
       Board assembly 000000-000, Physical connectors present: RJ45
       Primary interface chip i82555 PHY #1.
       General self-test: passed.
       Serial sub-system self-test: passed.
       Internal registers self-test: passed.
       ROM checksum self-test: passed (0x04f4518b).
     Linux Kernel Card Services 3.1.22
       options:  [pci] [cardbus] [pm]
     PCI: Found IRQ 11 for device 02:00.0
     PCI: Sharing IRQ 11 with 00:1d.0
     PCI: Sharing IRQ 11 with 01:00.0
     PCI: Found IRQ 11 for device 02:00.1
     PCI: Sharing IRQ 11 with 00:1f.3
     PCI: Sharing IRQ 11 with 00:1f.5
     PCI: Sharing IRQ 11 with 00:1f.6
     Yenta IRQ list 06b8, PCI irq11
     Socket status: 30000006
     Yenta IRQ list 06b8, PCI irq11
     Socket status: 30000006
     cs: IO port probe 0x0c00-0x0cff: clean.
     cs: IO port probe 0x0100-0x04ff: excluding 0x3b8-0x3df 0x4d0-0x4d7
     cs: IO port probe 0x0a00-0x0aff: clean.
     Linux agpgart interface v0.99 (c) Jeff Hartmann
     agpgart: Maximum main memory to use for agp memory: 439M
     agpgart: Detected Intel(R) 855PM chipset
     agpgart: AGP aperture is 256M @ 0xd0000000
     [drm] AGP 0.99 on Unknown @ 0xd0000000 256MB
     [drm] Initialized radeon 1.7.0 20020828 on minor 0
     Intel 810 + AC97 Audio, version 0.24, 03:51:39 May 22 2003
     PCI: Found IRQ 11 for device 00:1f.5
     PCI: Sharing IRQ 11 with 00:1f.3
     PCI: Sharing IRQ 11 with 00:1f.6
     PCI: Sharing IRQ 11 with 02:00.1
     PCI: Setting latency timer of device 00:1f.5 to 64
     i810: Intel ICH4 found at IO 0x18c0 and 0x1c00, MEM 0xc0000c00 and 0xc0000800, IRQ 11
     i810: Intel ICH4 mmio at 0xe2d1dc00 and 0xe2d1f800
     i810_audio: Primary codec has ID 0
     i810_audio: Audio Controller supports 6 channels.
     i810_audio: Defaulting to base 2 channel mode.
     i810_audio: Resetting connection 0
     i810_audio: Connection 0 with codec id 0
     ac97_codec: AC97 Audio codec, id: ADS116 (Unknown)
     i810_audio: AC'97 codec 0 supports AMAP, total channels = 2
     ide-floppy driver 0.99.newide
     hdc: attached ide-cdrom driver.
     hdc: ATAPI 24X DVD-ROM drive, 256kB Cache, UDMA(33)
     Uniform CD-ROM driver Revision: 3.12

FreeBSD: initial installation

I rebooted, pressed Access IBM, inserted FreeBSD CD 1, clicked on ``Startup,'' and double-clicked on ``ATAPI CD-ROM drive.''

Before the installation menu, I had to click on something saying that I was sure I didn't need to configure the kernel. (This is the sort of thing that frightens new users unnecessarily. It should be replaced with ``Press Y in the next three seconds if you want to configure the kernel.'') I also had to say that I didn't want to ``use PC-card device as installation media.''

At the installation menu, I clicked Standard Install. In the FDISK partition editor, I pressed C Enter Enter Q to use the free space for FreeBSD. At the Install Boot Manager, I selected ``Leave the Master Boot Record untouched.'' In the FreeBSD Disklabel Editor, I created a 17000000-block (8300MB) root partition and a 2519920-block (1230MB) swap partition. In the Distributions menu, I clicked on All and said yes to installing ports. I then clicked CD/DVD and Yes. The installer spent about 300 seconds copying files from the CD to the hard disk.

I skipped Ethernet configuration, gateway configuration, inetd configuration, FTP configuration, NFS server configuration, NFS client configuration, security configuration, and console configuration. For time-zone configuration, I selected UTC CMOS and then Central Time. I skipped Linux binary compatibility, non-USB mice, X server configuration, and package browsing. I added some users and set a root password. Finally I exited the installation program to reboot.

Back at the GRUB boot menu, I selected FreeBSD. FreeBSD booted off the hard disk.

FreeBSD: compiling a new kernel

FreeBSD is installed with a ``generic'' kernel. I decided to compile my own kernel, for several reasons.

I logged in as root, copied /usr/src/sys/i386/conf/GENERIC to /usr/src/sys/i386/conf/WHISPER, and made the following changes to /usr/src/sys/i386/conf/WHISPER:

I then typed

     cd /usr/src
     make kernel KERNCONF=WHISPER
to compile and install the new kernel. This took 140 seconds.

FreeBSD: boot configuration

I set up /etc/rc.conf with
Comments on the choices here: It's important to include a hostname line for X. (Otherwise xdm doesn't set up credentials for the local computer, so any attempt to log in through xdm fails with ``Xlib: Client is not authorized to connect to Server.'') I disabled network services I didn't want: syslogd listening to the network, sshd, inetd, and sendmail. (Stupid bug: the installation scripts set sendmail_enable="NO", which leaves sendmail running; the boot scripts require sendmail_enable="NONE".)

I added

to the top of /boot/loader.conf to speed up CD/DVD access.

I ran

     XFree86 -configure
     cp /root/XF86Config.new /etc/XF86Config
and then edited /etc/XF86Config to add DefaultColorDepth 24 under Section "Screen". (For some reason, the installer doesn't offer the automatic XFree86 -configure option; it offers some primitive manual options.)

I rebooted and again selected FreeBSD.

FreeBSD: copying packages from the CDs

I logged in as root. I typed
     mkdir packages
and, for each of the four CD-ROMs,
     mount /cdrom
     cp /cdrom/packages/All/* packages
     umount /cdrom
to copy the precompiled FreeBSD packages onto the hard drive. This took about 815 seconds total.

FreeBSD notes: hardware information

dmesg says
     Copyright (c) 1992-2003 The FreeBSD Project.
     Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
     	The Regents of the University of California. All rights reserved.
     FreeBSD 4.8-RELEASE #1: Thu May 22 11:44:26 CDT 2003
     Timecounter "i8254"  frequency 1193182 Hz
     Timecounter "TSC"  frequency 1298902015 Hz
     CPU: Intel(R) Pentium(R) M processor 1300MHz (1298.90-MHz 686-class CPU)
       Origin = "GenuineIntel"  Id = 0x695  Stepping = 5
     real memory  = 536215552 (523648K bytes)
     avail memory = 518344704 (506196K bytes)
     Preloaded elf kernel "kernel" at 0xc0357000.
     Pentium Pro MTRR support enabled
     md0: Malloc disk
     Using $PIR table, 15 entries at 0xc00fdea0
     npx0: <math processor> on motherboard
     npx0: INT 16 interface
     pcib0: <Host to PCI bridge> on motherboard
     pci0: <PCI bus> on pcib0
     pcib1: <PCI to PCI bridge (vendor=8086 device=3341)> at device 1.0 on pci0
     pci1: <PCI bus> on pcib1
     pci1: <ATI model 4c57 graphics accelerator> at 0.0 irq 11
     uhci0: <Intel 82801DB (ICH4) USB controller USB-A> port 0x1800-0x181f irq 11 at device 29.0 on pci0
     usb0: <Intel 82801DB (ICH4) USB controller USB-A> on uhci0
     usb0: USB revision 1.0
     uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
     uhub0: 2 ports with 2 removable, self powered
     uhci1: <Intel 82801DB (ICH4) USB controller USB-B> port 0x1820-0x183f irq 11 at device 29.1 on pci0
     usb1: <Intel 82801DB (ICH4) USB controller USB-B> on uhci1
     usb1: USB revision 1.0
     uhub1: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
     uhub1: 2 ports with 2 removable, self powered
     uhci2: <Intel 82801DB (ICH4) USB controller USB-C> port 0x1840-0x185f irq 11 at device 29.2 on pci0
     usb2: <Intel 82801DB (ICH4) USB controller USB-C> on uhci2
     usb2: USB revision 1.0
     uhub2: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
     uhub2: 2 ports with 2 removable, self powered
     pci0: <USB controller> at 29.7 irq 11
     pcib2: <PCI to PCI bridge (vendor=8086 device=2448)> at device 30.0 on pci0
     pci2: <PCI bus> on pcib2
     pcic0: <TI PCI-1520 PCI-CardBus Bridge> mem 0x50000000-0x50000fff irq 11 at device 0.0 on pci2
     pcic0: TI12XX PCI Config Reg: [speaker enable][pwr save][CSC serial isa irq]
     pccard0: <PC Card 16-bit bus (classic)> on pcic0
     pcic1: <TI PCI-1520 PCI-CardBus Bridge> mem 0x51000000-0x51000fff irq 11 at device 0.1 on pci2
     pcic1: TI12XX PCI Config Reg: [speaker enable][pwr save][CSC serial isa irq]
     pccard1: <PC Card 16-bit bus (classic)> on pcic1
     an0: <Cisco Aironet MPI350> port 0x8000-0x80ff mem 0xc0400000-0xc07fffff,0xc0200000-0xc0203fff irq 11 at device 2.0 on pci2
     an0: got RSSI <-> dBM map
     an0: Ethernet address: 00:02:8a:78:62:8d
     fxp0: <Intel Pro/100 Ethernet> port 0x8400-0x843f mem 0xc0204000-0xc0204fff irq 11 at device 8.0 on pci2
     fxp0: Ethernet address 00:09:6b:e3:e8:bb
     inphy0: <i82562ET 10/100 media interface> on miibus0
     inphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
     isab0: <PCI to ISA bridge (vendor=8086 device=24cc)> at device 31.0 on pci0
     isa0: <ISA bus> on isab0
     atapci0: <Generic PCI ATA controller> port 0x1860-0x186f,0-0x3,0-0x7,0-0x3,0-0x7 at device 31.1 on pci0
     ata0: at 0x1f0 irq 14 on atapci0
     ata1: at 0x170 irq 15 on atapci0
     pci0: <unknown card> (vendor=0x8086, dev=0x24c3) at 31.3 irq 11
     pcm0: <Intel 82801DB (ICH4)> port 0x18c0-0x18ff,0x1c00-0x1cff mem 0xc0000800-0xc00008ff,0xc0000c00-0xc0000dff irq 11 at device 31.5 on pci0
     pcm0: <unknown ac97 codec> (id=0x41445374)
     pci0: <unknown card> (vendor=0x8086, dev=0x24c6) at 31.6 irq 11
     orm0: <Option ROMs> at iomem 0xc0000-0xcffff,0xd0000-0xd0fff,0xd1000-0xd1fff,0xdc000-0xdffff,0xe0000-0xeffff on isa0
     atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
     atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
     kbd0 at atkbd0
     psm0: <PS/2 Mouse> irq 12 on atkbdc0
     psm0: model Generic PS/2 mouse, device ID 0
     vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
     sc0: <System console> at flags 0x100 on isa0
     sc0: VGA <16 virtual consoles, flags=0x300>
     sio0: configured irq 4 not in bitmap of probed irqs 0
     sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
     sio0: type 8250
     sio1: configured irq 3 not in bitmap of probed irqs 0
     ppc0: cannot reserve I/O port range
     ad0: 25635MB <FUJITSU MHS2030AT> [55558/15/63] at ata0-master BIOSDMA
     acd0: DVD-ROM <HL-DT-STDVD-ROM GDR8083N> at ata1-master PIO4
     Mounting root from ufs:/dev/ad0s4a

Additional notes

Linux can mount the FreeBSD disk read-only, with
     /dev/hda4 /bsd ufs ufstype=44bsd,ro 0 0
in /etc/fstab.

The FreeBSD installer has a Configure XFree86 Desktop menu offering a choice between KDE, GNOME 2, Afterstep, Windowmaker, and fvwm.