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

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.

        diskless:\
                :ht=ether:\
                :ha=0000c01f848a:\
                :sm=255.255.255.0:\
                :hn:\
                :ds=192.1.2.3:\
                :ip=192.1.2.4:\
                :gw=192.1.2.5:\
                :vm=rfc1048:
    
  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:

        rootfs 192.1.2.3:/rootfs/myclient
        swapfs 192.1.2.3:/swapfs
        swapsize 20000
        hostname myclient.mydomain
    

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

        rootfs 192.1.2.3:/rootfs/myclient
        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.192.1.2.4 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.192.1.2.4
    
  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.