B.2. Χρησιμοποιώντας preseeding

Θα πρέπει πρώτα να δημιουργήσετε ένα αρχείο προρύθμισης και να το τοποθετήσετεστο σημείο από το οποίο θέλετε να το χρησιμοποιήσετε. Η δημιουργία αυτού του αρχείου καλύπτεται παρακάτω σ' αυτό το παράρτημα. Η τοποθέτηση του αρχείου στο σωστό σημείο είναι αρκετά προφανής για προρύθμιση με δίκτυο ή αν θέλετε να το διαβάσετε από μια δισκέττα ή ένα usb-stick. Αν θέλετε να συμπεριλάβετε το αρχείο σ' ένα CD ή ένα DVD θα πρέπει να ξαναδημιουργήσετε την εικόνα ISO. Το πώς μπορείτε να συμπεριλάβετε το αρχείο σ' έναν δίσκο μνήμης initrd είναι πέρα από τους σκοπούς του παρόντος κειμένου. Παρακαλούμε συμβουλευθείτε την τεκμηρίωση για τους προγραμματιστές του debian-installer.

Ένα παράδειγμα αρχείου προρυθμίσεων που μπορείτε να χρησιμοποιήσετε σαν βάση για το αντίστοιχο δικό σας, είναι διαθέσιμο στο http://www.debian.org/releases/squeeze/example-preseed.txt. Το αρχείο αυτόβασίζεται στα τμήματα των ρυθμίσεων που περιλαμβάνονται σ' αυτό εδώ το παράρτημα.

B.2.1. Φόρτωση του αρχείου προρυθμίσεων

Αν χρησιμοποιείτε initrd preseeding, αρκεί μόνο να βεβαιωθείτε ότι το αρχείο με όνομα preseed.cfg περιλαμβάνεται στον ριζικό κατάλογο του δίσκου initrd. Ο εγκαταστάτης θα ελέγξει αυτόματα αν το αρχείο είναι παρόν και θα το φορτώσει.

For the other preseeding methods you need to tell the installer what file to use when you boot it. This is normally done by passing the kernel a boot parameter, either manually at boot time or by editing the bootloader configuration file (e.g. syslinux.cfg) and adding the parameter to the end of the append line(s) for the kernel.

If you do specify the preconfiguration file in the bootloader configuration, you might change the configuration so you don't need to hit enter to boot the installer. For syslinux this means setting the timeout to 1 in syslinux.cfg.

Για να βεβαιωθείτε ότι ο εγκαταστάτης ανακτά το σωστό αρχείο, μπορείτε να προσδιορίσετε επιπλέον ένα checksum για το αρχείο. Προς το παρόν, αυτό θα πρέπει να είναι ένα md5sum και αν καθοριστεί θα πρέπει να ταιριάζει στο αρχείο προρύθμισης, διαφορετικά ο εγκαταστάτης θα αρνηθεί να το χρησιμοποιήσει.

Παράμετροι εκκίνησης που πρέπει να καθορίσετε:
- για εκκίνηση από το δίκτυο:
  preseed/url=http://host/path/to/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d

- για εκκίνηση από επανεπεξεργασμένο CD:
  preseed/file=/cdrom/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

- για εγκατάσταση από μέσο USB (τοποθετήστε το αρχείο preseed στον
  κορυφαίο κατάλογο του USB stick):
  preseed/file=/hd-media/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

Σημειώστε ότι οι διαδρομές για τα αρχεία preseed/url και preseed/file μπορούν να συντομευθούν απλά σε url και file αντίστοιχα, όταν δίνονται σαν παράμετροι εκκίνησης.

B.2.2. Χρήση παραμέτρων εκκίνησης για την προρύθμιση ερωτήσεων

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

Παράμετροι εκκίνησης μπορούν επίσης να χρησιμοποιηθούν αν δεν θέλετε πραγματικά να χρησιμοποιήσετε τη μέθοδο προρύθμισης αλλά απλά να δώσετε απάντηση σε μια συγκεκριμένη ερώτηση. Μερικά παραδείγματα όπου αυτό μπορεί να είναι χρήσιμο τεκμηριώνονται σε άλλο σημείο αυτού του εγχειριδίου.

