Υπάρχουν τέσσερις κατηγορίες προβλημάτων που μπορούν να παρουσιαστούν όταν δημιουργείτε ένα προσαρμοσμένο πυρήνα:
Αν η εντολή config(8) αποτυγχάνει όταν της δίνετε την περιγραφή του πυρήνα σας, έχετε κατά πάσα πιθανότητα, κάνει κάποιο απλό λάθος. Ευτυχώς, η config(8) θα σας δείξει τον αριθμό γραμμής στον οποίο συνάντησε το πρόβλημα, και έτσι θα μπορέσετε εύκολα να το εντοπίσετε. Για παράδειγμα, αν δείτε:
config: line 17: syntax error
Βεβαιωθείτε ότι η λέξη-κλειδί στη γραμμή αυτή είναι σωστή, συγκρίνοντας τη με την αντίστοιχη στο αρχείο GENERIC ή σε άλλο αρχείο αναφοράς.
Αν αποτυγχάνει η εντολή make, συνήθως αυτό σημαίνει κάποιο λάθος στο αρχείο ρυθμίσεων το οποίο δεν είναι αρκετά σοβαρό για να το καταλάβει η config(8). Κοιτάξτε ξανά το αρχείο ρυθμίσεων σας και αν ακόμα δεν μπορείτε να εντοπίσετε το πρόβλημα, στείλτε το μαζί με το αρχείο με mail στην ηλεκτρονική λίστα γενικών ερωτήσεων του FreeBSD και θα εντοπιστεί πολύ γρήγορα.
Αν ο νέος σας πυρήνας δεν εκκινεί ή αποτυγχάνει να αναγνωρίσει τις συσκευές σας, μην πανικοβάλλεστε! Ευτυχώς, το FreeBSD έχει ένα εξαιρετικό μηχανισμό για να επανέλθετε από μη-συμβατούς πυρήνες. Απλώς επιλέξτε τον πυρήνα από τον οποίο θέλετε να ξεκινήσετε μέσω του συστήματος εκκίνησης (boot loader) του FreeBSD. Έχετε πρόσβαση σε αυτό, την ώρα που εμφανίζεται το μενού επιλογών εκκίνησης. Επιλέξτε «Escape to a loader prompt», αριθμός έξι. Στην προτροπή που εμφανίζεται, γράψτε την εντολή boot kernel.old ή το όνομα αρχείου ενός άλλου πυρήνα που ξεκινάει κανονικά. Όταν φτιάχνετε ένα νέο πυρήνα, είναι πάντα καλή ιδέα να έχετε πρόχειρο ένα πυρήνα που ξέρετε ότι δουλεύει.
Αφού εκκινήσετε με ένα καλό πυρήνα, μπορείτε να ελέγξετε το αρχείο ρυθμίσεων σας από την αρχή, και να προσπαθήσετε ξανά. Μια χρήσιμη πηγή πληροφοριών είναι το αρχείο /var/log/messages το οποίο μεταξύ άλλων καταγράφει όλα τα μηνύματα του πυρήνα από κάθε επιτυχημένη εκκίνηση. Επίσης η εντολή dmesg(8) θα σας δείξει όλα τα μηνύματα του πυρήνα της τρέχουσας εκκίνησης.
Σημείωση: Αν έχετε πρόβλημα στη δημιουργία πυρήνα, βεβαιωθείτε ότι έχετε κρατήσει ένα πυρήνα GENERIC, ή κάποιο άλλο που γνωρίζετε ότι λειτουργεί, χρησιμοποιώντας ένα διαφορετικό όνομα ώστε να μη διαγραφεί στην επόμενη μεταγλώττιση. Δεν μπορείτε να βασιστείτε στον πυρήνα kernel.old, γιατί κάθε φορά που εγκαθιστάτε νέο πυρήνα, το kernel.old αντικαθίσταται με τον τελευταίο εγκατεστημένο πυρήνα, ο οποίος μπορεί να μην λειτουργεί. Επίσης, όσο το δυνατόν πιο σύντομα, μετακινήστε τον πυρήνα που λειτουργεί στην σωστή θέση, /boot/kernel, διαφορετικά εντολές όπως η ps(1) ίσως να μη λειτουργούν σωστά. Για να το κάνετε αυτό, απλώς μετονομάστε τον κατάλογο που περιέχει τον καλό πυρήνα, π.χ:
# mv /boot/kernel /boot/kernel.bad # mv /boot/kernel.good /boot/kernel
Αν εγκαταστήσετε πυρήνα διαφορετικής έκδοσης από αυτόν με τον οποίο έχουν φτιαχτεί τα εργαλεία συστήματος, για παράδειγμα εάν βάλετε ένα πυρήνα της σειράς -CURRENT σε ένα σύστημα -RELEASE, πολλές από τις εντολές που σχετίζονται με την κατάσταση του συστήματος όπως ή ps(1) και η vmstat(8) δεν θα λειτουργούν πλέον. Θα πρέπει να μεταγλωττίσετε και να εγκαταστήσετε όλο το βασικό σύστημα (world) χρησιμοποιώντας ίδια έκδοση του πηγαίου κώδικα με αυτή του πυρήνα σας. Αυτός είναι και ένας λόγος για τον οποίο δεν είναι συνήθως καλή ιδέα να χρησιμοποιείτε διαφορετική έκδοση πυρήνα από το υπόλοιπο του λειτουργικού συστήματος.
Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την
<questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.