Novell Home

Network Installation of SUSE Linux via PXE Boot

Novell Cool Solutions: Feature

Digg This - Slashdot This

Posted: 2 Apr 2004
 

Want to install SUSE Linux Enterprise Server 8 or SUSE Linux version 8.1/8.2 on a machine bootable through PXE on the network? Here's how you do it.

The Preboot Execution Environment (in short PXE) is a protocol that enables a computer to be booted on the network. PXE is saved in ROM's newest network cards and, depending on the boot sequence configured in the computer's BIOS, loaded and executed after turning on the computer. After the start, a boot menu containing the different boot options is displayed.

Some technical background information as well as PXE's complete specifications are available at:
ftp://download.intel.com/labs/manage/wfm/download/pxespec.pdf

Prerequisites for PXE are:

  • a DHCP server for the automatic allocation of IP addresses to PXE clients
  • a nfs or ftp server for providing the installation source (installation repository)
  • a tftp server for providing the kernel boot images needed to start the PXE client

Although these three server services can be configured on different machines, for the purposes of this example we assume that they are located on a single machine. In addition, this article only refers to the provision of the installation repository through NFS and does not describe the configuration of an ftp server as the installation source. The article deals only with the settings required in addition to the existing DHCP server configuration. The configuration of the "installation server" described in these lines applies to a SUSE Linux Enterprise Server 8 standard installation. However, they can also be implemented with SUSE Linux version 8.1 and higher (with the corresponding adaptions).

DHCP Server Configuration

Configure your DHCP server according to your network's requirements. After making sure that the automatic address allocation for the clients works properly and reliably, edit the file /etc/dhcpd.conf and append the following lines:

group {
  # PXE related stuff ...
  #
  # "next-server" defines the tftp server which will serve the 
  pxelinux image to the PXE clients.  
  next-server 192.168.100.1;
  #
  # "filename" specifies the pxelinux image on the tftp server 
  which will be served to the PXE clients.
  # The configured tftp server on 192.168.100.1 runs in a "change-root 
  jail" to /srv/tftpboot filename "pxelinux.0";

  host Zert120 { hardware ethernet 00:10:dc:95:d7:b7; }
}
  • next-server (here 192.168.100.1) specifies the IP address of the tftp server providing the boot loader pxelinux, the boot image to be booted, and initrd for the PXE clients.
  • filename defines the pxelinux boot loader image to be booted provided for the PXE clients.
  • host defines the network card's host name and hardware address of a PXE client for which the previous options must be valid. The hardware address (00:10:dc:95:d7:b7 in this case) and the host name selected for the client (Zert120 in this case) must be entered here. You can boot several clients from the tftp server by entering several hosts lines here.

Now restart the DHCP server by executing rcdhcpd restart.

The man page of dhcpd.conf provides you with detailed information on the described options. It can be accessed with man 5 dhcpd.conf.

Installation Repository Setup and NFS Server Configuration

  • To set up an installation repository for SUSE Linux Enterprise Server 8, proceed as described in the SDB article http://support.novell.com/techcenter/sdb/en/2003/03/rschmid_slesnfs.html.
  • To set up an installation repository for SUSE Linux 8.1 or 8.2, proceed as follows:
    • Copy the installation CDs in a directory of your choice (e.g. /usr/local/dist/SUSE82)
  • Change to that directory and execute the following command:
perl -pi -e 's/InstPath:\t0[2|3|4|5|6|7]/InstPath:\t01/' common.pkd

After restarting the NFS server with rcnfsserver restart, the line:

/usr/local/dist/SLES8 192.168.100.0/255.255.255.0(ro,no_root_squash,sync)

in the file /etc/exports exports the installation repository (the directory /usr/local/dist/SLES8 in this case) for the network 192.168.100.0. This entry must be adapted according to your network configuration and your installation repository directory.

The man page of exports provides you with detailed information on the options available for the NFS server. It can be accessed with man 5 exports.

tftp Server Configuration

  • If still unavailable, create the directories /srv/tftpboot and /srv/tftpboot/pxelinux.cfg
  • Change to the directory of your installation repository and copy the file linux initrd message memtest in the directory /srv/tftpboot by entering
