Booting from network

PA-RISC/Linux Boot HOWTO
Prev | Chapter 4. Available boot solutions | Next

# 4.3. Booting from network

Booting from the network is only required in certain cases. Booting from the network is very usefull when you have unsupported I/O devices, diskless systems, or systems with broken hardware. Network booting is detailed below.

## 4.3.1. Preparing to boot from network

Booting from the network involves two machines: the boot server and the boot client, the latter being the PA-RISC system you are trying to start up, and the former, the machine that will serve over the network the files which the client needs. The rest of this section will extensively deal with setting up the boot server since this is probably the trickiest part.

| You will need a lifimage to perform a network boot. See Section 3.2 to learn how to create one. You can also use the one from Debian Installer.

| Needless to say, all server-side setup is meant to be performed by the super-user, also known as `root`.

## 4.3.2. rboot or bootp?

All 'recent' machines can boot using `BOOTP`, starting from 715/100, 715/120, and 712s. Older ones, mostly early 715s, 710s and 725s need `RBOOT`.

| To use `BOOTP` you have to enable the IP: Kernel level autoconfiguration->IP: BOOTP support within the '`Networking options`' section of the kernel configuration, if you want to use a home-made kernel. See Chapter 5 for details.

Please note that though Section 4.3.3 deals with `RBOOT` only, two different implementations of the `BOOTP` protocol are detailed in Section 4.3.4 and Section 4.3.5. We detail these two because we can, but if you need to use the `BOOTP` protocol, you will have to choose one.

| If you don't know which `BOOTP` implementation to use, go for the dhcp one, it is much easier to deal with.

## 4.3.3. Using rboot

### 4.3.3.1. Obtaining rbootd

If you have an old machine that requires rboot to boot over network, use the following procedure to set up and configure a boot server, and boot using the PA-RISC/Linux kernel.

Old machines, including the Scorpio 715s, use the `RBOOT` protocol. You need rbootd to handle their boot requests. Look for it in your favorite distribution archive (assuming you will be servicing boot requests from a Linux box). Here are two ways of getting the rboot daemon:

- If you are using a Debian-powered server (which you really should be doing ;o), you're almost done. Run from a command shell:

      [user@machine ~/dir]> apt-get install rbootd

- If you can't find any rbootd package for your system (which is very possible since it is a very old netboot protocol), you can find its source in the Debian archive: rbootd. You will have to build it from source.

### 4.3.3.2. Configuring rbootd

As we already said, to boot a `RBOOT`-aware system, you need a separate machine with rbootd installed (this is the 'boot server') on which you will store the PA-RISC/Linux kernel lifimage that you want to use to boot your PA-RISC system with.

Once the rbootd server software is installed, read the following to configure it to work with your PA-RISC system:

In `/etc/rbootd.conf` you will have to add a line like:

    ethernet_addr            bootfile

1. Replace `bootfile` with the name of your PA-RISC/Linux kernel image, usually '`lifimage`'.

2. Now get the Ethernet address of your PA-RISC system by typing lanaddress at the '`BOOT_ADMIN>`' prompt (see Section 2.1.2.3).

   It will return a number like `080009-7004b6`. Take note of this number.

3. In `/etc/rbootd.conf` on your boot server, the Ethernet address has to be colon-delimited. That means you will have to modify the number you just obtained so that every set of two characters (after removing the '-') is separated by a colon. For example: `080009-7004b6` becomes `08:00:09:70:04:b6`. Add the colon delimited Ethernet address to `/etc/rbootd.conf` on your boot server. The resulting file will look something like this:

       # ethernet addr        boot file           comments

       08:00:09:87:e4:8f      lifimage_715        # PA/Linux kernel for 715/33
       08:00:09:70:04:b6      lifimage_720        # PA/Linux kernel for 720

   This `rbootd.conf` example contains the Ethernet addresses and boot file names for two different machines.

   Once you have changed the configuration file, restart rbootd.

By default, rbootd assumes that bootfiles are located in `/var/lib/rbootd/`. Therefore, you will have to put your bootable kernel image in that directory, or, if you really hate that directory for some reason, you can rebuild rbootd to use a different directory.

The easiest thing, of course, is just to drop your kernel images in the default directory!

## 4.3.4. Using dhcp/tftp

We will see here how to setup a `DHCP` server to handle `BOOTP` requests (since PA-RISC box use `BOOTP`, unless they need `RBOOT`, as mentioned above).

| Windows™ users might want to look at Appendix A.

### 4.3.4.1. Obtaining dhcp/tftp

Debian users will just have to install the packages using the following commands, executed as `root`:

    [user@machine ~/dir]> apt-get install dhcp tftpd

If you need rpm packages (for the ISC dhcp server), the best way is to go to http://rpmfind.net/.

| The dhcp package can do much more than a simple bootp daemon. Nevertheless, it is also known to be much easier to configure. If you really want to try regular bootp, skip this and go to Section 4.3.5.

### 4.3.4.2. Configuring dhcp/tftp

Here are the instructions to set up dhcp on your boot server. To keep this explanation simple, we will assume that you want to assign a fixed IP to your box, without DNS update. Your subnet will be `192.168.1.0/24`, with optional: gateway at `192.168.1.1`, domain name `foo.com` and DNS at `192.168.1.4`. Feel free to replace these values with those which would suit your needs in the next sections.

| This section is dedicated to Debian users. For others distributions, it should be similar though there may be some differences like default directories.

1. Edit `/etc/inetd.conf` on your boot server to add the following line, if it doesn't already exist:

       tftp           dgram   udp     wait    nobody  /usr/sbin/tcpd \
       														/usr/sbin/in.tftpd /tftpboot

   Here, `/tftpboot/` is being used as tftpd server's root (this is where you will put the lifimage file). You can choose another directory if you want. According to man tftpd, this is the usual default directory.

   When this is done, reload inetd with: /etc/init.d/inetd reload. Non-Debian users can also issue a killall -HUP inetd.

