Difference between revisions of "NetBoot server"

Line 29: Line 29:
 
apt-get install syslinux mtools initramfs-tools
 
apt-get install syslinux mtools initramfs-tools
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
 +
Syslinux contains some starter files you can use for your netboot clients.
  
  
Line 105: Line 108:
  
  
==Get NetBoot image==
+
==Use an Ubuntu ISO image as NetBoot==
  
 
Download the latest Ubuntu netboot image for the target architecture(s) from: http://cdimage.ubuntu.com/netboot/
 
Download the latest Ubuntu netboot image for the target architecture(s) from: http://cdimage.ubuntu.com/netboot/
Line 164: Line 167:
  
  
 +
 +
 +
=Custom NetBoot configuration=
 +
 +
 +
==Basic configuration==
 +
 +
You can setup your own netboot configuration.
 +
 +
To do so, you can re-use one of the syslinux templates:
 +
 +
<syntaxhighlight lang="bash">
 +
# Create folders
 +
mkdir /var/lib/tftpboot/custom
 +
mkdir /var/lib/tftpboot/custom/pxelinux.cfg
 +
 +
# Create configuration files
 +
cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/custom
 +
</syntaxhighlight>
 +
 +
 +
The ''pxelinux.cfg'' folder is mandatory. Inside you can provide:
 +
* configuration for a specific IP @ or hostname
 +
* configuration for a group
 +
* default configuration (required)
 +
 +
 +
Create the default configuration file:
 +
<syntaxhighlight lang="bash">
 +
vim /var/lib/tftpboot/custom/pxelinux.cfg/default
 +
</syntaxhighlight>
 +
 +
 +
Put the following:
 +
<syntaxhighlight lang="bash">
 +
# Ubuntu 14.04
 +
LABEL TRUSTY
 +
    kernel trusty/vmlinuz
 +
    initrd trusty/initrd.img
 +
 +
# Prompt user for selection
 +
PROMPT 0
 +
 +
TIMEOUT 30
 +
</syntaxhighlight>
 +
 +
* Each LABEL is a specific configuration that will displayed on the NetBoot menu.
 +
* PROMPT 1 = enable user prompt so you can choose the configuration
 +
* TIMEOUT 30 = timeout (in seconds) before the default option is choosen
 +
 +
 +
Note that I used a reference to "trusty/", that's a folder I need to create later on.
 +
 +
 +
 +
==Create boot files==
 +
 +
<syntaxhighlight lang="bash">
 +
mkdir /var/lib/tftpboot/custom/trusty
 +
# Copy current boot files
 +
cp /boot/vmlinuz-3.2.0-4-amd64 /var/lib/tftpboot/custom/trusty/
 +
cp /boot/initrd.img-3.2.0-4-amd64 /var/lib/tftpboot/custom/trusty/
 +
# Create symlinks
 +
ln -s /var/lib/tftpboot/custom/trusty/vmlinuz-3.2.0-4-amd64 /var/lib/tftpboot/custom/trusty/vmlinuz
 +
ln -s /var/lib/tftpboot/custom/trusty/initrd.img-3.2.0-4-amd64 /var/lib/tftpboot/custom/trusty/initrd.img
 +
</syntaxhighlight>
  
  

Revision as of 17:09, 22 May 2014

NetBoot using PXE and TFTP.

This will boot using an official installation image.


Reminder:

  • NetBoot requires a DHCP server
  • TFTP is NOT secure at all. You should only use it into your internal network !!

=> Don't forget to adjust your firewall rules


Installation

Trivial FTP (TFTP) client

apt-get install tftp-hpa

Trivial FTP (TFTP) server

apt-get install tftpd-hpa

SysLinux [netboot utilities]

apt-get install syslinux mtools initramfs-tools


Syslinux contains some starter files you can use for your netboot clients.


Configuration

TFTP configuration

vim /etc/default/tftpd-hpa


