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

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

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

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

Μερικά παλιότερα μηχανήματα HPPA (πχ. 715/75) χρησιμοποιούν RBOOTD αντί για BOOTP. Υπάρχει για το Debian διαθέσιμο ένα πακέτο rbootd

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

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

Υπάρχουν δύο διαθέσιμοι εξυπηρετητές BOOTP για το GNU/Linux. Ο πρώος είναι ο bootpd από το CMU (Carnegie Mellon University). O άλλος είναι στην πραγματικότητα ένας εξυπηρετητής DHCP, ο dhcpd του ISC. Στο Debian GNU/Linux αυτοί περιλαμβάνονται στα πακέτα bootp και dhcp3-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.3.4, “Μεταφορά των ειδώλων TFTP στη θέση τους” για περισσότερες λεπτομέρειες.

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

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

Ένας εξυπηρετητής DHCP που είναι ελεύθερο λογισμικό είναι ο dhcpd από το ISC. Για το Debian GNU/Linux συνίσταται το πακέτο dhcp3-server. Εδώ είναι ένα υπόδειγμα αρχείου ρυθμίσεων γι' αυτόν (δείτε το /etc/dhcp3/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;
}

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

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

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

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

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

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

Σημείωση

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

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

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

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



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