4.5. Προετοιμασία Αρχείων για δικτυακή εκκίνηση με TFTP

Αν το μηχάνημά σας είναι συνδεδεμένο σε ένα τοπικό δίκτυο (local area network), μπορείτε ίσως να το εκκινήσετε από ένα άλλο μηχάνημα μέσω του δικτύου αυτού χρησιμοποιώντας TFTP. Αν προτίθεστε να εκκινήσετε το σύστημα εγκατάστασης από ένα άλλο μηχάνημα, τα αρχεία εκκίνησης θα πρέπει να τοποθετηθούν σε συγκεκριμένες θέσεις στο μηχάνημα αυτό, το οποίο πρέπει επίσης να είναι ρυθμισμένο ώστε να υποστηρίζει την εκκίνηση του συγκεκριμένου μηχανήματός σας.

Θα πρέπει να στήσετε έναν εξυπηρετητή TFTP, και για περισσότερα μηχανήματα έναν εξυπηρετητή DHCP , ή έναν εξυπηρετητή BOOTP.

Το BOOTP είναι ένα πρωτόκολλο IP που πληροφορεί έναν υπολογιστή για το ποια είναι η διεύθυνση IP του και από πού στο δίκτυο να αποκτήσει μια εικόνα εκκίνησης. Το πρωτόκολλο DHCP (Dynamic Host Configuration Protocol) είναι μια πιο ευέλικτη και συμβατή προς τα πίσω επέκταση του πρωτοκόλλου BOOTP. Κάποια συστήματα μπορούν να ρυθμιστούν μόνο μέσω του πρωτοκόλλου αυτού.

Το πρωτόκολλο TFTP (Trivial File Transfer Protocol) χρησιμοποιείται για το σερβίρισμα της εικόνας εκκίνησης στον "πελάτη". Θεωρητικά, οποιοσδήποτε server, σε οποιαδήποτε πλατφόρμα, που υλοποιεί αυτά τα πρωτόκολλα, μπορεί να χρησιμοποιηθεί. Στα παραδείγματα αυτής της ενότητας, θα δώσουμε εντολές για SunOS 4.x, SunOS 5.x (δηλ. το Solaris), και GNU/Linux.

[Σημείωση] Σημείωση

Για έναν εξυπηρετητή Debian GNU/Linux συνιστούμε tftpd-hpa. Έχει γραφτεί από τον ίδιο συγγραφέα του φορτωτή εκκίνησης syslinux και συνεπώς έχει τις μικρότερες πιθανότητες να προκαλέσει οποιαδήποτε προβλήματα. Μια καλή εναλλακτική λύση είναι και το atftpd.

4.5.1. Ρυθμίζοντας έναν εξυπηρετητή DHCP

Ένας εξυπηρετητής DHCP που είναι ελεύθερο λογισμικό είναι ο dhcpd από το ISC. Για το Debian GNU/Linux συνίσταται το πακέτο isc-dhcp-server. Εδώ είναι ένα υπόδειγμα αρχείου ρυθμίσεων γι' αυτόν (δείτε το /etc/dhcp/dhcpd.conf):

option domain-name "example.com";
option domain-name-servers ns1.example.com;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
server-name "servername";

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option routers 192.168.1.1;
}

host clientname {
  filename "/tftpboot.img";
  server-name "servername";
  next-server servername;
  hardware ethernet 01:23:45:67:89:AB;
  fixed-address 192.168.1.90;
}

Στο παράδειγμα αυτό, υπάρχει ένας server με όνομα servername που κάνει όλη τη δουλειά ενός DHCP και TFTP server και μιας δικτυακής πύλης. Είναι σχεδόν βέβαιο ότι θα πρέπει να αλλάξετε τις επιλογές για το όνομα τομέα (domain name) καθώς και το όνομα του server και της διεύθυνσης της κάρτας δικτύου του πελάτη. Η επιλογήfilename θα πρέπει να είναι το όνομα του αρχείου που θα ανακτηθεί μέσω TFTP.

Μετά την έκδοση του αρχείου ρυθμίσεων του dhcpd, επανεκκινήστε τον δαίμονα με την εντολή /etc/init.d/isc-dhcp-server restart.

4.5.1.1. Ενεργοποίηση Εκκίνησης με τη μέθοδο PXE στη ρύθμιση του DHCP

Εδώ έχουμε ένα άλλο παράδειγμα αρχείου ρυθμίσεων dhcp.conf που χρησιμοποιεί την μέθοδο Pre-boot Execution Environment (PXE) για το TFTP.

