Introduction to FreeBSD.

An Absolute Beginners Guide to FreeBSD

This project was started on Feb 13, 1997. If you have anything to comment on, please email us at fbsd-book@vmunix.com

Contents

Part 1.  Introduction
Part 2.  Installation
Part 3.  Running FreeBSD
Part 4.  Customizing your FreeBSD System
Part 5.  Setting up your Network
Part 6.  Setting up the X Window System
Part 7.   System Administration
Part 8.   Practical FreeBSD Applications

:
Introduction

1.  Discovering FreeBSD
2.  Where the Information is Stored online
3.  General Guidelines for FreeBSD
4.  FreeBSD Mailing Lists
5.  Subscribing To A Mailing List

1.   Discovering FreeBSD

This book is designed for the new user and new system administrator of FreeBSD. This was written to help those who have no real UNIX background easily get started using FreeBSD. No matter what application, whether as a desktop system, or installed as a Internet server, FreeBSD has the power and the flexibility required to meet even the most demanding situations. FreeBSD, however, requires more of an administrative approach than most over-the-counter operating systems. Yet, because of this approach, FreeBSD requires less administration per functionality than Windows 95 and certainly several other operating systems. Given the correct approach, managing a FreeBSD system is simple and can be quite fun.

Even if you are just using FreeBSD as a desktop machine, it has the full power of a server and you are the new system administrator. Its hard to imagine yourself as a ``system administrator'' on a single Win95 machine, but technically it is a system, and you do administrate it. The reason it seems odd to call yourself a system administrator is because only one person can use a Win95 computer at a time.

FreeBSD is a multi-user system: Several people can access the same computer at the same time. This includes more than the ``File Serving'' capabilities of WinNT and Novell Servers. The users connected to the FreeBSD machine have access all their normal functionality as though they were actually at the server console. Users can even interact if they choose. FreeBSD also gives you much more control over the system than DOS or Windows 95. You have the ability to modify system parameters ``live'', not just edit the configuration file and have the changes take affect after you have rebooted. For example, you can change the IP address of your machine and then test immediately to see if it is working. You don't have to wait 5 minutes for your computer to reboot to see if a change has worked.

More and more as the Internet becomes a part of our lives and shapes the way we do business, companies and individuals are looking for economical ways of enhancing their abilities. Companies, in particular, are now in the position of providing Internet and intranet services to attract customers and improve business processes. At the same time, although hardware costs are coming down, software and support costs are steadily increasing. For the individual, the Internet is an entrepreneur's paradise. However, as they start up, they have to find inexpensive ways to provide the same range of services as large businesses on a budget that barely permits purchasing the hardware.

In a sense, UNIX is the touchstone of the Internet. There is now a strong emphasis on the standard protocols of the Internet---TCP/IP, DNS, HTTP, FTP, SMTP, POP3, IMAP, and the rest of the alphabet soup--- and most of those standards were developed or refined on the UNIX operating system. FreeBSD addresses both issues: It's based on one of the standards of the UNIX world, BSD 4.4, optimized for common, inexpensive Intel-based hardware, and (as the name implies) it's free.

Internet protocols are some of the strongest and most reliable features of FreeBSD. FreeBSD has many powerful WWW, DNS, and E-mail servers available. It also has a wide variety of TCP/IP related software available.

FreeBSD has may practical applications:

2.   Where the Information is Stored online

Information about FreeBSD is available from several sources. Most of the documentation is on-line, in a wide variety of formats.

Internet Web Sites:

There are a lot of good web sites out there on FreeBSD. The simplest method to find information is to start with the Official FreeBSD web sites.

The above are part of the ongoing FreeBSD Documentation Project, which includes tutorials written by FreeBSD experts, and references to useful books.

There are also a lot of other web pages out there that have to do with FreeBSD and UNIX in General.

The people at freebsd.org also provide a wide variety of mailing lists to talk about FreeBSD, report bugs, ask questions, keep you up to date on developments, and so on-- all the support you could want, and you don't have to pay anybody $195/hour. You can find out more about these at http://www.freebsd.org/support.html

CD-ROM:

Most of the Documentation is also available on the Installation CD-ROM, and can be accessed through DOS or Windows. It might be a good idea to look at the online documentation, and if you anticipate problems, print off the appropriate sections before trying to install FreeBSD.

Documentation, in limited forms, is available during installation.

Your system:

On your system you can find the most documentation. Including:

3.   General Guidelines for FreeBSD

Unix is case-sensitive.

FreeBSD treats uppercase and lowercase versions of a word as different words. Operating systems such as DOS and Windows 95 don't care if you use capital letters in filenames, or passwords. To those operating systems, FileName, filename and FiLeNAmE are all the same. In FreeBSD this is NOT true.

Keep the Caps Lock key off, almost everything is in lowercase.

E-mail me if you have any suggestions for this section. I am looking for things that you would have liked to have known about FreeBSD when you first started.

4.   FreeBSD Mailing Lists

A mailing list is an easy way for a group of people to keep in contact about a specific topic. Once you have subscribed to a particular mailing list, you will receive a copy of all the e-mail sent to that list. You will see people's questions as well as the answers. FreeBSD has several mailing lists designed to help people with their questions, to report problems, and to announce new releases.

Sending a question to the appropriate mailing list is an easy way to get a fast, correct answer. Responses come back usually in a couple of hours, but may take just minutes if someone knows the answer and responds immediately. You will not only get answers---you'll get solutions to your problems, because the participants on the list have often had the same experience, and a few of them were probably involved in writing the software in question.

Before you post a question, however, you will want to search the mailing list archives and read the on-line documentation mentioned previously. If you can't find what you are looking for in the documentation, pick the right list, and send the e-mail.

There are several lists available to open subscription. You will probably want to subscribe only to the lists you are actually going to use, and then just send letters to the other lists as the need arises. Otherwise, your message traffic will be unbearable.

You should avoid ``cross-posting''; that is, posting the same question to more than one list. Many of the people who receive your e-mail are members of several lists, and if you cross-post, they'll see your message several times. Pick the list you think the message should go to, and if it's wrong, you will be told, and your message will probably get forwarded for you.

Most likely you will start out subscribing to the freebsd-questions List. All questions pertaining to how to use and run FreeBSD belong on this list.

When writing to the mailing list about a problem, try to include as much information as possible about the system you are using, such as:

Note:

Also mention that you have searched the online documentation, and specify which documentation, because they may be able to direct you to something that you haven't looked at yet.

5.   Subscribing To A Mailing List

Here is a list of available FreeBSD mailing lists. This is only a partial list, intended to get you started. This list changes as new lists are created to keep track of the development of FreeBSD.

When subscribing to a mailing list, there are two addresses to be aware of. The subscription address and the distribution address. The subscription address is the address where you send an e-mail to become part of the list. The subscription address for all FreeBSD lists is the same: majordomo@freebsd.org. ``majordomo@freebsd.org'' is an automated mailing list manager. He only understands requests that are specially formatted, such as subscribe, unsubscribe, and help.

Each FreeBSD mailing list has it's own distribution address. This is the address that you send e-mail to if you want people to read it. Each member of the list receives a copy of the e-mail that you send to it's distribution address. Do not send subscribe, or unsubscribe commands to distribution addresses.

To subscribe to a mailing list, send an e-mail message to majordomo@freebsd.org

In the body of the message type:

subscribe freebsd-questions

subscribe freebsd-announce

END

The above example will add your name to the freebsd-questions and the freebsd-announce mailing lists. Majordomo will send you a confirmation notice that you have been added to the mailing list, and shortly thereafter you will begin receiving e-mail from the list.

The end command tells majordomo that you are done issuing requests. If you don't use end in your e-mail to majordomo, it will try to parse anything else in the document, such as your name and e-mail address, as a request for it to do something.

As soon as majordomo receives your request to join a mailing list, he will send you a confirmation e-mail. This e-mail will contain a special autorization code that you must re-send to majordomo. If you do not send this authorization code back, you will not be added to the mailing list.

This protects you from being subscribed to a FreeBSD mailing list with out you wanting to. It also prevents people with bogus accounts from subscribing.

:
Installation

6.  Choosing a RELEASE to install
7.  Getting A FreeBSD boot floppy from the Net.
8.  Preparing Distribution Sets.
9.  Using the Boot Floppy and Kernel Configuration
10.  Installing FreeBSD with the boot floppy
11.  Upgrading FreeBSD Versions
12.  Post install Configuration
13.  Adding Packages
14.  Installing the Ports Collection.

6.   Choosing a RELEASE to install

FreeBSD is a work in progress, continually developing and improving. A release is a stable snapshot of the development process. It is given a version number followed by -RELEASE. There are several releases to choose from, each providing unique opportunities for stability and innovation.

Currently there are three different lines of development.

The three branches can be found in either ``binary''(pre-compiled, ready to run) distributions, or as ``source'' distributions.

Note:

Source Releases require that you already have FreeBSD installed and running. The Source Releases are provided for upgrade, testing, and experimentation purposes. If this is your first install, you will want to use the -RELEASE distribution.

7.   Getting A FreeBSD boot floppy from the Net.

