Κεφάλαιο 10 Διαχείριση Συστήματος

10.1. Που είναι τα αρχεία ρυθμίσεων που αφορούν την εκκίνηση του συστήματος;
10.2. Πως μπορώ να προσθέσω εύκολα ένα χρήστη;
10.3. Γιατί λαμβάνω συνέχεια μηνύματα του τύπου root: not found μετά την επεξεργασία του προσωπικού μου αρχείου crontab;
10.4. Γιατί λαμβάνω το λάθος you are not in the correct group to su root όταν προσπαθώ να χρησιμοποιήσω την εντολή su για να γίνω root;
10.5. Έκανα κάποιο λάθος στο αρχείο rc.conf ή κάποιο άλλο αρχείο εκκίνησης και τώρα δεν μπορώ να το επεξεργαστώ επειδή το σύστημα αρχείων έχει προσαρτηθεί μόνο για ανάγνωση. Τι μπορώ να κάνω;
10.6. Γιατί έχω πρόβλημα στη ρύθμιση του εκτυπωτή μου;
10.7. Πως μπορώ να αλλάξω τη διάταξη πληκτρολογίου του συστήματος μου;
10.8. Γιατί λαμβάνω μηνύματα του τύπου: unknown: <PNP0303> can't assign resources κατά την εκκίνηση;
10.9. Γιατί δεν μπορώ να ρυθμίσω τα quota χρήστη ώστε να λειτουργούν σωστα;
10.10. Υποστηρίζει το FreeBSD τις λειτουργίες του System V IPC;
10.11. Ποιο άλλο πρόγραμμα εξυπηρετητή ταχυδρομείου μπορώ να χρησιμοποιήσω αντί για το sendmail;
10.12. Ξέχασα τον κωδικό του root! Τι μπορώ να κάνω;
10.13. Πως μπορώ να εμποδίσω το Control+Alt+Delete από το να επανεκκινεί το σύστημα μου;
10.14. Πως μπορώ να μορφοποιήσω αρχεία κειμένου του DOS σε μορφή UNIX®;
10.15. Πως μπορώ να τερματίσω μια διεργασία χρησιμοποιώντας το όνομα της;
10.16. Γιατί η su(1) με ενοχλεί συνέχεια λέγοντας μου ότι δεν ανήκω στο ACL του root;
10.17. Πως μπορώ να απεγκαταστήσω το Kerberos;
10.18. Τι συνέβη στο /dev/MAKEDEV;
10.19. Πως μπορώ να προσθέσω ψευδο-τερματικά στο σύστημα;
10.20. Πως μπορώ να ξαναδιαβάσω το /etc/rc.conf και να επανεκκινήσω το script /etc/rc χωρίς επανεκκίνηση;
10.21. Προσπάθησα να ανανβαθμίσω το σύστημα μου στο τελευταίο -STABLE, αλλά βρέθηκα με ένα -BETAx, -RC ή -PRERELEASE! Τι συμβαίνει;
10.22. Προσπάθησα να εγκαταστήσω νέο πυρήνα, και απέτυχα στο chflags(1). Πως μπορώ να το ξεπεράσω;
10.23. Δεν μπορώ να αλλάξω την ώρα στο σύστημα μου περισσότερο από ένα δευτερόλεπτο! Πως μπορώ να ξεπεράσω αυτό το πρόβλημα;
10.24. Γιατί το rpc.statd χρησιμοποιεί 256 MB μνήμης;
10.25. Γιατί δεν μπορώ να βγάλω το flag schg;
10.26. Γιατί δεν δουλεύει από προεπιλογή η δυνατότητα αυθεντικοποίησης του SSH μέσω .shosts στις πρόσφατες εκδόσεις του FreeBSD;
10.27. Τι είναι το vnlru;
10.28. Τι σημαίνουν οι διάφορες καταστάσεις μνήμης που αναφέρονται από την top;
10.29. Πόση ελεύθερη μνήμη υπάρχει διαθέσιμη;
10.30. Τι είναι το /var/empty; Δεν μπορώ να το σβήσω!

10.1. Που είναι τα αρχεία ρυθμίσεων που αφορούν την εκκίνηση του συστήματος;

Το βασικό αρχείο ρυθμίσεων είναι το /etc/defaults/rc.conf (δείτε το rc.conf(5)). Τα script εκκίνησης του συστήματος που υπάρχουν στους καταλόγους /etc/rc και /etc/rc.d (δείτε το rc(8)) απλώς συμπεριλαμβάνουν αυτό το αρχείο. Μην κάνετε αλλαγές σε αυτό το αρχείο! Αν χρειάζεται να αλλάξετε μια επιλογή στο αρχείο /etc/defaults/rc.conf, αντιγράψτε τη γραμμή στο /etc/rc.conf και αλλάξτε την εκεί.

