Diskless Remote Boot in Linux

Setup DRBL server - III. Set up the file system for the client in the Server

  • Arrange your environment and make sure you know it.
  • Taking NCHC's computer class room C as an example: There are 40 computers. In order to get DRBL to work more efficiently, we separated them to 4 subnets:,, and There are four Ethernet cards in DRBL server. One is for WAN and the others are for LAN. The IPs of DRBL environment (LAN) are,, and The services DHCP, TFTP, NFS, etc will run on eth0:1, eth1, eth2, and eth3.
             NIC    NIC IP                    Clients
    | |
    |+-- [eth0] public IP +- to WAN
    | (ex. |
    | |
    |+-- [eth0:1] +- to clients group 1 [ 10 clients, their IP
    | | from -]
    |+-- [eth1] +- to clients group 1 [ 10 clients, their IP
    | | from -]
    |+-- [eth2] +- to clients group 2 [ 10 clients, their IP
    | | from -]
    |+-- [eth3] +- to clients group 3 [ 10 clients, their IP
    | | from -]
  • There are four modes available from DRBL version 1.6.3 or later: Full DRBL, Full Clonezilla, DRBL SSI (Single System Image) and Clonezilla Box. The network bandwidth and disk space requirement are higher in the former two modes, but all the system setting will be saved to server's disk, and every client can have its own individual setting. On the other hand, the DRBL SSI uses single system image for all clients, and the necessary individual settings of clients are created run-time when they boot. This will reduce the required disk space in the server since only one image is necessary. However, the disadvantage is every client can NOT have its own individual system setting (Users' setting will be saved to server). In DRBL SSI mode, once there are extra client nodes want to join DRBL environment, all you have to do is modify the dhcpd config file (dhcpd.conf), then use "dcs -> others -> gen_3N_conf" to create or run "drbl-3n-conf generate", the necessary files will be created. In this mode, theoretically one network card in the server can provide 253 clients. The fourth mode, Clonezilla box mode, is based on DRBL SSI mode, especially for clone system. If you want to use DRBL SSI mode, make sure your client has large memory (say > 512 MB), and all the hardware (especially the graphic card) in the clients are the same. Check this comparison table for these four modes.

  • Notes for network switch and NICs when using multiple NICs:

    When you use multiple NICs to expand the bandwidth, we recommend you set the MAC addresses so that every node will get the same IP address all the time. (i.e. in the following step 3a, when you run "drblpush -i", it prompts "Do you want to fix the IP address of client connected to eth1 by giving MAC address ? [y/N]", choose "Y"). If you do NOT set MAC address (we will call it "range" from now), and you have only one 48-port network switch (or many switches but connected to be one), and you use four NICs (or more than two...) in DRBL server to expand the network bandwidth, a problem will occur (i.e. some clients will not lease IP from DHCP server) so it will not be able to boot.
    On the other hand, if your DRBL server uses four NICs to expand the network bandwidth (meaning that four NICs with four private subnets such as 192.168.100.x, 192.168,101,x, 192.168.102.x, 192.168.103.x), and you have exactly four switches that are separated and not connected to each other, then you can use range (i.e. you do not have to set the MAC address of clients).
    Remember, if you use N NICs to expand network bandwidth in the DRBL server, if using the "range" method, then you must have N switches and they can NOT be connected to each other.

  • Before executing step <3a>, you can do some customized config:
    1. If you have some specific directories in this DRBL server to share, such as /work1, then you can use text editor to open file /etc/drbl/drbl.conf, edit the diskless_root_dir_ro_user_add="/work1"(If you want /work1 can only be read by clients, not writable), or diskless_root_dir_rw_user_add="/work1"(If you want /work1 to be readable and writable by clients. (Warning!!! drbl.conf is VERY IMPORTANT, be careful when you edit it!!!)
    2. If all the clients have their local harddisk, and the partition is formated (For example, /dev/hda1, its filesystem is ext3), then if you want the client to mount /dev/hda1 as /localwork when booting. Therefore you can edit /etc/drbl/client-append-fstab, and its syntax is just like /etc/fstab. In this example, you can make /etc/drbl/client-append-fstab like this:
      /dev/hda1 /localwork ext3 defaults 0 0
      (PS: You do not have to create the directory /tftpboot/node_root/localwork in DRBL server manually, later drblpush will do that for you)
    3. If you have extra services (such as apmd and bluetooth) to be on when client boots, you can edit /etc/drbl/client-extra-service, let service_extra_added="apmd bluetooth".
    4. If you want to overwrite some or all automatically created hostnames later by "drblpush -i", you can edit "/etc/drbl/client-ip-hostname" now. Check that file for the format. If some machines are not assigned, drblpush will use those automatically created hostname.

  • <Step 3a> run "drblpush -i". The software will auto-detect the system to figure out the argument. If the argument is not set up in the system, the system will request you to do that. Example: see here.

  • Note!!! If newer packages are installed in the server after this step, you have to run "drblpush -i" or "drblpush -c /etc/drbl/drblpush.conf" (This will loaded the previously saved settings) again so that newer packages will be deployed to clients.
  • Note!!! It is not recommended to turn on the system update automatically. Since If newer packages are installed in the server automatically, without running "drblpush -i", the programs for client might not be compatible with that newer in server. If you want to turn on system update automatically, remember to follow the above step to update the files in client automatically.

Continue the next step - IV. Setting up clients to use the DRBL environment