When a computer starts up it requires a certain amount of instructions to be able to start the operating system. This is called ``booting'' or ``boot-strapping'' a computer. The ``boot'' code must be stored on a device that the computer considers bootable. In other words, there are set boot devices that the computer checks for the code required to start the operating system.

The two main boot devices are the floppy drive and the hard disk. CD-ROM Drives and certain network cards can also be configured as boot devices on some systems. Once the boot code finishes initializing the computer, it loads the kernel. The kernel is the single most important part of FreeBSD. The kernel establishes the link between the hardware and the software, it contains all the device drivers, executes any programs, and controls all system resources.

FreeBSD has a floppy disk that contains this ``boot'' information, the kernel, and setup/install utility. This is often referred to as a ``boot floppy''. The boot floppy is stored as a disk image, a sector by sector copy of the contents of the floppy disk. The contents of each and every sector of the disk is copied into the contents of a 1.44 Meg file, thus preserving the native FreeBSD formatting and file structure. A conventional file by file copy of the disk would not preserve the FreeBSD file system across platforms. When this disk image is transfered to a floppy disk, using a low-level disk tool called rawrite.exe , or fdimage.exe, it transforms the floppy disk from a DOS-formatted disk, into a FreeBSD formatted, bootable installation floppy disk.

There are two ways to go about this, depending on which operating system you have most readily available. DOS or UNIX.

Obtaining the File:

The easiest method of obtaining the file requires a Web-Browser such as Netscape, or a FTP client such as NCFTP or WS-FTP and a formatted floppy disk. A 1.44M disk drive is required because the disk images are 1.44Meg in size. Start your web browser or FTP client and open to: ftp://ftp.freebsd.org/pub/FreeBSD/

Remember!:

* (Case is important!) FreeBSD recognizes the difference between Uppercase letters and Lowercase letters and considers them as different from each other. Windows and DOS systems don't.

Boot Floppies are -RELEASE specific. You need to know which version of FreeBSD you want to install and change to the matching directory. All of the versions available for download will be listed as a directory. If you have trouble selecting a -RELEASE, see the section on Selecting a -RELEASE to install. Once you have changed to appropriate -RELEASE directory, go to the floppies directory. Click on the boot.flp file and down load it to your computer.

Warning:

If any text appears on your screen, then it is not being downloaded to the harddisk, but to your screen. You will need to right-click on boot.flp and select save link as in order to save it to your computer. This happens mostly on Netscape.

Caution:

Do NOT Save it to your Floppy Drive at this point! Save it to a temporary directory on your hard disk or filesystem. You will transfer it to the floppy later using a special utitlity.

Caution:

If you are using FTP to download the floppy disk image, be sure to use ``binary mode'' to do the transfer. If you select ``ASCII'' mode, the file will be too big to fit on the floppy, and it will be corrupted.

The UNIX METHOD:

If you are creating the disk from a FreeBSD, or other UNIX workstation, you need access to the dd program and `` write permissions '' to the floppy disk.

Note:

This may require SuperUser access.

Insert floppy into the SERVER now. If you are using a telnet connection, Do not put the floppy into your local machine, it still belongs in the server.

At the prompt, type:

dd if=boot.flp of=/dev/fd0

The floppy drive light should come on and after a few minutes you will get a message telling you how many bytes of information were transferred and how fast. If you have any trouble or questions about dd read the dd man page.

The DOS METHOD:

To use the DOS method, you have to download the program rawrite from the FreeBSD FTP site. You can use Netscape or any other ftp client. Open to ftp://ftp.freebsd.org/pub/FreeBSD/tools/ Then download the rawrite.exe file. To use the program, from the DOS prompt, type rawrite When it prompts for the source file type: boot.flp and press ENTER. When it asks for the destination drive type a: and press ENTER. Now it should go though a bunch of "Writing Sector XX" stuff and the floppy disk light should come on for a while.

Win95 Users:

If you are using Win95, you should download and use fdimage.exe instead. It can be found in the same directory as rawrite.exe. However if you use rawrite under Win95, you must Maximize the DOS window by pressing ALT + ENTER

P.S. Be sure Win95 doesn't rename it to something like rawrite(3).exe instead, when you make several attempts to download it.

When the programs have finished writing to the floppy disk, you will have a FreeBSD Install/Boot floppy disk. Use it to install FreeBSD on all of your Machines.

8.   Preparing Distribution Sets.

This section explains how to prepare a custom media to install FreeBSD from. These medias include:

Note:

If you are not using one of these medias, please SKIP this section. (These are not the easiest or the recommended methods of installation. But they work.)

Each installation media looks for its files in a different directory. Inorder for the install program to find the installation files, you have to copy them into the correct directory.

For example, you want to install the Minimal Distribution Set from floppies. The Minimal Distribution Set requires the /bin distribution, ie. the /bin directory, be copied onto the floppies. The /bin directory can be found on the CD-ROM or from the FreeBSD FTP site, in the directory /pub/FreeBSD/2.2.6-RELEASE/. The bin directory and all its contents need to be copied onto MS-DOS formatted floppy disks. You will be able to fit about 6 files per disk. The files are named bin.aa, bin.ab, etc.

Important:

You will need to copy the file bin.inf onto the first disk.

When you get them on to the floppy disk you should be able to put it in a DOS machine and type dir

When all the files have been copied onto the floppy disks, you will have a set of FreeBSD installation floppy disks. Use them when prompted for during the installation.

To install from a DOS partition, you must first copy all of the required directories to C:\FreeBSD\.

To install from an Custom FTP site, copy all of the files into a publically accessable directory followed by FreeBSD/2.2.6-RELEASE/.

An NFS install utilizes a Network Shared Filesystem. This the method of filesystem shareing used by UNIX over a network. A directory will need to be exported on the distribution site. Copy all the required directories onto FreeBSD/2.2.6-RELEASE/ on that exported filesystem.

Listed below are the standard Distribution Sets that you can install and the directories that you will have to copy on to the media you are installing from.

Developer

X-Developer

Kern-Developer

User

X-User

Minimal

9.   Using the Boot Floppy and Kernel Configuration

At this point you should have chosen a -RELEASE to install and have decided what medium you are going to use to install it. It can be installed over the network using FTP or NFS, from an existing FreeBSD or MSDOS partition, from a CDROM, or with floppy disks. All installation media types require a boot floppy, except bootable CDROM installs. This part covers how to use the Boot Floppy, regardless of which media you will be installing from.

If you will be installing from floppy disks, MSDOS, existing UNIX partition, NFS, or custom FTP site, you will need prepare your installation media. Read the section on Preparing Distribution Sets, to find out what to download and where to put it.

Before you boot with the Boot Floppy, you should check your CMOS Settings. You need to have the boot sequence set to boot from 'A' drive then 'C' drive. If this is going to be a Server, you probably don't want APM (Power management) enabled. Before you exit CMOS, double check to see that your IDE drives are all properly recognized and installed. SCSI drives should be checked using a SCSI utility.

Note:

If you don't know what each piece of hardware in your computer is, gather all the documentation. You will definitely need it. The best information comes from the packing list that came with your computer, if you still have it. It should tell you what kinds of devices you have installed. If you already have an operating system installed on the computer, you can use various methods of finding out what is in your system. If you have DOS, try using msd. If you have Win95, try right-clicking on My Computer, selecting Properties, selecting device manager and printing out the information there.

Now put the Boot disk in the A: drive, or the boot drive, and restart the computer.

After a few moments, you should see a screen like:

>> FreeBSD BOOT @ 0x10000: 639/31744 K of Memory

Usage: bios_drive:interface(unit,partition)kernel_name options
    bios_drive   0, 1, ...
    interface    fd, wd or sd
    unit         0, 1, ...
    partition    a, c, ...
    kernel_name  name of kernel, or ? for list of files in root directory
    options      -a (ask name) -C (cdrom) -c (userconfig) -D (dual consoles)
                 -d (debug early) -g (gdb) -h (serial console) -P (probe kbd)
                 -r (default root) -s (single user) -v (verbose)
