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

16.3. Diskless Operation

Contributed by Martin Renters .

netboot.com/netboot.rom allow you to boot your FreeBSD machine over the network and run FreeBSD without having a disk on your client. Under 2.0 it is now possible to have local swap. Swapping over NFS is also still supported.

Supported Ethernet cards include: Western Digital/SMC 8003, 8013, 8216 and compatibles; NE1000/NE2000 and compatibles (requires recompile)

16.3.1. Setup Instructions

  1. Find a machine that will be your server. This machine will require enough disk space to hold the FreeBSD 2.0 binaries and have bootp, tftp and NFS services available. Tested machines:

    • HP9000/8xx running HP-UX 9.04 or later (pre 9.04 doesn't work)

    • Sun/Solaris 2.3. (you may need to get bootp)

  2. Set up a bootp server to provide the client with IP, gateway, netmask.

  3. Set up a TFTP server (on same machine as bootp server) to provide booting information to client. The name of this file is cfg.X.X.X.X (or /tftpboot/cfg.X.X.X.X, it will try both) where X.X.X.X is the IP address of the client. The contents of this file can be any valid netboot commands. Under 2.0, netboot has the following commands:

    help print help list
    ip X.X.X.X print/set client's IP address
    server X.X.X.X print/set bootp/tftp server address
    netmask X.X.X.X print/set netmask
    hostname name print/set hostname
    kernel name print/set kernel name
    rootfs ip:/fs print/set root filesystem
    swapfs ip:/fs print/set swap filesystem
    swapsize size set diskless swapsize in Kbytes
    diskboot boot from disk
    autoboot continue boot process
    trans on|off turn transceiver on|off
    flags bcdhsv set boot flags

    A typical completely diskless cfg file might contain:

        swapsize 20000
        hostname myclient.mydomain

    A cfg file for a machine with local swap might contain:

        hostname myclient.mydomain
  4. Ensure that your NFS server has exported the root (and swap if applicable) filesystems to your client, and that the client has root access to these filesystems A typical /etc/exports file on FreeBSD might look like:

        /rootfs/myclient -maproot=0:0 myclient.mydomain
        /swapfs -maproot=0:0 myclient.mydomain

    And on HP-UX:

        /rootfs/myclient -root=myclient.mydomain
        /swapfs -root=myclient.mydomain
  5. If you are swapping over NFS (completely diskless configuration) create a swap file for your client using dd. If your swapfs command has the arguments /swapfs and the size 20000 as in the example above, the swapfile for myclient will be called /swapfs/swap.X.X.X.X where X.X.X.X is the client's IP addr, eg:

        # dd if=/dev/zero of=/swapfs/swap. bs=1k count=20000

    Also, the client's swap space might contain sensitive information once swapping starts, so make sure to restrict read and write access to this file to prevent unauthorized access:

        # chmod 0600 /swapfs/swap.
  6. Unpack the root filesystem in the directory the client will use for its root filesystem (/rootfs/myclient in the example above).

    • On HP-UX systems: The server should be running HP-UX 9.04 or later for HP9000/800 series machines. Prior versions do not allow the creation of device files over NFS.

    • When extracting /dev in /rootfs/myclient, beware that some systems (HPUX) will not create device files that FreeBSD is happy with. You may have to go to single user mode on the first bootup (press control-c during the bootup phase), cd /dev and do a sh ./MAKEDEV all from the client to fix this.

  7. Run netboot.com on the client or make an EPROM from the netboot.rom file

16.3.2. Using Shared / and /usr filesystems

At present there isn't an officially sanctioned way of doing this, although I have been using a shared /usr filesystem and individual / filesystems for each client. If anyone has any suggestions on how to do this cleanly, please let me and/or the FreeBSD core team know.

16.3.3. Compiling netboot for specific setups

Netboot can be compiled to support NE1000/2000 cards by changing the configuration in /sys/i386/boot/netboot/Makefile. See the comments at the top of this file.