Εγκατάσταση PXE Server σε Ubuntu 16.04 για Linux clients

pxe server linux
pxe server linux

PXE (Preboot Execution Environment) Server ονομάζουμε ένα σύνολο από λογισμικά που μας δίνουν τη δυνατότητα να κάνουμε εγκατάσταση λειτουργικών μέσω του τοπικού μας δικτύου. Έχουμε ένα κεντρικό σημείο από το οποίο διανέμονται τα λειτουργικά προς εγκατάσταση και αυξάνουμε την ταχύτητα της εγκατάστασης αποφεύγοντας την χρήση dvd και usb.

Σε αυτό το άρθρο θα δούμε πως μπορούμε δημιουργήσουμε ένα PXE Server σε ένα Linux vm με Ubuntu 16.04. Επίσης θα δούμε μέσω της χρήσης VirtualBox πως μπορούμε να δημιουργήσουμε νέα VMs και να εγκαταστήσουμε Ubuntu 16.04 μέσω δικτύου.

Για να ολοκληρώσουμε αυτό τον οδηγό χρειαζόμαστε ένα vm με Ubuntu 16.04. Θα χρησιμοποιήσουμε το VirtualBox για προσομοίωση του τοπικού δικτύου.Τα λογισμικά που θα χρειαστεί να εγκαταστήσουμε και να ρυθμίσουμε ώστε να δημιουργήσουμε τον PXE Server είναι : DHCP, Apache και tftpd-hpa

Επιπρόσθετα θα χρειαστεί να κατεβάσουμε το ISO της διανομής που θέλουμε να γίνεται εγκατάσταση στην περίπτωση μας, το ΙSO για Ubuntu 16.04 και να το έχουμε περάσει στο VM που θα κάνουμε PXE Server.

Βήμα 1, Εγκατάσταση DHCP

DHCP είναι ένα δικτυακό πρωτόκολλο για την αυτόματη κατανομή διευθύνσεων IP σε ένα δίκτυο. Είναι ιδιαίτερα χρήσιμο σε εταιρικά περιβάλλοντα με πολλούς υπολογιστές. Με αυτόν τον τρόπο αποφεύγουμε να ρυθμίζουμε χειροκίνητα όλους αυτούς τους υπολογιστές.

Για τις ανάγκες αυτού του οδηγού θα χρησιμοποιήσουμε το δίκτυο 192.168.1.0/24 και ο DHCP μας θα βρίσκεται στην 192.168.1.20.

Πριν κάνουμε την εγκατάσταση θα επιβεβαιώσουμε ότι έχουμε ενημερωμένα αποθετήρια και λογισμικό:

sudo apt update && sudo apt upgrade

Εγκαθιστούμε τον DHCP:

sudo apt install isc-dhcp-server

Χρειάζεται να προσθέσουμε το interface στο αρχείο config του DHCP. Για να δούμε το Interface μας πληκτρολογούμε ifconfig . θα μας επιστρέψει μια παρόμοια εικόνα, το όνομα του interface φαίνεται στο πλαίσιο.

ifconfig
ifconfig

sudo nano /etc/default/isc-dhcp-server

και αλλάζουμε το interface:

INTERFACES="enp0s3"

Πατάμε Ctrl+X για έξοδο και Y για αποθήκευση.

Στη συνέχεια θα ρυθμίσουμε τον DHCP σε ποιο domain ανήκει, ποιο δίκτυο και ποιο εύρος από IP θα διαχειρίζεται. Στην περίπτωση μας, ο DHCP θα διαχειρίζεται τις IP από 192.168.1.50 έως 192.168.1.100;


sudo nano /etc/dhcp/dhcpd.conf


# option definitions common to all supported networks...
option domain-name "home.local";
#
option domain-name-servers dhcp.home.local;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.50 192.168.1.100;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
}
default-lease-time 600;
max-lease-time 7200;

Πατάμε Ctrl+X για έξοδο και Y για αποθήκευση. Κάνουμε Restart τον DHCP Server:

sudo systemctl restart isc-dhcp-server

Έχουμε ρυθμίσει τον DHCP και όποιο νέο Vm προσθέτουμε θα παίρνει IP από το διαθέσιμο εύρος που δηλώσαμε στον DHCP. Αν θέλουμε να δώσουμε συγκεκριμένη IP σε κάποιο Vm μπορούμε να προσθέσουμε τη φυσική διεύθυνση του VM (mac adress) που θέλουμε στο αρχείο config του DHCP. Ανοίγουμε το αρχείο:

