Полезная информация


UNIX Unleashed, Internet Edition

- 28 -


by Jordan K. Hubbard

This chapter describes the BSD operating system technology from the University of California at Berkeley's Computer Systems Research Group (CSRG) and its use in UNIX systems today. This chapter covers the following topics:

  • A history of BSD

  • General questions

  • Advanced topics

  • Installing FreeBSD

  • Where to get BSD

  • Types of hardware supported by BSD

  • BSD applications

  • Further reading

A History of BSD

Almost 30 years ago now, the UNIX operating system was born at AT&T's Bell Laboratories through the efforts of Ken Thompson, Dennis Ritchie, and other researchers there. Releases up through the seventh edition of AT&T's UNIX were also made available to academic institutions for a small fee, leading to the formation of a small group of academic researchers and other early users who began working on improvements to the system, taking it in many new directions.

One such group of users was the University of California at Berkeley's Computer Systems Research Group (CSRG) who used UNIX as a research system and, as part of a DARPA grant, to develop and implement the ARPANET protocols that eventually became TCP/IP, the backbone of today's modern Internet.

Because their changes were also somewhat extensive, the CSRG distributed them to the other users of AT&T's UNIX as complete releases of its own, known as the Berkeley Software Distributions (BSD). During its 15-year run, the CSRG added several features to the UNIX operating system, among them better memory management, job control, a fast and robust file system (UFS) and, of course, TCP/IP networking itself.

By 1989, the CSRG had rewritten so much of AT&T UNIX that only 5 to 10 percent of the BSD distribution was in fact original AT&T code, leading to the first "unencumbered" code release known as "Net/1." It was followed shortly afterward by "Net/2."