2. According to man 5 dhcpd.conf, edit the `/etc/dhcpd.conf` file to contain something like:

       allow bootp;
       default-lease-time 600;
       max-lease-time 7200;
       # This will tell the box its hostname while booting:
       use-host-decl-names on;

       subnet 192.168.1.0 netmask 255.255.255.0 {
       		option routers 192.168.1.1;
       		option domain-name "foo.com";
       		option domain-name-server 192.168.1.4;
       }

       host [hostname] {
       		hardware ethernet [mac address];
       		fixed-address [ip address];
       		filename "[boot filename]";
       		option root-path "[root path]";
       }

   You have to fill in the `[hostname]`, `[mac address]`, `[ip address]`, `[boot filename]` and `[root path]` fields with the appropriate information, where:

   - `[hostname]` is the name of the PA-RISC system.

   - `[mac address]` is the colon-delimited ethernet address of the PA-RISC system, which can be obtained by typing lanaddress at the '`BOOT_ADMIN>`' prompt (see Section 2.1.2.3).

   - `[ip address]` is the IP address you wish to assign to the PA-RISC system.

   - `[boot filename]` is the name of the bootable kernel image you want to boot your system with.

   - `[root path]` is the path to the NFS root filesystem exported by the server.

   - Additionally, if the tftp server you want to use is not the same as the one running the dhcp server, you can add `next-server `[ip address]`;`, replacing `[ip address]` with the actual IP of the tftp server, to the dhcp configuration.

   You'll end up with something like this for each box you want to netboot:

       host tatooine {
       		hardware ethernet 00:40:05:18:0c:dd;
       		fixed-address 192.168.1.22;
       		filename "lifimage-tatooine";
       		option root-path "/exports/tatooineroot";
       }

## 4.3.5. Using bootp/tftp

### 4.3.5.1. Obtaining bootp/tftp

For Debian users, you just have to install the packages by typing these commands as user `root`:

    [user@machine ~/dir]> apt-get install bootp tftpd

If you need rpm packages, the best way is to go to http://rpmfind.net/.

| You'll have been warned! This daemon is far more obfuscated in its configuration.

### 4.3.5.2. Configuring bootp/tftp

Follow these instructions to use the bootp daemon on your boot server:

| This section is dedicated to Debian users. For others distributions, it should be similar though there may be some differences like default directories.

1. Edit `/etc/inetd.conf` on your boot server to add the following lines, if they don't already exist:

       tftp            dgram   udp     wait    nobody  /usr/sbin/tcpd       \
       											/usr/sbin/in.tftpd /tftpboot
       bootps          dgram   udp     wait    root    /usr/sbin/bootpd     \
       														bootpd -i -t 120

   Here, `/tftpboot/` is being used as tftpd server's root (this is where you will put the lifimage file). You can choose another directory if you want. According to man tftpd, this is the usual default directory.

   When this is done, reload inetd with: /etc/init.d/inetd reload. Non-Debian users can also issue a killall -HUP inetd.

2. According to man 5 bootptab, edit the `/etc/bootptab` file to contain:

       [hostname]:hd=/tftpboot:\
       			:rp=[root path]:\
       			:ht=ethernet:\
       			:ha=[mac address]:\
       			:ip=[ip address]:\
       			:bf=[boot filename]:\
       			:sm=255.255.255.0:\
       			:to=7200:

   You have to fill in the `[hostname]`, `[mac address]`, `[ip address]` and `[root path]` fields with the appropriate information, where:

   - `[hostname]` is the name of the PA-RISC system.

   - `[mac address]` is the NOT-delimited ethernet address of the PA-RISC system, which can be obtained by typing lanaddress at the '`BOOT_ADMIN>`' prompt (see Section 2.1.2.3).

   - `[ip address]` is the IP address you wish to assign to the PA-RISC system.

   - `[boot filename]` is the name of the bootable kernel image you want to boot your system with.

   - `[root path]` is the path to the NFS root filesystem exported by the server.

   You'll end up with something like this:

       vodka:hd=/tftpboot:\
       	 :rp=/usr/src/parisc/:\
       	 :ht=ethernet:\
       	 :ha=080069088717:\
       	 :ip=140.244.9.208:\
       	 :bf=lifimage:\
       	 :sm=255.255.255.0:\
       	 :to=7200:

## 4.3.6. Effectively booting from network

To conclude with the developers' way to boot the kernel, this section will tell you how to actually boot your system from a network server. But it tends to be less and less used. Most users will prefer to stick to Section 4.2 once their system is properly setup.

Here we are. We assume that you've done everything outlined above, your network boot server is on the same physical subnet as your PA-RISC machine, you've got a bootable PA/Linux kernel lifimage on your boot server, and you're willing to give it a try. If everything is ready (including you!), the following procedure will introduce you to the joy of network booting your PA box into Linux.

1. Fire up your PA-RISC system.

2. Watch your PA-RISC box starting up. When the following message appears during the PA-RISC machine's boot process, press and hold the Esc key:

       Searching for Potential Boot Devices.
       To terminate search, press and hold the ESCAPE key.

3. If needed, select '`a) Enter Boot Administration mode`' from the menu. This brings up the '`BOOT_ADMIN>`' prompt.

4. Type the following at the prompt: boot lan.

5. Watch your PA-RISC system magically becoming a PA/Linux system. Ta dah!

| Of course your are supposed to run only one boot server at a time on your network, in order to avoid conflicts...

Prev | Home | Next
Booting from hard drive | Up | Building and installing a custom kernel