Για παράδειγμα, αν επιθυμείτε να εκκινεί το named(8), ο εξυπηρετητής DNS που περιλαμβάνεται στο βασικό σύστημα, το μόνο που χρειάζεται να κάνετε είναι το παρακάτω:

# echo named_enable="YES" >> /etc/rc.conf

Για να ξεκινήσετε τοπικές υπηρεσίες, τοποθετήστε τα αντίστοιχα scripts στον κατάλογο /usr/local/etc/rc.d. Τα scripts αυτά θα πρέπει να είναι εκτελέσιμα. Η προεπιλεγμένη κατάσταση τους είναι το 555.

10.2. Πως μπορώ να προσθέσω εύκολα ένα χρήστη;

Χρησιμοποίηστε την εντολή adduser(8) ή την εντολή pw(8) για πιο πολύπλοκες περιπτώσεις.

Για να διαγράψετε ένα χρήστη, χρησιμοποιήστε την εντολή rmuser(8) ή αν είναι απαραίτητο την pw(8).

10.3. Γιατί λαμβάνω συνέχεια μηνύματα του τύπου root: not found μετά την επεξεργασία του προσωπικού μου αρχείου crontab;

Αυτό συνήθως συμβαίνει αν επεξεργαστείτε το crontab του συστήματος (/etc/crontab) και μετά προσπαθήσετε να χρησιμοποιήσετε το crontab(1) για να το εγκαταστήσετε:

# crontab /etc/crontab

Ο τρόπος αυτός δεν είναι σωστός. Το crontab του συστήματος είναι διαφορετικής μορφής σε σχέση με το αντίστοιχο των χρηστών. Το crontab των χρηστών ενημερώνεται μέσω της crontab(1) (οι διαφορές εξηγούνται αναλυτικά στη σελίδα manual του crontab(5)).

Αν πράγματι εκτελέσατε το παραπάνω, το έξτρα crontab είναι απλώς ένα αντίγραφο του /etc/crontab αλλά με λάθος μορφή. Διαγράψτε το με την εντολή:

# crontab -r

Την επόμενη φορά που θα επεξεργαστείτε το αρχείο /etc/crontab, θυμηθείτε ότι δεν χρειάζεται να κάνετε κάτι για να ενημερώσετε το cron(8) για τις αλλαγές. Τις αντιλαμβάνεται αυτόματα.

Αν θέλετε να εκτελείται κάτι κάθε μέρα, βδομάδα ή μήνα, είναι μάλλον προτιμότερο να προσθέσετε αντίστοιχα scripts στον κατάλογο /usr/local/etc/periodic, ώστε να τα εκτελεί το periodic(8) (μέσω του cron) μαζί με τις υπόλοιπες περιοδικές διεργασίες του συστήματος.

Ο πραγματικός λόγος για τον οποίο εμφανίζεται το λάθος, είναι ότι το crontab του συστήματος έχει ένα έξτρα πεδίο το οποίο καθορίζει τον χρήστη με τα δικαιώματα του οποίου εκτελείται η εντολή. Στο προεπιλεγμένο crontab του συστήματος, όπως παρέχεται από το FreeBSD, ο χρήστης αυτός είναι ο root σε όλες τις καταχωρίσεις. Όταν προσπαθείτε να χρησιμοποιήσετε αυτό το crontab ως το προσωπικό crontab του χρήστη root (το οποίο δεν είναι το ίδιο με το crontab του συστήματος), ο cron(8) θεωρεί ότι η λέξη root απότελεί την πρώτη λέξη της εντολής που πρέπει να εκτελέσει, αλλά φυσικά τέτοια εντολή δεν υπάρχει.

10.4. Γιατί λαμβάνω το λάθος you are not in the correct group to su root όταν προσπαθώ να χρησιμοποιήσω την εντολή su για να γίνω root;

Πρόκειται για ένα ενσωματωμένο χαρακτηριστικό ασφάλειας. Για να χρησιμοποίησετε την su για να γίνετε root (ή για οποιοδήποτε άλλο λογαριασμό έχει προνόμια υπερχρήστη), θα πρέπει ο λογαριασμός σας να ανήκει στην ομάδα wheel. Αν το χαρακτηριστικό αυτό δεν υπήρχε, οποιοσδήποτε είχε πρόσβαση στο σύστημα μέσω κάποιου λογαριασμού, θα μπορούσε επίσης να γίνει υπερχρήστης, αν τύχαινε να μάθει τον κωδικό του root. Αυτό πλέον δεν είναι σίγουρο: η su(1) δεν θα αφήσει το το χρήστη καν να δοκιμάσει να βάλει τον κωδικό, αν δεν ανήκει στην ομάδα wheel.

Για να επιτρέψετε σε κάποιον να χρησιμοποιήσει την εντολή su για να γίνει root, απλώς προσθέστε το λογαριασμό του στην ομάδα wheel.

10.5. Έκανα κάποιο λάθος στο αρχείο rc.conf ή κάποιο άλλο αρχείο εκκίνησης και τώρα δεν μπορώ να το επεξεργαστώ επειδή το σύστημα αρχείων έχει προσαρτηθεί μόνο για ανάγνωση. Τι μπορώ να κάνω;