option domain-name "example.com";

default-lease-time 600;
max-lease-time 7200;

allow booting;
allow bootp;

# Η επόμενη παράγραφος θα πρέπει να τροποποιηθεί ώστε να ταιριάζει στην περίπτωσή σας 
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option broadcast-address 192.168.1.255;
# the gateway address which can be different
# (access to the internet for instance)
  option routers 192.168.1.1;
# indicate the dns you want to use
  option domain-name-servers 192.168.1.3;
}

group {
 next-server 192.168.1.3;
 host tftpclient {
# tftp client hardware address
  hardware ethernet  00:10:DC:27:6C:15;
  filename "pxelinux.0";
 }
}

Σημειώστε ότι για εκκίνηση με τη μέθοδο PXE, το όνομα αρχείου του πελάτη pxelinux.0 είναι ένας φορτωτής εκκίνησης, και όχι μια εικόνα του πυρήνα (δείτε την ενότητα Τμήμα 4.5.4, «Μεταφορά των ειδώλων TFTP στη θέση τους» στη συνέχεια).

Αν το σύστημά σας χρησιμοποιεί UEFI για εκκίνηση, θα πρέπει να προσδιορίσετε έναν φορτωτή εκκίνησης κατάλληλο για μηχανήματα με UEFI, για παράδειγμα

group {
  next-server 192.168.1.3;
  host tftpclient {
# tftp client hardware address
  hardware ethernet  00:10:DC:27:6C:15;
  filename "debian-installer/amd64/bootnetx64.efi";
 }
}

4.5.2. Ρύθμιση ενός εξυπηρετητή BOOTP

Υπάρχουν δύο διαθέσιμοι εξυπηρετητές BOOTP για το GNU/Linux. Ο πρώος είναι ο bootpd από το CMU (Carnegie Mellon University). O άλλος είναι στην πραγματικότητα ένας εξυπηρετητής DHCP, ο dhcpd του ISC. Στο Debian GNU/Linux αυτοί περιλαμβάνονται στα πακέτα bootp και isc-dhcp-server αντίστοιχα.

Για να χρησιμοποιήσετε τον δαίμονα bootpd του CMU, πρέπει πρώτα να αποσχολιάσετε (ή να προσθέσετε) την σχετική γραμμή στο αρχείο /etc/inetd.conf. Στο Debian GNU/Linux, μπορείτε να το κάνετε αυτό τρέχοντας την εντολή update-inetd --enable bootps, και μετά /etc/init.d/inetd reload. Στην περίπτωση που ο εξυπηρετητής σας BOOTP δεν τρέχει Debian, η σχετική γραμμή πρέπει να μοιάζει κάπως έτσι:

bootps  dgram  udp  wait  root  /usr/sbin/bootpd  bootpd -i -t 120

Τώρα, θα πρέπει να δημιουργήσετε ένα αρχείο /etc/bootptab. Αυτό έχει το ίδιο είδος οικείας και μυστήριας μορφής των παλιών καλών αρχείων printcap, termcap, και disktab στο BSD. Δείτε τη σελίδα χρήσης του bootptab για περισσότερες πληροφορίες. Για τον δαίμονα bootpd του CMU, θα πρέπει να ξέρετε την διεύθυνση MAC του "πελάτη". Εδώ είναι ένα υπόδειγμα αρχείου /etc/bootptab:

client:\
  hd=/tftpboot:\
  bf=tftpboot.img:\
  ip=192.168.1.90:\
  sm=255.255.255.0:\
  sa=192.168.1.1:\
  ha=0123456789AB:

Θα πρέπει να αλλάξετε τουλάχιστον την επιλογή «ha», που προσδιορίζει την διεύθυνση υλικού του πελάτη. Η επιλογή «bf» προσδιορίζει το αρχείο που θα έπρεπε ένας πελάτης να ανακτήσει μέσω TFTP. Δείτε το σύνδεσμο Τμήμα 4.5.4, «Μεταφορά των ειδώλων TFTP στη θέση τους» για περισσότερες λεπτομέρειες.