cp -a boot/loader/linux boot/loader/initrd boot/loader/message 
      boot/loader/memtest /srv/tftpboot
  • Install the package syslinux.
    • If SUSE Linux Enterprise Server 8 is installed on the installation server, download the package from: ftp://ftp.suse.com/pub/suse/i386/8.2/suse/i586/syslinux-1.62-375.i586.rpm and install it with:
    rpm -Uhv syslinux-1.62-375.i586.rpm
    • If SUSE Linux 8.1 or 8.2 is installed on the installation server, install the package directly from your installation CDs with YaST2.
  • Copy the file /usr/share/syslinux/pxelinux.0 in the directory /srv/tftpboot by entering
    cp -a /usr/share/syslinux/pxelinux.0 /srv/tftpboot
  • Change to the directory of your installation repository and copy the file isolinux.cfg in /srv/tftpboot/pxelinux.cfg/default by entering
    cp -a boot/loader/isolinux.cfg 
         /srv/tftpboot/pxelinux.cfg/default
  • Edit the file /srv/tftpboot/pxelinux.cfg/default and remove the lines beginning with:
    • gfxboot
    • readinfo
    • framebuffer
  • Insert the following entries in the append lines of the labels default failsafe and apic:
    • insmod=e100 By means of this entry, the kernel module for an Intel 100MBit/s network card is loaded on the PXE clients. This entry depends on the client's hardware and must be adapted accordingly. In the case of a Broadcom GigaBit network card, this entry will read insmod=bcm5700.
    • netdevice=eth0 This entry defines the client's network interface that must be used for the network installation. It is only necessary if the client is equipped with several network cards and must be adapted accordingly. In case of a single network card, this entry can be omitted.
    • install=nfs://192.168.100.1/usr/local/dist/SLES8 This entry defines the NFS server and the installation source for the client installation. It might be necessary to adapt it.
    • A /srv/tftpboot/pxelinux.cfg/default adapted for the network installation of SUSE Linux Enterprise Server 8 follows:
default linux

# default
label linux
  kernel linux
  append initrd=initrd ramdisk_size=65536 insmod=e100 
      install=nfs://192.168.100.1/usr/local/dist/SLES8

# failsafe
label failsafe
  kernel linux
  append initrd=initrd ramdisk_size=65536 ide=nodma apm=off 
   acpi=off insmod=e100 install=nfs://192.168.100.1/usr/local/dist/SLES8

# apic
label apic
  kernel linux
  append initrd=initrd ramdisk_size=65536 apic insmod=e100
   install=nfs://192.168.100.1/usr/local/dist/SLES8

# manual
label manual
  kernel linux
  append initrd=initrd ramdisk_size=65536 manual=1

# rescue
label rescue
  kernel linux
  append initrd=initrd ramdisk_size=65536 rescue=1

# memory test
label memtest
  kernel memtest

# hard disk
label harddisk
  kernel linux
  append SLX=0x202

implicit        0
display         message
prompt          1
timeout         100
    • Edit the file /etc/inetd.conf and remove the # sign in the line:
    # tftp          dgram   udp     wait    root     
     /usr/sbin/in.tftpd  in.tftpd -s /tftpboot
    • Change the line as follows:
    tftp          dgram   udp     wait    root     
     /usr/sbin/in.tftpd  in.tftpd -s /srv/tftpboot -r blksize
    and restart inetd by executing rcinetd restart.

    When you now boot a PXE client on the network, it receives an IP address from the DHCP server. Then the client requests a PXE boot loader (pxelinux.0) that will be executed on the client. The boot loader analyzes the client IP address and converts it to HEX. Then it searches in the server (directory /srv/tftpboot/pxelinux.cfg) for a configuration file with the same name as the detected HEX value. In case it does not find any, a figure will be subtracted from this value and the search will be repeated. If it does not find any suitable configuration file, the configuration file default is eventually used and read. In the example above, the installation menu of SUSE Linux Enterprise Servers 8 is displayed in text mode for all PXE clients. This mechanism enables various clients to create different boot configurations. For additional information refer to the package syslinux at /usr/share/doc/packages/syslinux/pxelinux.doc and /usr/share/doc/packages/syslinux/syslinux.doc. After having selected a menu entry, you can proceed with the installation as described in the manual.


    Novell Cool Solutions (corporate web communities) are produced by WebWise Solutions. www.webwiseone.com

© 2014 Novell