Επανεκκινήστε το σύστημα χρησιμοποιώντας την επιλογή boot -s στην προτροπή του φορτωτή εκκίνησης για να εισέλθετε σε κατάσταση λειτουργίας ενός χρήστη (Single User). Στην προτροπή που θα εμφανιστεί για την επιλογή κελύφους, πιέστε απλώς Enter και εκτελέστε την εντολή mount -urw / για να προσαρτήσετε ξανά το ριζικό σύστημα αρχείων σε κατάσταση ανάγνωσης/εγγραφής. Μπορεί επίσης να χρειαστεί να εκτελέσετε την εντολή mount -a -t ufs για να προσαρτήσετε και το σύστημα αρχείων το οποίο περιέχει το συντάκτη κειμένου που θα χρησιμοποιήσετε. Αν ο συντάκτης κειμένου σας βρίσκεται σε δικτυακό σύστημα αρχείων, θα πρέπει είτε να ρυθμίσετε το δίκτυο χειροκίνητα, ή να χρησιμοποιήσετε κάποιο άλλο συντάκτη κειμένου που να διατίθεται στο τοπικό σύστημα αρχείων, όπως τον ed(1).

Αν σκοπεύετε να χρησιμοποιήσετε κάποιο συντάκτη πλήρους οθόνης όπως το vi(1) ή τον emacs(1), ίσως χρειαστεί επίσης να εκτελέσετε την εντολή export TERM=cons25 ώστε να φορτωθούν τα σωστά δεδομένα για το τερματικό από την αντίστοιχη βάση δεδομένων termcap(5).

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

10.6. Γιατί έχω πρόβλημα στη ρύθμιση του εκτυπωτή μου;

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

Ορισμένοι εκτυπωτές χρειάζονται ένα πρόγραμμα οδήγησης το οποίο εκτελεί το μεγαλύτερο μέρος της διαδικασίας εκτύπωσης στον υπολογιστή (host based). Οι εκτυπωτές αυτοί (που συχνά αποκαλούνται «WinPrinters») δεν υποστηρίζονται αμιγώς από το FreeBSD. Αν ο εκτυπωτής σας δεν δουλεύει από το DOS αλλά μόνο από τα Windows®, είναι πιθανόν τύπου WinPrinter. Η μόνη ελπίδα να τον κάνετε να δουλέψει είναι να δείτε αν υποστηρίζεται από το port print/pnm2ppa.

10.7. Πως μπορώ να αλλάξω τη διάταξη πληκτρολογίου του συστήματος μου;

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

10.8. Γιατί λαμβάνω μηνύματα του τύπου: unknown: <PNP0303> can't assign resources κατά την εκκίνηση;

Το παρακάτω είναι ένα απόσπασμα από μια δημοσίευση στη ηλεκτρονική λίστα της έκδοσης FreeBSD-CURRENT.

 

Το μήνυμα «can't assign resources» δείχνει ότι πρόκειται για παλαιού τύπου συσκευές ISA για τις οποίες το πρόγραμμα οδήγησης που υπάρχει στον πυρήνα δεν αναγνωρίζει συσκευές τύπου PnP. Στις συσκευές αυτές περιλαμβάνονται ελεγκτές πληκτρολογίων, το κύκλωμα του προγραμματιζόμενου ελεγκτή διακοπών (interrupts) και αρκετά ακόμα τυποποιημένα κυκλώματα. Δεν μπορεί να γίνει απόδοση πόρων γιατί υπάρχει ήδη κάποιο πρόγραμμα οδήγησης που χρησιμοποιεί αυτές τις διευθύνσεις.

 
--Garrett Wollman , 24 Απριλίου 2001  

10.9. Γιατί δεν μπορώ να ρυθμίσω τα quota χρήστη ώστε να λειτουργούν σωστα;

  • Είναι πιθανόν ο πυρήνας σας να μην έχει ρυθμιστεί ώστε να υποστήριζει quota. Αν συμβαίνει αυτό θα χρειαστεί να προσθέσετε την παρακάτω γραμμή στο αρχείο ρυθμίσεων του πυρήνα και να τον μεταγλωττίσετε ξανά:

    options QUOTA
    

    Για περισσότερες λεπτομέρειες, παρακαλούμε διαβάστε την ενότητα του Εγχειριδίου σχετικά με τα quota.

  • Μην ενεργοποιήσετε τα quota στο /.

  • Τοποθετήστε το αρχείο των quota στο σύστημα αρχείων στο οποίο επιθυμείτε να εφαρμοστούν:

    Σύστημα Αρχείων Αρχείο Quota
    /usr /usr/admin/quotas
    /home /home/admin/quotas
    ... ...

10.10. Υποστηρίζει το FreeBSD τις λειτουργίες του System V IPC;