Για να ρυθμίσετε μια τιμή ώστε να χρησιμοποιηθεί μέσα στον debian-installer απλά περάστε τις τιμές path/to/variable=value για τις προρυθμισμένες παραμέτρους που αναφέρονται στα παραδείγματα αυτού του παραρτήματος. Αν μια τιμή πρόκειται να χρησιμοποιηθεί για την ρύθμιση πακέτων στο προς εγκατάσταση σύστημα, θα πρέπει να προτάξετε την παράμετρο owner[25] της μεταβλητής όπως για παράδειγμα στο owner:path/to/variable=value. Αν δεν προσδιορίσετε τον κάτοχο, η τιμή για την μεταβλητή δεν θα αντιγραφεί στην βάση δεδομένων του debconf στο προς εγκατάσταση σύστημα και συνεπώς δεν θα χρησιμοποιηθεί κατά την ρύθμιση του αντίστοιχου πακέτου.

Συνήθως η προρύθμιση μιας ερώτησης μ' αυτόν τον τρόπο σημαίνει ότι η συγκεκριμένη ερώτηση δεν θα τεθεί. Για να καθορίσετε μια συγκεκριμένη προεπιλεγμένη απάντηση για μια ερώτηση, αλλά παρόλα αυτά η ερώτηση αυτή να γίνεται, χρησιμοποιήστε “?=” αντί για “=” σαν τελεστή. Δείτε επίσης την ενότητα Τμήμα B.5.2, “Χρήση preseeding για την αλλαγή των προκαθορισμένων τιμών”.

Σημειώστε ότι μερικές μεταβλητές που ορίζονται συχνά στο προτρεπτικό εκκίνησης έχουν ένα συντομότερο παρωνύμιο (alias). Αν ένα τέτοιο παρωνύμιο είναι διαθέσιμο, είναι αυτό που χρησιμοποιείται στα παραδείγματα αυτού του παραρτήματος αντί του πλήρους ονόματος της μεταβλητής. Για παράδειγμα, η μεταβλητή preseed/url χρησιμοποιείται με το παρωνύμιο url. Ένα άλλο παράδειγμα είναι το παρωνύμιο tasks που μεταφράζεται σε tasksel:tasksel/first.

Ένα όρισμα “--” στις επιλογές εκκίνησης έχει ειδική σημασία. Παράμετροι του πυρήνα που εμφανίζονται μετά το τελευταίο “--” μπορούν να αντιγραφούν στο αρχείο ρυθμίσεων του φορτωτή εκκίνησης για το εγκατεστημμένο σύστημα (αν αυτό υποστηρίζεται από τον εγκαταστάτη για τον φορτωτή εκκίνησης). Ο εγκαταστάτης θα φιλτράρει αυτόματα οποιεσδήποτε επιλογές (όπως επιλογές προρύθμισης) μπορεί να αναγνωρίσει.

Σημείωση

Πρόσφατοι πυρήνες του Linux (2.6.9 και μεταγενέστεροι) δέχονται ένα μέγιστο αριθμό 32 επιλογών γραμμής εντολών και 32 επιλογών περιβάλλοντος συμπεριλαμβανομένων οποιωνδήποτε επιλογών προστίθενται εξ' ορισμού από τον εγκαταστάτη. Αν οι αριθμοί αυτοί ξεπεραστούν, ο πυρήνας θα περάσει σε κατάσταση "πανικού" (crash). (Για παλιότερους πυρήνες αυτοί οι αριθμοί επιλογών ήταν χαμηλότεροι).

Για τις περισσότερες εγκαταστάσεις μερικές από τις προκαθορισμένες επιλογές στο αρχείο ρύθμισης του φορτωτή εκκίνησης, όπως vga=normal, μπορούν με ασφάλεια να αφαιρεθούν, επιτρέποντας έτσι την προσθήκη περισσότερων επιλογών για προρύθμιση.

Σημείωση

Ίσως να μην είναι πάντα εφικτό να καθορίσετε τιμές με κενά στις παραμέτρους εκκίνησης ακόμα κι αν τις βάλλετε μέσα σε εισαγωγικά.

B.2.3. Αυτόματη Κατάσταση (auto)

