2.12 Advanced Installation Guide

Contributed by Valentino Vaschetto.

This section describes how to install FreeBSD in exceptional cases.

2.12.1 Installing FreeBSD on a System without a Monitor or Keyboard

This type of installation is called a "headless install", because the machine that you are trying to install FreeBSD on either does not have a monitor attached to it, or does not even have a VGA output. How is this possible you ask? Using a serial console. A serial console is basically using another machine to act as the main display and keyboard for a system. To do this, just follow these steps:

  1. Fetch the Right Boot Floppy Images

    First you will need to get the right disk images so that you can boot into the install program. The secret with using a serial console is that you tell the boot loader to send I/O through a serial port instead of displaying console output to the VGA device and trying to read input from a local keyboard. Enough of that now, let's get back to getting these disk images.

    You will need to get kern.flp and mfsroot.flp from the floppies directory.

  2. Write the Image Files to the Floppy Disks.

    The image files, such as kern.flp, are not regular files that you copy to the disk. Instead, they are images of the complete contents of the disk.

    This means that you can not use commands like DOS' copy to write the files. Instead, you must use specific tools to write the images directly to the disk.

    If you are creating the floppies on a computer running DOS then we provide a tool to do this called fdimage.

    If you are using the floppies from the CDROM, and your CDROM is the E: drive then you would run this:

        E:\> tools\fdimage floppies\kern.flp A:

    Repeat this command for each .flp file, replacing the floppy disk each time. Adjust the command line as necessary, depending on where you have placed the .flp files. If you do not have the CDROM then fdimage can be downloaded from the tools directory on the FreeBSD FTP site.

    If you are writing the floppies on a Unix system (such as another FreeBSD system) you can use the dd(1) command to write the image files directly to disk. On FreeBSD you would run:

        # dd if=kern.flp of=/dev/fd0

    On FreeBSD /dev/fd0 refers to the first floppy disk (the A: drive). /dev/fd1 would be the B: drive, and so on. Other Unix variants might have different names for the floppy disk devices, and you will need to check the documentation for the system as necessary.

  3. Enabling the Boot Floppies to Boot into a Serial Console

    Warning: Do not try to mount the floppy if it is write-protected

    If you were to boot into the floppies that you just made, FreeBSD would boot into its normal install mode. We want FreeBSD to boot into a serial console for our install. To do this, you have to mount the kern.flp floppy onto your FreeBSD system using the mount(8) command.

        # mount /dev/fd0 /mnt

    Now that you have the floppy mounted, you must change into the floppy directory

        # cd /mnt

    Here is where you must set the floppy to boot into a serial console. You have to make a file called boot.config containing "/boot/loader -h". All this does is pass a flag to the bootloader to boot into a serial console.

        # echo "/boot/loader -h" > boot.config

    Now that you have your floppy configured correctly, you must unmount the floppy using the umount(8) command

        # cd /
        # umount /mnt

    Now you can remove the floppy from the floppy drive

  4. Connecting Your Null Modem Cable

    You now need to connect a null modem cable between the two machines. Just connect the cable to the serial ports of the 2 machines. A normal serial cable will not work here, you need a null modem cable because it has some of the wires inside crossed over.

  5. Booting Up for the Install

    It is now time to go ahead and start the install. Put the kern.flp floppy in the floppy drive of the machine you are doing the headless install on, and power on the machine.

  6. Connecting to Your Headless Machine

    Now you have to connect to that machine with cu(1):

        # cu -l /dev/cuaa0

That's it! You should be able to control the headless machine through your cu session now. It will ask you to put in the mfsroot.flp, and then it will come up with a selection of what kind of terminal to use. Just select the FreeBSD color console and proceed with your install!

This, and other documents, can be downloaded from ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.