Following the release of Net/2, several groups of people then took up the obvious challenge of rewriting that missing 5 to 10 percent from scratch, among them Bill and Lynn Jolitz, who completed the Net/2 code for the i386 PC platform and then released it as 386BSD, also submitting these changes back to UCB. Berkeley Software Design, Inc. (http://www.bsdi.com) also adopted the Net/2 code to the i386 PC platform in creating what was then called BSD/386 (one substantial rewrite later, it was renamed to BSD/OS), a purely commercial OS release.

At this point, however, AT&T's USL group (UNIX Systems Labs--those responsible for the UNIX brand) was becoming seriously concerned about the availability of non-AT&T UNIX clones and, in 1992, they brought a lawsuit against BSDI and UCB because they believed these groups violated UNIX trade secrets.

This lawsuit put a serious crimp in BSD's development for over a year. After much legal wrangling, the issue was finally resolved in February 1994, following USL's sale to Novell, a company that had no real interest in pursuing the long and unpopular lawsuit it had inherited.

Under the terms of the resolution, UCB was allowed to freely distribute its latest BSD version with some of the disputed files removed. This release was known as 4.4BSD Lite and is the release upon which all the modern BSD releases (for both legal and technical reasons) are based. Following the release of 4.4BSD Lite, the CSRG was also disbanded and reunited again only briefly to release their final BSD distribution, 4.4BSD Lite2.

The perceived lack of support for 386BSD by Bill Jolitz also led two groups to take 386BSD and maintain it, thus beginning the FreeBSD (http://www.freebsd.org) and NetBSD (http://www.netbsd.org) projects. Both groups were based on the Net/2 technology until the lawsuit and subsequent legal settlement, after which they moved to 4.4BSD Lite and, eventually, 4.4 BSD Lite2.

Currently, both the FreeBSD and NetBSD groups are over four years old and have moved far past their original starting points. 386BSD, by contrast, appears to have died rather completely and has been essentially replaced by its more active brethren.

A third BSD variant, OpenBSD (http://www.openbsd.org), was also recently spun off from the NetBSD project and maintains its own source repository and goal-set as an entirely independent project. Given the large degree of commonality OpenBSD still retains with its older NetBSD cousin, the sections on NetBSD are largely applicable to OpenBSD as well.

The chart in Figure 28.1 shows the timeline from AT&T's initial release up through the latest releases of FreeBSD and NetBSD.

Figure 28.1.
The UNIX system family tree and BSD release timeline.

Among these various operating systems, FreeBSD is also slightly unusual in that it has branched three different lines of parallel development: A "2.1-stable" branch, for legacy customers and other commercial interests that are only interested in the most critical bug fixes and enhancements; a "2.2-release" branch for the current release technology (which will also progress on its own, taking only select fixes and new features just as in the 2.1-stable branch); and, finally, the "3.0-current" branch, which represents FreeBSD's mainstream development, often experimental and not necessarily guaranteed to work at any given time.

This somewhat unique arrangement was necessitated by the fact that FreeBSD has a higher percentage of commercial users than the other free variants but still needs to work within the same volunteer developer-driven model, where developers shouldn't be constrained in their work by commercial users attempting to apply the brakes. The three-branch scheme gives legacy, current, and future customers/developers a way of getting what they need, albeit at the cost of slightly higher development overhead.

General Questions

The following sections contain the answers to some general questions that are often asked.

Where can I get general information about BSD?

Depending on which of the various *BSDs you're interested in, you can visit the relevant Web pages, which follow:

The FreeBSD Project Page


The NetBSD Project page


The OpenBSD Project page


Berkeley Software Design, Inc.


In the case of FreeBSD and NetBSD, by sending e-mail to info@FreeBSD.ORG or info@NetBSD.ORG, you can reach an automated info robot.

Each group also has a central FTP server site available as ftp.FreeBSD.ORG, ftp.NetBSD.ORG, ftp.OpenBSD.ORG, ftp.BSDI.com, and so on, from which you can download more information and (only in the case of the free variants) the latest releases.

Does the CSRG Project at UC Berkeley still exist?

No, afraid not. It was disbanded around the time that 4.4 Lite was released. The original developers got together only once more to do the final 4.4 Lite2 release some time later. The CSRG and its BSD releases are gone, the task of maintaining the OS technology now having fallen to other organizations.

So who "runs" BSD development now?

No one "runs" BSD per se, although some of the original BSD developers went on to start BSDI. The many thousands of other users and developers of BSD went on to support one of the free *BSD versions, the selection of a particular variant largely on the user's specific goals.

Which BSD is best for me?

This question is somewhat difficult to answer only because each flavor has its own strengths and weaknesses, and user requirements also vary widely. However, I can fairly say that

If you need to run on something other than the x86 (Intel PC) architecture, check out NetBSD. It is the oldest and most mature member of the BSD family, which can be run on a wide variety of non-Intel architectures.

If you're using an x86 PC (or, soon, an ALPHA machine), then check out FreeBSD. The developers have maximized the performance and general usability of BSD for the PC and have an excellent track record in creating high-performance servers for large commercial applications.

If you need commercial support or are somehow put off by the idea of "free" OS software, then BSDI's product is really your only practical choice.

Is BSD available for my hardware?

See the "Types of Hardware Supported by BSD" section of this chapter for a full description of the hardware supported by FreeBSD and NetBSD (also largely applicable to OpenBSD and BSDI).

What's the difference between BSD and Linux?

Simply put, Linux is a new from-scratch OS development effort, whereas BSD is the continuation of a project that is now almost 20 years old.

You'll find many benefits to starting such development anew, just as you'll find many benefits to using software that has been tested and improved over time. Which OS will work best for you depends largely on your taste and needs.

I'm probably safe in saying that Linux leads BSD in the area of user population and support for more oddball peripherals than the average BSD supports. I can also safely say that in the general area of TCP/IP networking, BSD is without peer. TCP/IP networking was first developed for UNIX under BSD, and this history shows in the maturity and robustness of BSD's networking code.

Finally, the largest difference between BSD and Linux is probably more ideological than anything else. Each Linux distribution--and Linux itself is technically only the kernel--bundles up its utilities differently and with different packaging and installation technologies, all development except for the kernel being largely decentralized. The BSD groups, on the other hand, are highly centralized and provide the entire system as their product, everything from the ls command to the kernel. Given that they control each and every utility, they also can use source code control systems and such to keep track of it all. This practice is unfortunately rather rare in the Linux world, a deliberate degree of anarchy in the development process being something that its proponents generally approve of, trading off centralized control for a more "grassroots" development approach.

Can I use BSD technology in commercial products?

Yes, the vast majority of BSD code is covered by the BSD Copyright, which, unlike the GNU Public License (used by Linux and other GNU software), allows distribution in both binary and source forms without undue stipulations or restrictions on the process. Other code that incorporates BSD sources, both whole or in part, is also not required to be distributed in source form, a sometimes unpleasant (and very deliberate) artifact of the GPL.

I'm an Internet Service Provider; is BSD for me?

Absolutely. Using BSD and readily available PC or workstation equipment, you can easily create almost anything an ISP would need, from Web servers to shell account machines, news servers to mail hubs, dial-in servers to IP routers--you name it. All such applications may be served with BSD technology and, with BSD's advanced networking capabilities, highly reliably as well. FreeBSD is probably the most popular free variant for ISPs right now. If you visit the Web site, you can find list of some of the many who are using it, a list that includes everyone from Walnut Creek CD-ROM to Yahoo.

Can I share BSD files and printers with my Windows 95, Windows NT, and Macintosh machines?

Yes, a package called SAMBA (available from ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/ports/net/samba.tar.gz) provides Windows 95 and Windows NT connectivity to your BSD resources. You can use a package called netatalk, now bundled with most of the BSD variants, to provide AppleTalk connectivity. You should investigate the documentation that comes with each of these packages for more information on their configuration and use.

How do I get tech support or report problems with BSD?

The various BSD groups have mailing lists and USENET newsgroups from which you can generally obtain volunteer support. You should also be sure to investigate the documentation and discussion archives that each group also maintains before asking questions because your question may already be answered by documentation that you can find in just a few minutes using your Web browser.

Each of the free *BSD groups also supports use of the send-pr command (man send-pr provides documentation on it) for entering a bug report into their central PR databases, after which it can be tracked and analyzed without getting lost as easily as an e-mail message might. The FreeBSD group also provides a Web interface (http://www.freebsd.org/send-pr.html) to their PR mechanism, allowing you to query and generate PRs using your Web browser.

Is BSD truly free?

Yes, in all cases except BSDI's product, you can freely download it from many public FTP sites, redistribute it to your friends (or customers), even redistributing it in commercial products. Various people also sell CD-ROM distributions of BSD (generally for around $40), but what you're paying for in such cases is the convenient media and fancy packaging, not BSD itself.

See the "Where to Get BSD" section for more information on obtaining such distributions.

How do I compile my own kernel?

First, you need the kernel sources, obviously, and if you haven't got a directory called /usr/src/sys on your system, then you need to load it first. You can generally find the kernel sources as part of the larger src distributions in a given BSD release.

BSD systems also use a utility called a config to generate the kernel build area; it takes the name of a kernel configuration file as an argument. The kernel configuration file specifies which device drivers and compile-time options should be enabled for your new kernel and, after config is run successfully on it, a new directory called /sys/compile/kernel is created (where kernel is the name of your kernel config file).

Two existing kernel configuration files are probably of the most interest to beginning BSD users:

  • GENERIC: This kernel config file is used to build the installation kernel, incorporating only those features felt to be the most "generic" among machines commonly found in the field. This file generally provides the best starting point for creating your own configuration file.

  • LINT: This config file contains a list of all possible options, and is provided more for general reference than as an example of a kernel you would ever actually want to use (and you wouldn't--some options are conflicting).

How do I compile my own complete system?

Because BSD has a fully integrated source tree, you can simply go to the /usr/src directory (assuming that you have the sources installed) and type make to build the entire system. Most BSDs also have specialized build targets that are used to compile the tools in whichever special order will best guarantee a successful build (because many tools depend on others being built first). One such target is called world, meaning that you can rebuild and reinstall everything in the OS by typing make world and then going out to dinner (or perhaps several, depending on the speed of your system).

Can I use BSD to implement a NAT device and/or an IP firewall?

Network Address Translation, or NAT, is useful when you have multiple machines on a local LAN but only one valid IP address to the outside word. In such cases, you can have the machine with the valid IP address "masquerade" for the others somehow and route their packets through. NAT handles this job, and the free BSDs offer something called natd, which does exactly this task. FreeBSD has also modified the ppp utility to support an -alias flag, which does the same job if you're already using ppp to talk to your ISP (it saves the extra step of running natd). For more information, consult the man pages for natd and ppp.

An IP firewall selectively blocks packets to or from the outside world to prevent unauthorized access. FreeBSD offers two utilities for this job: ipfw and ipfilter (the latter being also available in the other BSDs). Both essentially do the same thing; they are simply different implementations that suit different people's preferences.

For more information, see the man pages for ipfw and ipfilter.

Installing FreeBSD

Installation is another issue that is something of a mixed bag in the world of BSD. Given that NetBSD and OpenBSD support over 10 different architectures, the job of installing the OS on any given machine depends a great deal on the hardware in question, and the hardware obviously can vary widely over such a large range of machine types.

The fact that NetBSD and OpenBSD also aim their installation and maintenance tools more at the computer scientist than the general computer user doesn't help if the user has no prior UNIX experience, so trying to describe the installation tools in any case is probably beyond the scope of this FAQ.

In contrast, the FreeBSD project recognized this problem early on and chose not to attempt to support so many architectures, electing instead to go after the single platform that the group felt offered the most "bang for buck," the Intel x86 architecture. Having this smaller problem domain allowed them to focus more on advanced installation tools and user support than on cross-platform porting issues, the result being an installation that is widely regarded as being the easiest of all the *BSDs for a new user to deal with. For this reason, I cover the FreeBSD installation here.

Creating the FreeBSD Installation Boot Floppy

The first step in installing FreeBSD is the creation of the installation boot floppy, available from ftp://ftp.freebsd.org/pub/FreeBSD/2.2.2-RELEASE/floppies/boot.flp (at the time of this writing--a more recent release may exist by the time you read this chapter--check around at ftp.freebsd.org). It is provided as a single 1.44MB image that you must "raw copy" to a 3.5-inch floppy. If you're using MS-DOS, download fdimage.exe (available from ftp://ftp.FreeBSD.ORG/pub/FreeBSD/tools/fdimage.exe) and run it as follows:

C:\> fdimage boot.flp a:

The program formats the A: drive and then copies the boot.flp image onto it.

If you're using a UNIX system, the technique is somewhat different. In this case, you type

# dd if=boot.flp of=disk_device

where disk_device is the /dev entry for the floppy drive. On FreeBSD systems, you use /dev/fd0 for the A: drive and /dev/fd1 for the B: drive. On others, you might use something more like /dev/floppy.

FreeBSD Installation

After you create the installation disk, put it in your A: drive and reboot your computer. After a certain amount of load time, you should get a boot prompt looking something like this:

>> FreeBSD BOOT ...
Usage: [[[0:][wd](0,a)]/kernel][-abcCdhrsv]
Use 1:sd(0,a)kernel to boot sd0 if it is BIOS
drive 1
Use ? for file list or press Enter for defaults

You can simply press Enter here or wait for the system to time out and begin booting the floppy kernel. You then come to a screen asking whether you want to configure the kernel to match your hardware. It is generally a good idea to select the Visual Configuration Utility and quickly verify that FreeBSD's default settings match your hardware configuration. When and where they do not match, you should adjust FreeBSD's settings to agree with your hardware's actual configuration. (PCI and EISA devices have their settings probed automatically, but ISA/VLB devices are somewhat more tricky.)

After you proceed through the visual configuration utility, FreeBSD's kernel then completes the boot process, informing you of all the supported devices it finds in your machine. If the output scrolls by too quickly to read, don't worry; after the initial installation screen appears, you can press the Scroll Lock key and then Page Up and Page Down to move through the boot text. When you're done, simply press Scroll Lock again to get back into input mode.

At the first installation screen, select Novice Install, and you should be on your way. The installation allows you to select from a wide variety of installation media, including any of the FreeBSD FTP mirror sites or a local NFS server if your machine has an Ethernet card or a modem and PPP account into which you can dial. You don't need to download anything but the initial boot floppy; FreeBSD's installer fetches whatever else it needs over the Net automatically. Machines lacking Internet connectivity can also install from CD-ROM, tape, DOS partition, or floppies. For more information on creating or obtaining such media, see the FreeBSD installation guide in INSTALL.TXT for a given release.

Where to Get BSD

FreeBSD, being the most popular of the freely available BSD-derived operating systems, is probably the easiest to obtain. It is available from several sources--over 50 mirrors in some 25 countries.

Each FreeBSD mirror site is organized by country code; for example, the French primary mirror is ftp://ftp.fr.FreeBSD.ORG/pub/FreeBSD, and the Australian primary mirror is ftp://ftp.au.FreeBSD.ORG/pub/FreeBSD. When additional mirrors exist, they are numbered starting from two--for example, ftp://ftp2.de.freebsd.org/pub/FreeBSD for the second German mirror or ftp4.br.freebsd.org for the fourth Brazilian mirror. Also try these sites if and when the primary one is unreachable or busy. The master FreeBSD site's URL is ftp://ftp.FreeBSD.org/pub/FreeBSD and always contains the latest release. (The other mirrors sometimes require some time to catch up right after a new version is released.)

NetBSD is also available from a number of FTP mirror sites, the master site being ftp.NetBSD.org. It has also apparently begun to organize along the same basic naming scheme as FreeBSD. Currently, six international mirrors exist.

OpenBSD is available from ftp://ftp.OpenBSD.org and has several mirrors (listed there).

On CD-ROM, FreeBSD is available from both Walnut Creek CD-ROM and InfoMagic; NetBSD is available only from InfoMagic; and, currently, it is not known whether a CD-ROM distribution for OpenBSD is available at all.

Walnut Creek CD-ROM

1547 Palos Verdes Mall, Suite 260

Walnut Creek CA 94596 USA

Tel: 510-674-0783

Fax: 510-674-0821

E-mail: info@cdrom.com

WWW: http://www.cdrom.com

InfoMagic, Inc.

P.O. Box 30370

Flagstaff, AZ 86003-0370

Tel: 602-526-9565

Fax: 602-526-9573

E-mail: orders@Infomagic.com

WWW: http://www.infomagic.com

Types of Hardware Supported by BSD

Determining exactly what types of hardware are supported by BSD can sometimes be a rather difficult proposition given that several different variants of BSD are currently on the market. Each variant has a somewhat different market focus than its siblings, and the "supported hardware list" varies for each one, also changing from release to release. What follows is therefore only the best approximation at the time of this writing and subject to change without notice. The following sections also focus only on the hardware requirements for FreeBSD and NetBSD, those being the two currently most popular free variants of BSD. (OpenBSD's hardware requirements also closely mirror those of NetBSD's.) On the commercial side of things, you can find the supported hardware list for BSDI's BSD/OS product on the BSDI home page (http://www.bsdi.com).

FreeBSD Supported Hardware

The types of hardware listed in the following sections are supported under FreeBSD on the x86 (PC) architecture.

Disk Controllers

  • WD1003 (any generic MFM/RLL)
  • WD1007 (any generic IDE/ESDI)
  • IDE
  • ATA
  • Adaptec 1510 series ISA SCSI controllers (not for bootable devices)
  • Adaptec 152x series ISA SCSI controllers
  • Adaptec 1535 ISA SCSI controllers
  • Adaptec 154x series ISA SCSI controllers
  • Adaptec 174x series EISA SCSI controller in standard and enhanced mode
  • Adaptec 274X/284X/2940/3940 (Narrow/Wide/Twin) series ISA/EISA/PCI SCSI controllers
  • Adaptec AIC7850 on-board SCSI controllers
  • Adaptec AIC-6260 and AIC-6360-based boards, which includes the AHA-152x and SoundBlaster SCSI cards

NOTE: You cannot boot from the SoundBlaster cards because they have no on-board BIOS, which is necessary for mapping the boot device into the system BIOS I/O vectors. They're perfectly usable for external tapes, CD-ROMs, and so on, however. The same goes for any other AIC-6x60-based card without a boot ROM. Some systems do have a boot ROM, which is generally indicated by some sort of message when the system is first powered up or reset, and in such cases you will also be able to boot from them. Check your system/board documentation for more details.
  • Buslogic 545S & 545c
  • Buslogic 445S/445c VLB SCSI controller
  • Buslogic 742A, 747S, 747c EISA SCSI controller
  • Buslogic 946c PCI SCSI controller
  • Buslogic 956c PCI SCSI controller
  • Tekram DC390 and DC390T controllers (maybe other cards based on the AMD 53c974 as well)
  • NCR5380/NCR53400 ("ProAudio Spectrum") SCSI controller
  • DTC 3290 EISA SCSI controller in 1542 emulation mode
  • UltraStor 14F, 24F, and 34F SCSI controllers
  • Seagate ST01/02 SCSI controllers
  • Future Domain 8xx/950 series SCSI controllers
  • WD7000 SCSI controller
  • SymBios (formerly NCR) 53C810, 53C825, 53c860, and 53c875 PCI SCSI controllers
  • ASUS SC-200
  • Data Technology DTC3130 (all variants)
  • NCR cards (all)
  • Symbios cards (all)
  • Tekram DC390W, 390U and 390F
  • Tyan S1365
  • With all supported SCSI controllers, full support is provided for SCSI-I and SCSI-II peripherals, including disks, tape drives (including DAT and 8mm Exabyte), and CD-ROM drives.

Miscellaneous CD-ROM Drives

  • (cd): SCSI interface (also includes ProAudio Spectrum and SoundBlaster SCSI)
  • (mcd): Mitsumi proprietary interface (all models)
  • (matcd): Matsushita/Panasonic (Creative SoundBlaster) proprietary interface (562/563 models)
  • (scd): Sony proprietary interface (all models)
  • (wcd): ATAPI IDE interface

Ethernet Controllers

  • Allied-Telesis AT1700 and RE2000 cards
  • AMD PCnet/PCI (79c970 and 53c974 or 79c974)
  • SMC Elite 16 WD8013 Ethernet interface, and most other WD8003E, WD8003EBT, WD8003W, WD8013W, WD8003S, WD8003SBT, and WD8013EBT-based clones. SMC Elite Ultra is also supported.
  • DEC EtherWORKS III NICs (DE203, DE204, and DE205)
  • DEC EtherWORKS II NICs (DE200, DE201, DE202, and DE422)
  • DEC DC21040, DC21041, or DC21140-based NICs (SMC Etherpower 8432T, DE245, and so on)
  • Fujitsu MB86960A/MB86965A
  • HP PC Lan+ cards (model numbers: 27247B and 27252A)
  • Intel EtherExpress
  • Intel EtherExpress Pro/10
  • Intel EtherExpress Pro/100B PCI Fast Ethernet
  • Isolan AT 4141-0 (16 bit)
  • Isolink 4110 (8 bit)
  • Novell NE1000, NE2000, and NE2100 Ethernet interface
  • 3Com 3C501 cards
  • 3Com 3C503 Etherlink II
  • 3Com 3c505 Etherlink/+
  • 3Com 3C507 Etherlink 16/TP
  • 3Com 3C509, 3C579, 3C589 (PCMCIA), 3C590/592/595/900/905 PCI and EISA (Fast) Etherlink III / (Fast) Etherlink XL
  • Toshiba Ethernet cards
  • PCMCIA Ethernet cards from IBM and National Semiconductor are also supported.

Miscellaneous Devices

  • AST 4-port serial card using shared IRQ
  • ARNET 8-port serial card using shared IRQ
  • ARNET (now Digiboard) Sync 570/i high-speed serial
  • Boca BB1004 4-port serial card (Modems not supported)
  • Boca IOAT66 6-port serial card (Modems supported)
  • Boca BB1008 8-port serial card (Modems not supported)
  • Boca BB2016 16-port serial card (Modems supported)
  • Cyclades Cyclom-y Serial Board
  • STB 4-port card using shared IRQ
  • SDL Communications RISCom/8 Serial Board
  • SDL Communications RISCom/N2 and N2pci high-speed sync serial boards
  • Stallion multiport serial boards: EasyIO, EasyConnection 8/32 and 8/64, ONboard 4/16 and Brumby
  • Adlib, SoundBlaster, SoundBlaster Pro, ProAudioSpectrum, Gravis UltraSound, and Roland MPU-401 sound cards
  • Connectix QuickCam
  • Matrox Meteor Video frame grabber
  • Creative Labs Video Spigot frame grabber
  • Cortex1 frame grabber
  • HP4020i / HP 6020i, Philips CDD2000, and PLASMON WORM (CDR) drives
  • PS/2 mice
  • Standard PC joystick
  • X-10 power controllers
  • GPIB and Transputer drivers
  • Genius and Mustek hand scanners

NetBSD Supported Hardware

The types of hardware listed in the following sections are supported across the wide assortment of architectures supported by NetBSD.

Digital ALPHA architecture

  • DEC 3000/500-family systems
  • DEC 3000/300-family systems
  • Digital AlphaStation 200, 250, 255, and 400 systems
  • Digital AlphaStation 500 and 600 systems
  • Digital AXPpci systems (including UDB and Multia)
  • EB64+-family systems (including Digital EB64+ and third-party AlphaPC 64 systems)
  • EB164-family systems (including Digital EB164 and third-party AlphaPC 164 systems)
  • Digital AlphaServer 8200 and 8400 systems

Commodore Amiga

  • A4000/A1200 IDE controller
  • SCSI host adapters:
    • 33c93-based boards: A2091, A3000 built-in, and GVP Series II
    • 53c80-based boards: 12 Gauge, IVS, Wordsync, Bytesync, and Emplant
    • 53c710-based boards: A4091, Magnum, Warp Engine, Zeus, and DraCo built-in
    • FAS216-based boards: FastLane Z3, Blizzard I and II
  • Video controllers:
    • ECS, AGA and A2024 built in on various Amigas
    • Retina Z2, Retina Z3, and Altais
    • Picasso II
    • GVP Spectrum
    • Piccolo
    • Piccolo SD64
    • A2410
    • Cybervision 64
    • Domino
    • Merlin (Zorro 2 only)
    • OmNiBus
  • Network interfaces:
    • A2060 ARCnet
    • A2065 Ethernet
    • A4066 Ethernet
    • Ariadne Ethernet
    • ASDG Ethernet
    • Hydra Ethernet
    • Quicknet Ethernet
  • Most SCSI tape drives including the following:
    • Archive Viper
    • Cipher SCSI-2 ST150
  • Most SCSI CD-ROM drives
  • Scanners with the machine-independent PINT interface integrated
  • Amiga floppy drives with Amiga (880kB / 1760 KB) and IBM (720 KB / 1440 KB) block encoding
  • Amiga parallel port
  • Amiga serial port
  • Amiga mouse

Atari TT030/Falcon/Hades

  • ST and TT video modes, including TT-HIGH
  • Falcon video (Only the mode active when NetBSD is started)
  • Hades et4000/w32-pci video adapter
  • Built-in 5380 SCSI adapter
  • Most SCSI disks, CD-ROMs, tapes, and ZIP drives
  • Real-time clock
  • SCC serial ports (serial2/modem2)
  • 720KB/1.44MB floppy drive
  • Parallel printer
  • VME Riebl Ethernet
  • The IDE interface on both Falcon and Hades
  • The serial interface on the first 68901 UART (modem1)

HP 9000/300

  • CPU types:
    • 68020-based: 318, 319, 320, 330, and 350
    • 68030-based: 340, 345, 360, 370, 375, and 400
    • 68040-based: 380, 425, and 433
  • Disks:
    • HP-IB/CS80: 7912, 7914, 7933, 7936, 7945, 7957, 7958, 7959, 2200, and 2203 SCSI-I, including magneto-optical and CD-ROM
  • Tape drives:
    • Low-density HP-IB/CS80 cartridge: 7914, 7946, and 9144
    • High-density HP-IB/CS80 cartridge: 9145
    • HP-IB/CS80 [1/2] inch: 7974A, 7978A/B, 7979A, 7980A, and 7980XC
    • SCSI: HP DAT and Exabyte
  • RS232 interfaces:
    • 98644 built-in single port (dca)
    • 98642 4-port (dcm)
    • 98638 8-port (dcm)
  • Network interfaces:
    • 98643 built-in and add-on LAN cards
  • Displays:
    • 98544, 98545, and 98547 color and monochrome Topcat
    • 98548, 98549, and 98550 color and monochrome Catseye
    • 98700 and 98710 Gatorbox
    • 98720 and 98721 Renaissance
    • 98730 and 98731 DaVinci
    • A1096A monochrome Hyperion
  • Input devices:
    • General interface supporting all HIL devices: keyboard, two- and three-button mice, and ID module
  • Miscellaneous:
    • Battery-backed real-time clock
    • 98625A and 98625B built-in HP-IB interface
    • 98658A built-in SCSI interface
    • Printers and plotters on RS232 and HP-IB
    • SCSI autochanger

Intel x86

The supported hardware list for NetBSD/x86 is essentially a close subset of the FreeBSD hardware list. Some of the more esoteric devices are not supported, but it's close enough that the FreeBSD hardware section should serve as a reasonable guide to NetBSD/x86.


  • The Decstation 2100 and 3100, code-named PMAX:
    • 2000a CPU and r2010 FPU
    • pm 1024x768 framebuffer, either mono or 8-bit color
    • sii SCSI-I adapter (wide SCSI-3-like connector, but other gender)
    • dc7085 4-port serial chip (DZ-11 clone)
    • baseboard AMD LANCE 10Mbit Ethernet interface
    • Two ports are reserved for a keyboard and mouse. (An adaptor-connector can make these ports usable as RS-232 serial ports with no modem control.)
    • Two ports with 25-bin RS-232 connectors, with maximum speed of 9600 baud. One port has partial modem control; the other has none.
  • The Decstation 5000/200, code-named 3MAX:
    • 25MHz r3000 CPU
    • Three 25MHz turbochannel option slots
    • Baseboard AMD LANCE 10Mbit Ethernet interface
    • Baseboard 53c94 SCSI-2 interface
    • dc7085 4-port serial chip (DZ-11 clone)
    • Two ports are reserved for a keyboard and mouse.
    • Two ports with 25-bin RS-232 connectors, with maximum speed of 38400 baud. Both ports have modem control.
  • The Decstation 5000/120, /125, and /133, code-named 3MIN:
    • 20, 25, or 33 MHz r3000 CPU. (The last two digits of the model number are the clock speed.)
    • NCR 53c94 SCSI-2 adapter
    • Three 12.5MHz turbochannel option slots
    • Baseboard AMD LANCE 10Mbit Ethernet interface
    • Two 2-port Zilog SCC serial chips. (Two ports are reserved for a keyboard and mouse; two ports have 25-pin connectors with modem control.)
  • The Decstation 5000/20 and /25, or Personal Decstation, code-named MAXINE:
    • NCR 53c94 SCSI-2 adapter
    • One 2-port Zilog SCC serial chip
    • Baseboard AMD LANCE 10Mbit Ethernet interface
    • Desktop Bus with lk-201 compatible keyboard and mouse
    • One 2-port Zilog SCC serial chip (two ports 25-pin connectors and modem control)
    • Two 12.5MHz turbochannel option slots
  • The Decstation 5000/240, code-named 3MAXPLUS and Decsystem 5900:
    • 40MHz r3400(?) CPU and integrated FPU
    • Baseboard AMD LANCE 10Mbit Ethernet interface
    • NCR 53c94 SCSI-2 interface
    • Two 2-port Zilog SCC serial chips. (Two ports are reserved for a keyboard and mouse.)
    • Three 25MHz turbochannel option slots


  • CPUs:
    • sun4m machines: Classic, LX, SS4, SS5, SS10, SS20

NOTE: SS10s and SS20s that have a processor module without an external cache (Supercache) are not yet supported.
    • sun4c machines: SS1, SS1+, SS2, IPC, ELC, IPX, and SLC
    • sun4 machines: 4/100, 4/200, and 4/300
    • Some sun4c-compatible "clones" are rumored to work.
  • SCSI interfaces:
    • NCR53c9x-based on-board and Sbus SCSI interface (esp) on sun4m, sun4c, and 4/300 systems (on-board only on 4/300).
    • NCR5380-based VME SCSI interface (si). interrupt driven and polled DMA function on the si.
    • NCR5380-based on-board SCSI interface on 4/100 (sw). Polled DMA now works on the sw. Interrupt driven DMA does not currently work.
  • Disks:
    • Most SCSI disks and CD-ROMs
    • SMD disks connected to Xylogics 753/7053 (xd) or Xylogics 450/451 (xy) VME controllers
    • Built-in floppy drive on sun4c systems
  • Tape drives:
    • Most SCSI tape drives
  • Serial interfaces:
    • Built-in Zilog 8530 serial ports
  • Network interfaces:
    • On-board and Sbus LANCE Ethernet found on sun4m, sun4c, and 4/300 (on-board only on 4/300)
    • On-board and VME/multibus Intel Ethernet found on sun4 systems
  • Framebuffers:
    • On-board and Sbus bwtwo. bwtwo driver also supports attaching a bwtwo instance to the overlay plane of P4 cgfour frame buffers.
    • P4 cgeight framebuffers
    • VME cgtwo
    • Sbus cgthree
    • Sbus cgsix
    • P4 framebuffers found on 4/100 and 4/300 systems: bwtwo, cgfour, cgsix, and cgeight. Note: cgeight support is not well tested.
    • Sbus tcx (kernel support limited to cgthree emulation)
    • Sbus cgfourteen (kernel support limited to cgthree emulation)
  • Input devices:
    • Sun keyboard and mouse
  • Miscellaneous:
    • On-board audio on sun4c systems and some (Sparc{Classic,LX} class) sun4m systems

Sun 3 (68K)

  • Sun3/50
  • Sun3/60
  • Sun3/110
  • Sun3/75
  • Sun3/150
  • Sun3/160
  • Sun3/260
  • Sun3/280


  • CPU
    • VAX 11/750
    • VAX 11/780-11/785
    • VAX 8200/8250/8300/8350
    • VAX 8600-8650
    • MicroVAX II Q-bus-based systems (KA630)
    • MicroVAX III-MicroVAX 3600/3800/3900
    • MicroVAX 3300/3400/3500 Q-bus-based systems (KA65x)
    • MicroVAX 2000/VAXstation 2000 (KA410)
  • Networking:
    • DEUNA/DELUA Unibus Ethernet cards
    • DEQNA/DELQA Q22 bus Ethernet cards
    • Lance Ethernet in VS2000
  • Serial lines:
    • DHU11/DHV11 Unibus/Q22 bus asynchronous line card
    • DL11/DLV11 Unibus/Q22 bus asynchronous line card
    • DZ11/DZQ11/DZV11 Unibus/Q22 bus asynchronous line card
    • DZ11-compatible asynchronous serial lines on VS2000
  • Disks:
    • UDA50 Unibus MSCP controller
    • KDA50/RQDX1/2/3 Q22 bus MSCP controller
    • KDB50 BI-bus MSCP controller
    • MFM ctlr on VS2000
    • SCSI ctlr on VS2000
    • Emulex UC07, SDC-RQD11, and SQ706 MSCP emulating controllers
    • Emulex UC04, QD21, and Dilog DQ656 does not work because of buggy hardware.
    • Massbus disks (RP04/05/06/07). RM02/03/05/80 may also work but has not been tested.
    • Console RL02 on VAX 8600
  • Tapes:
    • DILOG Q22 bus tape ctlr with Exabyte (TMSCP emulating)
    • TSV05 Q22 bus tape ctlr
    • SCSI tape on VS2000
    • TK50 (TMSCP) on Q22 bus.
    • Other TMSCP controllers may also work but haven't been tested.

BSD Applications

An operating system is fairly useless if you can't actually do anything with it, and fortunately the things that BSD can do for you are limited only by your imagination. Tens of thousands of applications and general utilities are available for UNIX, with more appearing every day. Many of these applications are also free, and the FreeBSD Ports Collection (http://www.freebsd.org/ports) was devised as a way of keeping track of all of them. Currently, well over 1,000 ports are available, and at the current rate of growth, this number will probably double over the next 12 months. The FreeBSD ports collection is also being ported to some of the other *BSD variants, OpenBSD already using much of it in its current system.

The beauty of the ports collection is that it does not attempt to keep local copies of the many hundreds of applications out there; it merely "encapsulates" them, providing all the information that FreeBSD needs to fetch, unpack, potentially customize (or patch) for FreeBSD, and build and install the software. You simply type make install, and the ports collection does all the rest.

The ports collection comprises some 35 different categories of software, containing everything from Web servers to obscure (and not so obscure) programming languages. Some of the applications in the ports collection include:

  • Audio utilities: Applications for playing audio in MPEG, Amiga MOD and Sun/Apple/Microsoft format, converting between formats, composing and playing MIDI tracks, two-way conferencing, controlling CD players, and so on.

  • Benchmarks: Utilities for benchmarking and comparing system performance.

  • Communications: Dialers, terminal emulators, FAX management software, and so on.

  • Databases: A wide selection, from large, complete database systems such as PostgresSQL and exodus, to mini-SQL database libraries. Database connectivity support for Perl5, C, C++, and several different popular languages and database types is also included here.

  • Editors: Text and graphics editors, ranging from Emacs to StarOffice.

  • Graphics: OpenGL-compatible libraries, image conversion utilities, HP scanner drivers, animation utilities, fractal algorithms, and much more make this one of the most diverse categories in the ports collection.

  • Languages: Ada, Basic, C++, Forth, Java, and over 50 other computer languages, most of which you've probably never even heard of.

  • Mail and nttp:// Everything reading, sending, or delivering mail and USENET news. ISPs will find these sections especially interesting.

  • Security: Tools for auditing, testing, and implementing almost every imaginable security mechanism, from tcp_wrappers to PGP to ssh and quite a bit more.

  • I18N: Software for the Chinese, Japanese, Korean, Russian, and Vietnamese markets.

  • WWW: From the highly popular Apache Web server to the Netscape and Mosaic Web browsers, this category of W3 tools is large. Search utilities such as Squid and Harvest are here as well as numerous utilities for writing CGI scripts, interfacing to databases, and so on.

The list of commercial software applications for BSD is small but growing, with packages such as CDE (Common Desktop Environment) from Xi Graphics (http://www.xig.com) and RealAudio (http://www.realaudio.com) from Progressive Networks now providing more support for desktop users.

BSD on the x86 platform is also quite capable of running Linux a.out and ELF binaries, giving you access to a wealth of desktop applications in the Linux market, such as StarOffice (http://www.stardivision.de) and ApplixWare (http://www.applix.com/appware/appware.htm).

Actually more well-suited for the Internet server market than for desktop applications in any case, the BSD world also offers a number of commercial Internet firewall products, high-performance Web servers (such as Zeus at http://www.zeus.co.uk), database servers, and many other tools for creating fully featured, highly cost-effective Internet and intranet server systems.

Further Reading

Because covering the full range of BSD topics in this chapter would be impossible, I've listed the following publications, many of which are indispensable if you want to know more about BSD, BSD system administration, or the internals of the OS.

Users' Guides

These publications are tailored to a general user's area of interest:

  • Computer Systems Research Group, UC Berkeley. 4.4BSD User's Reference Manual. O'Reilly & Associates, Inc., 1994. ISBN: 1-56592-075-9.

  • Computer Systems Research Group, UC Berkeley. 4.4BSD User's Supplementary Documents. O'Reilly & Associates, Inc., 1994. ISBN: 1-56592-076-7.

  • UNIX in a Nutshell. O'Reilly & Associates, Inc., 1990. ISBN: 093717520X.

  • Mui, Linda. What You Need To Know When You Can't Find Your UNIX System Administrator. O'Reilly & Associates, Inc., 1995. ISBN: 1-56592-104-6.

Administrators' Guides

These publications are aimed at system administrators and others who need to maintain BSD systems in production environments:

  • Albitz, Paul and Cricket Liu. DNS and BIND. 2nd ed. O'Reilly & Associates, Inc., 1997. ISBN: 1-56592-236-0.

  • Computer Systems Research Group, UC Berkeley. 4.4BSD System Manager's Manual.

    O'Reilly & Associates, Inc., 1994. ISBN: 1-56592-080-5.

  • Costales, Brian, et al. Sendmail. 2nd ed. O'Reilly & Associates, Inc., 1997. ISBN: 1-56592-222-0.

  • Frisch, AEleen. Essential System Administration. 2nd ed. O'Reilly & Associates, Inc., 1995. ISBN: 1-56592-127-5.

  • Hunt, Craig. TCP/IP Network Administration. O'Reilly & Associates, Inc., 1992. ISBN: 0-937175-82-X.

  • Nemeth, Evi. UNIX System Administration Handbook. 2nd ed. Prentice Hall, 1995. ISBN: 0131510517.

  • Stern, Hal. Managing NFS and NIS. O'Reilly & Associates, Inc., 1991. ISBN: 1-937175-75-7.

Programmers' Guides

These publications are aimed at software developers:

  • Asente, Paul. X Window System Toolkit. Digital Press. ISBN: 1-55558-051-3.

  • Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer's Reference Manual. O'Reilly & Associates, Inc., 1994. ISBN: 1-56592-078-3.

  • Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer's Supplementary Documents. O'Reilly & Associates, Inc., 1994. ISBN: 1-56592-079-1.

  • Ellis, Margaret A. and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, 1990. ISBN: 0-201-51459-1.

  • Harbison, Samuel P. and Guy L. Steele, Jr. C: A Reference Manual. 4th ed. Prentice Hall, 1995. ISBN: 0-13-326224-3.

  • Kernighan, Brian and Dennis M. Ritchie. The C Programming Language. PTR Prentice Hall, 1988. ISBN 0-13-110362-9

  • Lehey, Greg. Port UNIX Software. O'Reilly & Associates, Inc., 1995. ISBN: 1-56592-126-7.

  • Plauger, P. J. The Standard C Library. Prentice Hall, 1992. ISBN: 0-13-131509-9.

  • Stevens, W. Richard. Advanced Programming in the UNIX Environment. Reading, MA: Addison-Wesley, 1992. ISBN: 0-201-56317-7.

  • Stevens, W. Richard. UNIX Network Programming. PTR Prentice Hall, 1990. ISBN: 0-13-949876-1.

  • Wells, Bill. "Writing Serial Drivers for UNIX." Dr. Dobb's Journal. 19(15), December 1994. pp 68-71, 97-99.

Operating System Internals

These publications are for the serious enthusiast or developer who wants to work on the operating system itself:

  • Andleigh, Prabhat K. UNIX System Architecture. Prentice Hall, Inc., 1990. ISBN: 0-13-949843-5.

  • Jolitz, William. "Porting UNIX to the 386." Dr. Dobb's Journal. January 1991-July 1992.

  • Leffler, Samuel J., Marshall Kirk McKusick, Michael J. Karels, and John Quarterman. The Design and Implementation of the 4.3BSD UNIX Operating System. Reading, MA: Addison-Wesley, 1989. ISBN: 0-201-06196-1.

  • Leffler, Samuel J., Marshall Kirk McKusick. The Design and Implementation of the 4.3BSD UNIX Operating System: Answer Book. Reading, MA: Addison-Wesley, 1991. ISBN: 0-201-54629-9.

  • McKusick, Marshall Kirk, Keith Bostic, Michael J. Karels, and John Quarterman. The Design and Implementation of the 4.4BSD Operating System. Reading, MA: Addison-Wesley, 1996. ISBN: 0-201-54979-4.

  • Stevens, W. Richard. TCP/IP Illustrated, Volume 1: The Protocols. Reading, MA: Addison-Wesley, 1996. ISBN: 0-201-63346-9.

  • Stevens, W. Richard. TCP/IP Illustrated, Volume 3: TCP for Transactions, HTTP, NNTP, and the UNIX Domain Protocols. Reading, MA: Addison-Wesley, 1996. ISBN: 0-201-63495-3.

  • Vahalia, Uresh. UNIX Internals--The New Frontiers. Prentice Hall, 1996. ISBN: 0-13-101908-2.

  • Wright, Gary R. and W. Richard Stevens. TCP/IP Illustrated, Volume 2: The Implementation. Reading, MA: Addison-Wesley, 1995. ISBN: 0-201-63354-X.

Security References

  • Cheswick, William R. and Steven M. Bellovin. Firewalls and Internal Security: Repelling the Wily Hacker. Reading, MA: Addison-Wesley, 1995. ISBN: 1-201-63357-4.

  • Garfinkel, Simson and Gene Spafford. Practical UNIX Security. 2nd ed. O'Reilly & Associates, Inc., 1996. ISBN: 1-56592-148-8.

  • Garfinkel, Simson. PGP Pretty Good Privacy. O'Reilly & Associates, Inc., 1995. ISBN: 1-56592-098-8.

Hardware References

  • Anderson, Don and Tom Shanley. Pentium Processor System Architecture. 2nd ed. Reading, MA: Addison-Wesley, 1995. ISBN: 0-201-40992-5.

  • Ferraro, Richard F. Programmer's Guide to the EGA, VGA, and Super VGA Cards. 3rd ed. Reading, MA: Addison-Wesley, 1995. ISBN: 0-201-62490-7.

  • Shanley, Tom. 80486 System Architecture. 3rd ed. Reading, MA: Addison-Wesley, 1995. ISBN: 0-201-40994-1.

  • Shanley, Tom. ISA System Architecture. 3rd ed. Reading, MA: Addison-Wesley, 1995. ISBN 0-201-40996-8.

  • Shanley, Tom. PCI System Architecture. 3rd ed. Reading, MA: Addison-Wesley, 1995. ISBN: 0-201-40993-3.

  • Van Gilluwe, Frank. The Undocumented PC. Reading, MA: Addison-Wesley, 1994. ISBN: 0-201-62277-7.

UNIX History

  • Lion, John. Lion's Commentary on UNIX, 6th Ed. With Source Code. ITP Media Group, 1996. ISBN: 1573980137.

  • Raymond, Eric S. The New Hacker's Dictionary. 3rd ed. MIT Press, 1996. ISBN: 0-262-68092-0. Also known as the Jargon File (http://www.ccil.org/jargon/jargon.html).

  • Salus, Peter H. A Quarter Century of UNIX. Reading, MA: Addison-Wesley, 1994. ISBN: 0-201-54777-5.

  • Don Libes, Sandy Ressler. Life with UNIX, Special Edition. Prentice Hall, 1989. ISBN: 0-13-536657-7.

Magazines and Journals

  • The C/C++ Users Journal. R&D Publications, Inc. ISSN: 1075-2838.

  • Sys Admin--The Journal for UNIX System Administrators. Miller Freeman, Inc. ISSN: 1061-2688.


©Copyright, Macmillan Computer Publishing. All rights reserved.