Υπάρχουν αρκετά γνωρίσματα του Εγκαταστάτη του Debian που συνδυάζονται για να επιτρππεψουν σχετικά απλές εντολές γραμμής στο προτρεπτικό εκκίνησης να δώσουν οσοδήποτε σύνθετες αυτόματες εγκαταστάσεις προσαρμοσμένες στις ανάγκες σας. Για να το δείξουμε αυτό παραθέτουμε εδώ μερικά παραδείγματα που μπορούν να χρησιμοποιηθούν στο προτρεπτικό εκκίνησης:

auto url=autoserver

Αυτό βασίζεται στην ύπαρξη ενός εξυπηρετητή DHCP ο οποίος θα φέρει το μηχάνημά μας στο σημείο που ένας autoserver του οποίου το όνομα μπορεί να προσδιοριστεί μέσω DNS, πιθανόν μετά και την προσθήκη του τοπικού τομέα δικτύου αν αυτό δώθηκε από το DHCP. Αν αυτό έγινε σε ένα δίκτυο που το όνομα τομέα του είναι example.com, και το οποίο διαθέτει μια εύλογη ρύθμιση της υπηρεσίας DHCP, τότε το αποτέλεσμα θα ήταν η ανάκτηση του αρχείου προρύθμισης από το http://autoserver.example.com/d-i/squeeze/./preseed.cfg.

Το τελευταίο κομμάτι της διεύθυνσης (d-i/squeeze/./preseed.cfg) λαμβάνεται από το auto-install/defaultroot. Εξ' ορισμού περιλαμβάνει τον κατάλογο squeeze για να επιτρέπει σε μεταγενέστερες εκδόσεις του Debian να προσδιορίζουν το δικό τους κωδικό όνομα και στους χρήστες να αλλάζουν σ' αυτές με έναν ελεγχόμενο τρόπο. Το κομμάτι /./ χρησιμοποιείται σαν ένδειξη μιας ρίζας, σε σχέση με την οποία να μπορούν να αγκιστρώνονται άλλες διαδρομές στο σύστημα αρχείων που ακολουθούν (για χρήση με τα preseed/include και preseed/run). Αυτό επιτρέπει τον προσδιορισμό αρχείων σαν πλήρεις διευθύνσεις URL, και διαδρομές που ξεκινούν με / αγκιστρώνονται κατ' αυτόν τον τρόπο, ή ακόμα και σαν διαδρομές σχετικά με την τοποθεσία όπου βρέθηκε το τελευταίο αρχείο προρύθμισης. Αυτό μπορεί να χρησιμοποιηθεί στην κατασκευή πιο "φορητών" σεναρίων (script) στα οποία μια ολόκληρη ιεραρχία σεναρίων μπορεί να μετακινηθεί σε μια καινούρια τοποθεσία χωρίς προβλήματα, για παράδειγμα με την αντιγραφή των αρχείων σε ένα stick USB ενώ αυτά προέρχονται από έναν εξυπηρετητή web. Στο παράδειγμα αυτό, αν το αρχείο προρύθμισης θέτει το preseed/run σαν /scripts/late_command.sh τότε το αρχείο θα ανακτηθεί από τη διεύθυνση http://autoserver.example.com/d-i/squeeze/./scripts/late_command.sh.

Αν δεν είναι διαθέσιμη μια τοπική υποδομή υπηρεσιών DNS ή DHCP, ή αν δεν θέλετε να χρησιμοποιήσετε την προκαθορισμένη διαδρομή στο preseed.cfg, μπορείτε και πάλι να χρησιμοποιήσετε ένα συγκεκριμένο url, που αν δεν χρησιμοποιήσετε το κομμάτι /./ θα αγκιστρωθεί στην αρχή της διαδρομής (δηλ, το τρίτο / στο URL). Εδώ είναι ένα παράδειγμα που απαιτεί ελάχιστη υποστήριξη από την τοπική δικτυακή υποδομή:

auto url=http://192.168.1.2/path/to/mypreseed.file