sudo nano /etc/dhcp/dhcpd.conf

Προσθέτουμε στο τέλος την καταχώρηση με την IP που επιθυμούμε, αντικαταστήστε τη φυσική διεύθυνση με του δικού σας VM και την IP με αυτή που επιθυμείτε να αποκτήσει:

host ubuntu-client {
hardware ethernet 08:00:27:49:ca:1b;
fixed-address 192.168.1.80;
}

Κάνουμε Restart το DHCP Server:

sudo systemctl restart isc-dhcp-server

Την επόμενη φορά που θα κάνουμε Restart το VM με τη συγκεκριμένη φυσική διεύθυνση θα πάρει την IP που δηλώσαμε στο στον DHCP Server.

Βήμα 2, Εγκατάσταση PXE:

Πριν συνεχίσουμε θα πρέπει να κατεβάσουμε το ISO με το οποίο θα γίνεται εγκατάσταση μέσω δικτύου, σε αυτό τον οδηγό έχουμε κατεβάσει Ubuntu 16.04 στο φάκελο /home/savvaniss/ .

Για να εγκαταστήσουμε τα υπόλοιπα λογισμικά γράφουμε:

sudo apt install apache2 tftpd-hpa inetutils-inetd -y

Στη συνέχεια ανοίγουμε το αρχείο /etc/default/tftpd-hpa:

sudo nano /etc/default/tftpd-hpa

Προσθέτουμε στο τέλος τις παρακάτω γραμμές:

RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"

Ώστε το αρχείο να έχει το παρακάτω περιεχόμενο:

tftp-config
tftp-config

Πατάμε Ctrl+X για έξοδο και Y για αποθήκευση.

Ανοίγουμε το /etc/inetd.conf:

sudo nano /etc/inetd.conf

και προσθέτουμε στο τέλος:

tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot

inetd config
inetd config

Πατάμε Ctrl+X για έξοδο και Y για αποθήκευση.

Τέλος κάνουμε επανεκκίνηση το tftpd:

sudo systemctl restart tftpd-hpa

Αν οι αλλαγές έχουν γίνει σωστά η εφαρμογή θα ξεκινήσει χωρίς προβλήματα, επιβεβαιώνουμε:

sudo systemctl status tftpd-hpa

tftp status
tftp status

Τώρα θα αντιγράψουμε κάποια από τα αρχεία του iso που έχουμε κατεβάσει στον TFTP server. Για να το κάνουμε αυτό θα χρειαστεί πρώτα να κάνουμε Mount τα iso. Φτιάχνουμε ένα φάκελο για το iso:

sudo mkdir /mnt/ubuntu

Κάνουμε mount το iso στον αντίστοιχο φάκελο. Μην ξεχάσετε να αντικαταστήσετε το φάκελο /home/savvaniss με τη θέση που βρίσκεται το δικό σας ISO:

sudo mount -o loop /home/savvaniss/ubuntu-16.04.1-server-amd64.iso /mnt/ubuntu/

Τώρα μπορούμε να αντιγράψουμε τα αρχεία στο directory του tftp /var/lib/tftpboot/:

