SuSE install with PXE boot

Şuraya atla: kullan, ara

Introduction

Since the SUSE Linux distribution is very up to date, it changes often. Thus, it could be pleasant to install systems without burning new CDs or DVDs for each installation. So here is the best way to install SuSE fully from network.

PXE is way to start computers without Floppy/Hard Disk/CD-ROM - that is - the BIOS will start right from the network using the PXE protocol. Of course, in order for PXE to work the server needs OS configuration , and the client side needs a LAN card (NIC) *and* a BIOS that support PXE. Few OSes support PXE Server configuration - but Windows 2000 Server & SUSE Linux do.

Getting ready

For a successfull networked install, you should have:

  • an existing SuSE Linux (hosting DHCPd and tftpd),
  • an internet connection (broadband highly recommended),
  • a networked target system supporting PXE boot.

Configuring DHCPd & TFTP server

DHCPd config

PXE boot is based on a BOOTP server which will send all the essential information for the system to start its network layer. That job could be done with the well known DHCPd server included in SuSE distribution since you set up a static configuration. Here is the typical configuration (default configuration file is /etc/dhcpd.conf):

  host target_host {
     hardware ethernet xx:xx:xx:yy:yy:yy;
     fixed-address 192.168.1.10;
     server-name "192.168.1.1";
     filename "pxelinux.0";
  }

Notice that 2 lines are added specialy for the PXE boot. Indeed it is necessary to specify the TFTP boot server IP (server-name) and the filename containing PXE bootstrap (filename). You need to (re)start the DHCPd server as follows:

 # rcdhcpd restart

TFTP config

It is recommended to use atftp package because atftp is the only free TFTP server complying with all RFC. Once installed, you should check that everything is OK in /etc/sysconfig/atftp. Here is the typical configuration:

 ATFTPD_OPTIONS="--daemon --user tftp -v"
 ATFTPD_USE_INETD="no"
 ATFTPD_DIRECTORY="/srv/tftpboot"

In this example, note that the tftp root directory is set to /srv/tftpboot. You need to (re)start the TFTP server as follows:

 # rcatftpd restart

Please Note: The default tftp server that accompanies RedHat Enterprise Linux will do just fine. And will not require any further configuration. Simply start the service using the following command.

  chkconfig tftp on

Setting up PXE boot environment

Getting all

Before really starting to build the PXE environment, you have to install the syslinux package. This package provides a very usefull file:

 /usr/share/syslinux/pxelinux.0

If you can not install syslinux, you can download this little file here.

Building PXE boot

At that point, you should have everything to build your PXE boot environment. Jump in the TFTP root directory (default is /srv/tftp) and create the initial structure as shown below:

 # cd /srv
 # mkdir tftpboot
 # cd tftpboot
 # mkdir pxelinux.cfg

Copy PXE bootstrap file in tftpboot directory.

 # cp /usr/share/syslinux/pxelinux.0 /srv/tftpboot

Create now the PXE config file. This one is not far in its structure from the syslinux.cfg file.

 # vi /srv/tftpboot/pxelinux.cfg/default

Here is a sample one provided as is, feel free to adapt it to fit your configuration.

 default linux
 
 # Install Linux
 label linux
   kernel linux
   append initrd=initrd splash=silent showopts
 
 prompt   1
 timeout  10

Please Note: If you are using a RedHat based server, your default configuration will need a few more options for the line begining with "append":

  append root=/dev/ram0 load_ramdisk=1 initrd=initrd splash=silent showopts ramdisk_size=4096 init=linuxrc

This configuration file refers to 2 important files: linux and initrd. They have to be downloaded from the network SuSE install repository (or a mirror). Notice they depend on your hardware (i386 or x86_64).

  • eg. for i386:
 # cd /srv/tftpboot
 # wget http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/boot/i386/loader/initrd
 # wget http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/boot/i386/loader/linux
  • eg. for x86_64:
 # cd /srv/tftpboot
 # wget http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/boot/x86_64/loader/initrd
 # wget http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/boot/x86_64/loader/linux

Please Note: If you are using a RedHat based server, your directory structure for the tftp-server should be as follows:

   /tftpboot 
   /tftpboot/pxelinux.0 
   /tftpboot/initrd.img 
   /tftpboot/vmlinuz 
   /tftpboot/pxelinux.cfg 
   /tftpboot/pxelinux.cfg/default

Booting PXE

You should ensure that your target host is well configured to boot from network and check that PXE is enabled. Then everything will run as accordingly... enjoy PXE & have a lot of fun!

Links for additional information

-- MightyBob 16:34, 1 April 2006 (UTC)