Αντίθετα, η ρύθμιση του BOOTP με τον εξυπηρετητή dhcpd του ISC είναι πραγματικά εύκολη, γιατί χειρίζεται τους πελάτες BOOTP σαν μια σχετικά ειδική περίπτωση πελατών DHCP. Μερικές αρχιτεκτονικές απαιτούν μια πολύπλοκη ρύθμιση για την εκκίνηση πελατών μέσω BOOTP. Αν η δική σας είναι μια απ' αυτές, διαβάστε την ενότητα Τμήμα 4.5.1, «Ρυθμίζοντας έναν εξυπηρετητή DHCP». Διαφορετικά, πιθανόν να μπορέσετε να τα καταφέρετε απλά προσθέτοντας το προστακτικό allow bootp στο κομμάτι των ρυθμίσεων για το υποδίκτυο που περιέχει τον πελάτη στο αρχείο /etc/dhcp/dhcpd.conf και επενεκκινήστε τον δαίμονα dhcpd με την εντολή /etc/init.d/isc-dhcp-server restart.

4.5.3. Ενεργοποίηση του εξυπηρετητή TFTP

Για να προετοιμάσετε τον εξυπηρετητή TFTP θα πρέπει να βεβαιωθείτε πρώτα ότι είναι ενεργοποιημένος ο tftpd

Στην περίπτωση του tftpd-hpa υπάρχουν δύο τρόποι με τους οποίους μπορείτε να τρέξετε την υπηρεσία. Μπορεί να εκκινηθεί κατά απαίτηση από τον δαίμονα inetd του συστήματος, ή μπορεί να ρυθμιστεί να τρέχει σαν ανεξάρτητος δαίμονας. Το ποια από τις δύο μεθόδους θα χρησιμοποιηθεί επιλέγεται κατά την εγκατάσταση του πακέτου και μπορεί να αλλάξει με την επαναρύθμιση του πακέτου.

[Σημείωση] Σημείωση

Κατά παράδοση οι εξυπηρετητές TFTP χρησιμοποιούσαν τον κατάλογο /tftpboot σαν κατάλογο από τον οποίον διαθέτουν τις εικόνες που παρέχουν. Όμως τα πακέτα του Debian GNU/Linux πιθανόν να χρησιμοποιούν άλλους καταλόγους ώστε να συμμορφώνονται με το πρότυπο Filesystem Hierarchy Standard. Για παράδειγμα, το πακέτο tftpd-hpa χρησιμοποιεί εξ ορισμού τον κατάλογο /srv/tftp. Πιθανόν να πρέπει να προσαρμόσετε τα παραδείγματα ρυθμίσεων στην παρούσα ενότητα ανάλογα.

Όλες οι διαθέσιμες στο Debian εναλλακτικές υλοποιήσεις του in.tftpd θα πρέπει εξ' ορισμού να καταγράφουν τα αιτήματα στον εξυπηρετητή TFTP στα αρχεία καταγραφής του συστήματος. Κάποιες από αυτές διαθέτουν και ένα όρισμα -v για ακόμα πιο λεπτομερειακή καταγραφή. Συνιστάται να ελέγχετε αυτά τα μηνύματα καταγραφής στην περίπτωση προβλημάτων εκκίνησης καθώς αποτελούν ένα καλό σημείο αφετηρίας για την διάγνωση της αιτίας τέτοιων σφαλμάτων.

4.5.4. Μεταφορά των ειδώλων TFTP στη θέση τους

Στη συνέχεια, τοποθετήστε την εικόνα εκκίνησης του TFTP, όπως βρίσκεται στο Τμήμα 4.2.1, «Πού να βρείτε αρχεία της εγκατάστασης», στον κατάλογο των εικόνων εκκίνησης του tftpd. Πιθανόν να πρέπει να δημιουργήσετε έναν σύνδεσμο από το αρχείο αυτό στο αρχείο που ο εξυπηρετητής tftpd θα χρησιμοποιήσει για την εκκίνηση ενός συγκεκριμένου πελάτη. Δυστυχώς, το όνομα του αρχείου καθορίζεται από τον πελάτη του TFTP, και δεν υπάρχουν γι' αυτό σταθερά πρότυπα.

Για εκίνηση με τη μέθοδο PXE, οτιδήποτε χρειάζεστε βρίσκεται στο συμπιεσμένο αρχείο netboot/netboot.tar.gz. Απλά αποσυμπιέστε το αρχείο στον κατάλογο εικόνων εκκίνησης του tftpd. Βεβαιωθείτε ότι ο εξυπηρετητής dhcp έχει ρυθμιστεί να περνά το /pxelinux.0 στον δαίμονα tftpd ως το όνομα του αρχείου για εκκίνηση. Για μηχανήματα με UEFI, θα πρέπει να περάσετε ως όρισμα το όνομα μιας κατάλληλης εικόνας εκκίνησης EFI (τέτοια όπως /debian-installer/amd64/bootnetx64.efi).