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

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

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

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

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

Óçìåßùóç

Για να χρησιμοποιήσετε την μέθοδο Pre-boot Execution Environment (PXE) για εκκίνηση με TFTP, θα χρειαστείτε έναν εξυπηρετητή TFTP με υποστήριξη tsize. Σε έναν Debian GNU/Linux server, τα πακέτα atftpd είναιtftpd-hpa κατάλληλα; συνιστούμε επίσης το πακέτο tftpd-hpa.

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

Υπάρχουν δύο εξυπηρετητές BOOTP διαθέσιμοι για το GNU/Linux, ο CMU bootpd ενώ ο άλλος είναι στην πραγματικότητα ένας DHCP server, ο ISC dhcpd, που περιλαμβάνονται στα πακέτα bootp και dhcp στο Debian GNU/Linux.

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

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

Τώρα, θα πρέπει να δημιουργήσετε ένα αρχείο /etc/bootptab, το οποίο έχει ανάλογη με την οικεία και "κρυπτογραφημένη" μορφή των παλιών καλών BSD αρχείων printcap, termcap, και disktab. Δείτε την σελίδα χρήσης του bootptab για περισσότερες πληροφορίες. Για τον server CMU bootpd, θα πρέπει να ξέρετε την διεύθυνση 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.6.4, “Μεταφορά των ειδώλων TFTP στη θέση τους” για περισσότερες πληροφορίες.

Αντίθετα, η ρύθμιση του BOOTP με τον ISC server dhcpd είναι πραγματικά εύκολη, γιατί αντιμετωπίζει τους πελάτες BOOTP σαν μια σχετικά ειδική περίπτωση πελατών DHCP. Μερικές αρχιτεκτονικές απαιτούν μια πολύπλοκη ρύθμιση για την εκκίνηση πελατών μέσω BOOTP. Αν η δική σας είναι μια από αυτές, διαβάστε την ενότητα ÔìÞìá 4.6.2, “Ρυθμίζοντας έναν εξυπηρετητή DHCP”. Διαφορετικά, μπορείτε πιθανόν να τα καταφέρετε απλά προσθέτοντας το προστακτικό allow bootp στο κομμάτι των ρυθμίσεων για το υποδίκτυο που περιέχει τον πελάτη, και επενεκκινήστε τον server dhcpd με την εντολή /etc/init.d/dhcpd restart.

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

Ένας server DHCP που είναι ελεύθερο λογισμικό είναι ο dhcpd. Στο Debian GNU/Linux, είναι διαθέσιμος στο πακέτο dhcp.Αυτό είναι ένα παράδειγμα αρχείου ρυθμίσεων για τον server αυτόν (συνήθως το αρχείο /etc/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/tftpboot.img";
  server-name "servername";
  next-server servername;
  hardware ethernet 01:23:45:67:89:AB; 
  fixed-address 192.168.1.90;
}

Σημείωση: το καινούριο (και προτιμητέο) πακέτο dhcp3 χρησιμοποιεί το αρχείο /etc/dhcp3/dhcpd.conf.

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

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

4.6.2.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 "/tftpboot/pxelinux.0";
 }
}

Σημειώστε ότι για εκκίνηση με τη μέθοδο PXE, το όνομα αρχείου του πελάτη pxelinux.0 είναι ένας φορτωτής εκκίνησης, και όχι μια εικόνα πυρήνα (δείτε την ενότητα ÔìÞìá 4.6.4, “Μεταφορά των ειδώλων TFTP στη θέση τους” παρακάτω)

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

Για να προετοιμάσετε τον TFTP server, θα πρέπει πρώτα να βεβαιωθείτε ότι ο δαίμονας tftpd είναι ενεργοποιημένος. Αυτή η ενεργοποίηση γίνεται συνήθως περιλαμβάνοντας μια γραμμή όπως η ακόλουθη στο αρχείο /etc/inetd.conf:

tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /tftpboot

Τα πακέτα Debian θα κάνουν αυτές τις ρυθμίσεις σωστά από την πρώτη στιγμή με την εγκατάστασή τους.

Κοιτάξτε το αρχείο αυτό και φροντίστε να θυμάστε τον κατάλογο που χρησιμοποιείται σαν όρισμα του in.tftpd καθώς θα το χρειαστείτε στη συνέχεια. Το όρισμα -l επιτρέπει σε κάποιες εκδόσεις του in.tftpd να καταγράφει όλες τις αιτήσεις που δέχεται στα αρχεία καταγραφής του συστήματος, κάτι που είναι χρήσιμο στη διάγνωση λαθών κατά την εκκίνηση. Αν πρέπει για κάποιο λόγο να αλλάξετε το αρχείο /etc/inetd.conf, θα πρέπει να ενημερώσετε γι' αυτό τον δαίμονα inetd που τρέχει για την αλλαγή αυτή. Σε ένα μηχάνημα Debian, τρέξτε /etc/init.d/inetd reload; σε άλλα μηχανήματα, βρείτε τον αριθμό της διαδικασίας για τον inetd, και τρέξτε kill -HUP inetd-pid.

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

Στη συνέχεια, τοποθετήστε την εικόνα εκκίνησης του TFTP, όπως βρίσκεται στο ÔìÞìá 4.2.1, “Πού να βρείτε Είδωλα της Εγκατάστασης”, στον κατάλογο των ειδώλων εκκίνησης του tftpd. Γενικά, ο κατάλογος αυτός θα είναι ο /tftpboot. Θα πρέπει να δημιουργήσετε έναν σύνδεσμο από το αρχείο αυτό στο αρχείο που ο εξυπηρετητής tftpd θα χρησιμοποιήσει για την εκκίνηση ενός συγκεκριμένου πελάτη. Δυστυχώς, το αρχείο αυτό καθορίζεται από τον πελάτη του TFTP, και δεν υπάρχουν γι' αυτό σταθερά πρότυπα.

Για εκκίνηση με τη μέθοδο PXE, ό,τι χρειάζεστε βρίσκεται στο συμπιεσμένο αρχείο netboot/netboot.tar.gz. Απλά αποσυμπιέστε το αρχείο στον κατάλογο του ειδώλου εκκίνησης του tftpd. Βεβαιωθείτε ότι ο εξυπηρετητής dhcp έχει ρυθμιστεί να περάσει το /pxelinux.0 στον δαίμονα tftpd σαν το όνομα του αρχείου για εκκίνηση.