Ναι, το FreeBSD υποστηρίζει το IPC τύπου System V, που συμπεριλαμβάνει κοινόχρηστη μνήμη, μηνύματα και σηματοφορείς στον πυρήνα GENERIC. Για να ενεργοποιήσετε αυτές τις λειτουργίες σε ένα προσαρμοσμένο πυρήνα, προσθέστε τις παρακάτω γραμμές στο αρχείο ρυθμίσεων:

options    SYSVSHM          # enable shared memory
options    SYSVSEM          # enable for semaphores
options    SYSVMSG          # enable for messaging

Επαναμεταγλωττίστε και εγκαταστήστε τον πυρήνα σας.

10.11. Ποιο άλλο πρόγραμμα εξυπηρετητή ταχυδρομείου μπορώ να χρησιμοποιήσω αντί για το sendmail;

Ο εξυπηρετητής sendmail είναι ο προεπιλεγμένος εξυπηρετητής ταχυδρομείου για το FreeBSD, αλλά μπορείτε εύκολα να τον αντικαταστήσετε με κάποιο άλλο MTA (για παράδειγμα, κάποιο που εγκαταστήσατε από τα ports).

Υπάρχουν αρκετά εναλλακτικά MTA τη δεδομένη στιγμή στα ports, τα πιο διαδεδομένα είναι το mail/exim, το mail/postfix, το mail/qmail, και το mail/zmailer.

Είναι γενικά καλό που υπάρχει τέτοιο πλήθος επιλογών. Προσπαθήστε να αποφύγετε ερωτήσεις του τύπου «Είναι το sendmail καλύτερο από το qmail;» στις λίστες ταχυδρομείου. Αν πιστεύετε ότι πρέπει να ρωτήσετε, ελέγξτε πρώτα τα αρχεία της λίστας. Τα πλεονεκτήματα και μειονεκτήματα κάθε ΜΤΑ έχουν ήδη συζητηθεί πολλές φορές.

10.12. Ξέχασα τον κωδικό του root! Τι μπορώ να κάνω;

Μη πανικοβάλλεστε! Ξεκινήστε το σύστημα γράφοντας boot -s στην προτροπή Boot: για να εισέλθετε σε λειτουργία ενός χρήστη (single user). Στην ερώτηση σχετικά με το κέλυφος που θα χρησιμοποιηθεί, πιέστε απλώς Enter. Θα βρεθείτε στην προτροπή #. Εκτελέστε την εντολή mount -urw / για να προσαρτήσετε ξανά το ριζικό σύστημα αρχείων με δυνατότητα ανάγνωσης / εγγραφής και έπειτα εκτελέστε mount -a για να προσαρτήσετε όλα τα συστήματα αρχείων. Εκτελέστε την εντολή passwd root για να αλλάξετε τον κωδικό του root και γράψτε exit(1) για να συνεχίσετε την εκκίνηση.

Σημείωση: Αν σας ζητηθεί ο κωδικός του root καθώς εισέρχεστε στην κατάσταση λειτουργίας ενός χρήστη, σημαίνει ότι η κονσόλα του συστήματος έχει τεθεί ως insecure (μη-ασφαλής) στο αρχείο /etc/ttys. Στην περίπτωση αυτή, θα χρειαστεί να εκκινήσετε από το CD εγκατάστασης του FreeBSD και να επιλέξετε το κέλυφος Fixit από το sysinstall(8). Θα πρέπει έπειτα να εκτελέσετε τις εντολές που αναφέρθηκαν παραπάνω.

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

10.13. Πως μπορώ να εμποδίσω το Control+Alt+Delete από το να επανεκκινεί το σύστημα μου;

Αν χρησιμοποιείτε το syscons(4) (τον προεπιλεγμένο οδηγό κονσόλας) μεταγλωττίστε και εγκαταστήστε ένα νέο πυρήνα με την παρακάτω γραμμή στο αρχείο ρυθμίσεων:

options SC_DISABLE_REBOOT

Μπορείτε επίσης να θέσετε το παρακάτω sysctl(8) το οποίο δεν απαιτεί επανεκκίνηση ή μεταγλώττιση του πυρήνα:

# sysctl hw.syscons.kbd_reboot=0

Σημείωση: Οι παραπάνω δύο μέθοδοι λειτουργούν κατά αποκλειστικότητα: Το sysctl(8) δεν υπάρχει αν μεταγλωττίσετε τον πυρήνα σας με την επιλογή SC_DISABLE_REBOOT.

Αν χρησιμοποιείτε το πρόγραμμα οδήγησης κονσόλας pcvt(4) χρησιμοποιήστε την παρακάτω γραμμή στο αρχείο ρυθμίσεων και μεταγλωττίστε ξανά τον πυρήνα σας:

options PCVT_CTRL_ALT_DEL

10.14. Πως μπορώ να μορφοποιήσω αρχεία κειμένου του DOS σε μορφή UNIX®;

