D. J. Bernstein
UNIX

Installing UNIX on the 2004.10.10 standard workstation

The 2004.10.10 standard workstation is a very nice x86 (Intel-compatible) computer: solid, extremely fast, and reasonably inexpensive. I have separate pages explaining how to purchase and assemble the standard workstation. This page explains how to install FreeBSD 5.3 on the standard workstation.

Some features of the standard workstation that are relevant to this installation: Athlon 64 CPU; K8V-X motherboard.

If you have assembled the 2005.05.14 standard workstation instead, skip the disable-SATA instructions.

Prerequisites

Acquire the FreeBSD 5.3 amd64 CD: 5.3-RELEASE-amd64-disc1.iso, with MD5 checksum 22894ae0c26f03537608d06815700148.

The FreeBSD 5.3 i386 CD, which you can obtain as part of the FreeBSD 5.3 boxed set, is an adequate substitute, but will run the Athlon 64 as a 32-bit system rather than a (faster) 64-bit system.

BIOS configuration

Plug the keyboard, mouse, and monitor into the back of the computer. Press the big button on the front of the machine to turn the power on.

After four seconds, a K8V-X screen appears. Quickly press Delete.

``BIOS SETUP UTILITY.'' Press Down Down Enter Up Up Up Up Enter to disable Legacy Diskette A. Also set the date and time at this point, using Greenwich Mean Time rather than local time. (The local time zone is set later; the BIOS time should always be GMT.) Press Right Enter Down Enter.

``Memory Configuration.'' Press Down Enter.

``ECC Configuration.'' Press Enter Down Enter to turn on Master ECC, then Down Enter Down Enter to turn on DRAM ECC, then Down Enter Down Down Down Down Down Enter to set L2 Cache BG Scrub to 640ns, then Down Enter Down Down Down Down Down Enter to set Data Cache BG Scrub to 640ns, then Down Down Enter Down Enter to turn on DRAM SCRUB REDIRECT, then Down Enter Down Enter to turn on ECC Chip Kill, then Esc Esc Esc.

``BIOS SETUP UTILITY.'' Press Down Down Enter.

``OnBoard AC'97 Audio'' etc. Press Down Enter Down Enter to disable the SATA BOOTROM, then Esc.

``BIOS SETUP UTILITY.'' Press Right Right Enter.

``Boot Device Priority.'' Press Enter Down Enter to set the DVD-ROM as the first boot device, then Esc.

``Boot Settings.'' Press Down Enter.

``Boot Settings Configuration.'' Press Down Enter Up Enter to disable Full Screen Logo.

Insert the FreeBSD CD (5.3-RELEASE-amd64-disc1.iso). Press F10 Enter to save the BIOS setup and boot the machine.

FreeBSD installation off the CD

``Welcome to FreeBSD!'' Wait. The FreeBSD kernel starts.

``sysinstall Main Menu.'' Press Down Enter to ``Begin a standard installation.''

``In the next menu, you will need to set up a DOS-style'' blah blah blah. Press Enter.

``WARNING: A geometry of 387621/16/63 for ad1 is incorrect. Using a more likely geometry. If'' blah blah blah. Press Enter.

``FDISK Partition Editor.'' Press C Enter Enter to create an fdisk partition for FreeBSD. Partition data: offset 63, size 390716802, end 390716864, name ad1s1, ptype 8, desc freebsd, subtype 165. Press Q to continue.

``Install Boot Manager for drive ad1?'' Press Enter to install the FreeBSD Boot Manager.

``Now you need to create BSD partitions.'' Press Enter.

``FreeBSD Disklabel Editor.'' Press c Ctrl-u 2 g Enter Enter / Enter to create a 2-gigabyte root partition; c Ctrl-u 2 g Enter Down Enter to create a 2-gigabyte swap partition; c Enter Enter / u s r Enter to create a 182-gigabyte /usr partition. Press Q to continue.

``Choose Distributions.'' Press Down Enter to choose all distributions. (This should be the default for people with huge disks.)