Ο τρόπος με τον οποίο δουλεύει αυτό είναι:

  • αν στην διεύθυνση URL δεν υπάρχει κάποιο πρωτόκολλο, υποτίθεται ότι αυτό είναι το http,

  • αν το όνομα του μηχανήματος δεν περιέχει τελείες, τότε προσάπτεται σ' αυτό το όνομα τομέα που προκύπτει από το DHCP, και

  • αν δεν υπάρχει / μετά το όνομα του μηχανήματος, τότε προστίθεται η προκαθορισμένη διαδρομή.

Επιπρόσθετα από τον προσδιορισμό του url, μπορείτε ακόμα να προσδιορίσετε ρυθμίσεις που δεν επηρεάζουν άμεσα την συμπεριφορά του ίδιου του debian-installer αλλά μπορούν να περάσουν στα σενάρια που προσδιορίζονται με την χρήση του preseed/run στο αρχείο προρύθμισης που έχει ήδη φορτωθεί. Προς το παρόν, το μοναδικό παράδειγμα αυτής της κατάστασης είναι το auto-install/classes, με παρωνύμιο classes. Αυτό μπορεί να χρησιμοποιηθεί ως εξής:

auto url=example.com classes=class_A;class_B

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

Φυσικά είναι δυνατόν να επεκτείνει κανείς αυτή την ιδέα, και αν κάνετε κάτι τέτοιο, είναι εύλογο να χρησιμοποιήσετε τον χώρο ονομασιών (namespace) auto-install για τον σκοπό αυτό. Έτσι μπορεί κανείς να έχει κάτι όπως το auto-install/style που στη συνέχεια να χρησιμοποιείται στα σενάριά του. Αν αισθάνεστε την ανάγκη να κάνετε κάτι τέτοιο, παρακαλούμε αναφέρετέ το στη λίστα αλληλογραφίας ώστε να αποφύγουμε ασυμφωνίες στον χώρο ονομασιών και πιθανόν να προσθέσουμε ένα παρωνύμιο για την παράμετρο για λογαριασμό σας.

Η επικεφαλίδα εκκίνησης auto δεν έχει ακόμα οριστεί παντού. Το ίδιο αποτέλεσμα μπορεί να επιτευχθεί όμως προσθέτοντας απλά τις δυο παραμέτρους auto=true priority=critical στη γραμμή εντολών του πυρήνα. Η παράμετρος auto είναι ένα παρωνύμιο για την auto-install/enable και η απόδοση της τιμής true έχει σαν αποτέλεσμα την καθυστέρηση της διατύπωσης των ερωτήσεων για τις τοπικές ρυθμίσεις και το πληκτρολόγιο μέχρι τη στιγμή που θα έχει δοθεί η δυνατότητα προρύθμισής τους, ενώ η παράμετρος priority είναι παρωνύμιο για την debconf/priority και ο καθορισμός της σε critical αποτρέπει την διατύπωση κάθε ερώτησης με χαμηλότερη προτεραιότητα.

Επιπλέον επιλογές που μπορεί να έχουν ενδιαφέρον στην προσπάθεια αυτοματοποίησης μιας εγκατάστασης με χρήση της υπηρεσίας DHCP είναι: interface=auto netcfg/dhcp_timeout=60 που κάνει το μηχάνημα να διαλέξει την πρώτη διαθέσιμη διεπαφή δικτύου (NIC) και να είναι περισσότερο "υπομονετικό" όσον αφορά την λήψη μιας απάντησης στο αίτημά του προς τον εξυπηρετητή DHCP.

Υπόδειξη

Ένα εκτεταμένο παράγειγμα του πώς μπορείτε να χρησιμοποιήσετε αυτό το πλαίσιο, που συμπεριλαμβάνει παραδείγματα σεναρίων (script) και κλάσσεις, μπορεί να βρεθεί στον δικτυακό τόπο του προγραμματιστή. Τα παραδείγματα που δίνονται εκεί δείχνουν επίσης μερικά ακόμα χρήσιμα αποτελέσματα που μπορούν να επιτευχθούν μέσω της δημιουργικής χρήσης της προρύθμισης.

B.2.4. Παρωνύμια χρήσιμα με την προρύθμιση