sudo cp -r /mnt/ubuntu/install/netboot/* /var/lib/tftpboot/

και κάνουμε επανεκκίνηση τον tftpd:

sudo systemctl restart tftpd-hpa

Τώρα θα χρειαστεί να φτιάξουμε ένα φάκελο ubuntu μέσα στο φάκελο του Apache:

sudo mkdir /var/www/html/ubuntu

Αντιγράφουμε το όλο το περιεχόμενο του iso στο φάκελο που δημιουργήσαμε:

sudo cp -r /mnt/ubuntu/* /var/www/html/ubuntu/

Θα επεξεργαστούμε αρχείο config του PXE που πήραμε από το φάκελο netinstall του Ubuntu Iso. θα δηλώσουμε τη θέση των αρχείων με τη χρήση του Apache web server που περάσαμε στα πρώτα βήματα.


sudo nano /var/lib/tftpboot/pxelinux.cfg/default

label linux
kernel ubuntu-installer/amd64/linux
append ks=http://192.168.1.20/ubuntu/ks.cfg vga=normal initrd=ubuntu-installer/amd64/initrd.gz
ramdisk_size=16432 root=/dev/rd/0 rw --

pxe configuration file
pxe configuration file

Πατάμε Ctrl+X για έξοδο και Y για αποθήκευση. Μη ξεχάσετε να κάνετε αντικατάσταση με τη δική σας IP.

Τώρα θα δώσουμε τη δυνατότητα για εγκατάσταση από boot στον DHCP μας:

sudo nano /etc/dhcp/dhcpd.conf

Προσθέτουμε στο τέλος:

allow booting;
allow bootp;
option option-128 code 128 = string;
option option-129 code 129 = text;
next-server 192.168.1.20;
filename "pxelinux.0";

πατάμε Ctrl+X για έξοδο και Y για αποθήκευση. Μη ξεχάσετε να κάνετε αντικατάσταση με τη δική σας IP.

Έχουμε τελειώσει με τις ρυθμίσεις που χρειάζεται το vm μας και τώρα θα εγκαταστήσουμε το Virtual box Extension που θα μας επιτρέψει την εγκατάσταση από δίκτυο. Πηγαίνουμε στο https://www.virtualbox.org/wiki/Downloads και κατεβάζουμε το virtual box extension:

virtualbox extension
virtualbox extension

θα γίνει εγκατάσταση μέσα από το virtual όταν κάνουμε double click με το οποίο ξεκινάμε την εγκατάσταση. Στο παράθυρο που θα μας εμφανίσει το virtual box, πατάμε install.

virtualbox extension install
virtualbox extension install

Διαβάζουμε τους όρους χρήσης και πατάμε i Agree

virtualbox extension agree
virtualbox extension agree

θα κάνει την εγκατάσταση και θα μας ενημερώσει. Μόλις ολοκληρωθεί, πατάμε οκ.

virtualbox extension finish
virtualbox extension finish

Τώρα θα δημιουργήσουμε ένα νέο VM μέσα από το Virtual box που θα του δώσουμε την δυνατότητα εγκατάστασης μέσω δικτύου.

Πατάμε new:

pxe client creation new
pxe client creation new

Δίνουμε όνομα στο VM που επιθυμούμε επιλέγουμε τύπο Linux 64 bit και πατάμε Next:

pxe client creation type
pxe client creation type

Επιλέγουμε την επιθυμητή Ram στη περίπτωση μας 2048 ΜΒ και πατάμε Next:

pxe client creation ram
pxe client creation ram

Δημιουργούμε ένα νέο δίσκο για το VM μας

pxe client creation createdisk
pxe client creation createdisk

Επιλέγουμε τον τύπο του δίσκου, επιλέγουμε VHD για λόγους συμβατότητας με αλλα virtual περιβάλλοντα και πατάμε Next:

pxe client create vhd
pxe client create vhd

Επιλέγουμε dynamically allowcated και πατάμε Next, επιλέγουμε το επιθυμητό μέγεθος του δίσκου και πατάμε Create:

pxe client vhd size
pxe client vhd size

Δημιουργήσαμε το VM μας και τώρα θα το ρυθμίσουμε να ξεκινάει μέσω δικτύου. Επιλέγουμε το Vm μέσα απο το Virtual Box και πατάμε Settings.

pxe client settings
pxe client settings

Επιλέγουμε την καρτέλα System και κάνουμε ckecκ στo Network

pxe client enable network
pxe client enable network

Στη συνέχεια αφού έχουμε επιλέξει τo Network πατάμε δεξιά στα βελάκια έως ότου είναι πρώτο

pxe client network boot order
pxe client network boot order

Πατάμε Ok.

pxe client finsih
pxe client finsih

Επιπλέον θα αλλάξουμε τη συσκευή δικτύου, πατάμε settings αφού έχουμε επιλέξει το vm

pxe client settings
pxe client settings

Επιλέγουμε Network και στην καρτέλα Adapter 1 επιλέγουμε Bridged Adapter.

pxe network bridged adapter
pxe network bridged adapter

Πατάμε οκ.

Τώρα αν ξεκινήσουμε το VM θα αρχίσει την επικοινωνία με τον DHCP και μετά από λίγο θα κάνει εκκίνηση από το δίκτυο.

pxe client boot
pxe client boot

Έχουμε τελειώσει με τις ρυθμίσεις του PXE και του Client και πλέον μπορούμε να κάνουμε εγκατάσταση λειτουργικού μέσα από δίκτυο. Ο χρόνος ολοκλήρωσης του οδηγού υπολογίζεται σε 2 ώρες.

Μην διστάσετε να αφήσετε σχόλιο για οποιαδήποτε απορία ή παρατήρηση που μπορεί να έχετε.

Site Footer