Χρησιμοποιήστε την παρακάτω εντολή perl(1):

% perl -i.bak -npe 's/\r\n/\n/g' file(s)

όπου file(s) είναι ένα ή περισσότερα αρχεία προς επεξεργασία. Η αλλαγή γίνεται επιτόπου ενώ το αρχικό αρχεία φυλάσσεται σε αντίγραφο ασφαλείας με κατάληξη .bak.

Εναλλακτικά, μπορείτε να χρησιμοποιήσετε την εντολή tr(1):

% tr -d '\r' < dos-text-file > unix-file

Το αρχείο dos-text-file περιέχει το κείμενο σε μορφή DOS ενώ το αρχείο unix-file θα περιέχει την διορθωμένη έξοδο. Το παραπάνω είναι ταχύτερο σε σχέση με την perl.

Ακόμα να τρόπος για να αλλάξετε τη μορφή κειμένων του DOS είναι να χρησιμοποιήσετε το port converters/dosunix από τη Συλλογή των Ports. Για περισσότερες πληροφορίες, δείτε την τεκμηρίωση του port.

10.15. Πως μπορώ να τερματίσω μια διεργασία χρησιμοποιώντας το όνομα της;

Χρησιμοποιήστε την εντολή killall(1).

10.16. Γιατί η su(1) με ενοχλεί συνέχεια λέγοντας μου ότι δεν ανήκω στο ACL του root;

Αυτό το μήνυμα λάθους προέρχεται από το σύστημα κατανεμημένης αυθεντικοποίησης του Kerberos. Δεν πρόκειται για μοιραίο σφάλμα, είναι όμως ενοχλητικό. Μπορείτε είτε να εκτελείτε την su με την επιλογή -K ή να απεγκαταστήσετε τον Kerberos όπως περιγράφεται στην παρακάτω ερώτηση.

10.17. Πως μπορώ να απεγκαταστήσω το Kerberos;

Για να αφαραίσετε το Kerberos από το σύστημα σας, επανεγκαταστήστε τη διανομή base για την έκδοση του FreeBSD που χρησιμοποιείτε. Αν έχετε το CD-ROM, μπορείτε να το προσαρτήσετε (θεωρούμε στο /cdrom) και να εκτελέσετε τις εντολές που φαίνονται παρακάτω:

# cd /cdrom/base
# ./install.sh

Εναλλακτικά, μπορείτε να περιλάβετε την επιλογή NO_KERBEROS στο αρχείο /etc/make.conf και να μεταγλωττίσετε ξανά το world.

10.18. Τι συνέβη στο /dev/MAKEDEV;

Από το FreeBSD 5.X και μετά χρησιμοποιείται το devfs(8) το οποίο δημιουργεί τα αρχεία συσκευών κατά απαίτηση. Οι οδηγοί συσκευών δημιουργούν αυτόματα τα αντίστοιχα αρχεία όταν χρειάζεται. Το /dev/MAKEDEV δεν χρειάζεται πλέον.

10.19. Πως μπορώ να προσθέσω ψευδο-τερματικά στο σύστημα;

Αν έχετε πολλούς χρήστες telnet, ssh, X, ή screen μπορεί να μείνετε από ψευδο-τερματικά. Από προεπιλογή, το FreeBSD 6.2 και παλιότερες εκδόσεις υποστηρίζουν 256 ψευδοτερματικά, ενώ το FreeBSD 6.3 και μεταγενέστερες εκδόσεις υποστηρίζουν 512 ψευδοτερματικά.

Υπόδειξη: Μπορείτε να προσθέσετε περισσότερα ψευδοτερματικά αν τα χρειάζεστε. Ωστόσο αυτό απαιτεί αλλαγές στην τυποποιημένη βιβλιοθήκη της C, τον πυρήνα και του αρχείου /etc/ttys. Για παράδειγμα, το http://www.freebsd.org/~jhb/patches/pty_1152.patch αυξάνει τον αριθμό των ψευδο-τερματικών σε 1152. Σημειώστε ωστόσο ότι αυτό το patch μπορεί να χρησιμοποιηθεί μόνο σε FreeBSD 6.3 και μεταγενέστερες εκδόσεις.

10.20. Πως μπορώ να ξαναδιαβάσω το /etc/rc.conf και να επανεκκινήσω το script /etc/rc χωρίς επανεκκίνηση;

Μεταβείτε σε κατάσταση λειτουργίας ενός χρήστη (single user) και ξανά πίσω σε κατάσταση πολλαπλών χρηστών (multi user).

Γράψτε τα παρακάτω στην κονσόλα:

# shutdown now
(Note: without -r or -h)

# return
# exit

10.21. Προσπάθησα να ανανβαθμίσω το σύστημα μου στο τελευταίο -STABLE, αλλά βρέθηκα με ένα -BETAx, -RC ή -PRERELEASE! Τι συμβαίνει;