Examples:
    1:sd(0,a)mykernel  boot `mykernel' on the first SCSI drive when one IDE
                       drive is present
    1:wd(2,a)          boot from the second (secondary master) IDE drive
    1:sd(0,a)?         list the files in the root directory on the specified
                       drive/unit/partition, and set the default bios_drive,
                       interface, unit and partition
    -cv                boot with the defaults, then run UserConfig to modify
                       hardware parameters (c), and print verbose messages (v)

Use ? for file list or press Enter for defaults
Boot:

This is the Boot Prompt. FreeBSD is giving you a chance to enter parameters different from the normal booting procedures. This is most often used to enter into the single user mode, or to boot from a different ``kernel.'' See the section on Compiling Custom Kernels for more detail on kernels.

If you don't press anything, it will assume after a few seconds that you don't want to enter anything extra and go on booting, using the default values. We want to use the default values at this point.

Next comes the kernel configuration menu:

Skip kernel configuration and continue with installation.
Start kernel configuration in Visual Mode
Start kernel configuration in CLI Mode (experts only)

These options give us a chance to modify our kernel and make it scan for devices in places other than the default settings. If we skip the kernel configuration, we accept all the default values, move on to the next section of the install, and will not have another chance to change them until we reboot. We can start the kernel configuration in either of two modes, CLI (Command Line Interface), or Visual Mode (Menu Driven Interface). The Visual Mode is by far the easiest to use and understand.

Of these three options, we want to go into Start kernel configuration in Visual Mode. But, before we do that, we need to have a basic understanding of IRQ and Ports and devices.

At this point you don't need to know what they are so much, as you need to know that each device (hardware component) has one. You need to know what each device's IRQ and Port number is. This is why you need the documentation on each piece of hardware in your computer. Some of the devices will have IRQ's and Ports that you can set. These should be set before you begin your installation of FreeBSD. This may require jumper settings on the actual hardware itself, or use of a vendor supplied configuration utility to set it. The PCI devices won't need to be set up by you in the kernel configuration; This utility only affects ISA devices.

Once you know what each device in your computer is and what it's IRQ and Port # is, if it has one, then proceed into the visual kernel configuration.

--Active-Drivers-------------------------------------21 Conflicts---------Dev-----IRQ----Port
Storage:	 	(Collapsed)
Network:	 	(Collapsed)
Communication:		(Collapsed)
Input:			(Collapsed)
Multimedia:
PCI:			(Collapsed)
Miscellaneous:	
--Inactive Drivers----------------------------------------------------------Dev--------------
Storage:	 	
Network:	 	
Communication:		(Collapsed)
Input:			(Collapsed)
Multimedia:
PCI:			
Miscellaneous:
---------------------------------------------------------------------------------------------

This screen lets you modify or remove ISA devices from the boot scan. FreeBSD probes each device that it knows about when it boots up. All the devices in the ``Active Devices'' section will be probed, anything that is deleted from the ``Active Devices'' section will be moved into the ``Inactive Devices'' section and not probed. If you delete a device you need, you can go into the ``Inactive Devices'' section and re-activate it.

At the top of the screen you see ``21 Conflicts'' in Bold Print. This can be somewhat misleading, because there are not actually 21 physical conflicts. These are only potential conflicts. FreeBSD is telling us that if all the devices that it has been set to probe are present that there ``would'' be 21 Conflicts. FreeBSD is set up to probe all the devices it knows about and look for them at the most common IRQs and Ports. Since several pieces of hardware are commonly found at the same IRQ, it reports a potential conflict. For example, FreeBSD is probing for several different network cards at the same address, and since you only have one network card, the IRQ conflict is really non-existent.

Our job now is to look through the different sections of device drivers and de-activate or delete the ones that aren't in our system. For each device that we do find that belongs in our system, we need to make sure that the IRQ and Port values are correct.

It is not absolutely necessary to delete all of the unused devices, because when FreeBSD probes for them and does not find them, it ignores them. However, it would be wise to delete any extra devices that do not belong to the system, because they may have long time out values. In other words, FreeBSD waits for a long time to make sure that they really don't exist. Deleting them will speed up the boot process.

Most likely, all you will have to do is change the settings on a few devices and delete one or two others to speed things up. For example, In my system I have 2 SCSI drives, an NE2000 network card on IRQ 10, and a PS/2 mouse. I have to delete the IDE drivers, change the NE2000 driver (ed1) to IRQ 10, and enable the PS/2 mouse from the disabled list.

It still shows 18 conflicts, however, none of the equipment in conflict exists in my machine, so I can ignore it and continue on. I have resolved the conflicts for the equipment actually in my machine. If, after resolving conflicts for the equipment in your machine, you still have problems, you might try removing ``all'' the extra device drivers from the kernel configuration menu and checking for a conflict you might have overlooked.

If you have correctly erased ``all'' the extra devices and set the remaining devices to the correct IRQ and Port #, it should show no potential conflicts, with the exception of the PS/2 mouse. If it shows any remaining, it could be an actual conflict. Any actual conflict will result in both pieces of hardware not working properly. If you do end up with a potential conflict, after deleting ALL of the extra devices, you must move one of the offending devices to a different IRQ or Port (depending on where the conflict is) to avoid an actual conflict.

With this in mind, lets start with storage: With the storage section highlighted, press ENTER to expand the tree. Now you should have lots of SCSI controllers and disk controllers listed. These will cover everything from CD-ROMs to Tape Drives to Floppy disks. They are in alphabetical order. These are only ISA devices, PCI devices are taken care of automatically.

The first four are:

--Active-Drivers----------------------------21 Conflicts---------Dev-----IRQ----Port
Adaptec 154x SCSI Controller		   	CONF		aha0		0x330
Adaptec 152x SCSI Controller		       	            	aic0	11	0x340
Buslogic         SCSI Controller		CONF		bt0		0x330
Floppy Disk Controller						fdc0     6    	0x3f0

The above Buslogic and Adaptec controllers are in conflict trying to use the same Port. Deleting one of them, or changing one of them to an unused Port will eliminate a conflict. Just changing the Port that FreeBSD looks for will not solve your problem unless that is actually the Port that the hardware is set to. If the SCSI controller is set to Port 0x330 and so is the network card, one of them will have to change. Merely pointing FreeBSD to look for the SCSI controller in a different place, will appear to solve the problem, but will only suceed in misleading FreeBSD and hiding the fact that two devices are in conflict. The conflicting IRQ or DMA needs to be changed on the physical device, using a jumper or configuration program supplied by the vendor. Then FreeBSD needs to be pointed to the right place to look for it in this configuration menu.

The ``Dev'' listing is the file name that you will use to reference the hardware device in FreeBSD. It is the name of the actual device driver. All the devices are kept in a directory called /dev. So to access the floppy disk controller you would reference /dev/fdc0. Normally, however, you don't access device controllers, just the devices they control. See the section on Accessing the Floppy.

If you don't have SCSI in the system delete all the SCSI controllers, the same goes for IDE devices. Leave only the devices that actually exist in your system. If you delete an item and decide you need it, just press TAB and get it back from the Inactive Drivers section.

To change the IRQ or Port value of a device, press ENTER while the device is highlighted. This will open a box at the bottom of the screen allowing you to change the Port address, IRQ Number, Flags, and Memory Address. The Port address is a hexadecimal number. If it is shown in your documentation as a Port value of 330, it is probably 0x330. Use the TAB button to move between fields and then press q to quit and save the parameters. You can always go back and change them before you quit the kernel configuration editor.

When you are finally done with all of the kernel configurations, it may still show potential conflicts, but if you have configured everything correctly, there should be no actual conflicts.

PS/2 Mouse Users:

If you use a PS\2 Mouse, it will conflict with the Console, showing two conflicts. This is normal.

Be sure you have everything correct. Once you move past this screen, you won't have another chance to change the devices, unless you reboot. Then press q to save these parameters and continue with the Installation.

10.   Installing FreeBSD with the boot floppy

10.1.  An explanation of install screen options
10.2.  Step 1) Format, fdisk, and partition the disks
10.3.  Step 2) Allocate Filesystem Space
10.4.  Step 3) Select Distributions
10.5.  Step 4) Format and Configure the Media Type

Welcome to an install of FreeBSD. From here you can install FreeBSD on a new machine, upgrade an existing machine, configure your machine after an installation, and add extra distributions and packages.

OR,

With a special ``Fixit'' floppy disk or CD-ROM, you can troubleshoot problems in an existing system.

The install process is mostly automated. All the required information is collected before the installation actually starts. The Novice and Express installation options guide you through the information collection procedure. They let you install only after all necessary information has been gathered. The Custom install option gives you the flexibility of installing select sections without performing a complete install.

The install process consists of 4 Steps:

Note:

The next section is an explaination of each option on the main menu. If you want to begin installing immediately, skip ahead to Step 1.

10.1.   An explanation of install screen options

10.1.1.   Usage
10.1.2.   Doc
10.1.3.   KeyMap
10.1.4.   Options
10.1.5.   Novice
10.1.6.   Express
10.1.7.   Custom
10.1.8.   Fixit
10.1.9.   Upgrade
10.1.10.   Configure
10.1.11.   Load Configuration
10.1.12.   Index

10.1.1.   Usage

This screen is a tutorial on what each key does when you press it during the install. The ENTER key, sometimes called the RETURN key, will finish or exit you out of a menu whether or not you have selected anything. This might cause you to skip a menu section, thinking you have selected something.

You must press the SPACE BAR to select most menu items. Usually, an X will appear next to the selected item.

10.1.2.   Doc

FreeBSD comes with several very good sets of documents that are available during the install process. It is a good idea to read all the install documentation before attempting to install for the first time.

10.1.3.   KeyMap

If you need special characters to write in the language that you are running FreeBSD on, you need to use the keyboard map for that country. This page lets you select from the available keymaps.

10.1.4.   Options

This page lets you tweak with the default settings. For the most part, everything should work fine with the default values. Unless you know what you are doing, you probably shouldn't mess with this section.

10.1.5.   Novice

The Novice Install will walk you through each required part of the install process. Before each step, a help screen will appear and explain what is about to happen and what you are expected to do.

10.1.6.   Express

Express is just like Novice, but without all the help. It walks you through all the important steps and collects the information required to start the installation.

10.1.7.   Custom

The Custom Install allows you to do a specialized install, or a specific re-install, with out affecting previously installed components. For instance, this would allow you to add an extra hard drive to your system, or add/re-install a distribution. You could also repartition a hard disk or restore the boot-sector/boot-manager to your boot disk.

10.1.8.   Fixit

If anything should happen to your system that would cause it not to boot properly, the Fixit option will give you access to your filesystem. The Fixit option is an advanced feature. Knowledge of how to mount filesystems is required to gain access to your hard disks.

10.1.9.   Upgrade

The Upgrade option allows you to convert an existing FreeBSD machine to a new version of FreeBSD, without re-formatting your disk drives, or losing all of your data. An upgrade is a lot like re-installing a distribution set. It copies all the distributions you choose over the top of you existing files, replacing the ones with the same name. It does not delete extra files that it finds.

10.1.10.   Configure

This menu helps you setup your basic networking services, install extra packages (pre-compiled ``3rd party'' software), add additional distributions and prepare your system for general use.

10.1.11.   Load Configuration

10.1.12.   Index

This screen could be looked at as a ``Custom Install''. Instead of being organized into an install menu structure, all of the install commands have been extracted, alphabetized, and placed on a single menu. This makes it an alphabetized list of every command available during the install process. Pressing ENTER at this point, will execute the highlighted option as though you had selected it from an active menu.

10.2.   Step 1) Format, fdisk, and partition the disks

10.2.1.   A single disk FreeBSD ONLY install
10.2.2.   A single disk Multi-OS install
10.2.3.   A Multi-disk FreeBSD ONLY install
10.2.4.   A Multi-disk Multi-OS install

Here we are going to prepare our drives for use with FreeBSD. If you already have an operating system installed on your disks, and don't plan on using the whole disk for FreeBSD, you will need to free up a partition to install FreeBSD on. There are several methods of doing this. You can delete your stuff, re-arrange the partitions, and re-install it. (Cleanest, but takes the most work.) Or you can re-partition it using a program that preserves your information. There are several programs that can repartition your drives with out losing your information. A shareware program FIPS will work, or there are several commercial packages, such as ``Disk Magic''.

fips.exe can be found at ftp.freebsd.org/pub/FreeBSD/tools/fips.exe.

If you use DOS fdisk to make a new partition, you will be required to delete the existing partition. However, with FIPS and other such programs, you can ``shrink'' an existing partition, freeing up room for a new partition. FreeBSD can be installed on any available partition, including extended DOS partitions, logical drives, and Non-DOS partitions.

Note:

Once you have a partition available for FreeBSD, it does not matter if it is formatted, the install process will format it for use with FreeBSD. It makes no difference whether DOS or any other OS is installed on it.

Four possible fdisk scenarios are outlined, based on how many hard drives you have available, and whether FreeBSD is the only OS installed.

10.2.1.   A single disk FreeBSD ONLY install

This is the simplest install scenario. It is when you only have one disk in the computer and you want to dedicate it to FreeBSD.

In the fdisk editor, delete any partitions that may exist by moving the cursor to the partition and pressing d. Then press a to use the entire disk as shown in the figure below.

This is an example of a 2.1 Gig SCSI disk. It does not matter whether the disk is SCSI or IDE.

Now, press q to quit.

Install the standard MBR (Master Boot Record)

Use the SPACEBAR to select Standard and press ENTER to move on.

Move on to Step Two, ``Allocating filesystem space''.

10.2.2.   A single disk Multi-OS install

This is one of the more complex scenarios, you don't have to worry about which drive to boot from like you do with Multi-disk setup-ups, but you need to be careful about which OS you install First. DOS and FreeBSD are friendly to each other; Window95 and WinNT are not friendly to FreeBSD. They both want to try and take over the Boot Sector (MBR). Also, DOS and Win95 usually need to be installed on the first 1026 sectors of the first hard disk to avoid the 530Meg limit imposed by DOS.

Now you should see several partitions. The first one says that is it unused, starts at 0 and goes 63 sectors. This is your boot sector. There is nothing you can, or want to do with this at this time. Then you should see a section starting at 63 and named sd0s1 or wd0s1 depending on whether you have SCSI or IDE disks. sd0 is the name for a SCSI disk and s1 is the first partition we made on the drive.

You should see a big section that is unused. This will be used to create our FreeBSD partition.

If there is no partition marked unused, then the partition that you have reserved already has information on it, and will need to be deleted and recreated as a FreeBSD partition. Press d to delete a highlighted partition.

For example, you have 3 Gb of space on one disk. It is partitioned into a C: drive (2Gb), and a D: drive(1Gb). The plan is to keep your 'C: drive' and just use the 'D: drive' for FreeBSD. This is what your partition table looks like:

offset   Size     End      Name   PType  Desc     Subtype
0	63	  62	     -	     6	 unused	     0
63	4193217   4193279  wd0s1     2   fat         6
4193280 2080512   6273791  wd0s2     4   extended    5
6273792 8064      6281855    -       6   unused      0

Here you want to delete the 'extended' partition and re-create it as a FreeBSD partition. Just highlight it and press 'd'. Then press 'c' to create a new one. Accept the default size.

The partition labeled fat is a DOS Partition. The partition labeled extended is an Extended DOS Partition. (ie not the primary DOS Partition)

The sizes are shown in 512 byte blocks instead of 1K blocks. So you need to cut the size in half. The size '4123217' partition is the 2G disk. The '2080512' size partiton is the 1G drive. The '8064' sized chunk is unallocatable space due to cylinder boundaries not matching up.

To create our FreeBSD partition, highlight an unused partition and press c for Create. If you want to use the remaining amount of space for FreeBSD, accept the number that is written in the box, otherwise enter a new number. There are two ways to enter the amount that you want. First you can specify the exact number of sectors that you want the partition to be. Or, you can specify the size in Megabytes by typing in the number followed by an M For example, If you want a partition of 1000 Megabytes, you type: 1000M in the box.

The following graphic shows a 1000M DOS partition, labeled 'fat', as sd0s1.

It also shows a 1100M FreeBSD partition.

Note:

By keeping the partition compatible with other partitions, a small portion of the hard drive might become unusable. The last partition shown on the graphic, starting at offset 4192965, is unusable. This is nothing to worry about, because it is a very small part of the available disk space. It is only 1093 Sectors in size.

When you are done creating your partitions, press q to quit and move on to the next part of the install.

Next it is going to ask how you want to boot the disk. Because we are booting several OSes from one disk, we need to install a boot manager.

This screen lets you select the Boot Manager that comes with FreeBSD. At this screen all you have to do is select BootMgr and it will install the BootEasy Boot Manager on to your disk.

Since BootMgr is the default, just press ENTER to go on.

Note:

There are other Boot Managers available, but this is the only one available during the install. If you have a boot manager already installed, such as OSBS or the OS/2 Boot loader, select NONE from the menu.

Move on to Step Two, ``Allocating filesystem space''.

10.2.3.   A Multi-disk FreeBSD ONLY install

This is a very common server-type setup. It is fairly easy to setup and very reliable.

Now we need to partition each of our disks. We will select one disk at a time and partition it, repeating the same process for each disk.

Select a disk by moving the cursor to the appropriate disk and pressing the space bar.

Caution:

* (Do NOT press ENTER at this point, because this will move us out of the FreeBSD fdisk utility, with out partitioning any disks.

Since this is a FreeBSD only install, we need to delete any partitions that are there and create new ones for FreeBSD. Move your cursor to each partition and press d until there is only one partition that says unused

Now, just press a to use the entire disk.

It will ask you if you want to keep the disk partition compatible with other OS's by making it a true partition. If you are using SCSI disks and are not going to be using any other OS on this system, it is fine to say no and dedicate them to FreeBSD. If you are using IDE drives, it might be a good idea to answer yes and let them conform to regular partitioning methods.

The following graphic is a 2.1 Gig SCSI disk that has NOT been keep compatible with other OS's, therefore it shows no Boot Sector.

We have just completed the fdisking the first disk; press q to quit and it will return us to the Select Drives menu. The disk we just finished will have a X in the box and the remaining disks still need to be fdisk'd. Repeat this procedure until all disks have been fdisk'd.

When all disks have been fdisk'd, press ENTER at the 'Select Drives' menu.

Move on to Step Two, ``Allocating filesystem space''.

10.2.4.   A Multi-disk Multi-OS install

A Multi-disk Multi-OS installation can take on just about any format imaginable. You can have one OS for each disk. Multi-OS's on a on Multiple disks; or any combination of the two. If you are putting more than one OS on a single disk, it will work exactly like the Single disk Multi-OS installation described previously. Of the several options available, one of the easiest, and most sane, is to put one OS per disk. For example, you would put DOS/Win95 on the First disk and FreeBSD on the second disk. I find this to be safer, because sometimes DOS tries to take over the first drive with out telling you and formats it without asking your permission.

One OS per Drive/Two Drive system.

In this example, we have two drives. We are going to put Win95 on the first drive and FreeBSD on the second. Win95 should already be installed and running on the first disk.

We are going to install the Boot Manager on the Win95 disk, because it is the boot disk. To do this, select the first disk, in this case sd0, and install the boot manager. At the Select Drives screen, move the cursor to the first disk and press the SPACE BAR.

This will bring up the fdisk partitioning editor.

At this screen, you should see one DOS partition. Do NOT delete or change it. just press q to quit out of it. Then the Boot Manager screen should come up.

Here we want to select BootMgr; since it is the default, we just need to press ENTER.

This will bring us back to the Select Drives screen. Now, just move the cursor to the next disk and press the SPACE BAR. From here it is exactly like a single disk FreeBSD install. Just delete any existing partitions by moving the cursor to them and pressing d. When they have been all deleted, press a to use the entire disk for FreeBSD. Then press q to quit. You will need to install the BootMgr on this disk also.

10.3.   Step 2) Allocate Filesystem Space

10.3.1.   Workstation\Desktop system
10.3.2.   Server (More than 100 People)
10.3.3.   Internet Server (E-mail/Pop3/Web Pages/FTP)
10.3.4.   News Server

The FreeBSD Filesystem is one big directory structure. There is no noticable separation of drives, or partitions, just one big filesystem. All additional hard drives must be assimilated into the directory system. This is accomplished by mounting each partition, sometimes called a ``slice'', as a sub-directory in the filesystem. A partition can mount to, or attach to, any existing directory, preferably an empty one.

Next, we will enter the disk label editor. This will allow you to distribute your disk space throughout the filesystem. At a minimum, you will need to allocate disk space for a / directory and for ``Swap Space''.

Space is allocated for a directory by mounting a partition, or ``slice'' of a partition, to it. If you do not allocate disk space for a directory, it will use disk space from it's parent directory. Below is an explanation of the standard directories that FreeBSD installs and whether you should consider allocating space for it. Subsections of this chapter describe extra allocations you should consider based on the anticipated use of your system. These are in addition to the basic allocations mentioned below.

10.3.1.   Workstation\Desktop system

Unless you have special plans, on a system like this, just use the defaults. Press a to use the defaults. This option will create a 32Meg / partition, a 32 Meg /var partition, calculate a swap partition based on available RAM memory, and allocate the rest as a /usr partition.

10.3.2.   Server (More than 100 People)

The more people you have on the system, the more you want to think about making a /home partition. You should decide on a minimum amount of disk space that you are going to alot for each user. Say 3-4 Megs of disk space for each user, and make /home partition that has enough space to hold all the anticipated user files.

10.3.3.   Internet Server (E-mail/Pop3/Web Pages/FTP)

On an e-mail server, you want to add extra space to the directory /var. The directories /var/log and /var/mail receive extra heavy use in Internet servers. If you anticipate a large volume of e-mail, you might want to add a separate /var/mail partition.

If this is a print server, /var/spool might get heavier than normal usage. However, spooled print jobs don't stay very long.

10.3.4.   News Server

A News server is a very advanced project, but I mention it here so you can plan disk space for it. You will want to use several 2.1 Gig SCSI disks, and look into ccd. ccd can be used to stripe several disks together, and also mirror hard disks.

10.4.   Step 3) Select Distributions

A distribution is a collection of files that make up part of the operating system, sort of like separate components that can be added individually. A distribution set is a selection of distributions. Six ``typical'' distribution sets have been prepared to make it easy for new users to select distributions based on the intended use of the system. A list of the distributions installed by each distribution set is included at the end of this chapter.

You also have the option of selecting your own distribution set. Every distribution set includes the bin distribution. The bin distribution contains all the files required to make FreeBSD run. Everything else is optional. You'll notice that the minimal distribution set only installs the bin distribution.

One of the strong points of using an operating system that includes the Source Code is the ability to adjust for special hardware. If you have special hardware, such as a multi-port serial card, or Symmetric Multi-Processors, you will need to be able to re-compile and generate a custom kernel. Installing the kernel source code also allows you to streamline your kernel for optimum performance, by removing unused device drivers.

I would recommend installing the source code for creating a custom kernel. The Developer, X-Developer, and Kern-Developer distribution sets all include the kernel source code.

If you have an SVGA video card and SVGA monitor, I would recommend installing the X Window System binaries. XFree86 is the free version of X Window System for FreeBSD. In order to configure X Window System properly, you need to know the Brand of Video Card, the Refresh rates for your monitor, and what kind of mouse you have.

X-Developer and X-User both include the X-Windows system. I would recommend the X-Developer because it includes the kernel sources also.

After you select one of the distribution sets, it ask you if you want to install the DES encryption components.

If you are outside of North America (USA or Canada) don't install it over the Internet from a North American site. The copy of DES on the CD-ROM is fine. DES technology originating from the US is not exportable, so you'll have to pick an overseas server to install from (which is the logical way to do it anyhow...)

Selecting Custom from the distribution menu allows you to specify which components to install.

This screen also lets you add distributions, or re-install corrupted distributions. If you are adding distributions to an existing system, you probably don't want to select BIN. When installing a new system, I would recommend the following as very necessary: BIN, DOC, MAN, XFree86, and Selected SRC sets.

When you select SRC from the Custom Distribution Menu, it asks you which sets of source code you want to install.

At the very least, I would install SYS, the FreeBSD kernel sources. This will allow you to build your own kernel.

10.5.   Step 4) Format and Configure the Media Type

10.5.1.   Installing from a FreeBSD CD-ROM
10.5.2.   Installing from an FTP Site

10.5.1.   Installing from a FreeBSD CD-ROM

To install from a CD-ROM:

Just stick the CD in to the CD-ROM Drive and sysinstall should find it. As long as your CD-ROM drive is recognized at start up, you should not have problems. Most ATAPI IDE and SCSI CD-ROMs are supported.

The newer installation CD-ROM's for FreeBSD are bootable. If your computer supports booting from a CD-ROM, all you need to do is stick it in the CD-ROM drive and REBOOT the machine.

Pre-FreeBSD-2.2.5 Users:

The IDE/ATAPI CD-ROMs need to be setup as a slave on the Hard drive controller. It will not be recognized properly as a master on the second Hard drive controller This has been fixed in recent FreeBSD releases.

10.5.2.   Installing from an FTP Site

Installing from an FTP site is one of the easiest ways to install FreeBSD. It simplifies things greatly, because all you need is a boot disk and an internet connection.

Just Select a site that is close to where you are and press ENTER.

It is possible to install from a local FTP site that you have prepared. The site must include copies of all the distributions you wish to install. This would be helpful if you are planning to install several times from a slow link to the Internet. The distribution could be downloaded ahead of time and installed as many times as needed from local FTP site. See the section on Preparing Distribution Sets for a list of what to download and where to put it.

To install using FTP, your computer must be configured to reach the FTP site. You can do this a variety of ways.

If FreeBSD has detected a device that it could possibly connect, using FTP, protocols to another machine with, it will list them here. This list includes, Network Cards, COM ports, and parallel ports. If you have installed a Network Card, but it is not listed on this list, FreeBSD did not detect it during start up. You may need to check for the device during boot up, and make sure the IRQ and other address settings are correct.

Once you have selected an interface (Network card, modem, etc...), you will need to give your computer an identity on the network.

You have to give your computer a name. In the host field, enter in the name you have given this computer. This field can be anything of your choosing. It should be unique in your domain. In this example, the computer's name is wiggy. You only need to enter the name, the domain name will automatically get added to the host field as soon as you fill in the domain field. The domain name should be given to you by your ISP. A domain name is unique to a particular site or business. Each computer should have an individual hostname, but a common domain name. Kinda like first and last names in a family.

In the Example, the domain name is foo.com If you are configuring this for the Network or Internet, an IP address, gateway address, and nameserver IP address are also necessary. All of these should be provided to you by your ISP (Internet Service Provider).

The Gateway address in an IP address that TCP/IP uses to know how to get out to the internet. It is the address of the router that acts as a gateway between you and the internet.

The Name Server address is the IP address of the computer that will translate internet names into IP addresses so that TCP/IP protocols can connect using easy to read names. For example, freebsd.org is at IP address 204.216.27.18. However, that is very hard to remember. The DNS (Domain Name Server) will translate that IP address into something readable to us, and vice-versa.

The IP address is your personal IP address that belongs to the machine you are setting up FreeBSD on. The hostname you just gave it will correspond to this IP address. An entry will need to be setup later in your DNS to make this happen. Do not pick a random IP address. Each IP address has to be unique on the internet. Please get this information from your ISP.

The Netmask is an indication of the relationship between the IP address on this machine and the Gateway IP address. Each 255 that appears in the Netmask means that that field is the same in both Gateway and local IP address. The standard Netmask is 255.255.255.0. This netmask tells us that the first three sets of numbers on the IP address match with the first three numbers on the Gateway IP address.

	IP address:	123.123.123.12
	Gateway:	123.123.123.1
	Netmask:	255.255.255.0

This would be a correct scenario. If the numbers differ in the fields, either the netmask would need to be opened up a bit, or a router would need to be installed between the two sets of numbers. A router would create a reachable gateway.

	IP address:	123.123.111.12
			        ^^^(These are Different.)
	Gateway:	123.123.123.1
			        ^^^(These are Different.)
	Netmask:	255.255.255.0
			        ^^^(Therefore this mask blocks them.)

This would not be a reachable Gateway. If the Netmask was opened up to 255.255.0.0, then the Gateway would be visable.

You do not need to give any parameters to Extra options to ifconfig.

From here you are ready to start installing the actual files. Just select OK. If you are in the Novice or Express installs, it will move you ahead and ask you if you are sure you want to do this. If you are in a custom install, you have to select Commit from the install Menu

If you experience any difficulties, copy down any error messages you received during the install process and consult the FAQ and handbook for anything relating to that topic. Then search the mailing list archives. If that reveals nothing, consult the people on the questions@freebsd.org mailing list. Be sure to reference the errors you received.

11.   Upgrading FreeBSD Versions

Caution:

Just to be safe, backup all of your data before upgrading a system.

The first thing an upgrade asks you is where to mount your partitions. It is important to label your partitions the same as they were previously. For example, you have a 100M partition named sd0s1f, and a second 100M partition named sd0s1g. The partition sd0s1f is mounted on /home, and sd0s1g is mounted on /var. If during your upgrade, you switched the disklabels on those two partitions, the upgrade would start copying the files that belong in /var on to your users home directories, because they were kept on sd0s1f. So, if you delete, or mis-label, a disk partition, you may lose, or screw up, all information stored on that partition.

When you upgrade from a 2.2.1 or earlier -RELEASE, you will be upgrading to the new rc.conf files by hand.. You will no longer be using the /etc/sysconfig file to configure your server. You will have to convert the information from /etc/sysconfig into /etc/rc.conf.

Note:

Make sure you know where your volumes are currently mounted before you start an upgrade, so you can remount them in the same place

12.   Post install Configuration

During the Post install procedure you get a chance to do a lot of configuration to you system. you can:

13.   Adding Packages

Packages are pre-compiled software that have been assembled for use with FreeBSD. Packages are really just software packages, like you would purchase from a vendor, except they have been packaged by people who work with the FreeBSD project and are available for free. They are the work of people who have either written a software package especially for FreeBSD, or have taken an already existing piece of software and packaged it for installation on FreeBSD. Packages are designed for a specific -RELEASE, in other words, they are compiled on the current version of the operating system and may have unforeseen results if used on an untested version.

Packages are very easy to install. They can be installed several ways.

For more information, see the section on Adding Software

14.   Installing the Ports Collection.

During the install process, it will ask you if you want to install the Ports collection. The Ports collection is a source code distribution of the Package collection. Programs from the Ports collection get compiled for each -RELEASE of FreeBSD and placed in the Package collection. Getting a program from the Ports Collection, instead of the Packages Collection, is kind of like getting an uncooked pizza, it takes more work, but you can pick off the onions if you want.

:
Running FreeBSD

15.  Getting Started With FreeBSD and Unix
16.  Directories And Files
17.  System Control

15.   Getting Started With FreeBSD and Unix

15.1.   User Names and Passwords -- Logging In
15.2.  The SuperUser - root
15.3.  The Unix Environment
15.4.  Changing Passwords
15.5.  Creating/Adding Users
15.6.  Unix System Commands
15.7.  Erase and Kill Characters
15.8.  Shutting down FreeBSD

15.1.   User Names and Passwords -- Logging In

When you boot FreeBSD, you'll see the hardware detection messages scroll by on the screen, followed by some information that indicates what daemons are being started. When everything is said and done, you'll be left with ``The Login Screen''. It will resemble the following:

If you've never used a multi-user operating system before (DOS, Windows, and Macintosh are all single user.) the concept of ``logging in'' will be new to you. FreeBSD is waiting for a login - a login is simply the name that you supply to FreeBSD to identify yourself to the operating system. FreeBSD keeps track of which names are permitted to log in or access the system, and only allows valid users to have access. When you successfully log in, you'll be presented with an interface to the operating system - the Unix Environment covered later in this chapter. Generally login names reflect a person's real name (for example, on my home system my login name is mark on a larger server at the University, my login name is mmayo - to distinguish me from all the other Mark's on the system). Login names must be unique on a particular system.

To gain access to the system, you type in your login name. If you are booting FreeBSD for the first time, the only account that is valid is that of the SuperUser: ``root''. Type root at the Login: prompt and press ENTER If you specified a password for root during the installation you'll be asked for it now; otherwise the system will immediately log you in as root. If you are new to Unix, you would be wise indeed to read the section entitled The SuperUser presented later in this chapter.

Things to remember:

One of the most useful things about FreeBSD is that you can ``log in'' from just about anywhere! FreeBSD uses the notions of ttys - ``terminals'' that can attach to a virtual terminal (ttyv - such as your screen), a pseudo terminal (ttyp - such as a network connections from another Unix or Windows computer), and serial terminals in case you happen to have an old DEC vt100 terminal device lying around :-) Terminals, combined with the concept of logging in make FreeBSD/Unix a dream to administer remotely! Another side-effect of the multi-user ttys is that YOU can be logged into your own system as many times as you want. If you've just started FreeBSD for the first time, then it may not be obvious too you how to get multiple logins going at the same time. It's easy, just hit ALT-F2 to switch to ``virtual console 2'' and you'll see another login screen. By default, FreeBSD ships with 3 virtual consoles (ttyv0-2), reachable with ALT-F1,ALT-F2,ALT-F3. Go ahead and try switching between consoles! Having multiple sessions (logins) going can be extremely useful. For example, say you want to search for the word ``foobar'' in the entire /usr/src source tree! Depending on the speed of your disk and CPU, this could take quite a while - say 2 minutes - so instead of waiting around doing nothing while the command grinds away, you can switch to another console and continue working on whatever you want.

Logging Out!:

Logging Out!

When you're done doing whatever you were doing it's time to log out! You can either type logout or exit. Once you've logged out, you'll see the Login: prompt again, indicating your system is ready for more abuse :-)

Note:

The term ``account'' is synonymous with ``login'' Some people use the phrase account to encapsulate a user's entire set of rights and possessions on the system (his login permissions, files, home directory, mail account, etc.), and use the term login to refer to the user's ``account name'' At any rate, the two terms can be used interchangeably and their exact meaning varies depending on who you talk to :-) For clarity, we will always append ``name'' after account or login to indicate we're only talking about the user's login name...

15.2.   The SuperUser - root

In FreeBSD (and just about all other UNIX systems) the superuser login name is root. No matter how large or small the system may be, if you can login as the user root, the system is wide open for you to do whatever you please. Obviously, letting anyone log in as root is a Bad Thing(tm). Remember, root can do *anything*. Only you should know root's password.

To prevent unauthorized access, the root login should always have a secure password. By default, in FreeBSD, root does not have a password; it's up to you to change it. The trick is picking a good password. It's been known for quite some time that people tend to pick passwords that they can easily remember (we're humans, after all): their birthday, their home town, an item on their desk, and so on. The problem with these passwords is that they are easy to break, either through guessing or by more sophisticated methods of attack.

So picking a ``good'' password is important if your machine will be connected to a network (a LAN, or the Internet). The best passwords combine a mixture of Upper and Lower case characters, as well as numbers. A fine example would be: 34DodgesU, or Beezl891. It's even better if there are no ``real words'' in your password, since one common form of attack is to exhaustively try common combinations of words and numbers against your password entry. Personally, I think a password should be pronounceable, since it minimizes the risk that you might forget it. Try memorizing S8t4WxlT43Dc23HiiU2 and you'll see what I mean...

Finally, perhaps the best approach to password privacy is to never write your password down, and to change it every so often. There are system administrators that change their (and root's) password several times per week. Many people recommend a more reasonable time frame of 2 to 3 months.

Also remember that you should only be the SuperUser while you are performing System Administration tasks. For 'normal' activities, it's always a better idea to do them as a mere mortal since mere mortals can't wipe out the entire operating system so easily.

To ``become'' the SuperUser while you're a normal user, you need the command su. su stands for ``switch user'' and you can use it to su to any other user on the system. If you just type 'su' by itself, it is assumed that you want to su to root - the SuperUser.

Warning:

In FreeBSD, you must be in the wheel group to su to root.

So go ahead and put yourself in there now. If you have no idea what I'm talking about, just wait until we get to the section ``Creating/Adding Users'' and it will all be explained.

15.3.   The Unix Environment

15.3.1.  The SHELL
15.3.2.  The UNIX Philosophy
15.3.3.  Using the TCSH - a walk through a day on the command-line

The Unix environment, for the most part, involves two aspects:

I can't really tell you exactly what the Unix environment is - but I can tell you what most people believe contributes to "it". Really, the Unix environment is just FreeBSD's interface onto itself. Huh? Think of it this way: You need to get things done and the operating system is willing and ready to perform these tasks. However, you need a way to talk to FreeBSD before you can go anywhere. The "Unix Environment" is the collective services, features, and ideologies that represent the interface to the operating system. If you want to work with FreeBSD (or any Unix for that matter), you need to use the Unix environment to get your work done. As we will see, the Unix environment not only ``lets'' us get our jobs done, but influences how we approach and solve problems. I'll talk about this philosophy of design after a brief introduction to ``The Shell'' We will end up this section with a hands on walk through of how to use the shell, and the rest of the Unix Environment.

15.3.1.   The SHELL

The most visible part of the Unix system -- the part that prompts you for commands and appears to do your bidding is the shell. A shell is a user interface: it talks to the Operating System for you and grants each logged in user system resources (like processor time, disk storage, memory, etc.). The primary purposes of the shell are to provide prompting, command interpretation and execution, and error reporting. You tell the shell what you want done by typing in commands after the prompt. It's very similar to the command interpreter under DOS, but infinitely more powerful and functional. Instead of presenting users with "C:>", most Unix shells present you with "$" or "%". Naturally, the prompt can be changed - more on that later!

There are many different Unix "Shells" available. By default, most people will be using the ``C Shell (csh)'' under FreeBSD. You can tell if you are using this shell if your command prompt has an "%" in it. The C Shell is thus called because it is modeled after the C language syntax. For added functionality (including command line editing and an interactive ``history'' mechanism), you can use "tcsh", which has become quite popular and has very similar syntax to csh. Also available are the Bourne Shell (sh) and the Bourne Again Shell (bash). bash is the default on Linux systems, whereas tcsh or csh are generally the defaults on BSD systems. Finally, there is also the Korn Shell (ksh) written at Bell Labs - ksh has become a de facto standard on System V based UNIXes. There is a free implementation called "pdksh" (public domain ksh). Many people consider the tcsh the most feature rich, but that doesn't mean it's right for you. The only way to know for sure is to try them all out and see which one turns your crank. tcsh, bash, and pdksh are all available in the FreeBSD Packages Collection.

Note:

Although you spend most of your time in what's known as the ``interactive shell'', most shells also provide a high-level programming language (scripting language) that is typically used to automate mundane day to day tasks. That being said, Perl is quickly replacing this use of shell languages in many sysadmin circles, and for this reason we will only look at the shell from an interactive stand-point. If you do want to get into shell programming, there are many books available on the subject!

15.3.2.   The UNIX Philosophy

Before we get started with how to maneuver around your system with a shell, we need to get several things out of the way first. When the powers that be created Unix, they had a certain idea, or goal, about how it should work. This is loosely referred to as the "Unix philosophy". It can be summed up in the simple phrase: "Small is beautiful". The philosophy has grown from the UNIX community instead of being forced upon it. According to Mike Gancarz, in ``The UNIX Philosophy'', there are 9 major ``tenets'' of the Unix philosophy. Several are significant to your understanding of how to make the most out of your FreeBSD system:

  1. Small is beautiful

  2. Make each program do one thing well

  3. Make every program a filter

The idea here is that small programs are simple, and therefore easier to understand. A natural side effect is that a program should only do one thing - if you want more than one thing done, you just connect different individual programs to accomplish your task. That's where filters (also referred to as pipelines) come into play. Every program is a filter in the sense that it produces an output given an input. The output of one program can be fed into the input of another program, and vice verse. You will see what I mean once we get to some concrete examples in the next section.

15.3.3.   Using the TCSH - a walk through a day on the command-line

Personally, I use tcsh as my shell, and for this reason we'll focus on this shell in particular as we walk through several examples of how to take full advantage of your shell. tcsh is a modified version of the C Shell (csh). It's fully backward compatible with csh, but it has many new features that make user interaction much easier and more efficient. The biggest areas of improvement are command-line editing, and history navigation. For me, these make life on the command-line much more enjoyable. Everything we'll say about input and output redirection, pipelines, prompts, and job control is identical to the standard csh. If you don't have tcsh installed on your system (just try typing 'tcsh' to find out) then you can add it from the Package Collection.

Pipes and Filters

tcsh provides a mechanism to connect programs together - the filter mentioned above. It is called "the pipe", to represent the directional flow of data "through the pipe". With tcsh, the pipe is represented with the "|" character. Before we can use a pipe, we need to know two UNIX commands: who, and wc. who gives a list of each user that is currently logged onto the system, while wc counts words. Let's say we want to find out how many users are on the system. Here's how you ask:

vinyl % who | wc -l

8
vinyl %

Whoah! There's quite a bit going on here. First of all, you should recognize that the "vinyl %" is my interactive prompt (I've made a simple modification to the prompt to let me know what machine I'm on - in this case ``vinyl''). It's begging me for commands, and I fed it the command "who | wc -l". The answer was 8. Let's take a closer look at what happened. Normally, the command who by itself would perform like this:

vinyl % who
mark	ttyp0	Jun 20 18:04	(131.111.238.108)
dlow	ttyp1	Jun  9 10:53	(204.27.111.42)
chrisc	ttyp3	Jun 20 17:46	(208.8.24.42)
gabor	ttyp4	Jun 19 13:10	(206.222.78.163)
.
.
.

vinyl %

Notice that there is one user per line. We want to take this result and do something with it. In this particular case, we want to count the number of lines, which will be the equivalent of counting the number of users currently online! So what we do is ``pipe'' the result of the who command into the wc command. wc sees the output of the who command as its input, and processes it. The final thing to note is that we gave the wc command a "command line option"; the -l part. "-l" simply tells wc to count lines instead of words. The example above demonstrates quite a bit about the UNIX command line. If you're confused, the best way to learn is by picking a few commands and experimenting. One of the most common uses of the pipe on the command line is with the programs "more", or "less". Anytime a program gives an output result that is more than a page long, the best way to view it one page at a time is to pipe the result into more. For example: last | more. This lets me see the output of the command last ( which outputs a list of all the users who have "last" logged onto the system) one page at a time. Quite useful indeed.

Command Completion

Command completion exists in the tcsh to make your life easier. With command completion, the shell is able to determine which files you are interested in on it's own. It will become clear what I mean once you see the following example. Remember the the cd command "changes directories". Lets say you have the following directories and files in the current working directory:

vinyl % ls -F
News/	bin/	code/	games/	mail/	resume.ascii	test/

If you want to change directories from the current working directory to the test subdirectory, you would enter the command:

vinyl % cd test

With command completion, you can save on your typing by recognizing that the directory name 'test' is uniquely identified by the its first letter, 't'. So all you need to type is:

vinyl % cd t<tab>

The <tab> is of course the actual tab key found on your keyboard. When you hit the tab key tcsh will fill in the rest of the filename for you! This can be a real help with longer file names and makes moving around on the command-line much quicker. Instead of the Tab key, and the standard csh uses the ESC key.

Wildcards

Wildcards allow tcsh to match more than one file at a time. It supports the three standard file wildcards supported by pretty much all shells:

The * wildcard can be used to do the same thing as command-completion above. If you entered a command like

cd t*

and only one subdirectory in the current working directory begins with the letter t, this command would behave the same as if you had used command-line completion by pressing the Tab key. The * matches any number of characters, so in this case it will match anything behind the leading t character, such as 'test' from the example above.

A more common use of wildcards is for working on multiple files however. Often the ls is used as follows:

vinyl % ls -l *.html

This will show you all the files that end with '.html' -- your web pages. The best way to get a feel for wildcards is to just play around with various combinations. Look at the results and figure out how the command behaved. After a very short period of experimentation I'm sure you will have wildcards mastered!

Command History

All the commands you have recently typed are stored in a file named .history and located in your home directory. The command h will show you a list of the most recent commands you have typed. All the commands are numbered. You can repeat a command by typing an exclamation mark, followed by the command number you wish to execute. For example: !22 would execute the command number 22 from my history list.

Sprucing up TCSH's default behavior

Both csh and tcsh read configuration files when they start - .cshrc and .tcshrc respectively. tcsh will also read the .cshrc file if no .tcshrc file is present. You can customize the behavior of the shell, and set environment variables in the startup files. Remember that you need to use ls -a to see files that start with a period!

Skip ahead to the Sample Configuration section for an example of a typical .tcshrc and .cshrc config file.

15.4.   Changing Passwords

Changing passwords in FreeBSD is quite simple. It is accomplished with the command passwd. When you type in the command you get:

Note that my first two attempts at a new password were not accepted. First, I picked a password that was too small, and then I picked a password that was all lower-case letters. Both passwords are easy to guess or crack, so FreeBSD refused to let me choose such weak passwords. My third attempt was more than 6 characters, and was a mix of upper and lower-case letters - that one worked. After you enter a suitable password you are asked to retype it to make sure you didn't make a mistake. That's it!

If you are root, you can change anyone's password (although you can never learn what someone else's password is) by typing passwd fred (for example). As root, you can also insist on an insecure password by ignoring the warnings. If you're on your home machine, and it's never connected to the Internet, this is probably fine.

The other related command you might want to investigate is chpass. It will let you set things for your login like what shell you want to run, your full name, and what your Office and Home phone numbers are!

Finally, if you ever want to make changes to the password file directly, you use the simple command vipw. Note that this stands for ``vi password'' which implies that you can get around in vi. (In case you were wondering, vi is an excellent text editor that is pretty much the standard on all UNIX Operating Systems - we explain it in full later on in the book.) It's a good idea to see what the password file looks like, and after you're comfortable in vi please try this command out. As with all the FreeBSD password utilities, if you do make a change, vipw automatically rebuilds the password database for you. On newer FreeBSD machines, ee, is the default editor for root. This can be changed by editing the EDITOR variable in your default .cshrc file.

15.5.   Creating/Adding Users

Adding users in FreeBSD is simple, since there is a handy little system command that does all of the work for you: adduser. Adding a user to a system involves setting up a few things, and before we step through the adduser command, it would be best for you to know exactly what has to change on your FreeBSD system for a user to ``exist''

Now that we've seen what FreeBSD needs to know in order to host a user, lets take a look at the program adduser. Adduser checks the passwd, group, and shell databases (which are built from the text files mentioned above) when adding users to make sure everything is valid. Adduser also creates a passwd/group entry for the user, a HOME-directory, dotfiles and sends the new user a welcome message! As you can see, the adduser program does pretty much everything for you, and saves a lot of time compared to the old method of manually setting up an account for a new user.

Adduser is an interactive program, meaning that by default you start it up with no arguments (command-line options) and it asks you questions, which you answer, until it has all the info needed to add the user to your system.

15.6.   Unix System Commands

Start in Late July.

15.7.   Erase and Kill Characters

Start in Late July.

15.8.   Shutting down FreeBSD

FreeBSD is a sophisticated, multi-user, multi-tasking operating system. It's not DOS. You can't simply ``power off'' with the power button on your PC without first telling FreeBSD that you wish to shutdown. If you want to know why, continue reading. Otherwise, just skip ahead to the next paragraph for the necessary commands. When your FreeBSD system is up and running, it goes through a lot of measures to optimize performance. One of the biggest ways to optimize performance is through the use of ``buffers''. When you read or write to the disk, data is moved into and out of buffers. You can think of buffers as buckets. Lets say I have a hose running, and it only reaches so far. Unfortunately, I'm still 5 meters away from my pool, and I need to get water into the pool. Obviously, it's not very efficient for my to take one glass of water at a time from the hose over to the pool. I'd use a bucket - or more precisely, I'd place the bucket under the hose, and when the bucket fills up I'd dump it into the pool. Get it? The FreeBSD equivalent is: it's slow to write to the disk, so I want to minimize the trips I have to make to the disk. So when I'm writing a file, I place the information I need into buffers until I have enough to make it worth while to go and visit that slow old hard-disk. Then I can write everything out at once. Since buffers are stored in RAM, if you just cut the power to your computer, there is a chance that some of the information you thought you wrote to the disk never actually made it there! And that would be crappy. As it turns out, FreeBSD (actually, the filesystem FreeBSD uses) ``syncs'' data from the buffers out to the hard disk every 30 seconds - but even then there is no guarantee that sync will move it to the disk right away. If the system is under low load (a measure of how busy the CPU is - usually very low on a workstation, but it could be quite high on a multi-user server) then it's unlikely that data will be sitting in a buffer for more than a couple of seconds. So, you need to tell FreeBSD to take whatever is sitting buffers and dump it to the disk. Hence, the shutdown command. It slices, it dices, it sync's, and it notifies! What more could you ask for?

To shutdown FreeBSD, you use the shutdown command! Depending on what arguments you give it, it will behave differently. For example:

shutdown -h now Tells FreeBSD to shutdown, halt the CPU, and do it now.

shutdown -r now Tells FreeBSD to shutdown, and then reboot the system. Do it now.

reboot Does the same as shutdown -r now.

When you do the shutdown command, a broadcast message will be sent to all users currently logged in that the system is going down. Instead of ``now'' you could say shutdown -h +5 which will bring the system down in 5 minutes. Every minute FreeBSD will send a broadcast message to all users warning of the impending shutdown. If you just want to kick everyone off, shutdown -k now will do so, and will also prevent anyone else from logging in!

In summary, using the FreeBSD shutdown command is not only the ``safe'' way to stop your system, but also the ``friendly way'' :-)

16.   Directories And Files

16.1.  Reading the Manual Pages
16.2.  The File System
16.3.  Viewing Text Files *
16.4.  Moving Files Around
16.5.  Managing Permissions *
16.6.  Text Editing in System Administration: vi
16.7.  IN-DEPTH VI.HELP

Start in Late July.

16.1.   Reading the Manual Pages

The FreeBSD manual pages (or manpages as they are usually called) describe nearly every user command, administrative command, library call, and file format used on the system, plus some other informative tidbits (like a built-in ASCII table). Each page includes a summary, lists all the options available with the command, and generally goes into detail about the command and refers you to related pages.

Man page information is only available on actual commands, not to aliases you set up in your .cshrc file.

To access the Manual Pages, type in man command at the Unix Command Prompt with out the quotes. Substitute the word ``command'' with the command that you are interested in learning about. For Example:

/usr/home/chris> man ls

The above command will generate a manual page explaining the use ofls. While you are viewing the man page, you can control the screen the same way you would control a more session.

Pressing these keys will result in the following:

Note:

In order to access the online man pages, you must have the man distribution installed on your system.

man searches all the directories specified in the MANPATH environment variable to find the page you requested.

You can adjust the MANPATH search string to include custom man page directories so you can add your own man pages. Man Pages are divided up in to Nine sections. The first of these contains all of the user commands.

Almost every install option in the FreeBSD sysinstall includes the manual pages. So unless you have selected the custom install and didn't choose the man pages, you should have access to them on your system

16.2.   The File System

When you are new to UNIX, especially when converting from a non-UNIX operating system like DOS or MacOS, figuring out which commands do what you want can be very frustrating. Most of the help features built in to UNIX are designed to help you figure out how to fully use a command AFTER you have discovered it.

One of the first commands that you have to learn is ls ls is a command to ``list'' or display all of the files that are present in your current path. In order to comprehend all the things that ls can show us, we need to first understand how UNIX treats files.

There four main types of files:

Regular files include programs, data files, pictures, binary executables, etc... These account for almost all of the files that will exist on your system.

Directories are files that allow you to contain other files in them. On windows and the Mac systems they are called "folders." All regular files are contained inside a directory. Directories can be contained in side of other directories, these are called sub-directories. Dos users will notice that the directory separator in UNIX is the opposite direction from that in DOS. For more information on directories see the man pages on pwd cd mkdir and rmdir

Devices are accessed through special files that are contained in the /dev directory. These files allow you to control various parts of the computer, such as your modem or floppy disk. Device drivers access these files to give instructions to things like your mouse or sound card.

Also reference the man pages for: MAKEDEV, mknod, and

Link files are a lot like pointers in C. Links come in two types: real links and symbolic links. Real links are actually another name for the file. A real link has a few limitations, it can't be linked to a directory and it must exist on the same physical disk and disk partition. However symbolic links, or symlinks as some people call them, don't have this limitation. A link to a file allows you to move the file from it's original place, and still allow programs that depend on it to find it. A Symlink can be thought of as a shortcut to a file. ``Shortcuts'' in Win95 work exactly the same way. Deleting the symlink doesn't delete the actual file, just the shortcut to it. For more information on links, see the man page for ln

Every file has certain properties. These consist of:

X|Kind of File|
v|Read Write|X|Number of Links|
v|Execute   |v|     |       |        |     |   |time|         |
v|permission|v|Owner| Group |  Size  |month|day|year|File Name|
crw-rw-rw-   1 root   wheel    	2,  12 Aug  28  1996 zero
brw-r-----   1 root   operator  0,   7 Aug  28  1996 wd0h
brw-r-----   1 root   operator  0, 146 Aug  28  1996 wd0s3
brw-r-----   1 root   operator  0, 682 Aug  28  1996 wd0s4
-r-xr-xr-x   1 bin    bin   	45056  Feb  28 04:05 cat
-r-xr-xr-x   1 bin    bin   	53248  Feb  28 04:05 chmod
-rw-rw-r--   1 chrisc bsdbook    416   Mar  24 23:09 .cshrc
-rw-rw-r--   1 chrisc bsdbook    420   Mar  24 23:09 .login
-rw-rw-r--   1 chrisc bsdbook      0   Mar  10 13:38 help
drwx------   2 chrisc bsdbook    512   Apr   3 01:46 mail
drwxrwxr-x   5 chrisc bsdbook    512   Mar  24 23:22 public_html
lrwxr-xr-x   1 root   wheel  	 11    Mar  23 22:56 sys -> usr/src/sys

Files that begin with a ``.'' are hidden files, and are not usually displayed by ls and by default they are not acted upon by most other programs.

There are two special files that exist in every directory: . and .. these refer to the ``current'' and ``previous'' directories respectively.

16.3.   Viewing Text Files *

16.3.1.  CAT:
16.3.2.  MORE:
16.3.3.  TAIL:
16.3.4.  HEAD:

Most of the work you do as a system administrator involves text files. Either you are checking a config file, or viewing a log file. To accomplish the job of displaying text files, Unix provides several different tools.

16.3.1.   CAT:

cat is short for concatenate. If you don't redirect it elsewhere, cat will display a file to the standard output, namely the monitor you are looking at. cat displays the file as fast as possible, and will not stop for page breaks. For Example:

cat myfile

will display the contents of ``myfile'' to the screen. However, if that file happens to be a non-text file, such as a binary file, you would see all of the binary escape codes; it might not be a pretty sight.

If more than one filename is specified, cat will display them one after the other, in order, without pausing, as though they were one file. By using the redirection operator > you can concatenate two or more files together and create a third file that contains all the information from the other files.

For example:

cat file1 file2 file3 > file4

In this example, file4 would contain all the information from files 1,2, and 3. It would not matter if this was a text file or a binary file, because the information would never be shown to the screen.

16.3.2.   MORE:

But what if while we are using cat we have a file that is too long to fit on one screen, and we really want to read what it says as it scrolls past us at sub-light speed. Over the years people have come up with several programs to make the display pause for page breaks and let us read the page before showing us a new one. One of the first and more popular ways is more Two other commands, less and page have recently become popular. Currently, less is just a hacked version of more Fundamentally more</