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

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

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

Το Reverse Address Resolution Protocol (RARP) είναι ένας τρόπος να πείτε στον client ποια διεύθυνση IP να χρησιμοποιήσει ο ίδιος. Ένας άλλος τρόπος είναι να χρησιμοποιήσετε το πρωτόκολλο 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.

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

Για να ρυθμίσετε έναν server RARP, θα πρέπει να ξέρετε την διεύθυνση Ethernet (αλλιώς διεύθυνση MAC) των συστημάτων πελατών όπου θα γίνουν οι εγκαταστάσεις. Αν δεν ξέρετε αυτήν την πληροφορία, μπορείτε: να την εντοπίσετε από τα αρχικά μηνύματα στην εκκίνηση της OpenPROM, να χρησιμοποιήσετε την εντολή OpenBoot .enet-addr, ή να εκκινήσετε σε κατάσταση “Rescue” (πχ., από μια δισκέττα διάσωσης (rescue floppy) και να χρησιμοποιήσετε την εντολή /sbin/ifconfig eth0.

Σε ένα σύστημα server RARP που χρησιμοποιεί πυρήνα Linux 2.2.x, θα πρέπει να "γεμίσετε" με τιμές τον πίνακα RARP του πυρήνα. Για να το κάνετε αυτό, τρέξτε τις ακόλουθες εντολές:

# /sbin/rarp -s 
client-hostname
client-enet-addr

# /usr/sbin/arp -s 
client-ip
client-enet-addr

Αν πάρετε ένα μήνυμα λάθους

SIOCSRARP: Invalid argument

πιθανόν να πρέπει να φορτώσετε το RARP module του πυρήνα ή να ξαναχτίσετε τον πυρήνα με υποστήριξη για RARP. Δοκιμάστε την εντολή modprobe rarp και μετά την εντολή rarp ξανά.

Σε ένα σύστημα με RARP server που χρησιμοποιεί πυρήνα Linux 2.4.x, δεν υπάρχει RARP module, και θα έπρεπε αντί γι' αυτό να χρησιμοποιήσετε το πρόγραμμα rarpd. Η διαδικασία είναι παρόμοια με αυτήν που χρησιμοποιείται για το SunOS στην επόμενη παράγραφο.

Για το λειτουργικό σύστημα SunOS, πρέπει να σιγουρευτείτε ότι η διεύθυνση της κάρτας Ethernet για τον πελάτη περιλαμβάνεται στη βάση “ethers” (είτε στο αρχείο /etc/ethers, είτε μέσω NIS/NIS+) και στην βάση ``hosts''. Στη συνέχεια θα πρέπει να ξεκινήσετε τον δαίμονα RARP. Στο σύστημα SunOS 4, δώστε την εντολή (σαν χρήστης root): /usr/etc/rarpd -a; στο SunOS 5, χρησιμοποιήστε την εντολή /usr/sbin/rarpd -a.

4.4.2. Ρυθμίζοντας έναν εξυπηρετητή 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.4.5, “Μεταφορά των ειδώλων TFTP στη θέση τους” για περισσότερες πληροφορίες.

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

4.4.3. Ρυθμίζοντας έναν εξυπηρετητή 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.4.4. Ενεργοποίηση του εξυπηρετητή 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.4.5. Μεταφορά των ειδώλων TFTP στη θέση τους

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

4.4.5.1. Εκκίνηση με TFTP για SPARC

Αρχιτεκτονικές SPARC χρησιμοποιούν για παράδειγμα τα ονόματα των υποαρχιτεκτονικών, όπως τα “SUN4M” ή “SUN4C”; σε μερικές περιπτώσεις, η αρχιτεκτονική αφήνεται κενή, οπότε το αρχείο που αναζητά ο πελάτης (client) είναι απλά η δεκαεξαδική διεύθυνσή του IP client-ip-in-hex. Επομένως, αν η υποαρχιτεκτονική σας είναι ένα σύστημα SUN4C, και η διεύθυνσή του IP είναι 192.168.1.3, το όνομα του αρχείου θα είναι C0A80103.SUN4C. Ένας εύκολος τρόπος για να την προσδιορίσετε είναι εισάγοντας την ακόλουθη εντολή σε ένα κέλυφος (υποθέτοντας ότι η επιθυμητή/επιδιωκόμενη διεύθυνση IP είναι 10.0.0.4).

$ printf '%.2x%.2x%.2x%.2x\n' 10 0 0 4

Αυτό θα επιστρέψει την διεύθυνση IP σε δεκαεξαδική μορφή; για να πάρετε το σωστό όνομα αρχείου, θα χρειαστεί να αλλάξετε όλα τα γράμματα σε κεφαλαία και αν απαραίτητο και αν απαραίτητο να προσθέσετε στο τέλος το όνομα της υποαρχιτεκτονικής.

Μπορείτε επίσης να αναγκάσετε μερικά συστήματα sparc να κοιτάξουν για ένα συγκεκριμένο όνομα αρχείου προσθέτοντάς το στο τέλος της εντολής εκκίνησης OpenPROM, όπως για παράδειγμα boot net my-sparc.image. Αυτό το αρχείο πρέπει να βρίσκεται ακόμα στον κατάλογο όπου ψάχνει ο server TFTP.