Boot-time Kernel Configuration This section describes the boot-time configuration of the &os; kernel. Default Configuration The following table contains a list of all of the devices that are present in the GENERIC kernel. This is the essential part of the operating system that is placed in your root partition during the installation process. A compressed version of the GENERIC kernel is also used on the installation floppy diskette and DOS boot image. The table describes the various parameters used by the driver to communicate with the hardware in your system. There are four parameters in the table, though not all are used by each and every device: Port The starting I/O port used by the device, shown in hexadecimal. IRQ The interrupt the device uses to alert the driver to an event, given in decimal. DRQ The DMA (direct memory access) channel the device uses to move data to and from main memory, also given in decimal. IOMem The lowest (or starting) memory address used by the device, also shown in hexadecimal. If an entry in the table has `n/a' for a value then it means that the parameter in question does not apply to that device. A value of `dyn' means that the correct value should be determined automatically by the kernel when the system boots and that you don't need to worry about it. If an entry is marked with an *, it means that support is currently not available for it but should be back as soon as someone converts the driver to work within the new (post-4.0) framework. Device Port IRQ DRQ IOMem Description fdc0 3f0 6 2 n/a Floppy disk controller ata0 170 14 n/a n/a ATA/ATAPI controller ata1 170 15 n/a n/a ATA/ATAPI controller atadisk0 n/a n/a n/a n/a ATA disk drives atapicd0 n/a n/a n/a n/a ATAPI CDROM drives atapifd0 n/a n/a n/a n/a ATAPI floppy drives atapist0 n/a n/a n/a n/a ATAPI tape drives adv0 n/a n/a n/a n/a AdvanSys Narrow SCSI controllers adw0 n/a n/a n/a n/a AdvanSys Wide SCSI controllers amd0 n/a n/a n/a n/a AMD 53C974 (Tekram DC390(T)) ncr0 n/a n/a n/a n/a NCR PCI SCSI controller bt0 330 dyn dyn dyn Buslogic SCSI controller aha0 330 dyn 5 dyn Adaptec 154x/1535 SCSI controller ahb0 dyn dyn dyn dyn Adaptec 174x SCSI controller ahc0 dyn dyn dyn dyn Adaptec 274x/284x/294x SCSI controller aic0 340 11 dyn dyn Adaptec 152x/AIC-6360/AIC-6260 SCSI controller isp0 dyn dyn dyn dyn QLogic 10X0, 1240 Ultra SCSI, 1080/1280 Ultra2 SCSI, 12160 Ultra3 SCSI, 2X00 Fibre Channel SCSI controller dpt0 dyn dyn n/a n/a DPT RAID SCSI controllers amr0 dyn dyn n/a n/a AMI MegaRAID controllers mlx0 dyn dyn n/a dyn Mylex DAC960 RAID controllers twe0 dyn dyn n/a n/a 3ware Escalade RAID controllers asr0 dyn dyn dyn dyn DPT SmartRaid V, VI, and Adaptec SCSI RAID mly0 dyn dyn dyn dyn Mylex AcceleRAID/eXtremeRAID aac dyn dyn dyn dyn Adaptec FSA family PCI SCSI RAID ncv dyn dyn n/a n/a NCR 53C500 based PC-Card SCSI nsp dyn dyn n/a dyn Workbit Ninja SCSI-3 based PC-Card SCSI stg dyn dyn n/a n/a TMC 18C30/50 based ISA/PC-Card SCSI wt0 300 5 1 dyn Wangtek and Archive QIC-02/QIC-36 psm0 60 12 n/a n/a PS/2 Mouse mcd0 300 10 n/a n/a Mitsumi CD-ROM matcd0 230 n/a n/a n/a Matsushita/Panasonic CD-ROM scd0 230 n/a n/a n/a Sony CD-ROM sio0 3f8 4 n/a n/a Serial Port 0 (COM1) sio1 2f8 3 n/a n/a Serial Port 1 (COM2) ppc0 dyn 7 n/a n/a Printer ports dc0 n/a n/a n/a n/a DEC/Intel 21143 cards and workalikes de0 n/a n/a n/a n/a DEC DC21x40 PCI based cards (including 21140 100bT cards) ed0 280 10 dyn d8000 WD & SMC 80xx; Novell NE1000 & NE2000; 3Com 3C503; HP PC Lan+ ep0 300 10 dyn dyn 3Com 3C509, 3C529, 3C556, 3C562D, 3C563D, 3C572, 3C574X, 3C579, 3C589 ex0 dyn dyn dyn n/a Intel EtherExpress Pro/10 cards fe0 300 dyn n/a n/a Allied-Telesyn AT1700, RE2000 and Fujitsu FMV-180 series cards. fxp0 dyn dyn n/a dyn Intel EtherExpress Pro/100B and Intel PRO/100+ Management Adapter ie0 300 10 dyn d0000 AT&T StarLAN 10 and EN100; 3Com 3C507; NI5210; Intel EtherExpress (8/16,16[TP]) cards le0 300 5 dyn d0000 Digital Equipment EtherWorks 2 and EtherWorks 3 lnc0 280 10 n/a dyn Lance/PCnet cards (Isolan, Novell NE2100, NE32-VL, some PCnet-PCI cards) pcn0 dyn dyn n/a dyn AMD PCnet/FAST, PCnet/FAST+, PCnet/FAST III, PCnet/PRO, PCnet/Home, and HomePNA cards rl0 dyn dyn n/a dyn RealTek 8129/8139 fast ethernet sf0 dyn dyn n/a dyn Adaptec AIC-6915 fast ethernet sis0 dyn dyn n/a dyn SiS 900/SiS 7016 fast ethernet sn0 0x300 10 n/a n/a SMC 91xx ethernet ste0 dyn dyn n/a dyn Sundance ST201 fast ethernet tl0 dyn dyn n/a dyn TI TNET100 'ThunderLAN' cards. tx0 dyn dyn n/a dyn SMC 9432 'Epic' fast ethernet wb0 dyn dyn n/a dyn Winbond W89C840F PCI based cards. vr0 dyn dyn n/a dyn VIA VT3043/VT86C100A PCI based cards. vx0 dyn dyn n/a dyn 3Com 3c59x ((Fast) Etherlink III) xe0 dyn dyn n/a dyn Xircom CreditCard adapters (16 bit) xl0 dyn dyn n/a dyn 3Com 3c900, 3c905, 3c905B, 3c905C, 3c980, 3cSOHO100 ((Fast) Etherlink XL) cs0 0x300 dyn n/a n/a Crystal Semiconductor CS89x0-based cards. If the hardware in your computer is not set to the same settings as those shown in the table and the item in conflict is not marked 'dyn', you will have to either reconfigure your hardware or use UserConfig to reconfigure the kernel to match the way your hardware is currently set (see the next section). If the settings do not match, the kernel may be unable to locate or reliably access the devices in your system. Using UserConfig to change FreeBSD kernel settings The markup for this section leaves a lot to be desired. The FreeBSD kernel on the install floppy contains drivers for every piece of hardware that could conceivably be used to install the rest of the system with. Unfortunately, PC hardware being what it is, some of these devices can be difficult to detect accurately, and for some, the process of detecting another can cause irreversible confusion. To make this process easier, FreeBSD provides UserConfig. With this tool the user can configure and disable device drivers before the kernel is loaded, avoiding potential conflicts, and eliminating the need to reconfigure hardware to suit the default driver settings. Once FreeBSD is installed, it will remember the changes made using UserConfig, so that they only need be made once. It is important to disable drivers that are not relevant to a system in order to minimize the possibility of interference, which can cause problems that are difficult to track down. UserConfig features a command line interface for users with serial consoles or a need to type commands, and a full screen visual interface, which provides point-and-shoot configuration functionality. Here is a sample UserConfig screen shot in visual mode: ---Active Drivers---------------------------10 Conflicts------Dev---IRQ--Port-- Storage : (Collapsed) Network : NE1000,NE2000,3C503,WD/SMC80xx Ethernet adapters CONF ed0 5 0x280 NE1000,NE2000,3C503,WD/SMC80xx Ethernet adapters CONF ed1 5 0x300 Communications : (Collapsed) Input : (Collapsed) Multimedia : ---Inactive Drivers-------------------------------------------Dev-------------- Storage : Network : (Collapsed) Communications : Input : Multimedia : ---Parameters-for-device-ed0--------------------------------------------------- Port address : 0x280 Memory address : 0xd8000 IRQ number : 5 Memory size : 0x2000 Flags : 0x0000 ------------------------------------------------------------------------------- IO Port address (Hexadecimal, 0x1-0x2000) [TAB] Change fields [Q] Save device parameters The screen is divided into four sections: Active Drivers. Listed here are the device drivers that are currently enabled, and their basic parameters. Inactive Drivers. These drivers are present, but are disabled. Parameter edit field. This area is used for editing driver parameters. Help area. Keystroke help is displayed here. One of the Active and Inactive lists is always in use, and the current entry in the list will be shown with a highlight bar. If there are more entries in a list than can be shown, it will scroll. The bar can be moved up and down using the cursor keys, and moved between lists with the TAB key. Drivers in the Active list may be marked CONF. This indicates that one or more of their parameters conflicts with another device, and indicates a potential for problems. The total number of conflicts is displayed at the top of the screen. As a general rule, conflicts should be avoided, either by disabling conflicting devices that are not present in the system, or by altering their configuration so that they match the installed hardware. In the list areas, drivers are grouped by their basic function. Groups can be Collapsed to simplify the display (this is the default state for all groups). If a group is collapsed, it will be shown with Collapsed in the list, as above. To Expand a Collapsed group, position the highlight bar over the group heading and press Enter. To Collapse it again, repeat the process. When a device driver in the Active list is highlighted, its full parameters are displayed in the Parameter edit area. Note that not all drivers use all possible parameters, and some hardware supported by drivers may not use all the parameters the driver supports. To disable a driver, go to the Active list, Expand the group it is in, highlight the driver and press Del. The driver will move to its group in the Inactive list. (If the group is collapsed or off the screen, you may not see the driver in its new location.) To enable a driver, go to the Inactive list, Expand the group it is in, highlight the driver and press Enter. The highlight will move to the Active list, and the driver you have just enabled will be highlighted, ready to be configured. To configure a driver, go to the Active list, Expand the group it is in, highlight the driver and press Enter. The cursor will move to the Parameter edit area, and the device's parameters may be edited. While editing parameters, the TAB and cursor keys can be used to move between fields. Most numeric values (except IRQ) are entered in hexadecimal, as indicated by the '0x' at the beginning of the field. The allowable values for a given field are show in the Key Help area when the field is active. To finish configuring a driver, press 'Q'. Note that PCI, Microchannel and EISA devices can be probed reliably, therefore they are not shown in the table above nor can their settings be changed using UserConfig.