Γρήγορη απάντηση: Είναι απλώς ένα όνομα. Το RC σημαίνει «Release Candidate». Δείχνει ότι σύντομα πρόκειται να υπάρξει επίσημη έκδοση. Στο FreeBSD, το -PRERELEASE συνήθως ταυτίζεται με το πάγωμα του κώδικα πριν από μια επίσημη έκδοση. (Για κάποιες εκδόσεις χρησιμοποιήθηκε το -BETA με τον ίδιο τρόπο που χρησιμοποιείται το -PRERELEASE.)

Αναλυτική απάντηση: Στο FreeBSD οι εκδόσεις προέρχονται από δύο πιθανές πηγές. Οι μεγάλες εκδόσεις (που οι αριθμοί τους τελειώνουν σε μηδέν) όπως π.χ. η 6.0-RELEASE και η 7.0-RELEASE διακλαδώνονται από την κεφαλή του κλάδου ανάπτυξης (head), γνωστή και ως -CURRENT. Οι μικρές εκδόσεις όπως π.χ. 6.3-RELEASE ή 5.2-RELEASE, είναι στην πραγματικότητα στιγμιότυπα του κλάδου -STABLE. Ξεκινώντας από το 4.3-RELEASE, κάθε έκδοση έχει πλέον το δικό της κλάδο, τον οποίο μπορούν να ακολουθούν όσοι χρήστες χρειάζονται πραγματικά πολύ συντηρητικό ρυθμό αλλαγών (τυπικά μόνο διορθώσεις ασφαλείας).

Όταν πρόκειται να δημιουργηθεί μια νέα έκδοση, ο κλάδος από την οποία θα προέλθει πρέπει να περάσει από μια σειρά αλλαγών. Μέρος της διαδικασία είναι και το πάγωμα του κώδικα. Όταν αυτό ξεκινήσει, το όνομα του κλάδου αλλάζει για να δείξει ότι πρόκειται σύντομα να προκύψει από αυτόν μια έκδοση. Για παράδειγμα, αν ο κλάδος λεγόταν 6.2-STABLE, το όνομα του θα αλλάξει σε 6.3-PRERELEASE για να δείξει ότι βρίσκεται σε πάγωμα κώδικα και ότι γίνεται πρόσθετος έλεγχος που σχετίζεται με τη διαδικασία έκδοσης. Μπορούν ακόμα ωστόσο να γίνονται διορθώσεις που σχετίζονται με προβλήματα στον κώδικα και οι οποίες θα περιληφθούν στη νέα επίσημη έκδοση που θα προκύψει. Όταν ο πηγαίος κώδικας είναι σχεδόν έτοιμος, το όνομα θα αλλάξει ξανά σε 6.3-RC το οποίο δείχνει ότι σύντομα θα γίνει έκδοση από τον κλάδο. Στο σημείο αυτό διορθώνονται πλέον μόνο τα πλέον κρίσιμα προβλήματα. Από τη στιγμή που θα δημιουργηθεί ο κλάδος έκδοσης (6.3-RELEASE στο παράδειγμα μας) και ολοκληρωθεί η επίσημη έκδοση, ο κλάδος μετονομάζεται σε 6.3-STABLE.

Για περισσότερες πληροφορίες σχετικά με τους αριθμούς εκδόσεων και τους αντίστοιχους κλάδους CVS, δείτε το άρθρο Οργάνωσης Εκδόσεων.

10.22. Προσπάθησα να εγκαταστήσω νέο πυρήνα, και απέτυχα στο chflags(1). Πως μπορώ να το ξεπεράσω;

Σύντομη απάντηση: Πιθανόν να είστε σε επίπεδο ασφαλείας (security leve) μεγαλύτερο από 0. Επανεκκινήστε σε κατάσταση λειτουργίας ενός χρήστη (single user) για να εγκαταστήσετε τον πυρήνα.

Πλήρης απάντηση: Το FreeBSD δεν επιτρέπει την αλλαγή των flags του συστήματος όταν εκτελείται με επίπεδο ασφαλείας μεγαλύτερο του 0. Μπορείτε να ελέγξετε το επίπεδο ασφαλείας του συστήματος σας με την παρακάτω εντολή:

# sysctl kern.securelevel

Δεν μπορείτε να χαμηλώσετε το επίπεδο ασφαλείας. Θα πρέπει να επανεκκινήσετε σε κατάσταση λειτουργίας ενός χρήστη για να εγκαταστήσετε τον πυρήνα ή να αλλάξετε το επίπεδο ασφάλειας στο /etc/rc.conf και να επανεκκινήσετε. Δείτε τη σελίδα manual του init(8) για λεπτομέρειες σχετικά με το securelevel και δείτε το αρχείο /etc/defaults/rc.conf και τη σελίδα manual του rc.conf(5) για περισσότερες πληροφορίες σχετικά με το rc.conf.

10.23. Δεν μπορώ να αλλάξω την ώρα στο σύστημα μου περισσότερο από ένα δευτερόλεπτο! Πως μπορώ να ξεπεράσω αυτό το πρόβλημα;

