Difference between revisions of "NetBoot server"

 
(6 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>
 
 
 
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>
 
 
 
==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 129: Line 20:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
cd /tftpboot/
 
cd /tftpboot/
mkdir amd64
+
mkdir rescue
cd amd64
+
cd rescue
 
wget http://archive.ubuntu.com/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/netboot.tar.gz
 
wget http://archive.ubuntu.com/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/netboot.tar.gz
 
tar -xzvf netboot.tar.gz
 
tar -xzvf netboot.tar.gz
 
rm netboot.tar.gz
 
rm netboot.tar.gz
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
  
  
Line 157: Line 50:
 
         # These files should be at the root of your TFTP server
 
         # 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
 
         # Note: The file name can be add in the "host" section too. Then, the "host" will override the current setting
         filename "amd64/pxelinux.0";
+
         filename "rescue/pxelinux.0";
 
         # set the server that serve this NETBOOT file
 
         # set the server that serve this NETBOOT file
 
         next-server 172.16.50.2;
 
         next-server 172.16.50.2;
Line 165: Line 58:
  
  
Mind the "amd64/" in the ''filename'' section.
+
Mind the "rescue/" in the ''filename'' section.
  
  
Line 178: 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