``Would you like to install the FreeBSD ports collection?'' Press Enter. (Again, this should be the default.)

``Choose Distributions.'' Press Up Enter to continue.

``Choose Installation Media.'' Press Enter to install from CD.

``Last Chance! Are you SURE you want continue [sic] the installation?'' Press Enter. The installer spends 360 seconds copying files from the DVD to the hard disk.

``Congratulations! You now have FreeBSD installed on your system.'' Press Enter.

``Would you like to configure any Ethernet or SLIP/PPP network devices?'' Press Right Enter to say no.

``Do you want this machine to function as a network gateway?'' Press Enter to say no.

``Do you want to configure inetd and the network services that it provides?'' Press Enter to say no.

``Would you like to enable SSH login?'' Press Enter to say no.

``Do you want to have anonymous FTP access to this machine?'' Press Enter to say no.

``Do you want to configure this machine as an NFS server?'' Press Enter to say no.

``Do you want to configure this machine as an NFS client?'' Press Enter to say no.

``Would you like to customize your system console settings?'' Press Enter to say no.

``Would you like to set this machine's time zone now?'' Press Enter to say yes.

``Is this machine's CMOS clock set to UTC?'' Press Left Enter to say yes.

``Time Zone Selector.'' Press Down Enter to select America, PageDown PageDown Down Down Down Down Down Down Down Down Down Down Down Enter to select United States, Down Down Down Down Down Down Down Down Enter to select Central Time. (Or whatever is appropriate for your location.)

``Does the abbreviation CST look reasonable?'' Press Enter to say yes.

``Does this system have a PS/2, serial, or bus mouse?'' Press Left Enter to say yes.

``Please configure your mouse.'' Press Down Enter to ``Test and run the mouse daemon.'' (I did something more complicated, since I know that my mouse moves slowly: I pressed Down Down Down Down Enter to ``Set additional flags''; then - a Space 2 Enter to set flags ``-a 2''; then Up Up Up Enter to ``Test and run the mouse daemon.'')

``Is the mouse cursor moving?'' Try moving the mouse around. Press Enter to say yes.

``Please configure your mouse.'' Press Up Enter to continue.

``The FreeBSD package collection'' blah blah blah. Press Right Enter to say no.

``Would you like to add any initial user accounts to the system?'' Press Enter to say yes.

``User and group management.'' I pressed Down Down Enter d j b Tab Tab Tab Enter to add a new ``djb'' group; Up Enter d j b Tab Tab d j b Tab MyPassword Tab Tab Tab Tab Backspace Backspace c s h Tab Enter to add a new ``djb'' user in the ``djb'' group; and Up Enter to continue. You'll want to change ``djb'' to your favorite account name. (There's a risk here: you may bump into an account name already used by FreeBSD programs. You can't use the name ``pop,'' for example. I have a registry of account names used by UNIX programs. Global account names used by programs should start with a capital G, so that you can safely use any combination of lowercase letters.)

``Now you must set the system manager's password.'' Press Enter. Type the root password, Enter, the root password, Enter.

``Visit the general configuration menu for a chance to set any last options?'' Press Enter to say no.

``sysinstall Main Menu.'' Press Right Enter to exit.