Σύντομη απάντηση: Είστε πιθανόν σε επίπεδο ασφάλειας (security level) μεγαλύτερο από 1. Επανεκκινήστε απευθείας σε κατάσταση λειτουργίας ενός χρήστη (single user) για να αλλάξετε την ημερομηνία.

Πλήρης απάντηση: Το FreeBSD δεν επιτρέπει την αλλαγή της ώρας για περισσότερο από ένα δευτερόλεπτο σε επίπεδο ασφαλείας μεγαλύτερο από 1. Μπορείτε να ελέγξετε το επίπεδο ασφαλείας του συστήματος σας με την παρακάτω εντολή:

# sysctl kern.securelevel

Δεν μπορείτε να χαμηλώσετε το επίπεδο ασφαλείας. Θα πρέπει να επανεκκινήσετε σε κατάσταση λειτουργίας ενός χρήστη για να εγκαταστήσετε τον πυρήνα ή να αλλάξετε το επίπεδο ασφάλειας στο /etc/rc.conf και να επανεκκινήσετε. Δείτε τη σελίδα manual του init(8) για λεπτομέρειες σχετικά με το securelevel και δείτε το αρχείο /etc/defaults/rc.conf και τη σελίδα manual του rc.conf(5) για περισσότερες πληροφορίες σχετικά με το rc.conf.

10.24. Γιατί το rpc.statd χρησιμοποιεί 256 MB μνήμης;

Όχι, δεν υπάρχει διαρροή μνήμης και δεν χρησιμοποιεί στην πραγματικότητα 256 MB μνήμης. Για ευκολία του, το rpc.statd απεικονίζει ένα μεγάλο μέρος της μνήμης στη δική του περιοχή διευθύνσεων. Από τεχνικής άποψης δεν είναι κάτι τραγικό, ωστόσο μπερδεύει αρκετά προγράμματα όπως το top(1) και το ps(1).

Το rpc.statd(8) απεικονίζει το αρχείο κατάστασης του (που βρίσκεται στον κατάλογο /var) στην περιοχή διευθύνσεων του. Το απεικονίζει σε αρκετά μεγάλο μέγεθος μνήμης για να μην χρειάζεται να ανησυχεί σε περίπτωση που αυτό μεγαλώσει. Αυτό άλλωστε γίνεται φανερό και αν δείτε τον πηγαίο κώδικα, όπου η παράμετρος μεγέθους που δίνεται στην mmap(2) είναι 0x10000000, ή το ένα δέκατο έκτο της περιοχής διευθύνσεων της αρχιτεκτονικής IA32, ή ακριβώς 256 MB.

10.25. Γιατί δεν μπορώ να βγάλω το flag schg;

Το σύστημα σας εκτελείται σε επίπεδο ασφαλείας (securelevel) μεγαλύτερο του μηδενός. Χαμηλώστε το επίπεδο ασφαλείας και δοκιμάστε ξανά. Για περισσότερες πληροφορίες, δείτε την καταχώριση στο FAQ σχετικά με τα επίπεδα ασφαλείας και τη σελίδα manual της init(8).

10.26. Γιατί δεν δουλεύει από προεπιλογή η δυνατότητα αυθεντικοποίησης του SSH μέσω .shosts στις πρόσφατες εκδόσεις του FreeBSD;

Ο λόγος για τον οποίο δεν λειτουργεί η αυθεντικοποίηση μέσω .shosts από προεπιλογή στις πρόσφατες εκδόσεις του FreeBSD είναι επειδή το ssh(1) από προεπιλογή δεν εγκαθίσταται suid root. Για να το «διορθώσετε» αυτό, μπορείτε να κάνετε ένα από τα παρακάτω:

  • Για μόνιμη αλλαγή, θέστε το ENABLE_SUID_SSH στην τιμή true στο /etc/make.conf και έπειτα μεταγλωττίστε και εγκαταστήστε ξανά το ssh(1) (ή εκτελέστε make world).

  • Για προσωρινή αλλαγή, αλλάξτε την κατάσταση του /usr/bin/ssh σε 4555 εκτελώντας chmod 4555 /usr/bin/ssh ως root. Έπειτα προσθέστε ENABLE_SUID_SSH= true στο /etc/make.conf ώστε η αλλαγή να είναι μόνιμη από την επόμενη φορά που θα εκτελέσετε make world.

10.27. Τι είναι το vnlru;

Το vnlru αδειάζει και απελευθερώνει vnodes όταν το σύστημα φτάσει το όριο kern.maxvnodes. Αυτή η διεργασία του πυρήνα τον περισσότερο χρόνο δεν κάνει τίποτα. Ενεργοποιείται μόνο αν έχετε μεγάλη ποσότητα μνήμης RAM και εκτελείτε προσπέλαση σε δεκάδες χιλιάδες μικρά αρχεία.