The TFTP server files, = the files that will be used by the TFTP clients, are in the "TFTP_DIRECTORY" instruction.

By default tftpd-hpa uses /var/lib/tftpboot

!! You should not change the default user or port number if you plan to use NetBoot !!

service tftpd-hpa restart


Firewall configuration

Adjust your firewall script and add the following rules:

IPTABLES=`which iptables`
LAN_ADDRESS="172.16.50.0/24"

$IPTABLES -A INPUT -p udp -s $LAN_ADDRESS --dport 69 -j ACCEPT


Test the server

1. Create a file on the server

vim /var/lib/tftpboot/hello.txt


2. Connect to the server

Install TFTP client:

apt-get install tftp-hpa

Connect to the server and get file:

tftp 192.168.1.156
get hello.txt
quit


Check the received file:

cat hello.txt



Setup NetBoot files

Use an Ubuntu ISO image as NetBoot

Download the latest Ubuntu netboot image for the target architecture(s) from: http://cdimage.ubuntu.com/netboot/


You have to take the netboot.tar.gz archive.


cd /var/lib/tftpboot/
mkdir amd64
cd amd64
wget http://archive.ubuntu.com/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/netboot.tar.gz
tar -xzvf netboot.tar.gz
rm netboot.tar.gz


Register files in DHCP server

Edit your DHCP server configuration:

vim /etc/dhcp/dhcpd.conf


Adjust it like that:

        #### NETBOOT settings 
        # PXE file to serve.
        #   >> elilo.efi   => for ia64 clients; 
        #   >> pxelinux.0  => for x86
        # These files should be at the root of your TFTP server
        # Note: The file name can be add in the "host" section too. Then, the "host" will override the current setting
        filename "amd64/pxelinux.0";
        # set the server that serve this NETBOOT file
        next-server 172.16.50.2;
        # Ensure that the new client (the one booting) is not stealing someone else IP @
        ping-check = 1;


Mind the "amd64/" in the filename section.


You can always override that setting later on for each host.


Restart the DHCP server

service isc-dhcp-server restart



Custom NetBoot configuration

Basic configuration

You can setup your own netboot configuration.

To do so, you can re-use one of the syslinux templates:

# Create folders
mkdir /var/lib/tftpboot/custom
mkdir /var/lib/tftpboot/custom/pxelinux.cfg

# Create configuration files
cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/custom


The pxelinux.cfg folder is mandatory. Inside you can provide:

  • configuration for a specific IP @ or hostname
  • configuration for a group
  • default configuration (required)


Create the default configuration file:

vim /var/lib/tftpboot/custom/pxelinux.cfg/default


Put the following:

# Ubuntu 14.04
LABEL TRUSTY
    kernel trusty/vmlinuz
    initrd trusty/initrd.img

# Prompt user for selection
PROMPT 0

TIMEOUT 30
  • Each LABEL is a specific configuration that will displayed on the NetBoot menu.
  • PROMPT 1 = enable user prompt so you can choose the configuration
  • TIMEOUT 30 = timeout (in seconds) before the default option is choosen


Note that I used a reference to "trusty/", that's a folder I need to create later on.


Create boot files

mkdir /var/lib/tftpboot/custom/trusty
# Copy current boot files
cp /boot/vmlinuz-3.2.0-4-amd64 /var/lib/tftpboot/custom/trusty/
cp /boot/initrd.img-3.2.0-4-amd64 /var/lib/tftpboot/custom/trusty/
# Create symlinks
ln -s /var/lib/tftpboot/custom/trusty/vmlinuz-3.2.0-4-amd64 /var/lib/tftpboot/custom/trusty/vmlinuz
ln -s /var/lib/tftpboot/custom/trusty/initrd.img-3.2.0-4-amd64 /var/lib/tftpboot/custom/trusty/initrd.img


TFTP management

Just use the "service" command:

service tftpd-hpa {status|restart|start|stop}



Next step: Diskless server / workstation