``Are you sure you wish to exit?'' Press Left Enter to say yes. Quickly remove the CD. (You can't remove the CD until about a second after you press Left Enter. You have to remove the CD promptly so that the computer boots off the hard drive rather than the CD.)

Wait a minute or so for FreeBSD to start.

FreeBSD configuration

``FreeBSD/i386 (Amnesiac) (ttyv0) login:'' Type
     root
     RootPassword
to log in as root. (Once you've finished installing software, you should log in as a non-root user, so that any mistakes you make won't hurt the operating-system installation; but for the moment you have to be root.)

Type

     vi /etc/rc.conf
to edit /etc/rc.conf. Decide on a hostname, IP address, and Internet router for your computer; my computer is called feedme, has IP address 1.2.3.50, and has Internet router 1.2.3.254. Inside vi, press O, type
     hostname="feedme"
     ifconfig_sk0="inet 1.2.3.50 netmask 255.255.255.0 mtu 1400"
     defaultrouter="1.2.3.254"
     syslogd_flags="-ss"
     sendmail_enable="NONE"
to add those lines to the top of /etc/rc.conf, and press Esc Z Z to finish editing. (The mtu 1400 isn't necessary in most installations, but it works around a bug in some DSL-firewall combinations. 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.'')

Decide on a DNS server for your computer; my computer has nameserver 1.2.3.75. Type

     echo 'nameserver 1.2.3.75' >> /etc/resolv.conf
to create a new file /etc/resolv.conf containing the line nameserver 1.2.3.75.

Type

     echo 'daily_output="/var/log/daily.log"' >> /etc/periodic.conf
     echo 'daily_status_security_output="/var/log/security.log"' >> /etc/periodic.conf
     echo 'weekly_output="/var/log/weekly.log"' >> /etc/periodic.conf
     echo 'monthly_output="/var/log/monthly.log"' >> /etc/periodic.conf
to create a new /etc/periodic.conf. (FreeBSD periodically produces summaries of the system status. This file says that the summaries should be placed into various files in /var/log; this overrides some silly default behavior.)

Type

     echo 'link acd0 cdrom' >> /etc/devfs.conf
     echo 'link acd0 dvd' >> /etc/devfs.conf
     echo 'link acd0 acd0c' >> /etc/devfs.conf
to specify /dev/cdrom, /dev/dvd, and /dev/acd0c as alternate names for the DVD drive.

Type

     echo 'agp_load="YES"' >> /boot/loader.conf
to create a new /boot/loader.conf containing the line agp_load="YES". (This accelerates video.)

Type

     vi /usr/src/sys/pci/if_sk.c
     :1590
     :s/2/1
and press Z Z to change ramsize = 0x20000 to ramsize = 0x10000. (This fixes a kernel bug dealing with the 88E8001 network card in the K8V-X. It won't be necessary in subsequent versions of FreeBSD.)

Type

     cd /usr/src/sys/amd64/conf
     cp GENERIC feedme
     vi feedme
     /ident
     :s/GENERIC/feedme
     odevice sound
     device "snd_via8233"
     options LINPROCFS
     options COMPAT_43
     options COMPAT_LINUX32
and press Esc Z Z. (This creates a /usr/src/sys/amd64/conf/feedme kernel configuration file specifying sound support and various compatibility options.) Type
     cd /usr/src
     time make kernel KERNCONF=feedme
to compile and install a new kernel. This takes about 500 seconds.

Type

     reboot
to restart the computer. This takes about 90 seconds. Log in again as root.

Network test and software installation

Plug the computer into the Internet through an Ethernet cable. Type
     telnet www.cnn.com 80
to make sure that the network is up. The normal response is
     Trying 64.236.24.4...
     Connected to cnn.com.
     Escape character is '^]'.
     Connection closed by foreign host.
with a fifteen-second pause before the last line.

Type

     cd /usr/ports/sysutils/consolehm; make install
The computer will spend a few minutes downloading, compiling, and installing the consolehm program. Type
     chm
and, after watching the output for a little while, press Ctrl-c. The output should look like
     Motherboard Temperature: 31 C
     CPU_0 Temperature: 34 C
     CPU_1 Temperature: 0 C
     VCore:   1.51562 V 
     Vit:     0 V 
     Vio:     3.21875 V 
     +5V:     4.82734 V 
     +12V:    11.4375 V 
     -12V:    -11.6875 V 
     -5V:     -6.65391 V 
     Fan 1: 2083 rpm
     Fan 2: 3214 rpm
     Fan 3: Not Available
If chm says ``Command not found,'' type
     rehash
     chm
instead; the same advice applies to any other recently installed program.

Graphics (the X window system)

Type
     cd /usr/ports/x11/kde3; make install
to download, compile, and install kde. You will be faced with occasional annoying prompts from the dark ages of software installation, asking you whether you would like to set various incomprehensible options; for each prompt, type Right Left Enter to continue.

(I actually did a much faster

     cd /usr/ports/x11-wm/fvwm2-i18n; make install
because fvwm2 is my preferred window manager. But if you're a new user then you should start with KDE. I should modify these instructions to take advantage of the prebuilt KDE packages on CD.)

Type

     Xorg -configure
to create a sample X configuration, /root/xorg.conf.new.

At this point I simplified the X configuration to support only 1024x768, since my computer is attached to a 1024x768 LCD: I typed

     vi xorg.conf.new
     /Section..Screen
to edit /root/xorg.conf.new and skip to the Screen section; I pressed d G to delete the Screen section; I pressed O and typed
     Section "Screen"
     Identifier "Screen0"
     Device "Card0"
     Monitor "Monitor0"
     DefaultDepth 24
     SubSection "Display"
     Viewport 0 0
     Depth 24
     Modes "1024x768"
     EndSubSection
     EndSection
to add those lines to the file; I pressed Esc Z Z to finish editing.

Type

     X -xf86config /root/xorg.conf.new
and look for a gray background with a small black X that moves with the mouse. To change resolution, press Ctrl-Alt-Plus or Ctrl-Alt-Minus. Press Ctrl-Alt-Backspace to quit X.

Type

     cp xorg.conf.new /etc/X11/xorg.conf
to install the X configuration.

Type

     vi /usr/X11R6/lib/X11/xdm/Xservers
     :$
     :s/$/ -nolisten tcp
     :w!
to add -nolisten tcp to the end of the :0 line in /usr/X11R6/lib/X11/xdm/Xservers. Press Z Z to finish editing.

Type

     echo 'chown $USER /dev/acd0' >> /usr/X11R6/lib/X11/xdm/GiveConsole
     echo 'chown $USER /dev/uscanner0' >> /usr/X11R6/lib/X11/xdm/GiveConsole
     echo 'chown $USER /dev/ulpt0' >> /usr/X11R6/lib/X11/xdm/GiveConsole
     echo 'chown root /dev/acd0' >> /usr/X11R6/lib/X11/xdm/TakeConsole
     echo 'chown root /dev/uscanner0' >> /usr/X11R6/lib/X11/xdm/TakeConsole
     echo 'chown root /dev/ulpt0' >> /usr/X11R6/lib/X11/xdm/TakeConsole
to add various lines to /usr/X11R6/lib/X11/xdm/GiveConsole and /usr/X11R6/lib/X11/xdm/TakeConsole. (These lines allow any user who logs in at the console to control the DVD drive and various USB devices. Security problem: control can be extended past logout. Usability problem: control isn't provided if the devices aren't plugged in and turned on when the user logs in. Further usability problem: apparently this control can't be provided for USB cameras, because /dev/ugen0.[123] are continually recreated as root. A simple user-level device handler could easily fix all of these problems.)

Type

     echo 'exec startkde' > /home/root/.xsession
to specify KDE as root's window manager.

Type

     vi /etc/ttys
     /xterm
     :s/off/on
to edit /etc/ttys, skip to the xterm line, and change off to on. Press Z Z to finish editing.

Type

     kill -1 1
to start X with an xdm login screen (``Welcome to feedme''). Press Ctrl-Alt-F1 to go back to the text-mode (non-graphical) login; type
     logout
to log out; press Alt-F9 to go back to X. Type
     root
     RootPassword
to log in as root in X.

After KDE starts, select Run Command and type

     xterm
to create an xterm window. (With fvwm2: left-click with the mouse; move the mouse down to select XTerm; left-click again to create an xterm window; move the mouse into that window.) You can type commands in the xterm window the same way as you did for the text-mode login.

Web browsing (the Firefox program)

KDE includes its own browser, Konqueror. You may want to install another browser, Firefox.

Type

     cd /usr/ports/www/firefox; make install
to download, compile, and install Firefox.

Type

     firefox
and surf the web.

DVDs (the Ogle program)

Type
     cd /usr/ports/multimedia/ogle; make install
to download, compile, and install the ogle program.

Insert a movie DVD. Type

     ogle
to play the DVD.

I've encountered problems, presumably 64-bit problems in Ogle, with several DVDs: ``Play Movie'' produces excessively fast video with no audio. But, in every case, a scene-selection of Chapter 1 fixes the problem for playing the movie (and then pressing > repeatedly to get back to the title menu fixes the problem for the title menu itself).

Note regarding multiple video outputs: You can plug a VGA screen and a DVI screen into the video card simultaneously. (Make sure that the DVI screen is on when the computer boots; if you turn it on later, the video card won't send anything to it.) DVD-playing windows (and anything else displayed through XVideo) will appear only on the DVI screen. You can run

     env OGLE_USE_XV=0 ogle
which has video appear on both screens simultaneously, but this disables XVideo features such as scaling. You can add
     Option "OverlayOnCRTC2" "True"
to /etc/X11/xorg.conf (before X starts) to put video on the VGA screen, but this disables video on the DVI screen.

Music

Type
     cd /usr/ports/audio/cdparanoia; make install
     cd /usr/ports/audio/flac; make install
     cd /usr/ports/audio/vorbis-tools; make install
     cd /usr/ports/audio/mpg123; make install
     cd /usr/ports/audio/abcde; make install
     cd /usr/ports/audio/grip; make install
to install various audio programs.

I should give an example here of using a CD.

Printer (the GhostScript program)

I have some hardware outside the computer: a Canon i860 printer. Here's how I installed the relevant software.

Type

     cd /usr/ports/print/ghostscript-gnu; make install
     cd /usr/ports/print/gimp-print; make install
to install the gs and ijsgimpprint programs.

Connect a USB cable from the printer to the computer.

At this point it's possible to print a PostScript file foo.ps:

     gs -dSAFER -dBATCH -dNOPAUSE \
     -r600x600 \
     -sProcessColorModel=DeviceGray \
     -sDEVICE=ijs -sIjsServer=/usr/local/bin/ijsgimpprint \
     -sDeviceManufacturer=CANON -sDeviceModel=bjc-7000 \
     -sIjsParams='Quality=600x600dpi,MediaType=Plain,Density=0.8,ImageType=2' \
     -sOutputFile=/dev/ulpt0 -q foo.ps
Leave out the -sProcessColorModel=DeviceGray if you want color output. I'm not sure whether the DeviceGray tells this printer to use its text-black ink tank rather than its color-black ink tank.

There are fancier printing systems that handle duplex printing, background printing, network printing, file formats other than PostScript, etc.

Camera (the gtkam and gphoto2 programs)

I have some more hardware outside the computer: a Canon PowerShot A80 camera. Here's how I installed the relevant software.

Type

     cd /usr/ports/graphics/gtkam; make install
     cd /usr/ports/graphics/gphoto2; make install
     cd /usr/ports/graphics/netpbm; make install
     cd /usr/ports/x11/xloadimage; make install
to install gtkam etc.

Connect a USB cable from the camera to the computer. There's a front USB port on the computer that's convenient for mobile devices.

At this point gtkam should work, although I actually use command-line gphoto2 scripts for fast high-volume picture management.

Scanner (the scanimage program)

I have some more hardware outside the computer: an Epson Perfection 1650 scanner. Here's how I installed the relevant software.

Type

     cd /usr/ports/graphics/xsane; make install
to install the scanimage and xsane programs.

Type

     echo usb /dev/uscanner0 >> /usr/local/etc/sane.d/epson.conf
to inform the scanning software that /dev/uscanner0 is an Epson scanner.

Connect a USB cable from the scanner to the computer.

At this point xsane should work, although I actually use command-line scanimage scripts for fast high-volume scanning.

FreeBSD's view of the hardware

This information is for experts: dmesg prints
     Copyright (c) 1992-2004 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 5.3-RELEASE #0: Fri Nov 26 01:11:01 CST 2004
         root@:/usr/obj/usr/src/sys/feedme
     Timecounter "i8254" frequency 1193182 Hz quality 0
     CPU: AMD Athlon(tm) 64 Processor 3000+ (2002.57-MHz K8-class CPU)
       Origin = "AuthenticAMD"  Id = 0xfc0  Stepping = 0
       Features=0x78bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2>
       AMD Features=0xe0500800<SYSCALL,NX,MMX+,LM,3DNow+,3DNow>
     real memory  = 536018944 (511 MB)
     avail memory = 505966592 (482 MB)
     ACPI APIC Table: <A M I  OEMAPIC >
     ioapic0: Changing APIC ID to 1
     MADT: Forcing active-low polarity and level trigger for SCI
     ioapic0 <Version 0.3> irqs 0-23 on motherboard
     acpi0: <A M I OEMRSDT> on motherboard
     acpi0: Power Button (fixed)
     Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
     acpi_timer0: <24-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
     cpu0: <ACPI CPU> on acpi0
     pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
     pci0: <ACPI PCI bus> on pcib0
     agp0: <VIA 8385 host to PCI bridge> mem 0xf8000000-0xfbffffff at device 0.0 on pci0
     pcib1: <ACPI PCI-PCI bridge> at device 1.0 on pci0
     pcib1: could not get PCI interrupt routing table for \\_SB_.PCI0.P0P1 - AE_NOT_FOUND
     pci1: <ACPI PCI bus> on pcib1
     pci1: <display, VGA> at device 0.0 (no driver attached)
     skc0: <Marvell Gigabit Ethernet> port 0xcc00-0xccff mem 0xfdd00000-0xfdd03fff irq 17 at device 10.0 on pci0
     skc0: Yukon Gigabit Ethernet 10/100/1000Base-T Adapter
     sk0: <Marvell Semiconductor, Inc. Yukon> on skc0
     sk0: Ethernet address: 00:11:2f:75:ad:0f
     miibus0: <MII bus> on sk0
     e1000phy0: <Marvell 88E1000 Gigabit PHY> on miibus0
     e1000phy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseTX-FDX, auto
     atapci0: <VIA 6420 SATA150 controller> port 0xd000-0xd0ff,0xd400-0xd40f,0xd800-0xd803,0xe000-0xe007,0xe400-0xe403,0xe800-0xe807 irq 20 at device 15.0 on pci0
     ata2: channel #0 on atapci0
     ata3: channel #1 on atapci0
     atapci1: <VIA 8237 UDMA133 controller> port 0xfc00-0xfc0f,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 at device 15.1 on pci0
     ata0: channel #0 on atapci1
     ata1: channel #1 on atapci1
     uhci0: <VIA 83C572 USB controller> port 0xdc00-0xdc1f irq 21 at device 16.0 on pci0
     uhci0: [GIANT-LOCKED]
     usb0: <VIA 83C572 USB controller> on uhci0
     usb0: USB revision 1.0
     uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
     uhub0: 2 ports with 2 removable, self powered
     uhci1: <VIA 83C572 USB controller> port 0xec00-0xec1f irq 21 at device 16.1 on pci0
     uhci1: [GIANT-LOCKED]
     usb1: <VIA 83C572 USB controller> on uhci1
     usb1: USB revision 1.0
     uhub1: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
     uhub1: 2 ports with 2 removable, self powered
     uhci2: <VIA 83C572 USB controller> port 0xc000-0xc01f irq 21 at device 16.2 on pci0
     uhci2: [GIANT-LOCKED]
     usb2: <VIA 83C572 USB controller> on uhci2
     usb2: USB revision 1.0
     uhub2: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
     uhub2: 2 ports with 2 removable, self powered
     uhci3: <VIA 83C572 USB controller> port 0xc400-0xc41f irq 21 at device 16.3 on pci0
     uhci3: [GIANT-LOCKED]
     usb3: <VIA 83C572 USB controller> on uhci3
     usb3: USB revision 1.0
     uhub3: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
     uhub3: 2 ports with 2 removable, self powered
     pci0: <serial bus, USB> at device 16.4 (no driver attached)
     isab0: <PCI-ISA bridge> at device 17.0 on pci0
     isa0: <ISA bus> on isab0
     pcm0: <VIA VT8237> port 0xc800-0xc8ff irq 22 at device 17.5 on pci0
     pcm0: [GIANT-LOCKED]
     pcm0: <Analog Devices AD1980 AC97 Codec>
     acpi_button0: <Power Button> on acpi0
     acpi_button1: <Sleep Button> on acpi0
     atkbdc0: <Keyboard controller (i8042)> port 0x64,0x60 irq 1 on acpi0
     atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
     kbd0 at atkbd0
     atkbd0: [GIANT-LOCKED]
     psm0: <PS/2 Mouse> irq 12 on atkbdc0
     psm0: [GIANT-LOCKED]
     psm0: model Generic PS/2 mouse, device ID 0
     ppc0: <Standard parallel printer port> port 0x378-0x37f irq 7 on acpi0
     ppc0: Generic chipset (NIBBLE-only) in COMPATIBLE mode
     ppbus0: <Parallel port bus> on ppc0
     plip0: <PLIP network interface> on ppbus0
     lpt0: <Printer> on ppbus0
     lpt0: Interrupt-driven port
     ppi0: <Parallel I/O> on ppbus0
     sio0: configured irq 4 not in bitmap of probed irqs 0
     sio0: port may not be enabled
     sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
     sio0: type 16550A
     orm0: <ISA Option ROM> at iomem 0xc0000-0xccfff on isa0
     sc0: <System console> at flags 0x100 on isa0
     sc0: VGA <16 virtual consoles, flags=0x300>
     sio1: configured irq 3 not in bitmap of probed irqs 0
     sio1: port may not be enabled
     vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
     Timecounter "TSC" frequency 2002574211 Hz quality 800
     Timecounters tick every 0.976 msec
     acd0: DVDROM <IDE DVD-ROM 16X/VER 7.92> at ata0-master UDMA33
     ad1: 190782MB <WDC WD2000JB-16FUA0/15.05R15> [387621/16/63] at ata0-slave UDMA100
     Mounting root from ufs:/dev/ad1s1a
pciconf -lv prints
     agp0@pci0:0:0:	class=0x060000 card=0x80a31043 chip=0x31881106 rev=0x01 hdr=0x00
         vendor   = 'VIA Technologies Inc'
         device   = 'Apollo K8HTB CPU to PCI Bridge'
         class    = bridge
         subclass = HOST-PCI
     pcib1@pci0:1:0:	class=0x060400 card=0x00000080 chip=0xb1881106 rev=0x00 hdr=0x01
         vendor   = 'VIA Technologies Inc'
         device   = 'Apollo K8HTB CPU to AGP 2.0/3.0 Bridge'
         class    = bridge
         subclass = PCI-PCI
     skc0@pci0:10:0:	class=0x020000 card=0x811a1043 chip=0x432011ab rev=0x13 hdr=0x00
         vendor   = 'Marvell Semiconductor (Was: Galileo Technology Ltd)'
         device   = '88E8001 Gigabit 32-bit Ethernet Controller with Integrated PHY'
         class    = network
         subclass = ethernet
     atapci0@pci0:15:0:	class=0x010400 card=0x80ed1043 chip=0x31491106 rev=0x80 hdr=0x00
         vendor   = 'VIA Technologies Inc'
         device   = '??? SATA RAID Controller'
         class    = mass storage
         subclass = RAID
     atapci1@pci0:15:1:	class=0x01018a card=0x80ed1043 chip=0x05711106 rev=0x06 hdr=0x00
         vendor   = 'VIA Technologies Inc'
         device   = 'VT82xxxx EIDE Controller (All VIA Chipsets)'
         class    = mass storage
         subclass = ATA
     uhci0@pci0:16:0:	class=0x0c0300 card=0x80ed1043 chip=0x30381106 rev=0x81 hdr=0x00
         vendor   = 'VIA Technologies Inc'
         device   = 'VT82xxxxx UHCI USB 1.1 Controller (All VIA Chipsets)'
         class    = serial bus
         subclass = USB
     uhci1@pci0:16:1:	class=0x0c0300 card=0x80ed1043 chip=0x30381106 rev=0x81 hdr=0x00
         vendor   = 'VIA Technologies Inc'
         device   = 'VT82xxxxx UHCI USB 1.1 Controller (All VIA Chipsets)'
         class    = serial bus
         subclass = USB
     uhci2@pci0:16:2:	class=0x0c0300 card=0x80ed1043 chip=0x30381106 rev=0x81 hdr=0x00
         vendor   = 'VIA Technologies Inc'
         device   = 'VT82xxxxx UHCI USB 1.1 Controller (All VIA Chipsets)'
         class    = serial bus
         subclass = USB
     uhci3@pci0:16:3:	class=0x0c0300 card=0x80ed1043 chip=0x30381106 rev=0x81 hdr=0x00
         vendor   = 'VIA Technologies Inc'
         device   = 'VT82xxxxx UHCI USB 1.1 Controller (All VIA Chipsets)'
         class    = serial bus
         subclass = USB
     none0@pci0:16:4:	class=0x0c0320 card=0x80ed1043 chip=0x31041106 rev=0x86 hdr=0x00
         vendor   = 'VIA Technologies Inc'
         device   = 'VT6202 USB 2.0 Enhanced Host Controller'
         class    = serial bus
         subclass = USB
     isab0@pci0:17:0:	class=0x060100 card=0x80ed1043 chip=0x32271106 rev=0x00 hdr=0x00
         vendor   = 'VIA Technologies Inc'
         device   = 'VT8237 PCI-to-ISA Bridge'
         class    = bridge
         subclass = PCI-ISA
     pcm0@pci0:17:5:	class=0x040100 card=0x80b01043 chip=0x30591106 rev=0x60 hdr=0x00
         vendor   = 'VIA Technologies Inc'
         device   = 'VT8233/33A/8235/8237 AC97 Enhanced Audio Controller'
         class    = multimedia
         subclass = audio
     hostb0@pci0:24:0:	class=0x060000 card=0x00000000 chip=0x11001022 rev=0x00 hdr=0x00
         vendor   = 'Advanced Micro Devices (AMD)'
         device   = 'Athlon 64 / Opteron HyperTransport Technology Configuration'
         class    = bridge
         subclass = HOST-PCI
     hostb1@pci0:24:1:	class=0x060000 card=0x00000000 chip=0x11011022 rev=0x00 hdr=0x00
         vendor   = 'Advanced Micro Devices (AMD)'
         device   = 'Athlon 64 / Opteron Address Map'
         class    = bridge
         subclass = HOST-PCI
     hostb2@pci0:24:2:	class=0x060000 card=0x00000000 chip=0x11021022 rev=0x00 hdr=0x00
         vendor   = 'Advanced Micro Devices (AMD)'
         device   = 'Athlon 64 / Opteron DRAM Controller'
         class    = bridge
         subclass = HOST-PCI
     hostb3@pci0:24:3:	class=0x060000 card=0x00000000 chip=0x11031022 rev=0x00 hdr=0x00
         vendor   = 'Advanced Micro Devices (AMD)'
         device   = 'Athlon 64 / Opteron Miscellaneous Control'
         class    = bridge
         subclass = HOST-PCI
     none1@pci1:0:0:	class=0x030000 card=0x51591002 chip=0x51591002 rev=0x00 hdr=0x00
         vendor   = 'ATI Technologies Inc.'
         device   = 'RV100 Radeon 7000 / Radeon VE'
         class    = display
         subclass = VGA