Difference between revisions of "NetBoot server"

(Created page with " =NetBoot using PXE and TFTP= Reminder: * NetBoot requires a DHCP server * TFTP is NOT secure at all. You should only use it into your internal network !! => Don't forget...")
 
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
[[Category:Linux]]
  
=NetBoot using PXE and TFTP=
+
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
 
  
 +
=Setup NetBoot files=
  
  
==Installation==
+
==Use an Ubuntu ISO image as NetBoot==
 
 
'''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>
 
 
 
'''NFS support'''
 
<syntaxhighlight lang="bash">
 
apt-get install nfs-kernel-server nfs-common
 
</syntaxhighlight>
 
 
 
'''Debootstrap (manage netboot image)'''
 
<syntaxhighlight lang="bash">
 
apt-get install debootstrap
 
</syntaxhighlight>
 
 
 
 
 
==Configuration==
 
 
 
 
 
===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.
 
 
 
By default ''tftpd-hpa'' uses '''/var/lib/tftpboot'''
 
 
 
!! You should not change the default user or port number if you plan to use NetBoot !!
 
 
 
<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 /var/lib/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>
 
 
 
 
 
 
 
 
 
==Setup NetBoot files==
 
 
 
 
 
===Get NetBoot image===
 
  
 
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 122: Line 19:
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
cd /var/lib/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
Line 132: Line 29:
  
  
===Register files in DHCP server===
+
 
 +
 
 +
==Register files in DHCP server==
  
  
Line 151: 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 159: Line 58:
  
  
Mind the "amd64/" in the ''filename'' section.
+
Mind the "rescue/" in the ''filename'' section.
  
  
Line 175: Line 74:
  
  
==TFTP management==
 
 
Just use the "service" command:
 
  
<syntaxhighlight lang="bash">
+
Next step: [[Diskless netboot|Diskless server / workstation]]
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