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

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

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

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

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

Για τις άλλες μεθόδους preseeding, θα χρειαστεί να πείτε στον εγκαταστάτη ποιο αρχείο θα χρησιμοποιήσετε κατά την εκκίνησή του. Αυτο γίνεται συνήθως "περνώντας" μια παράμετρο εκκίνησης στον πυρήνα, είτε με το χέρι κατά την στιγμή της εκκίνησης ή με επεξεργασία του αρχείου ρύθμισης του φορτωτή εκκίνησης (πχ. το syslinux.cfg) και προσθέτοντας την παράμετρο στο τέλος της γραμμής(ών) προσθήκης για τον πυρήνα.

Αν όντως ορίσετε το αρχείο προρυθμίσεων στη διαμόρφωση του φορτωτή εκκίνησης, μπορείτε να αλλάξετε αυτή τη διαμόρφωση ώστε να μην χρειάζεται να πατήσετε enter για να ξεκινήσετε τον εγκαταστάτη. Για το syslinux αυτό σημαίνει τον ορισμό του χρόνου εξόδου (timeout) ίσο με 1 στο αρχείο syslinux.cfg.

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

Boot parameters to specify:
- Για εκκίνηση από το δίκτυο: netbooting:
  preseed/url=http://host/path/to/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d
- or
  preseed/url=tftp://host/path/to/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d

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

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

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

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

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

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

Για να ρυθμίσετε μια τιμή ώστε να χρησιμοποιηθεί μέσα στον debian-installer απλά περάστε τις τιμές path/to/variable=value για τις προρυθμισμένες παραμέτρους που αναφέρονται στα παραδείγματα αυτού του παραρτήματος. Αν μια τιμή πρόκειται να χρησιμοποιηθεί για την ρύθμιση πακέτων στο προς εγκατάσταση σύστημα, θα πρέπει να προτάξετε την παράμετρο owner[18] της μεταβλητής όπως για παράδειγμα στο 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 σε κάποιες αρχιτεκτονικές ή μεθόδους εκκίνησης. Στην ενότητα αυτή, η λέξη auto δεν είναι λοιπόν μια παράμετρος, αλλά σημαίνει να διαλέξει κανείς αυτή την επιλογή εκκίνησης και την προσθήκη των ακόλουθων παραμέτρων στο προτρεπτικό εκκίνησης.

Για να το δείξουμε αυτό, ορίστε μερικά παραδείγματα που μπορούν να χρησιμοποιηθούν στο προτρεπτικό εκκίνησης:

auto url=autoserver

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

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

priority debconf/priority
fb debian-installer/framebuffer
auto auto-install/enable
classes auto-install/classes
αρχείο preseed/file
url preseed/url
θέμα debian-installer/theme
language debian-installer/language
country debian-installer/country
locale debian-installer/locale
keymap keyboard-configuration/xkb-keymap
αρθρώματα anna/choose_modules
firmware hw-detect/firmware-lookup
interface netcfg/choose_interface
domain netcfg/get_domain
hostname    netcfg/get_hostname
protocol mirror/protocol
suite mirror/suite
συνιστά base-installer/install-recommends
καθήκοντα tasksel:tasksel/first
επιφάνεια εργασίας tasksel:tasksel/desktop
preseed-md5 preseed/file/checksum

B.2.5. Παραδείγματα προρύθμισης προτρεπτικού εκκίνησης

Εδώ είναι μερικά παραδείγματα για το πώς μπορεί να μοιάζει το προτρεπτικό εκκίνησης (θα χρειαστεί να το προσαρμόσετε στις δικές σας ανακες).

# Για να θέστε τα Γαλλικά ως γλώσσα και τη Γαλλία ως χώρα:
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=fr country=FR --- quiet
# Για να θέσετε τα Αγγλικά ως γλώσσα και τη Γερμανία ως χώρα και για να χρησιμοποιήσετε μια διάταξη γερμανικού πληκτρολογίου:
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=en country=DE locale=en_US.UTF-8 keymap=de --- quiet
# Για να εγκαταστήσετε το περιβάλλον επιφάνειας εργασίας MATE:
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz desktop=mate-desktop --- quiet
# Για να εγκαταστήσετε τη σουίτα προγραμμάτων (task) web-server:
/install.amd/vmlinuz initrd=/install.amd/initrd.gz tasksel:tasksel/first=web-server ---

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

Είναι επίσης δυνατόν να χρησιμοποιήσετε το πρωτόκολλο DHCP για τον προσδιορισμό ενός αρχείου προρυθμίσεων και να το κατεβάσετε από το δίκτυο. Το DHCP επιτρέπει τον προσδιορισμό ενός ονόματος αρχείου. Συνήθως αυτό είναι ένα αρχείο για εκκίνηση από το δίκτυο, αν όμως εμφανίζεται να είναι μια διεύθυνση URL τότε τα μέσα εγκατάστασης που υποστηρίζουν προρύθμιση μέσω δικτύου θα κατεβάσουν το αρχείο από την διεύθυνση αυτή και θα το χρησιμοποιήσουν σαν αρχείο προρυθμίσεων. Εδώ είναι ένα παράδειγμα του πώς να κάνετε την αντίστοιχη ρύθμιση στο αρχείο dhcpd.conf για την έκδοση 3 του εξυπηρετητή DHCP του ISC (το πακέτο isc-dhcp-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 θα πρέπει να γίνεται μόνο με προσοχή.



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