5.1. | Γιατί το FreeBSD βρίσκει λάθος ποσότητα μνήμης; | ||||||
Αυτό οφείλεται στη διαφορά μεταξύ φυσικών και εικονικών διευθύνσεων μνήμης. Η σύμβαση που κατά βάση ακολουθείται στο υλικό του PC, είναι να χρησιμοποιείται η μνήμη μεταξύ 3.5G και 4G για ειδικό σκοπό, συνήθως για την πρόσβαση σε κάρτες PCI. Αυτό έχει ως αποτέλεσμα να μην μπορεί να αντιστοιχηθεί φυσική μνήμη σε αυτή την περιοχή διευθύνσεων. Το υλικό του υπολογιστή σας θα καθορίσει τι γίνεται με την μνήμη που κανονικά εμφανίζεται σε αυτή τη θέση. Δυστυχώς, σε κάποιες περιπτώσεις το υλικό δεν κάνει τίποτα, και χάνεται η δυνατότητα χρήσης των τελευταίων 500Μ μνήμης RAM. Ευτυχώς, στις περισσότερες περιπτώσεις το υλικό ανακατευθύνει τη μνήμη σε υψηλότερη θέση, ώστε να είναι ακόμα δυνατή η χρήση της. Αυτό μπορεί ωστόσο να σας προκαλέσει κάποια σύγχυση αν παρακολουθείτε τα μηνύματα εκκίνησης. Στην 32 bit έκδοση του FreeBSD, η μνήμη φαίνεται να έχει χαθεί καθώς ανακατευθύνεται πάνω από τα 4G, τα οποία δεν είναι προσβάσιμα από 32 bit πυρήνα. Στην περίπτωση αυτή η λύση είναι να φτιάξετε ένα πυρήνα τύπου PAE. Δείτε αυτήν την καταχώρηση στο FAQ για περισσότερες πληροφορίες. Στην 64 bit έκδοση του FreeBSD, ή όταν χρησιμοποιείται πυρήνας τύπου PAE, το FreeBSD θα ανιχνεύσει και θα ανακατευθύνει σωστά τη μνήμη ώστε να είναι χρησιμοποιήσιμη. Κατά την εκκίνηση ωστόσο, μπορεί να φαίνεται ότι το FreeBSD ανιχνεύει περισσότερη μνήμη από αυτή που έχει στην πραγματικότητα το σύστημα. Αυτό είναι φυσιολογικό και η διαθέσιμη μνήμη θα διορθωθεί καθώς ολοκληρώνεται η διαδικασία της εκκίνησης. | |||||||
5.2. | Ο σκληρός μου δίσκος έχει χαλασμένους τομείς. Τι μπορώ να κάνω; | ||||||
Στους δίσκους SCSI, ο οδηγός μπορεί συνήθως να επανατοποθετήσει αυτόματα τα δεδομένα σε εναλλακτικούς τομείς. Ωστόσο οι περισσότεροι δίσκοι έρχονται με την δυνατότητα αυτή απενεργοποιημένη. Για να ενεργοποιήσετε την επανατοποθέτηση χαλασμένων τομέων,
επεξεργαστείτε την πρώτη σελίδα κατάστασης της συσκευής
(modepage), δίνοντας την παρακάτω εντολή
(ως # camcontrol modepage sd0 -m 1 -e -P 3 και αλλάξτε τις τιμές των AWRE και ARRE από 0 σε 1: AWRE (Auto Write Reallocation Enbld): 1
ARRE (Auto Read Reallocation Enbld): 1 Οι σύγχρονοι οδηγοί τύπου IDE έχουν επίσης ενεργοποιημένη από το εργοστάσιο τη δυνατότητα επανατοποθέτησης χαλασμένων τομέων. Αν δείτε προειδοποιήσεις σχετικά με χαλασμένους τομείς (σε οποιοδήποτε είδος δίσκου), είναι ώρα να σκεφτείτε να αλλάξετε τον οδηγό. Ίσως μπορέσετε να χρησιμοποιήσετε το διαγνωστικό πρόγραμμα που δίνει ο κατασκευαστής του δίσκου για να απομονώσετε τους χαλασμένους τομείς, αλλά στην καλύτερη περίπτωση απλώς θα κερδίσετε λίγο περισσότερο χρόνο. | |||||||
5.3. | Γιατι το FreeBSD δεν ανιχνεύει τον ελεγκτή SCSI στον HP Netserver; | ||||||
Το πρόβλημα αυτό είναι γνωστό. Ο ενσωματωμένος στη μητρική ελεγκτής SCSI του HP Netserver, χρησιμοποιεί σύνδεση τύπου EISA και καταλαμβάνει τη θέση EISA με αριθμό 11. Με τον τρόπο αυτό, όλες οι “πραγματικές” υποδοχές τύπου EISA βρίσκονται πριν από αυτή. Ωστόσο, η περιοχή διευθύνσεων των υποδοχών EISA με αριθμό >= 10, συγκρούεται με την περιοχή διευθύνσεων του PCI, και το FreeBSD στη σημερινή του μορφή, δεν μπορεί να χειριστεί σωστά αυτή την κατάσταση. Έτσι, για την ώρα, το καλύτερο που μπορείτε να κάνετε είναι
να παριστάνετε ότι δεν υπάρχει σύγκρουση διευθύνσεων :) και να
ανεβάσετε την επιλογή Φυσικά αυτό είναι ένα πρόβλημα αντίστοιχο με το αυγό και την κότα, όσο αφορά την εγκατάσταση ενός τέτοιου μηχανήματος. Για να προσπεράσετε το πρόβλημα, υπάρχει ειδική πρόβλεψη στο UserConfig. Μη χρησιμοποιήσετε το “visual” interface, αλλά την γραμμή εντολών. Απλώς γράψτε: eisa 12
quit στην προτροπή, και εγκαταστήστε το σύστημα σας όπως συνήθως. Σας συνιστούμε ωστόσο να μεταγλωττίσετε και να εγκαταστήσετε το δικό σας προσαρμοσμένο πυρήνα. Ευελπιστούμε ότι σε μελλοντικές εκδόσεις, θα υπάρχει καλύτερη διόρθωση για το πρόβλημα αυτό. Σημείωση:Δεν μπορείτε να χρησιμοποιήσετε δίσκο σε κατάσταση
| |||||||
5.4. | Βλέπω συνέχεια μηνύματα του τύπου ed1: timeout. Τι σημαίνουν; | ||||||
Τα μηνύματα αυτά προκαλούνται συνήθως από διενέξεις στα interrupts (π.χ. δύο κάρτες που χρησιμοποιούν το ίδιο IRQ). Εκκινήστε με την επιλογή -c και αλλάξτε την καταχώρηση ed0/de0/... ώστε να συμβαδίζει με το υλικό σας. Αν χρησιμοποιείτε την σύνδεση BNC της κάρτας δικτύου σας, ίσως να δείτε επίσης αντίστοιχα μηνύματα σε περίπτωση προβληματικού τερματισμού. Για να ελέγξετε την περίπτωση αυτή, συνδέστε ένα τερματιστή απευθείας στην κάρτα (χωρίς καλώδιο) και δείτε αν σταματήσουν τα μηνύματα. Κάποιες κάρτες συμβατές με NE2000, δίνουν αυτό το μήνυμα αν δεν υπάρχει σύνδεση στη θύρα UTP ή αν το καλώδιο είναι αποσυνδεμένο. | |||||||
5.5. | Γιατί σταμάτησε να λειτουργεί η κάρτα μου 3Com® 3C509 χωρίς να υπάρχει εμφανής λόγος; | ||||||
Η κάρτα αυτή έχει την κακή συνήθεια να χάνει τις ρυθμίσεις
της. Ανανεώστε τις, χρησιμοποιώντας το βοηθητικό πρόγραμμα DOS
| |||||||
5.6. | Ο εκτυπωτής μου στην παράλληλη θύρα είναι απελπιστικά αργός. Τι μπορώ να κάνω; | ||||||
Αν το μόνο πρόβλημα είναι ο υπερβολικά αργός εκτυπωτής, μπορείτε να δοκιμάσετε να αλλάξετε την κατάσταση λειτουργίας της παράλληλης θύρας όπως περιγράφεται στο κεφάλαιο του Εγχειριδίου σχετικά με την Εγκατάσταση Εκτυπωτή. | |||||||
5.7. | Γιατί τα προγράμματα μου περιστασιακά τερματίζουν με σφάλμα Signal 11; | ||||||
Τα σφάλματα τύπου Signal 11 δημιουργούνται όταν μια διεργασία προσπαθεί να προσπελάσει περιοχή μνήμης για την οποία δεν έχει πάρει άδεια από το λειτουργικό σύστημα. Αν συμβαίνει κάτι τέτοιο σε φαινομενικά τυχαία χρονικά διαστήματα, θα πρέπει να αρχίσετε να το ερευνάτε πολύ προσεκτικά. Τα προβλήματα αυτά συνήθως οφείλονται σε κάποιον από τους παρακάτω λόγους:
Για παράδειγμα, ένας γρήγορος τρόπος να διαπιστώσετε ότι δεν πρόκειται για πρόβλημα του FreeBSD, είναι αν το πρόβλημα εμφανίζεται κατά τη μεταγλώττιση κάποιου προγράμματος, αλλά κάθε φορά και σε διαφορετικό σημείο. Για παράδειγμα, υποθέστε ότι εκτελείτε ένα “make
buildworld”, και η μεταγλώττιση αποτυγχάνει κατά την
επεξεργασία του αρχείου Τι πρέπει να κάνετε: Στην πρώτη περίπτωση μπορείτε να χρησιμοποιήσετε κάποιο debugger όπως το gdb για να βρείτε το σημείο στο πρόγραμμα με την προβληματική διεύθυνση και να το διορθώσετε. Στη δεύτερη περίπτωση, θα πρέπει να επαληθεύσετε ότι δεν φταίει το υλικό σας. Στις συνηθισμένες αιτίες αυτού του προβλήματος, περιλαμβάνονται:
Θα πρέπει επίσης να διαβάσετε το SIG11 FAQ (το οποίο φαίνεται παρακάτω) το οποίο περιλαμβάνει εξαιρετικές επεξηγήσεις για όλα αυτά τα προβλήματα, αν και πολλές από αυτές είναι γραμμένες από την σκοπιά του Linux®. Ένα ενδιαφέρον τμήμα του SIG11 FAQ είναι και αυτό που αναφέρεται στην πιθανότητα να μην ανιχνεύεται προβληματική μνήμη από διαγνωστικά προγράμματα ή συσκευές ελέγχου. Τέλος, αν τίποτα από τα παραπάνω δεν βοηθήσει, είναι πιθανόν να έχετε εντοπίσει ένα πρόβλημα (bug) στο FreeBSD και θα πρέπει να ακολουθήσετε τις οδηγίες για να στείλετε αναφορά προβλήματος. Μπορείτε να βρείτε εκτεταμένη ανάλυση στο FAQ σχετικά με το πρόβλημα SIG11. | |||||||
5.8. | Το σύστημα μου σταματάει είτε με Fatal trap 12: page fault in kernel mode, ή με panic:, δείχνοντας και μια σειρά από πληροφορίες. Τι πρέπει να κάνω; | ||||||
Η ομάδα ανάπτυξης του FreeBSD ενδιαφέρεται ιδιαίτερα για αυτά τα λάθη, αλλά χρειάζεται περισσότερες πληροφορίες εκτός από το μήνυμα λάθους που βλέπετε. Αντιγράψτε το πλήρες μήνυμα και έπειτα συμβουλευθείτε την ενότητα του FAQ σχετικά με τα kernel panics, δημιουργήστε ένα πυρήνα με δυνατότητα εκσφαλμάτωσης (debugging kernel) και εκτελέστε ένα backtrace. Αυτό μπορεί να ακούγεται δύσκολο, αλλά δεν χρειάζεστε στην πραγματικότητα γνώσεις προγραμματισμού. Αρκεί να ακολουθήσετε τις οδηγίες. | |||||||
5.9. | Γιατί η οθόνη μου μαυρίζει και χάνει το συγχρονισμό της κατά την εκκίνηση; | ||||||
Πρόκειται για γνωστό πρόβλημα με την κάρτα γραφικών ATI
Mach64. Το πρόβλημα είναι ότι η κάρτα αυτή χρησιμοποιεί την
διεύθυνση Μέχρι να διορθωθεί το πρόβλημα αυτό, μπορείτε να χρησιμοποιήσετε το παρακάτω τέχνασμα για να το παρακάμψετε:
Αν θέλετε να χρησιμοποιήσετε τις σειριακές θύρες, θα πρέπει να
δημιουργήσετε νέο πυρήνα, με την ακόλουθη μετατροπή: Στο αρχείο
Ακόμα και μετά την εφαρμογή αυτών των διορθώσεων, ίσως ανακαλύψετε ότι το σύστημα X Window δεν λειτουργεί σωστά. Αν συμβαίνει αυτό, βεβαιωθείτε ότι χρησιμοποιείτε έκδοση 3.3.3 ή μεγαλύτερη του XFree86™. Από την έκδοση αυτή και μετά, υπάρχει ενσωματωμένη υποστήριξη για κάρτες Mach64 και επίσης διατίθεται εξειδικευμένος εξυπηρετητής X για την κάρτα αυτή. | |||||||
5.10. | Γιατί το FreeBSD σύστημα μου χρησιμοποιεί μόνο 64MB RAM, ενώ ο υπολογιστής μου έχει εγκατεστημένα 128MB; | ||||||
Εξαιτίας του τρόπου με τον οποίο το FreeBSD διαβάζει το μέγεθος της μνήμης από το BIOS, μπορεί να ανιχνεύσει μόνο 16 bits μέγεθος σε Kbytes (65536 Kbytes = 64MB) (ή και λιγότερο... ορισμένα BIOS δίνουν προκαθορισμένο μέγεθος μνήμης 16Μ). Αν έχετε περισσότερα από 64MB, το FreeBSD θα προσπαθήσει να τα ανιχνεύσει. Η ανίχνευση ωστόσο μπορεί να αποτύχει. Για να παρακάμψετε το πρόβλημα, θα πρέπει να χρησιμοποιήσετε την επιλογή του πυρήνα που φαίνεται παρακάτω. Υπάρχει τρόπος να ληφθούν πλήρεις πληροφορίες σχετικά με τη μνήμη από το BIOS, αλλά στο bootblock δεν υπάρχει αρκετός χώρος για να γίνει αυτό. Κάποια μέρα, όταν διορθωθεί το πρόβλημα της έλλειψης χώρου στα bootblocks, θα χρησιμοποιήσουμε τις εκτεταμένες λειτουργίες του BIOS για να ανακτήσουμε πλήρεις πληροφορίες σχετικά με τη μνήμη. Για την ώρα, πρέπει να περιοριστούμε στην ρύθμιση της αντίστοιχης επιλογής του πυρήνα.
Όπου το | |||||||
5.11. | Το σύστημα μου έχει περισσότερο από 1 GB RAM, και παίρνω panics με μηνύματα “kmem_map too small”. Που είναι το πρόβλημα; | ||||||
Φυσιολογικά, το FreeBSD χρησιμοποιεί το μέγεθος της εγκατεστημένης μνήμης για να καθορίσει μια σειρά από παραμέτρους του πυρήνα, όπως το μέγιστο αριθμό αρχείων που μπορεί να είναι ταυτόχρονα ανοιχτά. Σε συστήματα με περισσότερη από 1GB μνήμη, αυτός ο μηχανισμός “αυτόματης ρύθμισης μεγεθών” ίσως επιλέξει τιμές οι οποίες να είναι πολύ υψηλές. Κατά την εκκίνηση, ο πυρήνας εκχωρεί διάφορους πίνακες και άλλες δομές, οι οποίες καταλαμβάνουν τον περισσότερο διαθέσιμο χώρο του. Αργότερα, καθώς το σύστημα λειτουργεί, ο πυρήνας δεν έχει άλλο χώρο για δυναμικές εκχωρήσεις μνήμης, και δημιουργείται panic. Δημιουργήστε το δικό σας πυρήνα, και προσθέστε την επιλογή
| |||||||
5.12. | Το σύστημα μου δεν έχει 1GB RAM, και πάλι όμως το FreeBSD δημιουργεί panic με το μήνυμα kmem_map too small! | ||||||
Το panic δείχνει ότι το σύστημα έχει μείνει από εικονική μνήμη για προσωρινή αποθήκευση δεδομένων δικτύου (network buffers, και ειδικότερα mbuf clusters). Μπορείτε να αυξήσετε το μέγεθος της εικονικής μνήμης που διατίθεται για mbuf clusters, ακολουθώντας τις οδηγίες στην ενότητα Όρια Δικτύου του Εγχειριδίου. | |||||||
5.13. | Γιατί παίρνω το μήνυμα λάθους /kernel: proc: table is full; | ||||||
Ο πυρήνας του FreeBSD επιτρέπει κάθε χρονική στιγμή την ύπαρξη
ενός συγκεκριμένου αριθμού διεργασιών. Ο αριθμός αυτός βασίζεται
στην επιλογή Για να ρυθμίσετε την τιμή του Αν το μηχάνημα σας λειτουργεί σε χαμηλό φορτίο, αλλά εκτελεί
μεγάλο αριθμό διεργασιών, μπορείτε απλώς να ρυθμίσετε τον αριθμό
τους αλλάζοντας την τιμή της μεταβλητής
Για να γίνει μόνιμη μια αλλαγή ενός sysctl, τοποθετήστε την
κατάλληλη τιμή στο αρχείο | |||||||
5.14. | Γιατί παίρνω το μήνυμα λάθους CMAP busy όταν επανεκκινώ με νέο πυρήνα; | ||||||
Η λογική του συστήματος που προσπαθεί να ανιχνεύσει τυχόν
παλιές εκδόσεις των αρχείων Αν σας συμβεί αυτό, επανεκκινήστε σε κατάσταση ενός χρήστη (single user) και γράψτε: # rm /var/db/kvm_*.db | |||||||
5.15. | Τι σημαίνει το μήνυμα ahc0: brkadrint, Illegal Host Access at seqaddr 0x0; | ||||||
Υπάρχει μια διένεξη με την κάρτα Ultrastor SCSI Host Adapter. Κατά τη διάρκεια της διαδικασίας εκκίνησης, εισέλθετε στο
μενού ρυθμίσεων του πυρήνα και απενεργοποιήστε τη συσκευή
| |||||||
5.16. | Όταν ξεκινώ το σύστημα μου παίρνω το λάθος ahc0: illegal cable configuration. Η καλωδίωση μου είναι σωστή. Τι συμβαίνει; | ||||||
Η μητρική πλακέτα σας δεν έχει τα απαιτούμενα εξωτερικά κυκλώματα ώστε να υποστηρίζει αυτόματο τερματισμό του διαύλου SCSI. Αντί να βασίζεστε στον αυτόματο τερματισμό, δηλώστε στο SCSI BIOS τον σωστό τερματισμό για τη διάταξη συσκευών που έχετε. Το πρόγραμμα οδήγησης του AIC7XXX δεν μπορεί να καθορίσει αν είναι διαθέσιμο το κύκλωμα που χρησιμοποιείται για την ανίχνευση του καλωδίου (άρα και του αυτόματου τερματισμού). Το πρόγραμμα οδήγησης υποθέτει ότι υπάρχει υποστήριξη, εφόσον οι ρυθμίσεις που περιέχονται στη σειριακή EEPROM αναφέρουν "αυτόματο τερματισμό". Συχνά, χωρίς το εξωτερικό κύκλωμα ανίχνευσης του καλωδίου, το πρόγραμμα οδήγησης θα ρυθμίζει λανθασμένα τον τερματισμό, κάτι που μπορεί να δημιουργήσει πρόβλημα στην αξιοπιστία του διαύλου SCSI. | |||||||
5.17. | Γιατί το Sendmail δίνει το μήνυμα λάθους “mail loops back to myself”; | ||||||
Αυτό περιγράφεται στο sendmail FAQ όπως φαίνεται παρακάτω: * Παίρνω μηνύματα λάθους "Local configuration error" όπως το: Η τρέχουσα έκδοση του sendmail FAQ δεν συντηρείται πλέον με κάθε έκδοση του sendmail.
Ωστόσο, δημοσιεύεται ανά τακτά διαστήματα στις λίστες comp.mail.sendmail,
comp.mail.misc, comp.mail.smail, comp.answers, και news.answers. Μπορείτε επίσης
να λάβετε αντίγραφο μέσω email, στέλνοντας ένα μήνυμα στο
| |||||||
5.18. | Γιατί δεν συμπεριφέρονται σωστά οι εφαρμογές πλήρους οθόνης σε απομακρυσμένα μηχανήματα; | ||||||
Είναι πιθανόν το απομακρυσμένο μηχάνημα να ρυθμίζει τον τύπο
του τερματικού σας σε κάτι διαφορετικό από τον τύπο
Υπάρχουν διάφοροι τρόποι για να παρακάμψετε αυτό το πρόβλημα:
| |||||||
5.19. | Γιατί το μηχάνημα μου δείχνει το μήνυμα calcru: negative time...; | ||||||
Αυτό μπορεί να συμβεί από διάφορες αιτίες που σχετίζονται με interrupts, τόσο στο υλικό όσο και στο λογισμικό. Μπορεί να οφείλεται σε προβλήματα (bugs) αλλά μπορεί επίσης να προκληθεί εξαιτίας της φύσης κάποιων συσκευών. Ένας συνηθισμένος τρόπος πρόκλησης του προβλήματος, είναι η εκτέλεση εφαρμογών TCP/IP με μεγάλο MTU μέσω της παράλληλης θύρας. Μπορεί επίσης να προκληθεί από κάποιους επιταχυντές γραφικών, και στην περίπτωση αυτή το πρώτο πράγμα που θα πρέπει να ελέγξετε είναι η ρύθμιση interrupt της αντίστοιχης κάρτας. Παρενέργεια αυτού του προβλήματος είναι ο απότομος τερματισμός διεργασιών με το μήνυμα “SIGXCPU exceeded cpu time limit”. Αν το πρόβλημα δεν μπορεί να λυθεί με διαφορετικό τρόπο, η λύση είναι να ορίσετε την παρακάτω μεταβλητή του sysctl: # sysctl -w kern.timecounter.method=1 Σημείωση:Η επιλογή Το παραπάνω θα έχει επίδραση στην απόδοση, αλλά σε σχέση με
την αιτία του προβλήματος, μάλλον δεν θα το παρατηρήσετε. Αν το
πρόβλημα επιμένει, διατηρήστε την τιμή του sysctl στο ένα, και
ρυθμίστε την επιλογή | |||||||
5.20. | Γιατί η PnP κάρτα μου δεν ανιχνεύεται πλέον (ή ανιχνεύεται ως
| ||||||
Το FreeBSD 4.X ακολουθεί πλέον αρκετά πιο πιστά το πρότυπο PnP και αυτό δημιουργεί ορισμένες φορές την παρενέργεια να μη λειτουργούν κάποιες συσκευές PnP (π.χ. κάρτες ήχου και εσωτερικά modems) οι οποίες ωστόσο λειτουργούσαν στο FreeBSD 3.Χ. Οι λόγοι για την συμπεριφορά αυτή, εξηγούνται στο ακόλουθο
e-mail, το οποίο στάλθηκε στη λίστα freebsd-questions από τον
Peter Wemm, ως απάντηση σε ερώτηση σχετικά με ένα εσωτερικό
modem το οποίο δεν ήταν ανιχνεύσιμο από το σύστημα μετά από
αναβάθμιση σε FreeBSD 4.X (τα σχόλια μέσα σε Σημείωση:Το περιεχόμενο αυτής της παράθεσης έχει ανανεωθεί σε σχέση με το αρχικό κείμενο.
Για να λειτουργήσει ξανά η συσκευή, πρέπει να βρεθεί το PNP id της και να προστεθεί στη λίστα των ανιχνεύσεων ISA που χρησιμοποιούνται για την αναγνώριση PnP συσκευών. Αυτό μπορεί να γίνει με τη χρήση της pnpinfo(8) για την ανίχνευση της συσκευής, για παράδειγμα αυτή είναι η έξοδος της pnpinfo(8) για ένα εσωτερικό modem: # pnpinfo
Checking for Plug-n-Play devices...
Card assigned CSN #1
Vendor ID PMC2430 (0x3024a341), Serial Number 0xffffffff
PnP Version 1.0, Vendor Version 0
Device Description: Pace 56 Voice Internal Plug & Play Modem
Logical Device ID: PMC2430 0x3024a341 #0
Device supports I/O Range Check
TAG Start DF
I/O Range 0x3f8 .. 0x3f8, alignment 0x8, len 0x8
[16-bit addr]
IRQ: 4 - only one type (true/edge)[παραλείπονται οι υπόλοιπες γραμμές TAG] TAG End DF
End Tag
Successfully got 31 resources, 1 logical fdevs
-- card select # 0x0001
CSN PMC2430 (0x3024a341), Serial Number 0xffffffff
Logical device #0
IO: 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8
IRQ 5 0
DMA 4 0
IO range check 0x00 activate 0x01 Οι πληροφορίες που απαιτούνται, βρίσκονται στη γραμμή “Vendor ID”, στην αρχή της εξόδου. Ο δεκαεξαδικός αριθμός στις παρενθέσεις (στο παράδειγμα μας 0x3024a341) είναι το PnP id ενώ το αλφαριθμητικό που βρίσκεται ακριβώς πριν από αυτόν είναι ένα μοναδικό ASCII αναγνωριστικό. Εναλλακτικά, αν το pnpinfo(8) δεν δείχνει την ζητούμενη
κάρτα, μπορείτε να χρησιμοποιήσετε το pciconf(8). Παρακάτω
φαίνεται ένα μέρος της εξόδου της # pciconf -vl
chip1@pci0:31:5: class=0x040100 card=0x00931028 chip=0x24158086 rev=0x02 hdr=0x00
vendor = 'Intel Corporation'
device = '82801AA 8xx Chipset AC'97 Audio Controller'
class = multimedia
subclass = audioΕδώ, θα χρησιμοποιούσαμε την τιμή του Η πληροφορία αυτή (Vendor ID ή τιμή chip) θα πρέπει να
προστεθεί στο αρχείο Θα πρέπει πρώτα να κρατήσετε ένα αντίγραφο ασφαλείας του
static struct isa_pnp_id sio_ids[] = { έπειτα μετακινηθείτε προς τα κάτω για να βρείτε το σωστό μέρος να προσθέσετε την καταχώρηση της συσκευής σας. Οι καταχωρήσεις φαίνονται όπως παρακάτω και είναι ταξινομημένες κατά το αλφαριθμητικό ASCII Vendor ID το οποίο θα πρέπει να περιληφθεί στο σχόλιο στο δεξιό μέρος της γραμμής μαζί με όλη την περιγραφή Device Description (αν χωράει, αλλιώς μέρος της) από την έξοδο της pnpinfo(8): {0x0f804f3f, NULL}, /* OZO800f - Zoom 2812 (56k Modem) */
{0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */
{0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */
{0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */
{0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */ Προσθέστε το δεκαεξαδικό Vendor ID για τη συσκευή σας στο
σωστό μέρος, αποθηκεύστε το αρχείο, αναδημιουργήστε τον πυρήνα
σας, και επανεκκινήστε. Θα πρέπει τώρα η συσκευή σας να βρεθεί ως
συσκευή | |||||||
5.21. | Γιατί παίρνω το λάθος nlist failed όταν
εκτελώ, για παράδειγμα, το | ||||||
Το πρόβλημα είναι ότι η εφαρμογή που προσπαθείτε να εκτελέσετε ψάχνει για ένα συγκεκριμένο σύμβολο στον πυρήνα, αλλά για κάποιο λόγο δεν μπορεί να το εντοπίσει. Το σφάλμα αυτό μπορεί να οφείλεται σε δύο προβλήματα:
| |||||||
5.22. | Γιατί παίρνει τόσο χρόνο να συνδεθώ με τον υπολογιστή μου μέσω
| ||||||
Το σύμπτωμα: Υπάρχει μεγάλη καθυστέρηση μεταξύ της στιγμής που αποκαθίσταται η TCP σύνδεση και της στιγμής που το πρόγραμμα στη μεριά του πελάτη ζητάει τον κωδικό πρόσβασης (ή στην περίπτωση του telnet(1), της στιγμής που εμφανίζεται η προτροπή login). Το πρόβλημα: Το πιο πιθανό είναι ότι η καθυστέρηση οφείλεται στην προσπάθεια που καταβάλλει το λογισμικό στη μεριά του εξυπηρετητή να βρει το όνομα του μηχανήματος - πελάτη από την IP διεύθυνση του. Οι περισσότεροι εξυπηρετητές, συμπεριλαμβανομένων του Telnet και SSH που έρχονται με το FreeBSD, λειτουργούν με αυτό τον τρόπο, ώστε μεταξύ άλλων, να αποθηκεύσουν το όνομα του μηχανήματος σε ένα αρχείο καταγραφής για μελλοντική αναφορά από τον διαχειριστή. Η θεραπεία: Αν το πρόβλημα προκύπτει κάθε φορά που συνδέεστε από τον υπολογιστή σας (τον πελάτη) σε οποιοδήποτε εξυπηρετητή, το πρόβλημα βρίσκεται στον πελάτη. Με τον ίδιο τρόπο, αν το πρόβλημα συμβαίνει μόνο όταν κάποιος συνδέεται στον υπολογιστή σας (τον εξυπηρετητή), το πρόβλημα βρίσκεται στον εξυπηρετητή. Αν το πρόβλημα είναι στον πελάτη, η μόνη θεραπεία είναι να διορθώσετε το DNS, ώστε ο εξυπηρετητής να μπορεί να το βρει. Αν το πρόβλημα εμφανίζεται στο τοπικό σας δίκτυο, θεωρείστε το πρόβλημα στον εξυπηρετητή και συνεχίστε την ανάγνωση. Αντίθετα, αν το πρόβλημα εμφανίζεται σε συνδέσεις μέσω Internet, κατά πάσα πιθανότητα θα χρειαστεί να επικοινωνήσετε με τον ISP σας και να ζητήσετε να σας το διορθώσει. Αν το πρόβλημα είναι με τον εξυπηρετητή, και εμφανίζεται στο
τοπικό σας δίκτυο, θα πρέπει να τον ρυθμίσετε ώστε να μπορεί να
εκτελεί αναζητήσεις τύπου διεύθυνση σε όνομα, για την τοπική
περιοχή διευθύνσεων σας. Δείτε τις σελίδες manual των
hosts(5) και named(8) για περισσότερες πληροφορίες. Αν
το πρόβλημα εμφανίζεται στις συνδέσεις μέσω Internet, μπορεί να
οφείλεται σε κακή λειτουργία του resolver στον εξυπηρετητή σας.
Για να το ελέγξετε, δοκιμάστε να βρείτε κάποιο άλλο μηχάνημα, για
παράδειγμα το Μετά από μια νέα εγκατάσταση του FreeBSD είναι επίσης πιθανό
να λείπουν οι πληροφορίες για τον τομέα (domain) και τον
εξυπηρετητή ονομάτων (nameserver) από το αρχείο
| |||||||
5.23. | Ποια είναι η έννοια του stray (περιπλανώμενου) IRQ; | ||||||
Τα stray IRQs είναι σημάδια προβλημάτων υλικού που χρησιμοποιεί IRQs, ειδικότερα σχετίζεται με υλικό που κατά τη μέση του κύκλου αναγνώρισης (acknowledge cycle) του interrupt, σταματάει να μεταδίδει την αντίστοιχη αίτηση διακοπής. Έχετε τρεις επιλογές για να αντιμετωπίσετε αυτό το πρόβλημα:
| |||||||
5.24. | Γιατί βλέπω συνέχεια το μήνυμα file: table is full στο dmesg; | ||||||
Το μήνυμα αυτό σημαίνει ότι έχετε εξαντλήσει τον αριθμό των διαθέσιμων περιγραφέων αρχείων (file descriptors) στο σύστημα σας. Παρακαλούμε δείτε το kern.maxfiles τμήμα στο κεφάλαιο Ρύθμιση Ορίων Πυρήνα του Εγχειριδίου, για ερμηνεία και επίλυση του προβλήματος. | |||||||
5.25. | Γιατί το ρολόι στο φορητό μου υπολογιστή δεν κρατάει την σωστή ώρα; | ||||||
Ο φορητός υπολογιστής σας έχει δύο ή περισσότερα ρολόγια, και το FreeBSD έχει επιλέξει να χρησιμοποιήσει το λάθος. Εκτελέστε την dmesg(8), και ελέγξτε για γραμμές που
περιέχουν την λέξη # dmesg | grep Timecounter
Timecounter "i8254" frequency 1193182 Hz
Timecounter "TSC" frequency 595573479 HzΜπορείτε να το επιβεβαιώσετε αυτό, ελέγχοντας την τιμή του
# sysctl kern.timecounter.hardware
kern.timecounter.hardware: TSCΤο BIOS ίσως να τροποποιεί την τιμή του ρολογιού TSC— ενδεχομένως για να αλλάξει την ταχύτητα του επεξεργαστή όταν λειτουργεί με μπαταρίες, ή όταν εισέρχεται σε κατάσταση χαμηλής κατανάλωσης, αλλά το FreeBSD δεν γνωρίζει για αυτές τις αλλαγές και φαίνεται να κερδίζει ή να χάνει χρόνο. Στο παράδειγμα μας, είναι επίσης διαθέσιμο το ρολόι
# sysctl -w kern.timecounter.hardware=i8254
kern.timecounter.hardware: TSC -> i8254Ο φορητός υπολογιστής σας θα πρέπει τώρα να είναι πιο ακριβής στην τήρηση του χρόνου. Για να παραμείνει η αλλαγή αυτή σε κάθε εκκίνηση, προσθέστε
την παρακάτω γραμμή στο kern.timecounter.hardware=i8254 | |||||||
5.26. | Γιατί ο φορητός μου υπολογιστής δεν αναγνωρίζει σωστά τις κάρτες τύπου PC card; | ||||||
Το πρόβλημα είναι κοινό σε φορητά που εκκινούν περισσότερα από
ένα λειτουργικά συστήματα. Ορισμένα μη-BSD λειτουργικά συστήματα
αφήνουν τις PC cards σε μη-προβλέψιμη κατάσταση. Η εντολή
Πρέπει να αποσυνδέσετε εντελώς την τροφοδοσία από την θύρα PC card ώστε το υλικό να επανέλθει στην αρχική του κατάσταση. Απενεργοποιήστε πλήρως τον φορητό υπολογιστή σας. (Μην τον βάλετε σε κατάσταση αναμονής ή ύπνου, θα πρέπει να απενεργοποιηθεί εντελώς.) Περιμένετε για λίγα λεπτά και επανεκκινήστε. Θα πρέπει τώρα η PC card να λειτουργεί κανονικά. Το υλικό κάποιων φορητών υπολογιστών στην πραγματικότητα παραμένει ενεργό, ακόμα και όταν υποτίθεται ότι ο υπολογιστής είναι ανενεργός. Αν το παραπάνω δεν έχει το επιθυμητό αποτέλεσμα, τερματίστε τη λειτουργία του υπολογιστή σας, αφαιρέστε την μπαταρία, περιμένετε λίγο, τοποθετήστε ξανά την μπαταρία και επανεκκινήστε. | |||||||
5.27. | Γιατί ο φορτωτής εκκίνησης του FreeBSD δείχνει το μήνυμα λάθους Read error και σταματάει μετά την οθόνη του BIOS; | ||||||
Ο φορτωτής εκκίνησης του FreeBSD δεν αναγνωρίζει σωστά την γεωμετρία του σκληρού δίσκου. Μπορείτε να την ρυθμίσετε χειροκίνητα μέσα από την fdisk κατά την δημιουργία ή τροποποίηση του slice του FreeBSD. Μπορείτε να βρείτε τις σωστές τιμές για την γεωμετρία του οδηγού στο BIOS του μηχανήματος. Ψάξτε για τον αριθμό των κυλίνδρων, κεφαλών και τομέων για τον οδηγό που θέλετε. Μέσα από την fdisk του sysinstall(8), πιέστε το G για να ορίσετε την γεωμετρία του οδηγού. Θα εμφανιστεί ένας διάλογος που θα ζητάει τον αριθμό των
κυλίνδρων, κεφαλών και τομέων. Πληκτρολογήστε τους αριθμούς που
βρήκατε από το BIOS, χωρίζοντας τους με κανονικές καθέτους. Για
παράδειγμα, για 5000 κυλίνδρους, 250 κεφαλές και 60 τομείς, θα
γράφαμε Πιέστε enter για να ορίσετε τις τιμές, και έπειτα το W για να γράψετε το νέο πίνακα κατατμήσεων στον οδηγό. | |||||||
5.28. | Ένα άλλο λειτουργικό σύστημα κατέστρεψε τον διαχειριστή εκκίνησης μου. Πως μπορώ να τον αποκαταστήσω; | ||||||
Θα πρέπει να εισέλθετε στο sysinstall(8) και να επιλέξετε Configure και κατόπιν Fdisk. Επιλέξτε το δίσκο στον οποίο βρίσκεται κανονικά ο Φορτωτής Εκκίνησης χρησιμοποιώντας το πλήκτρο space. Πιέστε το W για να γράψετε τις αλλαγές στον οδηγό. Θα εμφανιστεί μια προτροπή που θα σας ρωτάει ποιο φορτωτή εκκίνησης να εγκαταστήσει. Κάντε την αντίστοιχη επιλογή και ο φορτωτής εκκίνησης θα αποκατασταθεί. | |||||||
5.29. | Τι σημαίνει το μήνυμα λάθους swap_pager: indefinite wait buffer:; | ||||||
Σημαίνει ότι μια διαδικασία προσπαθεί να γράψει μια
σελίδα μνήμης στο δίσκο, και η απόπειρα αυτή έχει κολλήσει
προσπαθώντας να αποκτήσει πρόσβαση στο δίσκο για περισσότερο
από 20 δευτερόλεπτα. Αυτό μπορεί να συμβεί από χαλασμένους τομείς
στο σκληρό δίσκο, προβληματικά καλώδια, ή άλλο υλικό το οποίο να
σχετίζεται με I/O. Αν πρόκειται για προβληματικό δίσκο, θα
δείτε επίσης και αντίστοιχα μηνύματα στο
| |||||||
5.30. | Τι είναι τα σφάλματα “UDMA ICRC”, και πως μπορώ να τα διορθώσω; | ||||||
Το πρόγραμμα οδήγησης ata(4) αναφέρει σφάλματα τύπου “UDMA ICRC” όταν εντοπίσει πρόβλημα στην ορθότητα των δεδομένων σε μια μεταφορά DMA από ή προς τον οδηγό. Το πρόγραμμα οδήγησης θα προσπαθήσει να επαναλάβει τη μεταφορά μερικές φορές. Αν όλες οι απόπειρες αποτύχουν, θα αλλάξει την κατάσταση επικοινωνίας της συσκευής από DMA σε PIO, η οποία είναι πιο αργή. Το πρόβλημα μπορεί να προκληθεί από πολλούς παράγοντες, αν και ο πιο συνηθισμένος είναι η προβληματική ή λανθασμένη καλωδίωση. Ελέγξτε ότι τα καλώδια ΑΤΑ δεν έχουν υποστεί ζημιά, και ότι είναι κατάλληλων προδιαγραφών για την κατάσταση λειτουργίας Ultra DMA που χρησιμοποιείτε. Αν χρησιμοποιείτε αφαιρούμενα συρτάρια δίσκων, θα πρέπει επίσης να είναι συμβατά. Βεβαιωθείτε ότι υπάρχει καλή επαφή σε όλες τις συνδέσεις. Έχουν επίσης αναφερθεί προβλήματα όταν γίνεται εγκατάσταση ενός παλιού οδηγού στο ίδιο κανάλι DMA με ένα δίσκο Ultra DMA 66 (ή πιο γρήγορο). Τέλος, τα λάθη αυτά μπορεί να σημαίνουν ότι ο δίσκος πρόκειται σύντομα να χαλάσει. Οι περισσότεροι κατασκευαστές δίσκων παρέχουν λογισμικό ελέγχου για τους οδηγούς τους, ελέγξτε λοιπόν το δίσκο σας, και αν χρειάζεται, πάρτε αντίγραφο των δεδομένων σας και αντικαταστήστε τον. Μπορείτε να χρησιμοποιήσετε το βοηθητικό πρόγραμμα
atacontrol(8) για να δείτε και να επιλέξετε την κατάσταση
λειτουργίας DMA ή PIO που χρησιμοποιείται από κάθε συσκευή ATA.
Πιο συγκεκριμένα, η εντολή
| |||||||
5.31. | Τι είναι το lock order reversal; | ||||||
Ο Robert Watson απάντησε με σαφήνεια αυτή την ερώτηση στην λίστα freebsd-current, σε μια συζήτηση με τίτλο “lock order reversals - τι σημαίνουν;”
Σημείωση:Αυτό που αποκαλούμε "λανθασμένη διάγνωση" δημιουργείται στην πραγματικότητα όταν το Witness βρίσκει κάποιο πολύ πιο σοβαρό λάθος. Τέτοια λάθη είναι τυπικά το σφάλμα σελίδας (page fault) ή λανθασμένα δεδομένα στη μνήμη μέσα στον πυρήνα, ή τέλος σύγκρουση ονομασίας με κάποια mutexes. Σημείωση:Δείτε την σελίδα του Bjoern Zeeb σχετικά με τις αντιστροφές κλειδωμάτων για την κατάσταση των γνωστών αντιστροφών. | |||||||
5.32. | Τι σημαίνει το μήνυμα Called ... with the following non-sleepable locks held; | ||||||
Σημαίνει ότι κλήθηκε μια συνάρτηση με δυνατότητα sleep ενώ την ίδια στιγμή ήταν ενεργό κάποιο κλείδωμα mutex (ή αντίστοιχο χωρίς δυνατότητα sleep). Ο λόγος για τον οποίο αυτό είναι λάθος είναι επειδή τα mutexes δεν προορίζονται να κρατούνται για μεγάλα χρονικά διαστήματα. Είναι μόνο για τη συντήρηση μικρών περιόδων συγχρονισμού. Αυτή η προγραμματιστική συμφωνία επιτρέπει στους οδηγούς συσκευών να χρησιμοποιούν mutexes για να συγχρονίζονται με τα υπόλοιπα προγράμματα του πυρήνα κατά την διάρκεια των interrupts. Τα interrupts (στο FreeBSD) δεν μπορούν να περιέλθουν σε κατάσταση sleep. Για το λόγο αυτό είναι απαραίτητο να μην μπλοκάρεται ο πυρήνας για μεγάλο διάστημα από κάποιο υποσύστημα που κρατάει ένα mutex. Για να εντοπιστούν αυτά τα λάθη, μπορούν να προστεθούν υποθέσεις (assertions) στον πυρήνα οι οποίες αλληλεπιδρούν με το υποσύστημα witness για να δώσουν ένα προειδοποιητικό μήνυμα (ή μήνυμα λάθους, ανάλογα με τις ρυθμίσεις του συστήματος) όταν γίνεται μια κλήση η οποία πιθανώς να δημιουργεί μπλοκάρισμα την στιγμή που κρατιέται ένα mutex. Εν συντομία, αυτού του είδους οι προειδοποιήσεις δεν είναι συνήθως μοιραίες, αλλά υπό ορισμένες ατυχείς προϋποθέσεις, μπορεί να προκαλέσουν ανεπιθύμητα φαινόμενα τα οποία κυμαίνονται από μια στιγμιαία πτώση στην απόκριση του συστήματος, μέχρι πλήρης κατάρρευση. | |||||||
5.33. | Γιατί η διαδικασία buildworld/installworld σταματάει με το μήνυμα touch: not found; | ||||||
Το μήνυμα αυτό δεν σημαίνει ότι σας λείπει το βοηθητικό
πρόγραμμα touch(1). Το λάθος αυτό προκαλείται συνήθως από
λανθασμένη, μελλοντική, σήμανση ημερομηνίας των αρχείων. Αν το
ρολόι CMOS του υπολογιστή σας είναι ρυθμισμένο για τοπική ώρα,
πρέπει να εκτελέσετε την εντολή
|
Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την
τεκμηρίωση πριν να επικοινωνήσετε με την
<questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην
<doc@FreeBSD.org>.