10.28. Τι σημαίνουν οι διάφορες καταστάσεις μνήμης που αναφέρονται από την top;

  • Active: σελίδες που (στατιστικά) χρησιμοποιήθηκαν πρόσφατα.

  • Inactive: σελίδες που (στατιστικά) δεν έχουν χρησιμοποιηθεί πρόσφατα.

  • Cache: σελίδες που (συνήθως) άλλαξαν κατάσταση από ανενεργή σε μια διαφορετική, όπου διατηρούν ακόμα τα δεδομένα τους αλλά μπορούν να επαναχρησιμοποιηθούν άμεσα (είτε για τον παλιό τους σκοπό, ή για κάποιο άλλο). Μπορούν να υπάρξουν άμεσες μεταβάσεις από active σε cache αν είναι γνωστό ότι η σελίδα είναι καθαρή (δεν έχει μεταβληθεί), αλλά αυτή η αλλαγή κατάστασης είναι θέμα πολιτικής. Εξαρτάται από την επιλογή αλγορίθμου VM του συντηρητή του συστήματος.

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

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

  • Τις περισσότερες φορές (εκτός αν γίνει συγχρονισμός VM), οι σελίδες γράφονται στο δίσκο όταν είναι σε ανενεργή (inactive) κατάσταση, ωστόσο μπορεί να γίνει συγχρονισμός και ενεργών (active) σελίδων. Αυτό εξαρτάται από το αν η CPU μπορεί να ανιχνεύσει την διαθεσιμότητα του bit μεταβολής και σε ορισμένες περιπτώσεις μπορεί να είναι συμφέρον να γίνει συγχρονισμός ολόκληρου μπλοκ σελίδων, είτε είναι ενεργές είτε είναι ανενεργές. Στις περισσότερες περιπτώσεις, είναι καλύτερο να θεωρούμε ότι το inactive queue είναι μαι σειρά από σχετικά αχρησιμοποίητες σελίδες οι οποίες μπορεί ή όχι να βρίσκονται σε κατάστασης εγγραφής στο δίσκο. Οι σελίδες σε κατάσταση cached είναι ήδη συγχρονισμένες, δεν απεικονίζονται σε κάποια διεργασία, αλλά είναι άμεσα διαθέσιμες για χρήση στον παλιό τους σκοπό ή σε κάποιο νέο. Οι ελεύθερες (free) σελίδες είναι διαθέσιμες σε επίπεδο interrupt αλλά οι σελίδες σε κατάσταση cache ή free μπορούν να επαναχρησιμοποιηθούν και σε επίπεδο διεργασίας. Οι σελίδες σε κατάσταση cache δεν είναι επαρκώς κλειδωμένες για χρήση σε επίπεδο interrupt.

    Υπάρχουν και κάποια άλλα flags (π.χ. busy flag ή busy count) τα οποία μπορούν να μεταβάλλουν κάποιους από τους παραπάνω κανόνες.

10.29. Πόση ελεύθερη μνήμη υπάρχει διαθέσιμη;

Υπάρχουν μερικά διαφορετικά είδη «ελεύθερης μνήμης». Ένα είδος είναι το μέγεθος της μνήμης που μπορεί να χρησιμοποιηθεί άμεσα χωρίς να χρειαστεί να γραφεί κάποια άλλη σελίδα στο δίσκο (page out). Κατά προσέγγιση, είναι το άθροισμα του cache queue και του free queue (ελαττωμένη κατά ένα ποσοστό που εξαρτάται από τις ρυθμίσεις βελτιστοποίησης του συστήματος). Ένα άλλο είδος «ελεύθερης μνήμης» είναι το συνολικό μέγεθος του χώρου VM. Αυτό μπορεί να είναι πολύπλοκο, αλλά εξαρτάται από το μέγεθος του χώρου swap και της μνήμης. Υπάρχουν και άλλες πιθανές περιγραφές για την έννοια της «ελεύθερης μνήμης» αλλά είναι μάλλον άχρηστες. Είναι πιο σημαντικό να εξασφαλίσουμε ότι ο ρυθμός paging είναι μικρός και ότι υπάρχει επάρκεια χώρου swap.

10.30. Τι είναι το /var/empty; Δεν μπορώ να το σβήσω!

Το /var/empty είναι ένας κατάλογος που χρησιμοποιείται από το πρόγραμμα sshd(8) κατά το διαχωρισμό προνομίων (privilege separation). Ο κατάλογος /var/empty είναι άδειος, ανήκει στον root και έχει τεθεί σε αυτόν το flag schg.

Αν και δεν συνίσταται να διαγράψετε αυτό τον κατάλογο, για να το κάνετε θα χρειαστεί πρώτα να θέσετε εκτός το flag schg. Δείτε τη σελίδα manual της chflags(1) για περισσότερες πληροφορίες (και θυμηθείτε επίσης την ερώτηση σχετικά με την επαναφορά του schg flag).

Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την <questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.