Τα παρακάτω ψευδώνυμα μπορεί να φανούν χρήσιμα όταν χρησιμοποιείτε προρύθμιση (κατάσταση αυτόματης εγκατάστασης). Σημειώστε ότι αυτά είναι απλά σύντομα ψευδώνυμα για ονόματα ερωτήσεων, και ότι θα πρέπει πάντα να προσδιορίζετε και μια τιμή: για παράδειγμα, auto=true or interface=eth0.

auto auto-install/enable
classes auto-install/classes
fb debian-installer/framebuffer
language debian-installer/language
country debian-installer/country
locale debian-installer/locale
priority debconf/priority
αρχείο preseed/file
url preseed/url
interface netcfg/choose_interface
hostname    netcfg/get_hostname
domain netcfg/get_domain
protocol mirror/protocol
suite mirror/suite

B.2.5. Χρήση ενός εξυπηρετητή DHCP για τον προσδιορισμό αρχείων προρυθμίσεων

Είναι επίσης δυνατόν να χρησιμοποιήσετε το πρωτόκολλο DHCP για τον προσδιορισμό ενός αρχείου προρυθμίσεων και να το κατεβάσετε από το δίκτυο. Το DHCP επιτρέπει τον προσδιορισμό ενός ονόματος αρχείου. Συνήθως αυτό είναι ένα αρχείο για εκκίνηση από το δίκτυο, αν όμως εμφανίζεται να είναι μια διεύθυνση URL τότε τα μέσα εγκατάστασης που υποστηρίζουν προρύθμιση μέσω δικτύου θα κατεβάσουν το αρχείο από την διεύθυνση αυτή και θα το χρησιμοποιήσουν σαν αρχείο προρυθμίσεων. Εδώ είναι ένα παράδειγμα του πώς να κάνετε την αντίστοιχη ρύθμιση στο αρχείο dhcpd.conf για την έκδοση 3 του εξυπηρετητή DHCP του ISC (το πακέτο dhcp3-server στο Debian).

if substring (option vendor-class-identifier, 0, 3) = "d-i" {
    filename "http://host/preseed.cfg";
}

Σημειώστε ότι το προηγούμενο παράδειγμα περιορίζει το όνομα του αρχείου σε πελάτες DHCP που ταυτοποιούνται οι ίδιοι σαν "d-i", ώστε να μην επηρρεάζονται συνηθισμένοι πελάτες DHCP, αλλά μόνο ο εγκαταστάτης. Μπορείτε επίσης να βάλετε το κείμενο σε stanza μόνο για ένα συγκεκριμένο μηχάνημα για να αποφύγετε την εφαρμογή των προρυθμίσεων για όλες τις εγκαταστάσεις στο δίκτυό σας.

Ένας καλός τρόπος να χρησιμοποιήσετε την μέθοδο προρύθμισης με χρήση DHCP είναι να προρυθμίσετε μόνο τις τιμές που έχουν να κάνουν με το δίκτυό σας, όπως για παράδειγμα τον καθρέφτη του Debian που θα χρησιμοποιήσετε. Με τον τρόπο αυτό οι εγκαταστάσεις στο δίκτυό σας θα έχουν προεπιλεγμένον έναν κατάλληλο καθρέφτη της αρχειοθήκης, ενώ το υπόλοιπο της εγκατάστασης μπορεί να πραγματοποιηθεί διαδραστικά. Η χρήση προρυθμίσεων μέσω DHCP για την πλήρη αυτοματοποίηση των εγκαταστάσεων του Debian θα πρέπει να γίνεται μόνο με προσοχή.



[25] Ο κάτοχος (owner) μιας μεταβλητής του debconf (ή ενός υποδείγματος, template) είναι συνήθως το όνομα του πακέτου του πακέτου που περιέχει το αντίστοιχο υπόδειγμα debconf. Για μεταβλητέςπου χρησιμοποιούνται στον ίδιο τον εγκαταστάτη ο κάτοχος είναι “d-i”. Υποδείγματα και μεταβλητές μπορούν να έχουν περισσότερους από έναν κατόχους κάτι που βοηθά στον προσδιορισμό του αν αυτές μπορούν να αφαιρεθούν από την βάση δεδομένων του debconf σε περίπτωση πλήρους αφαίρεσης του πακέτου.