Difference between revisions of "NetBoot server"

 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
NetBoot using PXE and TFTP.
+
[[Category:Linux]]
  
This will boot using an official installation image.
+
NetBoot using PXE and TFTP. See [[NetBoot server principle]]
  
 
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'''
 
<syntaxhighlight lang="bash">
 
apt-get install tftp-hpa
 
</syntaxhighlight>
 
 
'''Trivial FTP (TFTP) server'''
 
<syntaxhighlight lang="bash">
 
apt-get install tftpd-hpa
 
</syntaxhighlight>
 
 
'''SysLinux [netboot utilities]'''
 
<syntaxhighlight lang="bash">
 
apt-get install syslinux mtools initramfs-tools
 
</syntaxhighlight>
 
 
 
Syslinux contains some starter files you can use for your netboot clients.
 
 
 
 
=Configuration=
 
 
 
==Create target TFTP folders==
 
 
<syntaxhighlight lang="bash">
 
mkdir -m 755 -p /tftpboot
 
</syntaxhighlight>
 
 
 
==TFTP configuration==
 
 
<syntaxhighlight lang="bash">
 
vim /etc/default/tftpd-hpa
 
</syntaxhighlight>
 
 
 
It should look like:
 
 
<syntaxhighlight lang="bash">
 
# /etc/default/tftpd-hpa
 
RUN_DAEMON="yes"
 
TFTP_USERNAME="tftp"
 
TFTP_DIRECTORY="/tftpboot"
 
TFTP_ADDRESS="0.0.0.0:69"
 
TFTP_OPTIONS="--secure"
 
</syntaxhighlight>
 
 
 
'''Don't forget to add the RUN_DAEMON setting.'''
 
 
 
The TFTP server files [= the files that will be used by the TFTP clients] are in the "TFTP_DIRECTORY" instruction.
 
==> You should use the folder we just created: ''/tftpboot''
 
 
 
 
IMPORTANT !!
 
 
'''You must not change the default user or port number''' !!
 
 
 
<syntaxhighlight lang="bash">
 
service tftpd-hpa restart
 
</syntaxhighlight>
 
 
 
 
==TFTP automatic start on boot==
 
 
Sometimes the "RUN_DAEMON" is not enough for TFTP automatic startup... :(
 
 
 
In that case you have to register tftp-hpa as a service.
 
 
<syntaxhighlight lang="bash">
 
cd /etc/init.d/
 
update-rc.d tftpd-hpa defaults
 
</syntaxhighlight>
 
 
Reboot your server ! The TFTP should be up and running now :)
 
 
 
 
 
==Firewall configuration==
 
 
Adjust your firewall script and add the following rules:
 
 
<syntaxhighlight lang="bash">
 
IPTABLES=`which iptables`
 
LAN_ADDRESS="172.16.50.0/24"
 
 
$IPTABLES -A INPUT -p udp -s $LAN_ADDRESS --dport 69 -j ACCEPT
 
</syntaxhighlight>
 
 
 
 
==Test the server==
 
 
1. Create a file on the server
 
 
<syntaxhighlight lang="bash">
 
vim /tftpboot/hello.txt
 
</syntaxhighlight>
 
 
 
 
2. Connect to the server
 
 
Install TFTP client:
 
 
<syntaxhighlight lang="bash">
 
apt-get install tftp-hpa
 
</syntaxhighlight>
 
 
Connect to the server and get file:
 
 
<syntaxhighlight lang="bash">
 
tftp 192.168.1.156
 
get hello.txt
 
quit
 
</syntaxhighlight>
 
 
 
Check the received file:
 
 
<syntaxhighlight lang="bash">
 
cat hello.txt
 
</syntaxhighlight>
 
  
  
Line 213: Line 71:
  
  
 
=TFTP management=
 
 
Just use the "service" command:
 
 
<syntaxhighlight lang="bash">
 
service tftpd-hpa {status|restart|start|stop}
 
</syntaxhighlight>
 
  
  

Latest revision as of 08:37, 21 August 2014


NetBoot using PXE and TFTP. See NetBoot server principle



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 /tftpboot/
mkdir rescue
cd rescue
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 "rescue/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 "rescue/" in the filename section.


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


Restart the DHCP server

service isc-dhcp-server restart




Next step: Diskless server / workstation