diff --git a/el_GR.ISO8859-7/books/handbook/firewalls/chapter.sgml b/el_GR.ISO8859-7/books/handbook/firewalls/chapter.sgml
index 76c8c08158..bff155c4f8 100644
--- a/el_GR.ISO8859-7/books/handbook/firewalls/chapter.sgml
+++ b/el_GR.ISO8859-7/books/handbook/firewalls/chapter.sgml
@@ -1,3578 +1,3561 @@
Joseph J.BarbishΣυνεισφορά του BradDavisΜετατράπηκε σε SGML και ανανεώθηκε από τον FirewallsfirewallασφάλειαfirewallsΣύνοψηΤο firewall (τείχος προστασίας) καθιστά δυνατό το φιλτράρισμα της
εισερχόμενης και εξερχόμενης κίνησης που διέρχεται από το σύστημα σας.
Ένα firewall μπορεί να χρησιμοποιεί ένα ή περισσότερα σετ
κανόνων για να επιθεωρεί τα πακέτα κατά την είσοδο ή
έξοδο τους από μια δικτυακή σύνδεση, και να τα επιτρέπει ή να τα
απορρίπτει. Οι κανόνες του firewall μπορούν να ελέγχουν ένα ή
περισσότερα χαρακτηριστικά των πακέτων, συμπεριλαμβανομένων μεταξύ άλλων
και του τύπου του πρωτοκόλλου, καθώς και την διεύθυνση ή/και θύρα
(port) της αφετηρίας ή του προορισμού.Τα firewalls μπορούν να ενισχύσουν σημαντικά την ασφάλεια ενός
κόμβου ή ενός δικτύου. Μπορούν να χρησιμοποιηθούν για μία ή
περισσότερες από τις ακόλουθες λειτουργίες:Να προστατεύουν και να απομονώνουν τις εφαρμογές, τις υπηρεσίες
και τα μηχανήματα του εσωτερικού σας δικτύου από ανεπιθύμητη κίνηση
που προέρχεται από το Internet.Να περιορίζουν ή να αποκλείουν την πρόσβαση μηχανημάτων του
εσωτερικού δικτύου σε υπηρεσίες του Internet.Να υποστηρίζουν μετάφραση δικτυακών διευθύνσεων
(NAT), η οποία επιτρέπει στο εσωτερικό σας
δίκτυο να χρησιμοποιεί ιδιωτικές IP διευθύνσεις
και να μοιράζεται μία μοναδική σύνδεση με το Internet (είτε μέσω
μίας μοναδικής δημόσιας IP διεύθυνσης, είτε μέσω
ενός πλήθους δημοσίων διευθύνσεων που ανατίθενται αυτόματα).Αφού διαβάσετε αυτό το κεφάλαιο, θα ξέρετε:Πως να δημιουργήσετε σωστούς κανόνες φιλτραρίσματος
πακέτων.Τους διάφορους τύπους firewall που υπάρχουν στο &os; και τις
διαφορές τους.Πως να ρυθμίσετε και να χρησιμοποιήσετε το
PF firewall του OpenBSD.Πως να ρυθμίσετε και να χρησιμοποιήσετε το
IPFILTER.Πως να ρυθμίσετε και να χρησιμοποιήσετε το
IPFW.Πριν διαβάσετε αυτό το κεφάλαιο, θα πρέπει:Να κατανοείτε βασικές αρχές του &os; και του Internet.Βασικές Έννοιες των FirewallsfirewallrulesetsΥπάρχουν δύο βασικοί τρόποι για τη δημιουργία κανόνων σε ένα
firewall: ο inclusive και ο exclusive.
Ένα exclusive firewall επιτρέπει τη διέλευση όλης της κίνησης, εκτός
από αυτή που ταιριάζει με τους κανόνες του. Ένα inclusive firewall
κάνει το ανάποδο. Επιτρέπει μόνο τη διέλευση της κίνησης που ταιριάζει
με τους κανόνες του, και αποκλείει οτιδήποτε άλλο.Τα inclusive firewalls προσφέρουν πολύ καλύτερο έλεγχο της
εξερχόμενης κίνησης και για το λόγο αυτό είναι καλύτερα για συστήματα
που προσφέρουν υπηρεσίες στο δημόσιο Internet. Ελέγχουν επίσης και
τα πακέτα που προέρχονται από το δημόσιο Internet με προορισμό το
ιδιωτικό σας δίκτυο. Από προεπιλογή, όλη η κίνηση που δεν ταιριάζει
με τους κανόνες απορρίπτεται και καταγράφεται. Τα inclusive firewalls
είναι γενικά ασφαλέστερα από τα exclusive, καθώς μειώνουν σημαντικά
την πιθανότητα διέλευσης ανεπιθύμητης κίνησης μέσα από αυτά.Εκτός και αν αναφέρεται διαφορετικά, όλα τα παραδείγματα
ρυθμίσεων και κανόνων που φαίνονται σε αυτό το κεφάλαιο, δημιουργούν
inclusive firewalls.Η ασφάλεια μπορεί να γίνει ακόμα ισχυρότερη με τη χρήση ενός
stateful firewall. Αυτός ο τύπος firewall αποθηκεύει
την κατάσταση των συνδέσεων που μεταφέρουν δεδομένα μέσα από αυτό, και
επιτρέπει μόνο την κίνηση που είτε ταιριάζει με μια από τις υπάρχουσες
συνδέσεις, ή που ξεκινά μια νέα σύνδεση. Το μειονέκτημα ενός stateful
firewall είναι ότι μπορεί να είναι ευάλωτο σε επιθέσεις Denial of
Service (Άρνησης Υπηρεσίας, DoS) αν δεχθεί
ταυτόχρονα πολλές αιτήσεις για άνοιγμα νέων συνδέσεων σε μικρό χρονικό
διάστημα. Με τα περισσότερα firewalls, είναι δυνατόν να γίνει
συνδυασμός και των δύο συμπεριφορών (τόσο stateful όσο και μη-stateful)
ώστε να δημιουργηθεί το βέλτιστο firewall για την συγκεκριμένη
χρήση.Προγράμματα FirewallΤο &os; έχει τρία διαφορετικά προγράμματα firewall ενσωματωμένα στο
βασικό σύστημα. Είναι τα: IPFILTER (γνωστό επίσης
και ως IPF), το IPFIREWALL
(γνωστό επίσης και ως IPFW), και το
PacketFilter του OpenBSD
(γνωστό επίσης και ως PF). Το &os; ενσωματώνει
επίσης δύο προγράμματα για διαμόρφωση κυκλοφορίας (traffic shaping,
έλεγχος του διαθέσιμου εύρους ζώνης): το &man.altq.4; και το
&man.dummynet.4;. Το Dummynet είναι κατά παράδοση στενά συνδεμένο με
το IPFW, και το ALTQ με το
PF. Η διαμόρφωση κυκλοφορίας για το IPFILTER μπορεί
τη δεδομένη στιγμή να γίνει με το IPFILTER για το NAT και το
φιλτράρισμα και με το IPFW σε συνδυασμό με το
&man.dummynet.4; ή χρησιμοποιώντας το
PF σε συνδυασμό με το ALTQ.
Τόσο το IPFW όσο και το PF χρησιμοποιούν κανόνες για να ελέγξουν την
κίνηση των πακέτων από και προς το σύστημά σας, αν και διαθέτουν
διαφορετικούς τρόπους για να το επιτύχουν, και οι κανόνες τους
χρησιμοποιούν διαφορετική σύνταξη.Ο λόγος για τον οποίο το &os; διαθέτει πολλαπλά firewall, είναι ότι
διαφορετικοί άνθρωποι έχουν διαφορετικές ανάγκες και προτιμήσεις. Δεν
υπάρχει ένα και μοναδικό firewall που να είναι το καλύτερο.Ο συγγραφέας προτιμά το IPFILTER, καθώς οι κανόνες τύπου stateful
που διαθέτει είναι λιγότερο πολύπλοκοι όταν χρησιμοποιούνται σε ένα
περιβάλλον NAT, ενώ διαθέτει και ενσωματωμένο ftp
proxy το οποίο τους απλοποιεί ακόμα περισσότερο, επιτρέποντας ασφαλή
σύνδεση σε εξωτερικούς εξυπηρετητές FTP.Καθώς όλα τα firewall βασίζονται στην επιθεώρηση τιμών ελέγχου των
πακέτων, ο διαχειριστής που πρόκειται να δημιουργήσει τους κανόνες
πρέπει να κατανοεί τον τρόπο λειτουργίας του TCP/IP,
το ρόλο των διαφόρων τιμών στα πεδία ελέγχου των πακέτων και πως
χρησιμοποιούνται στην ανταλλαγή πληροφοριών σε μια συνηθισμένη
συνεδρία. Για περισσότερες λεπτομέρειες, διαβάστε το .JohnFerrellΑναθεωρήθηκε και ενημερώθηκε από τον Το Packet Filter (PF) και το ALTQ του
OpenBSDfirewallPFΤον Ιούλιο του 2003, η εφαρμογή firewall του OpenBSD (γνωστή ως
PF) μεταφέρθηκε στο &os; και έγινε διαθέσιμη στην
Συλλογή των Ports. Το &os; 5.3 που κυκλοφόρησε το 2004, ήταν η
πρώτη επίσημη έκδοση η οποία περιείχε το PF ως
τμήμα του βασικού πλέον συστήματος. Το PF είναι
ένα ολοκληρωμένο firewall, με πλήθος χαρακτηριστικών, το οποίο επίσης
διαθέτει προαιρετικά υποστήριξη για το ALTQ
(Alternate Queuing). Το ALTQ προσφέρει υπηρεσίες
Διασφάλισης Ποιότητας (Quality of Service,
QoS).Το OpenBSD Project κάνει εξαιρετική δουλειά στη συντήρηση του
PF FAQ. Για το
λόγο αυτό, η παρούσα ενότητα του Εγχειριδίου εστιάζει κυρίως στις
ιδιαιτερότητες του PF όσο αφορά το &os;, ενώ παρέχει
και μερικές γενικές πληροφορίες σχετικά με τη χρήση του. Για πιο
λεπτομερείς πληροφορίες σχετικά με τη χρήση του PF,
παρακαλούμε διαβάστε το PF FAQ.Περισσότερες πληροφορίες σχετικά με το PF στο
&os; μπορείτε να βρείτε στο .Χρησιμοποιώντας τα Αρθρώματα Πυρήνα για το PFΓια να φορτώσετε το άρθρωμα πυρήνα για το PF, προσθέστε την
παρακάτω γραμμή στο στο /etc/rc.conf:pf_enable="YES"Εκτελέστε έπειτα το script εκκίνησης για να φορτώσετε το
άρθρωμα:&prompt.root; /etc/rc.d/pf startΣημειώστε ότι το άρθρωμα PF δεν πρόκειται να φορτωθεί αν δεν
βρει το καθορισμένο αρχείο κανόνων. Το προεπιλεγμένο αρχείο είναι
το /etc/pf.conf. Αν το αρχείο κανόνων βρίσκεται
σε κάποια άλλη τοποθεσία, μπορείτε να την καθορίσετε προσθέτοντας
μια γραμμή όπως την παρακάτω στο
/etc/rc.conf:pf_rules="/path/to/pf.conf"Από το &os; 7.0 και μετά, το υπόδειγμα του
pf.conf το οποίο βρίσκονταν στον κατάλογο
/etc/, μεταφέρθηκε στον
κατάλογο /usr/share/examples/pf/. Στις
εκδόσεις του &os; πριν από την 7.0, υπήρχε από προεπιλογή ένα
αρχείο /etc/pf.conf.Το άρθρωμα PF μπορεί επίσης να φορτωθεί
χειροκίνητα από την γραμμή εντολών:&prompt.root; kldload pf.koΗ υποστήριξης καταγραφής του PF παρέχεται από το άρθρωμα
pflog.ko και μπορείτε να την φορτώσετε
προσθέτοντας την παρακάτω γραμμή στο
/etc/rc.conf:pflog_enable="YES"Εκτελέστε έπειτα το script εκκίνησης για να φορτώσετε το
άρθρωμα:&prompt.root; /etc/rc.d/pflog startΑν χρειάζεστε κάποιο από τα προχωρημένα χαρακτηριστικά του
PF, θα πρέπει να μεταγλωττίσετε την υποστήριξη
για το PF απευθείας μέσα στον πυρήνα.Επιλογές του PF για τον Πυρήναkernel optionsdevice pfkernel optionsdevice pflogkernel optionsdevice pfsyncΑν και δεν είναι απαραίτητο να μεταγλωττίσετε την υποστήριξη
PF μέσα στον πυρήνα του &os;, ίσως να θέλετε να
χρησιμοποιήσετε ένα από τα προχωρημένα χαρακτηριστικά του PF το
οποίο δεν περιλαμβάνεται στο άρθρωμα του πυρήνα: το &man.pfsync.4;.
Πρόκειται για μια ψευδο-συσκευή η οποία αποκαλύπτει συγκεκριμένες
αλλαγές στον πίνακα καταστάσεων που χρησιμοποιείται από το
PF. Μπορεί να συνδυαστεί με το &man.carp.4; για
να δημιουργηθούν με το PF firewalls με δυνατότητα
αυτόματης αλλαγής σε περίπτωση αποτυχίας (failover). Περισσότερες
πληροφορίες σχετικά με το CARP μπορείτε να βρείτε
στο του Εγχειριδίου.Μπορείτε να δείτε όλες τις επιλογές πυρήνα για το
PF στο αρχείο
/usr/src/sys/conf/NOTES. Οι επιλογές φαίνονται
επίσης παρακάτω:device pf
device pflog
device pfsyncΗ επιλογή device pf ενεργοποιεί την υποστήριξη
για το firewall Packet Filter (&man.pf.4;).Η επιλογή device pflog ενεργοποιεί την
προαιρετική ψευδο-δικτυακή συσκευή &man.pflog.4; που μπορεί να
χρησιμοποιηθεί για την καταγραφή της κίνησης σε ένα &man.bpf.4;
descriptor. Ο δαίμονας &man.pflogd.8; μπορεί να αποθηκεύσει την
καταγραφή αυτή στο σκληρό δίσκο.Η επιλογή device pfsync ενεργοποιεί την
προαιρετική ψευδό-δικτυακή συσκευή &man.pfsync.4; η οποία
χρησιμοποιείται για να ανιχνεύει
αλλαγές κατάστασης.Επιλογές στο rc.confΤο PF και το &man.pflog.4; μπορούν να
ρυθμιστούν κατά την εκκίνηση με τις παρακάτω καταχωρίσεις στο
&man.rc.conf.5;:pf_enable="YES" # Enable PF (load module if required)
pf_rules="/etc/pf.conf" # rules definition file for pf
pf_flags="" # additional flags for pfctl startup
pflog_enable="YES" # start pflogd(8)
pflog_logfile="/var/log/pflog" # where pflogd should store the logfile
pflog_flags="" # additional flags for pflogd startupΑν πίσω από αυτό το firewall υπάρχει κάποιο τοπικό δίκτυο (LAN)
προς το οποίο επιθυμείτε να προωθήσετε πακέτα, ή αν θέλετε να
χρησιμοποιήσετε NAT, θα χρειαστείτε επίσης και την παρακάτω
επιλογή:gateway_enable="YES" # Enable as LAN gatewayΔημιουργία Κανόνων ΦιλτραρίσματοςΤο PF διαβάζει τις ρυθμίσεις του από το
&man.pf.conf.5; (η προεπιλεγμένη τοποθεσία είναι στο
/etc/pf.conf) και τροποποιεί, απορρίπτει ή
αποδέχεται πακέτα σύμφωνα με τους κανόνες και τους ορισμούς που
περιέχονται σε αυτό. Η εγκατάσταση του &os; περιλαμβάνει αρκετά
υποδείγματα αρχείων ρύθμισης, στην τοποθεσία
/usr/share/examples/pf/. Παρακαλούμε να
διαβάσετε το PF FAQ για πλήρη
ανάλυση των κανόνων του PF.Καθώς διαβάζετε το PF FAQ,
να έχετε υπόψη σας ότι διαφορετικές εκδόσεις του &os; περιέχουν
- διαφορετικές εκδόσεις του PF:
-
-
-
- &os; 5.X —
- Το PF είναι στην έκδοση που υπάρχει στο
- OpenBSD 3.5
-
-
-
- &os; 6.X —
- Το PF είναι στην έκδοση που υπάρχει στο
- OpenBSD 3.7
-
-
-
- &os; 7.X —
- Το PF είναι στην έκδοση που υπάρχει στο
- OpenBSD 4.1
-
-
+ διαφορετικές εκδόσεις του PF. Τη δεδομένη στιγμή, το
+ &os; 7.X και νεώτερες εκδόσεις,
+ χρησιμοποιούν την ίδια έκδοση του PF που
+ χρησιμοποιεί και το OpenBSD 4.1.
Η &a.pf; είναι ένα καλό μέρος για να κάνετε ερωτήσεις
σχετικές με τη ρύθμιση και τη λειτουργία του PF
firewall. Μη ξεχάσετε να ελέγξετε τα αρχεία της λίστας πριν
ξεκινήσετε τις ερωτήσεις!Δουλεύοντας με το PFΧρησιμοποιήστε το &man.pfctl.8; για να ελέγξετε το
PF. Παρακάτω θα βρείτε κάποιες χρήσιμες εντολές
(βεβαιωθείτε ότι έχετε διαβάσει τη σελίδα manual του &man.pfctl.8; για
να δείτε όλες τις διαθέσιμες επιλογές):ΕντολήΣκοπόςpfctl Ενεργοποίηση του PFpfctl Απενεργοποίηση του PFpfctl all /etc/pf.confΔιαγραφή όλων των κανόνων (nat, filter, state, table,
κ.λ.π.) και εκ νέου ανάγνωση από το αρχείο
/etc/pf.confpfctl [ rules | nat | state ]Εκτύπωση αναφοράς σχετικά με τους κανόνες του φίλτρου,
του NAT, ή του πίνακα κατάστασηςpfctl /etc/pf.confΕλέγχει το /etc/pf.conf για λάθη,
αλλά δεν φορτώνει τους κανόνεςΕνεργοποίηση του ALTQΤο ALTQ διατίθεται μόνο αν μεταγλωττίσετε
απευθείας την υποστήριξη του μέσα στον πυρήνα του &os;.
Το ALTQ δεν υποστηρίζεται από όλα τα προγράμματα
οδήγησης καρτών δικτύου. Παρακαλούμε δείτε τη σελίδα manual του
&man.altq.4; για τη λίστα των οδηγών που υποστηρίζονται στην έκδοση
του &os; που διαθέτετε.Οι παρακάτω επιλογές του πυρήνα ενεργοποιούν το
ALTQ και παρέχουν επιπρόσθετες λειτουργίες:options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP buildΗ γραμμή options ALTQ ενεργοποιεί το πλαίσιο
λειτουργιών ALTQ.Η γραμμή options ALTQ_CBQ ενεργοποιεί το
Class Based Queuing (CBQ).
Το CBQ σας επιτρέπει να χωρίσετε το εύρος ζώνης
μιας σύνδεσης σε διαφορετικές κλάσεις ή ουρές, ώστε να δίνονται
προτεραιότητες στην κίνηση ανάλογα με τους κανόνες του φίλτρου.Η γραμμή options ALTQ_RED ενεργοποιεί το
Random Early Detection (RED).
Το RED χρησιμοποιείται για να αποφευχθεί η
συμφόρηση του δικτύου. Για το σκοπό αυτό, το RED
μετράει το μήκος της ουράς και το συγκρίνει με το μέγιστο και
ελάχιστο όριο της. Αν η ουρά είναι πάνω από το μέγιστο, όλα
τα νέα πακέτα θα απορρίπτονται. Σύμφωνα και με το όνομα του, το
RED απορρίπτει πακέτα από διάφορες συνδέσεις με
τυχαίο τρόπο.Η γραμμή options ALTQ_RIO ενεργοποιεί το
Random Early Detection In and Out.Η γραμμή options ALTQ_HFSC ενεργοποιεί το
Hierarchical Fair Service Curve Packet Scheduler.
Για περισσότερες πληροφορίες σχετικά με το HFSC
δείτε: .Η γραμμή options ALTQ_PRIQ ενεργοποιεί το
Priority Queuing (PRIQ).
Το PRIQ πάντοτε περνάει πρώτα την κίνηση με τη
μεγαλύτερη προτεραιότητα.Η γραμμή options ALTQ_NOPCC ενεργοποιεί την
υποστήριξη SMP για το ALTQ.
Η επιλογή αυτή απαιτείται σε συστήματα SMP.Το IPFILTER (IPF) FirewallfirewallIPFILTERΟ συγγραφέας του IPFILTER είναι ο Darren Reed. Το IPFILTER δεν
εξαρτάται από το λειτουργικό σύστημα: είναι μια εφαρμογή ανοικτού
κώδικα που έχει μεταφερθεί στο &os;, το NetBSD, το OpenBSD, το
&sunos;, το HP/UX και το &solaris;. Το IPFILTER είναι υπό διαρκή
και ενεργή ανάπτυξη και συντήρηση, και κυκλοφορούν τακτικά οι νέες
εκδόσεις του.Το IPFILTER είναι ένα firewall και μηχανισμός
NAT που λειτουργεί στον πυρήνα και μπορεί να
ελέγχεται και να παρακολουθείται από προγράμματα χρήστη. Οι κανόνες
του firewall μπορούν να τίθενται σε ισχύ ή να διαγράφονται μέσω του
βοηθητικού προγράμματος &man.ipf.8;. Οι κανόνες για το
NAT μπορούν να τίθενται σε ισχύ ή να διαγράφονται
μέσω του βοηθητικού προγράμματος &man.ipnat.1;. Το βοηθητικό πρόγραμμα
&man.ipfstat.8; μπορεί να εκτυπώσει στατιστικά εκτέλεσης για το τμήμα
του IPFILTER που εκτελείται στον πυρήνα. Το πρόγραμμα &man.ipmon.8;
μπορεί να καταγράψει τις ενέργειες του IPFILTER στο αρχεία καταγραφής
συμβάντων του συστήματος.Το IPF γράφηκε αρχικά χρησιμοποιώντας μια λογική επεξεργασίας
κανόνων του τύπου ο τελευταίο κανόνας που ταιριάζει, είναι και
ο νικητής και χρησιμοποιούσε μόνο κανόνες τύπου stateless.
Με την πάροδο του χρόνου, το IPF βελτιώθηκε για να περιλαμβάνει την
επιλογή quick και την επιλογή keep state
για stateful κανόνες. Οι επιλογές αυτές εκσυγχρόνισαν δραματικά τη
λογική επεξεργασίας των κανόνων. Η επίσημη τεκμηρίωση του IPF καλύπτει
μόνο τις παλιές παραμέτρους ρύθμισης και επεξεργασίας των κανόνων.
Οι σύγχρονες λειτουργίες καλύπτονται μόνο ως πρόσθετες επιλογές, και
έτσι δεν τονίζονται αρκετά τα πλεονεκτήματα τους στη δημιουργία ενός
πολύ καλύτερου και ασφαλέστερου firewall.Οι οδηγίες που περιέχονται σε αυτή την ενότητα, βασίζονται στη
χρήση κανόνων που περιέχουν την επιλογή quick καθώς και
την stateful επιλογή keep state. Αυτό είναι και το
βασικό πλαίσιο λειτουργιών για την δημιουργία του σετ κανόνων ενός
inclusive firewall.Για λεπτομέρειες σχετικά με τον παλιότερο τρόπο επεξεργασίας των
κανόνων, δείτε:
και .Μπορείτε να δείτε το IPF FAQ στην τοποθεσία .Μπορείτε να βρείτε τις παλαιότερες δημοσιεύσεις τις λίστας
ταχυδρομείου του IPFILTER στο . Παρέχεται
δυνατότητα αναζήτησης.Ενεργοποιώντας το IPFIPFILTERenablingΤο IPF περιλαμβάνεται στη βασική εγκατάσταση του &os; ως άρθρωμα
το οποίο μπορεί να φορτωθεί χωριστά. Το σύστημα θα φορτώσει δυναμικά
το άρθρωμα του IPF αν υπάρχει η καταχώριση
ipfilter_enable="YES" στο αρχείο
/etc/rc.conf. Το άρθρωμα έχει δημιουργηθεί με
ενεργοποιημένη την δυνατότητα καταγραφής και με την επιλογή
default pass all. Για να αλλάξετε αυτή την
προεπιλογή σε block all, μπορείτε απλώς να
προσθέσετε τον κανόνα απόρριψης (block all) στο τέλος των κανόνων σας.
Δεν χρειάζεται να μεταγλωττίσετε την επιλογή IPF στο πυρήνα του &os;
για το σκοπό αυτό.Επιλογές για τον Πυρήναkernel optionsIPFILTERkernel optionsIPFILTER_LOGkernel optionsIPFILTER_DEFAULT_BLOCKIPFILTERkernel optionsΔεν είναι υποχρεωτικό να μεταγλωττίσετε τις παρακάτω επιλογές στον
πυρήνα του &os; για να ενεργοποιήσετε το IPF. Η παρουσίαση τους εδώ
είναι καθαρά ενημερωτική. Αν μεταγλωττίσετε το IPF απευθείας
στον πυρήνα, δεν θα χρησιμοποιηθεί ποτέ το αντίστοιχο άρθρωμα.Στο αρχείο /usr/src/sys/conf/NOTES θα βρείτε
παραδείγματα καταχωρίσεων IPF για το αρχείο ρύθμισης του πυρήνα. Οι
επιλογές αυτές φαίνονται επίσης παρακάτω:options IPFILTER
options IPFILTER_LOG
options IPFILTER_DEFAULT_BLOCKΗ επιλογή options IPFILTER ενεργοποιεί την
υποστήριξη για το IPFILTER firewall.Η επιλογή options IPFILTER_LOG ενεργοποιεί την
υποστήριξη καταγραφής του IPF, η οποία γράφει στην ψευδο-συσκευή
καταγραφής πακέτων ipl για κάθε κανόνα που
περιλαμβάνει την επιλογή log.Η επιλογή options IPFILTER_DEFAULT_BLOCK
αλλάζει την προεπιλεγμένη συμπεριφορά, ώστε κάθε πακέτο που δεν
ταιριάζει με κάποιο κανόνα pass του firewall,
να απορρίπτεται αυτόματα.Οι παραπάνω επιλογές θα ενεργοποιηθούν μόνο αφού μεταγλωττίσετε
και εγκαταστήσετε ένα προσαρμοσμένο πυρήνα που να τις
περιλαμβάνει.Διαθέσιμες Επιλογές για το rc.confΧρειάζεστε τις παρακάτω καταχωρίσεις στο
/etc/rc.conf για να ενεργοποιήσετε το IPF κατά
την εκκίνηση του υπολογιστή:ipfilter_enable="YES" # Start ipf firewall
ipfilter_rules="/etc/ipf.rules" # loads rules definition text file
ipmon_enable="YES" # Start IP monitor log
ipmon_flags="-Ds" # D = start as daemon
# s = log to syslog
# v = log tcp window, ack, seq
# n = map IP & port to namesΑν πίσω από αυτό το firewall υπάρχει κάποιο LAN που χρησιμοποιεί
δεσμευμένες ιδιωτικές διευθύνσεις, θα χρειαστεί να προσθέσετε τις
παρακάτω καταχωρίσεις για να ενεργοποιήσετε τη λειτουργία
NAT:gateway_enable="YES" # Enable as LAN gateway
ipnat_enable="YES" # Start ipnat function
ipnat_rules="/etc/ipnat.rules" # rules definition file for ipnatIPFipfΗ εντολή &man.ipf.8; χρησιμοποιείται για να φορτώσει το αρχείο
των κανόνων. Φυσιολογικά, θα δημιουργήσετε ένα αρχείο με τους δικούς
σας προσαρμοσμένους κανόνες και θα αντικαταστήσετε με αυτό
εξ'ολοκλήρου τους ενσωματωμένους κανόνες του firewall:&prompt.root; ipf -Fa -f /etc/ipf.rulesΗ επιλογή αδειάζει τους κανόνες από τους
εσωτερικούς πίνακες του firewall.Η επιλογή καθορίζει το αρχείο των κανόνων που
θα φορτωθεί.Αυτό σας δίνει την δυνατότητα να αλλάξετε το αρχείο κανόνων σας,
να εκτελέσετε την εντολή IPF που αναφέραμε παραπάνω, και
να ανανεώσετε με αυτό τον τρόπο τους κανόνες στο firewall που
εκτελείται ήδη με καινούργιους, χωρίς να χρειαστεί να επανεκκινήσετε
το σύστημα σας. Η μέθοδος αυτή είναι πολύ βολική για να δοκιμάσετε
νέους κανόνες, καθώς μπορεί να επαναληφθεί όσες φορές θέλετε.Δείτε τη σελίδα manual του &man.ipf.8; για λεπτομέρειες σχετικά με
τις υπόλοιπες επιλογές που μπορείτε να χρησιμοποιήσετε με την εντολή
αυτή.Η εντολή &man.ipf.8; αναμένει ένα απλό αρχείο κειμένου ως αρχείο
κανόνων. Δεν θα δεχθεί αρχείο κανόνων γραμμένο ως script με
συμβολικές αντικαταστάσεις.Υπάρχει ωστόσο τρόπος να γράψετε κανόνες IPF που να χρησιμοποιούν
την ισχύ των συμβολικών αντικαταστάσεων. Για περισσότερες
πληροφορίες, δείτε το
.IPFSTATipfstatIPFILTERstatisticsΗ προεπιλεγμένη συμπεριφορά του &man.ipfstat.8; είναι να ανακτά
και να απεικονίζει το σύνολο των στατιστικών που συγκεντρώθηκαν ως
αποτέλεσμα της εφαρμογής των κανόνων του χρήστη στα πακέτα που
εισέρχονται και εξέρχονται από το firewall, από τη στιγμή της
τελευταίας του εκκίνησης ή από τον τελευταίο τους μηδενισμό μέσω της
εντολής ipf -Z.Δείτε τη σελίδα manual &man.ipfstat.8; για λεπτομέρειες.Η προεπιλεγμένη έξοδος της εντολής &man.ipfstat.8; θα μοιάζει με
την παρακάτω:input packets: blocked 99286 passed 1255609 nomatch 14686 counted 0
output packets: blocked 4200 passed 1284345 nomatch 14687 counted 0
input packets logged: blocked 99286 passed 0
output packets logged: blocked 0 passed 0
packets logged: input 0 output 0
log failures: input 3898 output 0
fragment state(in): kept 0 lost 0
fragment state(out): kept 0 lost 0
packet state(in): kept 169364 lost 0
packet state(out): kept 431395 lost 0
ICMP replies: 0 TCP RSTs sent: 0
Result cache hits(in): 1215208 (out): 1098963
IN Pullups succeeded: 2 failed: 0
OUT Pullups succeeded: 0 failed: 0
Fastroute successes: 0 failures: 0
TCP cksum fails(in): 0 (out): 0
Packet log flags set: (0)Όταν χρησιμοποιηθεί η επιλογή για τα
εισερχόμενα ή η επιλογή για τα εξερχόμενα πακέτα,
η εντολή θα ανακτήσει και θα απεικονίσει την αντίστοιχη λίστα
κανόνων που είναι εγκατεστημένη και χρησιμοποιείται από τον πυρήνα τη
δεδομένη στιγμή.Η εντολή ipfstat -in δείχνει ένα αριθμημένο
πίνακα κανόνων για εισερχόμενα πακέτα.Η εντολή ipfstat -on δείχνει ένα αριθμημένο
πίνακα κανόνων για εξερχόμενα πακέτα.Η έξοδος θα μοιάζει με την παρακάτω:@1 pass out on xl0 from any to any
@2 block out on dc0 from any to any
@3 pass out quick on dc0 proto tcp/udp from any to any keep stateΗ εντολή ipfstat -ih δείχνει τον πίνακα
κανόνων για τα εισερχόμενα πακέτα, τοποθετώντας μπροστά από τον
κάθε κανόνα ένα αριθμό που δείχνει πόσες φορές έχει
χρησιμοποιηθεί.Η εντολή ipfstat -oh δείχνει τον πίνακα
κανόνων για τα εξερχόμενα πακέτα, τοποθετώντας μπροστά από τον
κάθε κανόνα ένα αριθμό που δείχνει πόσες φορές έχει
χρησιμοποιηθεί.Η έξοδος θα μοιάζει με την παρακάτω:2451423 pass out on xl0 from any to any
354727 block out on dc0 from any to any
430918 pass out quick on dc0 proto tcp/udp from any to any keep stateΜια από τις πιο σημαντικές λειτουργίες της εντολής
ipfstat είναι η επιλογή η
οποία απεικονίζει τον πίνακα καταστάσεων, με τρόπο όμοιο με αυτό
που χρησιμοποιεί η εντολή &man.top.1; για να δείξει τον πίνακα
διεργασιών που εκτελούνται στο &os;. Όταν το firewall σας δέχεται
επίθεση, η λειτουργία αυτή σας δίνει την δυνατότητα να αναγνωρίσετε
και να εστιάσετε στα ίδια τα πακέτα που την αποτελούν.
Οι προαιρετικές υπο-επιλογές σας δίνουν την δυνατότητα να επιλέξετε
το IP αφετηρίας ή προορισμού, την θύρα, ή το πρωτόκολλο το οποίο
θέλετε να παρακολουθήσετε σε πραγματικό χρόνο. Δείτε τη σελίδα
manual του &man.ipfstat.8; για περισσότερες λεπτομέρειες.IPMONipmonIPFILTERloggingΓια να λειτουργήσει σωστά η εντολή ipmon,
θα πρέπει να ενεργοποιηθεί η επιλογή IPFILTER_LOG
στον πυρήνα. Η εντολή αυτή διαθέτει δύο διαφορετικούς τρόπους
λειτουργίας. Ο προεπιλεγμένος κανονικός τρόπος λειτουργίας
ενεργοποιείται όταν η εντολή χρησιμοποιείται χωρίς την επιλογή
.Η εντολή μπορεί να χρησιμοποιηθεί σε λειτουργία δαίμονα όταν
επιθυμείτε να έχετε ένα συνεχόμενο αρχείο καταγραφής ώστε να μπορείτε
να εξετάσετε τις προηγούμενες εγγραφές. Αυτός είναι και ο τρόπος με
τον οποίο έχει ρυθμιστεί να συνεργάζεται το &os; με το IPFILTER.
Το &os; έχει ενσωματωμένη δυνατότητα εναλλαγής αρχείων καταγραφής.
Για αυτό το λόγο, είναι καλύτερο η καταγραφή να γίνεται μέσω του
&man.syslogd.8; παρά σε ένα συνηθισμένο αρχείο. Από προεπιλογή, η
ρύθμιση ipmon_flags στο αρχείο
rc.conf χρησιμοποιεί τις επιλογές
:ipmon_flags="-Ds" # D = start as daemon
# s = log to syslog
# v = log tcp window, ack, seq
# n = map IP & port to namesΤα πλεονεκτήματα της καταγραφής είναι προφανή. Παρέχει την
δυνατότητα επισκόπησης πληροφοριών όπως τα πακέτα που απορρίφθηκαν,
τις διευθύνσεις από τις οποίες λήφθηκαν, και τον προορισμό τους.
Έχετε έτσι ένα σημαντικό πλεονέκτημα όταν προσπαθείτε να αναγνωρίσετε
ένα εισβολέα.Ακόμα και όταν ενεργοποιήσετε την δυνατότητα καταγραφής, το IPF
δεν θα καταγράψει τίποτα αν δεν έχει γίνει η αντίστοιχη ρύθμιση στους
κανόνες. Ο διαχειριστής του firewall αποφασίζει για ποιους κανόνες
του σετ θέλει να ενεργοποιήσει την καταγραφή, και προσθέτει σε αυτούς
την λέξη log. Φυσιολογικά, η καταγραφή ενεργοποιείται μόνο σε κανόνες
που απορρίπτουν πακέτα.Είναι πολύ συνηθισμένο να περιλαμβάνεται ένας κανόνας στο τέλος
του συνόλου, που να απορρίπτει από προεπιλογή όλα τα πακέτα που
φτάνουν μέχρι εκεί (default deny). Με τον τρόπο αυτό μπορείτε να
δείτε όλα τα πακέτα που δεν ταίριαξαν με κανένα κανόνα του σετ.Καταγραφή του IPMONΤο syslogd χρησιμοποιεί τη δική του
ειδική μέθοδο για το διαχωρισμό των δεδομένων καταγραφής.
Διαθέτει ειδικές ομαδοποιήσεις που ονομάζονται
facility και level. Όταν το IPMON
χρησιμοποιείται με την επιλογή , χρησιμοποιεί το
security ως όνομα facility.
Όλα τα δεδομένα που καταγράφονται από το IPMON καταλήγουν στο
security. Αν το επιθυμείτε, μπορείτε να
χρησιμοποιήσετε τα παρακάτω επίπεδα για περαιτέρω διαχωρισμό των
δεδομένων καταγραφής:LOG_INFO - packets logged using the "log" keyword as the action rather than pass or block.
LOG_NOTICE - packets logged which are also passed
LOG_WARNING - packets logged which are also blocked
LOG_ERR - packets which have been logged and which can be considered shortΓια να ρυθμίσετε το IPFILTER να καταγράφει όλα τα δεδομένα στο
/var/log/ipfilter.log, θα χρειαστεί να
δημιουργήσετε από πριν το αρχείο. Αυτό μπορεί να γίνει με την
παρακάτω εντολή:&prompt.root; touch /var/log/ipfilter.logΗ λειτουργία του &man.syslogd.8; μπορεί να ρυθμιστεί με
καταχωρίσεις στο αρχείο /etc/syslog.conf.
Το αρχείο syslog.conf προσφέρει σημαντική
ευελιξία στον τρόπο με τον οποίο το syslog
αντιμετωπίζει τα μηνύματα συστήματος που προέρχονται από εφαρμογές
όπως το IPF.Προσθέστε την παρακάτω καταχώριση στο αρχείο
/etc/syslog.conf:security.* /var/log/ipfilter.logΤο security.* σημαίνει ότι θα γίνεται
καταγραφή όλων των μηνυμάτων αυτού του τύπου στην τοποθεσία που έχει
οριστεί.Για να ενεργοποιήσετε τις αλλαγές στο
/etc/syslog.conf θα πρέπει να επανεκκινήσετε το
μηχάνημα ή να αναγκάσετε το &man.syslogd.8; να ξαναδιαβάσει το
/etc/syslog.conf, εκτελώντας την εντολή
/etc/rc.d/syslogd reloadΜην ξεχάσετε να τροποποιήσετε το
/etc/newsyslog.conf ώστε να εναλλάσσει το αρχείο
καταγραφής που δημιουργήσατε παραπάνω.Η Μορφή των Μηνυμάτων ΚαταγραφήςΤα μηνύματα που παράγονται από την ipmon
αποτελούνται από πεδία δεδομένων που χωρίζονται από λευκό διάστημα.
Τα πεδία που είναι κοινά σε όλα τα μηνύματα, είναι τα παρακάτω:Η ημερομηνία παραλαβής του πακέτουΗ ώρα παραλαβής του πακέτου. Έχει την μορφή HH:MM:SS.F,
η οποία υποδηλώνει ώρες, λεπτά, δευτερόλεπτα και κλάσματα
δευτερολέπτου (τα οποία μπορεί να είναι πολλά δεκαδικά
ψηφία).Το όνομα της διεπαφής στην οποία έγινε η επεξεργασία του
πακέτου π.χ. dc0.Ο αριθμός ομάδας και ο αύξων αριθμός του κανόνα, π.χ.
@0:17.Μπορείτε να δείτε τα παρακάτω με την εντολή
ipfstat -in:Το είδος της ενέργειας: p αν το πακέτο πέρασε, b αν το πακέτο
απορρίφθηκε, S για σύντομο πακέτο, n αν δεν ταίριαξε με κανένα
κανόνα, L για κανόνα με καταγραφή. Η σειρά προτεραιότητας στην
απεικόνιση των παραπάνω, είναι S, p, b, n, L. Το κεφαλαίο P ή
το B σημαίνουν ότι η καταγραφή του πακέτου έγινε λόγω κάποιας
γενικής ρύθμισης καταγραφής και όχι εξαιτίας κάποιου
κανόνα.Οι διευθύνσεις. Πρόκειται στην πραγματικότητα για τρία
πεδία: τη διεύθυνση και τη θύρα αφετηρίας (χωρίζονται με κόμμα),
το σύμβολο -> και την διεύθυνση και θύρα προορισμού, π.χ.
209.53.17.22,80 -> 198.73.220.17,1722.Το PR ακολουθούμενο από το όνομα ή τον
αριθμό του πρωτοκόλλου, π.χ. PR tcp.Το len ακολουθούμενο από το μήκος της
επικεφαλίδας και το συνολικό μήκος του πακέτου, π.χ.
len 20 40.Αν πρόκειται για πακέτο TCP, θα υπάρχει ένα
επιπλέον πεδίο το οποίο θα ξεκινάει με μια παύλα και θα ακολουθείται
από γράμματα τα οποία αντιστοιχούν στις επιλογές (flags) που έχουν
τεθεί. Δείτε τη σελίδα manual &man.ipmon.8; για τη λίστα των
γραμμάτων και των αντίστοιχων flags.Αν πρόκειται για πακέτο ICMP, θα υπάρχουν δύο πεδία στο τέλος,
το πρώτο θα είναι πάντα ICMP και το επόμενο θα είναι
ο τύπος του μηνύματος και του υπό-μηνύματος ICMP, χωρισμένα με μια
κάθετο, π.χ. ICMP 3/3 για ένα μήνυμα μη προσβάσιμης θύρας (port
unreachable).Δημιουργία Script Κανόνων με Συμβολική ΥποκατάστασηΟρισμένοι έμπειροι χρήστες του IPF δημιουργούν ένα αρχείο
κανόνων το οποίο μπορεί να εκτελεστεί ως script με δυνατότητα
συμβολικής υποκατάστασης. Το βασικό όφελος του παραπάνω, είναι ότι
χρειάζεται να αλλάξετε μόνο την τιμή που σχετίζεται με το συμβολικό
όνομα και όταν το script εκτελεστεί, η τιμή θα υποκατασταθεί σε όλους
τους κανόνες που περιέχουν το όνομα αυτό. Καθώς πρόκειται για
script, μπορείτε να χρησιμοποιήσετε συμβολική υποκατάσταση για να
κωδικοποιήσετε συχνά χρησιμοποιούμενες τιμές και να τις υποκαθιστάτε
σε πολλαπλούς κανόνες. Αυτό φαίνεται και στο παράδειγμα που
ακολουθεί.Η σύνταξη του script που χρησιμοποιείται εδώ, είναι συμβατή με τα
κελύφη &man.sh.1;, &man.csh.1;, και &man.tcsh.1;.Τα πεδία στα οποία γίνεται συμβολική υποκατάσταση προσημειώνονται
με το σήμα του δολαρίου: $.Τα συμβολικά πεδία δεν έχουν την προσημείωση με το
$.Η τιμή που θα χρησιμοποιηθεί στο συμβολικό πεδίο, θα πρέπει να
εσωκλείεται σε διπλά εισαγωγικά (").Ξεκινήστε το αρχείο των κανόνων σας με κάτι αντίστοιχο με το
παρακάτω:############# Start of IPF rules script ########################
oif="dc0" # name of the outbound interface
odns="192.0.2.11" # ISP's DNS server IP address
myip="192.0.2.7" # my static IP address from ISP
ks="keep state"
fks="flags S keep state"
# You can choose between building /etc/ipf.rules file
# from this script or running this script "as is".
#
# Uncomment only one line and comment out another.
#
# 1) This can be used for building /etc/ipf.rules:
#cat > /etc/ipf.rules << EOF
#
# 2) This can be used to run script "as is":
/sbin/ipf -Fa -f - << EOF
# Allow out access to my ISP's Domain name server.
pass out quick on $oif proto tcp from any to $odns port = 53 $fks
pass out quick on $oif proto udp from any to $odns port = 53 $ks
# Allow out non-secure standard www function
pass out quick on $oif proto tcp from $myip to any port = 80 $fks
# Allow out secure www function https over TLS SSL
pass out quick on $oif proto tcp from $myip to any port = 443 $fks
EOF
################## End of IPF rules script ########################Αυτό είναι όλο. Στο παραπάνω παράδειγμα δεν είναι σημαντικοί
οι κανόνες, αλλά ο τρόπος με τον οποίο λειτουργούν και παίρνουν τιμές
τα πεδία υποκατάστασης. Αν το παραπάνω παράδειγμα βρίσκονταν σε ένα
αρχείο με το όνομα /etc/ipf.rules.script,
θα μπορούσατε να επαναφορτώσετε αυτούς τους κανόνες με την παρακάτω
εντολή:&prompt.root; sh /etc/ipf.rules.scriptΥπάρχει ένα πρόβλημα όταν χρησιμοποιούνται αρχεία κανόνων με
ενσωματωμένους συμβολισμούς: Το IPF δεν καταλαβαίνει τη συμβολική
υποκατάσταση, και δεν μπορεί να διαβάσει αυτά τα scripts άμεσα.Ένα τέτοιο script μπορεί να χρησιμοποιηθεί με ένα από τους δύο
παρακάτω τρόπους:Αφαιρέστε το σχόλιο από τη γραμμή που ξεκινάει με
cat, και μετατρέψτε σε σχόλιο τη γραμμή που
ξεκινάει με /sbin/ipf. Τοποθετήστε το
ipfilter_enable="YES" στο αρχείο
/etc/rc.conf όπως συνήθως, και εκτελέστε
το script μια φορά μετά από κάθε αλλαγή για να δημιουργήσετε ή να
ενημερώσετε το /etc/ipf.rules.Απενεργοποιήστε το IPFILTER στα scripts εκκίνησης του
συστήματος, προσθέτοντας την καταχώριση
ipfilter_enable="NO" (πρόκειται για την
προεπιλεγμένη τιμή) στο αρχείο
/etc/rc.conf.Προσθέστε ένα script όπως το παρακάτω στον κατάλογο εκκίνησης
/usr/local/etc/rc.d/. Το
script θα πρέπει να έχει ένα προφανές όνομα, όπως
ipf.loadrules.sh. Η επέκταση
.sh είναι υποχρεωτική.#!/bin/sh
sh /etc/ipf.rules.scriptΟι άδειες σε αυτό το αρχείο, θα πρέπει να επιτρέπουν ανάγνωση,
εγγραφή και εκτέλεση για τον χρήστη
root.&prompt.root; chmod 700 /usr/local/etc/rc.d/ipf.loadrules.shΟι κανόνες του IPF θα φορτώνονται πλέον κατά την εκκίνηση του
συστήματος σας.Το Σύνολο Κανόνων του IPFΩς σύνολο κανόνων στο IPF, ορίζουμε μια ομάδα
κανόνων που έχουν γραφεί για να επιτρέπουν ή να απορρίπτουν πακέτα
ανάλογα με τις τιμές που περιέχονται σε αυτά. Η διπλής κατεύθυνσης
ανταλλαγή πακέτων μεταξύ υπολογιστών αποτελεί μια συνεδρία.
Το σύνολο κανόνων του firewall επεξεργάζεται τόσο τα πακέτα που
έρχονται από το Internet, όσο και τα πακέτα που παράγονται από το
σύστημα ως απάντηση σε αυτά. Κάθε υπηρεσία TCP/IP
(π.χ. telnet, www, mail, κ.λ.π.) καθορίζεται από το πρωτόκολλο και
την προνομιακή (privileged) θύρα που χρησιμοποιεί για να δέχεται
αιτήματα εξυπηρέτησης. Τα πακέτα που προορίζονται για μια
συγκεκριμένη υπηρεσία, ξεκινούν από τη διεύθυνση αφετηρίας
χρησιμοποιώντας μια μη-προνομιακή θύρα και καταλήγουν στη
συγκεκριμένη θύρα υπηρεσίας στον προορισμό. Όλες οι παραπάνω
παράμετροι (θύρες και διευθύνσεις) μπορούν να χρησιμοποιηθούν
ως κριτήρια επιλογής για την δημιουργία κανόνων που επιτρέπουν
ή εμποδίζουν την πρόσβαση σε υπηρεσίες.IPFILTERrule processing orderΤο IPF γράφτηκε αρχικά χρησιμοποιώντας μια λογική επεξεργασίας
κανόνων του τύπου ο τελευταίος κανόνας που ταιριάζει, είναι ο
νικητής και χρησιμοποιούσε μόνο κανόνες stateless. Με την
πάροδο του χρόνου, το IPF ενισχύθηκε με την επιλογή
quick και με δυνατότητα αποθήκευσης κατάστασης
μέσω της επιλογής keep state. Με τον τρόπο αυτό,
εκσυγχρονίστηκε δραματικά η λογική επεξεργασίας των κανόνων.Οι οδηγίες που περιέχονται σε αυτή την ενότητα βασίζονται στη
χρήση κανόνων που περιέχουν την επιλογή quick και την
επιλογή keep state για τη διατήρηση της κατάστασης.
Αυτές είναι και οι βασικές λειτουργίες για την κωδικοποίηση του
συνόλου κανόνων ενός inclusive firewall.Όταν δουλεύετε με τους κανόνες του firewall, θα πρέπει να είστε
πολύ προσεκτικοί. Αν βάλετε λανθασμένες
ρυθμίσεις, μπορεί να κλειδωθείτε έξω από τον
εξυπηρετητή σας. Για να είστε ασφαλείς, είναι προτιμότερο να
κάνετε τις αρχικές σας ρυθμίσεις από την τοπική κονσόλα, παρά μέσω
απομακρυσμένης σύνδεσης (π.χ. μέσω
ssh).Συντακτικό ΚανόνωνIPFILTERrule syntaxΤο συντακτικό των κανόνων που παρουσιάζουμε εδώ, έχει απλοποιηθεί
ώστε να απεικονίζει τη σύγχρονη stateful υλοποίηση και τη λογική
του τύπου ο πρώτος κανόνας που ταιριάζει είναι και ο
νικητής. Για την περιγραφή του παλιότερου τρόπου λειτουργίας,
διαβάστε τη σελίδα manual του &man.ipf.8;.Ο χαρακτήρας # χρησιμοποιείται για να
επισημάνει την αρχή ενός σχολίου, και μπορεί να εμφανίζεται στο τέλος
μιας γραμμής κανόνα ή στη δική του γραμμή. Οι κενές γραμμές
αγνοούνται.Οι κανόνες περιέχουν λέξεις-κλειδιά. Οι λέξεις αυτές θα πρέπει
να κωδικοποιηθούν με συγκεκριμένη σειρά από τα αριστερά προς τα δεξιά
της γραμμής. Οι λέξεις-κλειδιά φαίνονται παρακάτω με έντονα γράμματα.
Μερικές λέξεις έχουν υπο-επιλογές οι οποίες μπορεί να είναι επίσης
λέξεις-κλειδιά και να περιλαμβάνουν επίσης περισσότερες υπο-επιλογές.
Κάθε μια από τις επικεφαλίδες στο παράδειγμα που φαίνεται παρακάτω
έχει μια κεφαλίδα με έντονα γράμματα η οποία επεξηγεί το περιεχόμενο
της.ACTION IN-OUT OPTIONS SELECTION STATEFUL PROTO
SRC_ADDR,DST_ADDR OBJECT PORT_NUM TCP_FLAG
STATEFULACTION = block | passIN-OUT = in | outOPTIONS = log | quick | on
interface-nameSELECTION = proto value |
source/destination IP | port = number | flags
flag-valuePROTO = tcp/udp | udp | tcp |
icmpSRC_ADD,DST_ADDR = all | from
object to objectOBJECT = IP address | anyPORT_NUM = port numberTCP_FLAG = SSTATEFUL = keep stateACTIONΗ ενέργεια (action) δείχνει τι πρέπει να γίνει με το πακέτο αν
ταιριάζει με τον κανόνα του φίλτρου. Κάθε κανόνας
πρέπει να διαθέτει μια ενέργεια. Οι ενέργειες
που αναγνωρίζονται, φαίνονται παρακάτω:Το block δείχνει ότι το πακέτο θα πρέπει να
απορριφθεί αν ταιριάζει με τις παραμέτρους επιλογής του
κανόνα.Το pass δείχνει ότι το πακέτο θα πρέπει να
εξέλθει από το firewall, αν ταιριάζει με τις παραμέτρους επιλογής
του κανόνα.IN-OUTΚάθε κανόνας του φίλτρου πρέπει υποχρεωτικά να διευκρινίζει
με σαφήνεια αν αναφέρεται στην είσοδο ή την έξοδο πακέτων.
Η επόμενη λέξη-κλειδί πρέπει να είναι in ή
out και αν δεν υπάρχει, ο κανόνας θα αποτύχει
κατά το συντακτικό έλεγχο.Το in σημαίνει ότι ο κανόνας θα εφαρμοστεί
σε ένα εισερχόμενο πακέτο το οποίο μόλις λήφθηκε στη διεπαφή που
συνδέεται με το Διαδίκτυο.Το out σημαίνει ότι ο κανόνας θα εφαρμοστεί
σε ένα πακέτο που προορίζεται για έξοδο μέσω της διεπαφής που
συνδέεται με το Διαδίκτυο.OPTIONSΟι παρακάτω επιλογές πρέπει να χρησιμοποιηθούν με τη σειρά
που φαίνονται εδώ.Το log δείχνει ότι η επικεφαλίδα του πακέτου
θα γραφεί στο αρχείο καταγραφής του
ipl (όπως περιγράφεται στην ενότητα
LOGGING που ακολουθεί) αν οι παράμετροι της επιλογής ταιριάζουν με
το πακέτο.To quick δείχνει ότι αν οι παράμετροι της
επιλογής ταιριάζουν με το πακέτο, ο συγκεκριμένος κανόνας θα είναι
και ο τελευταίος κανόνας που θα ελεγχθεί. Η επιλογή αυτή είναι
υποχρεωτική για τη σύγχρονη λογική επεξεργασίας πακέτων.Το on δείχνει το όνομα της διεπαφής που θα
ενσωματωθεί στις παραμέτρους επιλογής. Τα ονόματα των διεπαφών
φαίνονται όταν εκτελείται η εντολή &man.ifconfig.8;.
Χρησιμοποιώντας την επιλογή αυτή, ο κανόνας θα ελεγχθεί μόνο αν το
πακέτο διέρχεται μέσω της συγκεκριμένης διεπαφής και προς τη
συγκεκριμένη κατεύθυνση (εισερχόμενα/εξερχόμενα). Η επιλογή αυτή
είναι υποχρεωτική για την σύγχρονη λογική επεξεργασίας των
κανόνων.Όταν γίνεται καταγραφή ενός πακέτου, οι επικεφαλίδες γράφονται
στην ψευδο-συσκευή καταγραφής πακέτων IPL.
Μετά την εντολή log, μπορούν να χρησιμοποιηθούν
οι παρακάτω παράμετροι (με τη σειρά που φαίνονται):Το body δείχνει ότι θα γίνει καταγραφή των
πρώτων 128 bytes των περιεχομένων του πακέτου, που βρίσκονται αμέσως
μετά την επικεφαλίδα.Η επιλογή first συνίσταται να χρησιμοποιηθεί
αν η επιλογή log χρησιμοποιείται σε συνδυασμό
με την keep state. Με τον τρόπο αυτό γίνεται
καταγραφή μόνο του πρώτου πακέτου (με το οποίο ξεκίνησε η
επικοινωνία), και όχι όλων των υπολοίπων τα οποία ταιριάζουν με την
πληροφορία keep state.SELECTIONΟι λέξεις κλειδιά που περιγράφονται σε αυτή την ενότητα,
χρησιμοποιούνται για να περιγράψουν ποιες ιδιότητες του πακέτου
θα διερευνηθούν για να καθοριστεί αν ταιριάζει ή όχι με τους
κανόνες. Μια λέξη-κλειδί ορίζει το κεντρικό θέμα και ακολουθείται
από άλλες λέξεις που ορίζουν τις ακριβείς επιλογές. Πρέπει πάντοτε
να επιλέγεται μια από αυτές τις λέξεις. Παρέχονται οι παρακάτω
ιδιότητες γενικής χρήσης οι οποίες πρέπει να χρησιμοποιηθούν με
αυτή τη σειρά:PROTOΤο proto είναι η βασική λέξη, και πρέπει
να γράφεται μαζί με κάποια αντίστοιχη τιμή για περαιτέρω επιλογή.
Η τιμή επιτρέπει το ταίριασμα με ένα συγκεκριμένο πρωτόκολλο. Είναι
υποχρεωτικό να χρησιμοποιηθεί για να λειτουργεί η σύγχρονη λογική
επεξεργασίας των κανόνων.Τα ονόματα πρωτοκόλλων που αναγνωρίζονται και μπορούν να
χρησιμοποιηθούν, είναι τα
tcp/udp | udp | tcp | icmp ή οποιαδήποτε άλλα
εμφανίζονται στο /etc/protocols. Μπορείτε να
χρησιμοποιήσετε το ειδικό όνομα tcp/udp το οποίο
ταιριάζει είτε με πακέτο TCP είτε με
UDP. Η ειδική αυτή ονομασία προστέθηκε ώστε να
αποφεύγονται διπλοί, αλλά κατά τα άλλα όμοιοι, κανόνες.SRC_ADDR/DST_ADDRΗ λέξη all είναι ουσιαστικά συνώνυμη με την
φράση from any to any χωρίς να υπάρχουν άλλες
παράμετροι για το ταίριασμα.Όταν χρησιμοποιείται το from src to dst, οι
λέξεις from και to δηλώνουν
διευθύνσεις IP που θα χρησιμοποιηθούν για το ταίριασμα. Οι κανόνες
πρέπει να καθορίζουν τις παραμέτρους τόσο της αφετηρίας όσο και του
προορισμού. Η λέξη any έχει την ειδική ιδιότητα
να ταιριάζει με οποιαδήποτε διεύθυνση IP. Παραδείγματα χρήσης:
from any to any ή
from 0.0.0.0/0 to any ή
from any to 0.0.0.0/0 ή
from 0.0.0.0 to any ή
from any to 0.0.0.0.Δεν υπάρχει τρόπος να περιγραφούν περιοχές IP διευθύνσεων που
δεν μπορούν να εκφραστούν εύκολα με τη μορφή αριθμών χωρισμένων με
τελείες / μάσκας υποδικτύου. Μπορείτε να χρησιμοποιήσετε το
βοηθητικό πρόγραμμα net-mgmt/ipcalc για διευκόλυνση σας
στους υπολογισμούς. Δείτε την δικτυακή τοποθεσία του προγράμματος
για περισσότερες πληροφορίες: .PORTΤο ταίριασμα με κάποια συγκεκριμένη θύρα αφετηρίας ή/και
προορισμού (αν υπάρχει) εφαρμόζεται μόνο σε πακέτα
TCP και UDP. Κατά την
δημιουργία συγκρίσεων με θύρες, μπορείτε είτε να χρησιμοποιήσετε τον
αριθμό της θύρας, είτε το όνομα της αντίστοιχης υπηρεσίας
από το αρχείο /etc/services. Όταν η θύρα
εμφανίζεται ως τμήμα του αντικειμένου from, το
ταίριασμα θα γίνει με την θύρα της αφετηρίας. Όταν εμφανίζεται ως
τμήμα του αντικειμένου to, το ταίριασμα θα γίνει
με τη θύρα προορισμού. Για να λειτουργεί η σύγχρονη λογική
ταιριάσματος κανόνων, θα πρέπει οπωσδήποτε να υπάρχει η επιλογή
θύρας στο αντικείμενο to. Παράδειγμα χρήσης:
from any to any port = 80Οι συγκρίσεις που αναφέρονται σε μια μόνο θύρα, μπορούν να
γίνουν με πολλούς διαφορετικούς τρόπους, χρησιμοποιώντας
διαφορετικούς τελεστές σύγκρισης. Είναι επίσης δυνατόν να
καθοριστούν ολόκληρες περιοχές από θύρες.port "=" | "!=" | "<" | ">" | "<=" | ">=" |
"eq" | "ne" | "lt" | "gt" | "le" | "ge".Για να καθορίσετε περιοχές θυρών, χρησιμοποιήστε
port "<>" | "><"Μετά τις παραμέτρους για το ταίριασμα της αφετηρίας και του
προορισμού, οι παρακάτω δύο παράμετροι είναι υποχρεωτικές για να
λειτουργεί η σύγχρονη λογική επεξεργασίας των κανόνων.TCP_FLAGΤα flags είναι ενεργά μόνο στο φιλτράρισμα του πρωτοκόλλου
TCP. Το κάθε γράμμα αντιπροσωπεύει ένα πιθανό
flag το για το οποίο γίνεται ανίχνευση στην επικεφαλίδα του πακέτου
TCP.Η σύγχρονη λογική επεξεργασίας των κανόνων, χρησιμοποιεί την
παράμετρο flags S για την αναγνώριση της έναρξης
μια συνεδρίας tcp.STATEFULΣε ένα κανόνα που επιτρέπει (pass) το πέρασμα των πακέτων, η
επιλογή keep state δείχνει ότι θα πρέπει να
ενεργοποιείται η λειτουργία stateful filtering όταν το πακέτο
ταιριάζει με τα κριτήρια επιλογής.Η επιλογή αυτή είναι υποχρεωτική για τη λειτουργία της
σύγχρονης λογικής επεξεργασίας κανόνων.Φιλτράρισμα με Διατήρηση της Κατάστασης (stateful)IPFILTERstateful filteringΤο stateful φιλτράρισμα, αντιμετωπίζει την κίνηση του δικτύου ως
μιας διπλής κατεύθυνσης ανταλλαγή πακέτων τα οποία δημιουργούν μια
συνεδρία. Όταν ενεργοποιηθεί, η διατήρηση της κατάστασης
(keep-state) δημιουργεί δυναμικά εσωτερικούς κανόνες για κάθε πακέτο
το οποίο ανταλλάσσεται κατά τη διάρκεια αυτής της συνεδρίας.
Έχει επίσης τη δυνατότητα να διερευνήσει αν ακολουθούνται οι έγκυροι
κανόνες ανταλλαγής μηνυμάτων μεταξύ του αποστολέα και του παραλήπτη.
Οποιαδήποτε πακέτα δεν ταιριάζουν με το πρότυπο αυτής της
επικοινωνίας, απορρίπτονται ως ψεύτικα.Η διατήρηση της κατάστασης επιτρέπει επίσης να περάσουν τα
πακέτα ICMP που σχετίζονται με μια συνεδρία
TCP ή UDP. Έτσι, αν ληφθούν
πακέτα ICMP τύπου 3 code 4 ως απάντηση κατά τη
διάρκεια της επίσκεψης σας σε μια ιστοσελίδα, (η οποία επιτρέπεται
από τον αντίστοιχο κανόνα εξερχομένων), θα τους επιτραπεί η είσοδος.
Οποιοδήποτε πακέτο για το οποίο το IPF είναι σίγουρο ότι πρόκειται
για τμήμα μιας ενεργής συνεδρίας, θα περάσει ακόμα και αν είναι
διαφορετικό πρωτόκολλο.Αυτό που συμβαίνει είναι το παρακάτω:Τα πακέτα που προορίζονται να εξέλθουν μέσω της διεπαφής που
συνδέεται στο Internet, ελέγχονται αρχικά σύμφωνα με το δυναμικό
πίνακα καταστάσεων. Αν το πακέτο ταιριάζει με το επόμενο που
αναμένεται σε μια ενεργή συνεδρία, εξέρχεται από το firewall και
ταυτόχρονα ενημερώνεται η κατάσταση της συγκεκριμένης συνεδρίας στον
παραπάνω δυναμικό πίνακα. Τα υπόλοιπα πακέτα (που δεν ταιριάζουν με
κάποια συνεδρία σε εξέλιξη) ελέγχονται σύμφωνα με το σύνολο κανόνων
για τα εξερχόμενα πακέτα.Τα πακέτα που έρχονται από τη διεπαφή που είναι συνδεμένη με το
Internet, ελέγχονται αρχικά μέσω του δυναμικού πίνακα καταστάσεων.
Αν το πακέτο ταιριάζει με το επόμενο που αναμένεται σε μια ενεργή
συνεδρία, εξέρχεται από το firewall και ταυτόχρονα ενημερώνεται
η κατάσταση της συγκεκριμένης συνεδρίας στον παραπάνω πίνακα. Τα
υπόλοιπα πακέτα (που δεν ταιριάζουν με κάποια συνεδρία σε εξέλιξη)
ελέγχονται σύμφωνα με το σύνολο κανόνων για τα εισερχόμενα
πακέτα.Όταν η επικοινωνία ολοκληρωθεί, διαγράφεται από τον δυναμικό
πίνακα καταστάσεων.Το stateful φιλτράρισμα επιτρέπει να εστιάσουμε την προσοχή μας
στην αποδοχή ή απόρριψη των νέων συνδέσεων. Αν επιτραπεί μια νέα
συνεδρία, όλα τα υπόλοιπα πακέτα της θα επιτρέπονται αυτόματα, ενώ
τυχόν ψεύτικα πακέτα θα απορρίπτονται επίσης αυτόματα. Το stateful
φιλτράρισμα διαθέτει μια σειρά από προχωρημένες ικανότητες διερεύνησης
των πακέτων, με δυνατότητα να αμύνεται σε πολλές διαφορετικές
μεθόδους που χρησιμοποιούν οι επιτιθέμενοι.Παράδειγμα Συνόλου Κανόνων για ένα Inclusive FirewallΤο παρακάτω σύνολο κανόνων δίνεται ως παράδειγμα για
να φτιάξετε ένα ιδιαίτερα ασφαλές inclusive firewall. Ένα inclusive
firewall επιτρέπει το πέρασμα μόνο των υπηρεσιών που ταιριάζουν με
τους κανόνες που έχει για αποδοχή πακέτων, και απορρίπτει όλα τα
υπόλοιπα. Τα firewalls που προστατεύουν άλλα μηχανήματα (τα οποία
καλούνται και network firewalls) θα πρέπει να διαθέτουν
τουλάχιστον δύο διεπαφές. Η μια διεπαφή συνδέεται με το τοπικό δίκτυο
(LAN) το οποίο θεωρείται έμπιστο, και η άλλη με
το δημόσιο Internet. Εναλλακτικά, ένα firewall μπορεί να
προστατεύει μόνο το σύστημα στο οποίο εκτελείται—αυτό καλείται
host based firewall και είναι κατάλληλο ιδιαίτερα
για εξυπηρετητές που λειτουργούν σε μη έμπιστα δίκτυα.Όλα τα συστήματα τύπου &unix;, συμπεριλαμβανομένου και του &os;,
έχουν σχεδιαστεί να χρησιμοποιούν την διεπαφή
lo0 και την IP διεύθυνση
127.0.0.1 για εσωτερική επικοινωνία
μέσα στο ίδιο το λειτουργικό σύστημα. Το firewall πρέπει να περιέχει
κανόνες που να επιτρέπουν την ελεύθερη και χωρίς περιορισμούς κίνηση
των ειδικών αυτών εσωτερικών πακέτων.Οι κανόνες που εξουσιοδοτούν την πρόσβαση προς το Internet,
ορίζονται στην διεπαφή του δικτύου που συνδέεται σε αυτό. Οι κανόνες
αυτοί ελέγχουν τόσο την εισερχόμενη όσο και την εξερχόμενη κίνηση
στο Internet. Η διεπαφή αυτή μπορεί να είναι η
tun0 που χρησιμοποιείται στο PPP χρήστη, ή
ακόμα και η κάρτα δικτύου που συνδέεται σε ένα DSL router ή
modem.Σε περίπτωση που μια ή περισσότερες κάρτες δικτύου συνδέονται σε
εσωτερικά ιδιωτικά δίκτυα πίσω από το firewall, θα πρέπει να υπάρχουν
οι αντίστοιχοι κανόνες που να επιτρέπουν την ελεύθερη διακίνηση των
πακέτων ανάμεσα στις διεπαφές αυτές ή/και στο Internet.Οι κανόνες πρέπει να οργανώνονται σε τρεις κύριες ενότητες: αρχικά
όλες οι διεπαφές στις οποίες επιτρέπεται η ελεύθερη διακίνηση
δεδομένων, έπειτα η διεπαφή από την οποία εξέρχονται τα πακέτα προς
το δημόσιο δίκτυο (Internet) και τέλος η διεπαφή από την οποία
λαμβάνονται πακέτα από το Internet.Σε κάθε μια από τις ενότητες των διεπαφών που
συνδέονται στο Internet, πρέπει να τοποθετούνται πρώτοι οι κανόνες
που ταιριάζουν συχνότερα με την αντίστοιχη κίνηση. Ο τελευταίος
κανόνας της ενότητας θα πρέπει να απορρίπτει και να καταγράφει όλα τα
πακέτα της συγκεκριμένης διεπαφής/κατεύθυνσης.Η ενότητα των Εξερχομένων (Outbound) στο ακόλουθο σύνολο κανόνων,
περιέχει μόνο κανόνες τύπου pass οι οποίοι
επιτρέπουν (μέσω κατάλληλων τιμών στις παραμέτρους τους) σε
συγκεκριμένες υπηρεσίες να αποκτήσουν πρόσβαση στο Internet. Όλοι οι
κανόνες διαθέτουν τις επιλογές quick,
on, proto,
port και keep state. Οι κανόνες
proto tcp περιλαμβάνουν την επιλογή
flag ώστε να αναγνωρίζουν την αίτηση έναρξης της
συνεδρίας και να ενεργοποιούν τη λειτουργία διατήρησης της
κατάστασης (stateful).Στην ενότητα των εισερχόμενων πακέτων (Inbound) που φαίνεται
παρακάτω, πρώτοι εμφανίζονται οι κανόνες που χρησιμοποιούνται για την
απόρριψη των ανεπιθύμητων πακέτων. Αυτό γίνεται για δύο διαφορετικούς
λόγους. Ο πρώτος είναι ότι τα κακόβουλα πακέτα μπορεί εν μέρει να
ταιριάζουν με κάποια χαρακτηριστικά της έγκυρης κίνησης. Τα πακέτα
αυτά θα πρέπει να απορριφθούν, αντί να γίνουν δεκτά από κάποιο
επόμενο κανόνα allow. Ο δεύτερος είναι ότι
μπορείτε να απορρίψετε συγκεκριμένα πακέτα τα οποία γνωρίζετε ότι δεν
είναι έγκυρα, αλλά σας είναι αδιάφορη η καταγραφή τους. Με τον τρόπο
αυτό εμποδίζεται η λήψη και καταγραφή τους από τον τελευταίο κανόνα.
Ο τελευταίος κανόνας τυπικά απορρίπτει και καταγράφει όλα τα πακέτα
που έφτασαν μέχρι αυτόν. Ο κανόνας αυτός χρησιμοποιείται για την
παροχή νομικών αποδείξεων σε περίπτωση που κινήσετε δικαστική
διαδικασία κατά ατόμων που προέβησαν σε επιθέσεις στο σύστημα
σας.Θα πρέπει επίσης να εξασφαλίσετε ότι το σύστημα σας δεν θα δώσει
καμιά απάντηση σε κανένα από τα ανεπιθύμητα πακέτα. Τα πακέτα αυτά
θα πρέπει να απορριφθούν και να εξαφανιστούν. Με τον τρόπο αυτό, ο
επιτιθέμενος δεν έχει καμιά γνώση αν τα πακέτα του έφτασαν μέχρι το
σύστημα σας. Όσο λιγότερα μπορούν να μάθουν οι επιτιθέμενοι σχετικά
με το σύστημα σας, τόσο περισσότερο χρόνο θα χρειαστεί να επενδύσουν
για να καταφέρουν να σας βλάψουν στα αλήθεια. Οι κανόνες με την
επιλογή log first καταγράφουν το συμβάν μόνο την
πρώτη φορά που ενεργοποιούνται. Η επιλογή αυτή περιλαμβάνεται στον
κανόνα nmap OS fingerprint στο παράδειγμα που
φαίνεται παρακάτω. Το βοηθητικό πρόγραμμα security/nmap χρησιμοποιείται συχνά
από κακόβουλα άτομα, που προσπαθούν με αυτό τον τρόπο να
αναγνωρίσουν το λειτουργικό σύστημα του μηχανήματος σας.Κάθε φορά που υπάρχει καταγραφή από κάποιο κανόνα με την επιλογή
log first, θα πρέπει να εκτελέσετε την εντολή
ipfstat -hio για να δείτε πόσες φορές έχει
ενεργοποιηθεί αυτός ο κανόνας συνολικά. Έτσι θα ξέρετε αν π.χ. σας
κάνουν επίθεση υπερχείλισης (flood).Δείτε το αρχείο /etc/services για να βρείτε
αριθμούς θυρών που δεν αναγνωρίζετε. Μπορείτε επίσης να επισκεφθείτε
την τοποθεσία
και να κάνετε αναζήτηση για τη συγκεκριμένη θύρα, ώστε να δείτε ποια
υπηρεσία εξυπηρετεί.Δείτε την επόμενη τοποθεσία για τις θύρες που χρησιμοποιούνται
συνήθως από κακόβουλα προγράμματα (trojans): .Το παρακάτω σύνολο κανόνων είναι αρκετά πλήρες και πολύ ασφαλές.
Δημιουργεί firewall τύπου inclusive, και έχει
δοκιμαστεί σε πραγματικές συνθήκες λειτουργίας. Μπορεί να
εξυπηρετήσει το ίδιο καλά και το δικό σας σύστημα. Απλώς μετατρέψτε
σε σχόλιο τους κανόνες για τις υπηρεσίες που δεν θέλετε να
ενεργοποιήσετε.Για να αποφύγετε την καταγραφή ανεπιθύμητων μηνυμάτων,
απλώς προσθέστε ένα αντίστοιχο κανόνα απόρριψης
(block) στην ενότητα των εισερχομένων
(inbound).Θα πρέπει να αλλάξετε το όνομα της διεπαφής
dc0 του παραδείγματος, με το πραγματικό όνομα
της κάρτας δικτύου που συνδέει το σύστημα σας με το Internet. Για
όσους χρησιμοποιούν το PPP χρήστη, το όνομα θα είναι
tun0.Προσθέστε τις ακόλουθες καταχωρίσεις στο αρχείο
/etc/ipf.rules:#################################################################
# No restrictions on Inside LAN Interface for private network
# Not needed unless you have LAN
#################################################################
#pass out quick on xl0 all
#pass in quick on xl0 all
#################################################################
# No restrictions on Loopback Interface
#################################################################
pass in quick on lo0 all
pass out quick on lo0 all
#################################################################
# Interface facing Public Internet (Outbound Section)
# Match session start requests originating from behind the
# firewall on the private network
# or from this gateway server destined for the public Internet.
#################################################################
# Allow out access to my ISP's Domain name server.
# xxx must be the IP address of your ISP's DNS.
# Dup these lines if your ISP has more than one DNS server
# Get the IP addresses from /etc/resolv.conf file
pass out quick on dc0 proto tcp from any to xxx port = 53 flags S keep state
pass out quick on dc0 proto udp from any to xxx port = 53 keep state
# Allow out access to my ISP's DHCP server for cable or DSL networks.
# This rule is not needed for 'user ppp' type connection to the
# public Internet, so you can delete this whole group.
# Use the following rule and check log for IP address.
# Then put IP address in commented out rule & delete first rule
pass out log quick on dc0 proto udp from any to any port = 67 keep state
#pass out quick on dc0 proto udp from any to z.z.z.z port = 67 keep state
# Allow out non-secure standard www function
pass out quick on dc0 proto tcp from any to any port = 80 flags S keep state
# Allow out secure www function https over TLS SSL
pass out quick on dc0 proto tcp from any to any port = 443 flags S keep state
# Allow out send & get email function
pass out quick on dc0 proto tcp from any to any port = 110 flags S keep state
pass out quick on dc0 proto tcp from any to any port = 25 flags S keep state
# Allow out Time
pass out quick on dc0 proto tcp from any to any port = 37 flags S keep state
# Allow out nntp news
pass out quick on dc0 proto tcp from any to any port = 119 flags S keep state
# Allow out gateway & LAN users' non-secure FTP ( both passive & active modes)
# This function uses the IPNAT built in FTP proxy function coded in
# the nat rules file to make this single rule function correctly.
# If you want to use the pkg_add command to install application packages
# on your gateway system you need this rule.
pass out quick on dc0 proto tcp from any to any port = 21 flags S keep state
# Allow out ssh/sftp/scp (telnet/rlogin/FTP replacements)
# This function is using SSH (secure shell)
pass out quick on dc0 proto tcp from any to any port = 22 flags S keep state
# Allow out insecure Telnet
pass out quick on dc0 proto tcp from any to any port = 23 flags S keep state
# Allow out FreeBSD CVSup function
pass out quick on dc0 proto tcp from any to any port = 5999 flags S keep state
# Allow out ping to public Internet
pass out quick on dc0 proto icmp from any to any icmp-type 8 keep state
# Allow out whois from LAN to public Internet
pass out quick on dc0 proto tcp from any to any port = 43 flags S keep state
# Block and log only the first occurrence of everything
# else that's trying to get out.
# This rule implements the default block
block out log first quick on dc0 all
#################################################################
# Interface facing Public Internet (Inbound Section)
# Match packets originating from the public Internet
# destined for this gateway server or the private network.
#################################################################
# Block all inbound traffic from non-routable or reserved address spaces
block in quick on dc0 from 192.168.0.0/16 to any #RFC 1918 private IP
block in quick on dc0 from 172.16.0.0/12 to any #RFC 1918 private IP
block in quick on dc0 from 10.0.0.0/8 to any #RFC 1918 private IP
block in quick on dc0 from 127.0.0.0/8 to any #loopback
block in quick on dc0 from 0.0.0.0/8 to any #loopback
block in quick on dc0 from 169.254.0.0/16 to any #DHCP auto-config
block in quick on dc0 from 192.0.2.0/24 to any #reserved for docs
block in quick on dc0 from 204.152.64.0/23 to any #Sun cluster interconnect
block in quick on dc0 from 224.0.0.0/3 to any #Class D & E multicast
##### Block a bunch of different nasty things. ############
# That I do not want to see in the log
# Block frags
block in quick on dc0 all with frags
# Block short tcp packets
block in quick on dc0 proto tcp all with short
# block source routed packets
block in quick on dc0 all with opt lsrr
block in quick on dc0 all with opt ssrr
# Block nmap OS fingerprint attempts
# Log first occurrence of these so I can get their IP address
block in log first quick on dc0 proto tcp from any to any flags FUP
# Block anything with special options
block in quick on dc0 all with ipopts
# Block public pings
block in quick on dc0 proto icmp all icmp-type 8
# Block ident
block in quick on dc0 proto tcp from any to any port = 113
# Block all Netbios service. 137=name, 138=datagram, 139=session
# Netbios is MS/Windows sharing services.
# Block MS/Windows hosts2 name server requests 81
block in log first quick on dc0 proto tcp/udp from any to any port = 137
block in log first quick on dc0 proto tcp/udp from any to any port = 138
block in log first quick on dc0 proto tcp/udp from any to any port = 139
block in log first quick on dc0 proto tcp/udp from any to any port = 81
# Allow traffic in from ISP's DHCP server. This rule must contain
# the IP address of your ISP's DHCP server as it's the only
# authorized source to send this packet type. Only necessary for
# cable or DSL configurations. This rule is not needed for
# 'user ppp' type connection to the public Internet.
# This is the same IP address you captured and
# used in the outbound section.
pass in quick on dc0 proto udp from z.z.z.z to any port = 68 keep state
# Allow in standard www function because I have apache server
pass in quick on dc0 proto tcp from any to any port = 80 flags S keep state
# Allow in non-secure Telnet session from public Internet
# labeled non-secure because ID/PW passed over public Internet as clear text.
# Delete this sample group if you do not have telnet server enabled.
#pass in quick on dc0 proto tcp from any to any port = 23 flags S keep state
# Allow in secure FTP, Telnet, and SCP from public Internet
# This function is using SSH (secure shell)
pass in quick on dc0 proto tcp from any to any port = 22 flags S keep state
# Block and log only first occurrence of all remaining traffic
# coming into the firewall. The logging of only the first
# occurrence avoids filling up disk with Denial of Service logs.
# This rule implements the default block.
block in log first quick on dc0 all
################### End of rules file #####################################NATNATIP masqueradingNATnetwork address translationNATΤο NAT είναι ακρωνύμιο των λέξεων
Network Address Translation ή Μετάφραση
Διευθύνσεων Δικτύου. Για όσους είναι εξοικειωμένοι με το &linux;,
βασίζεται στην αρχή του IP Masquerading. Στην πραγματικότητα το
NAT και το IP Masquerading είναι το ίδιο πράγμα.
Μια από τις πολλές δυνατότητες που παρέχει η λειτουργία
NAT του IPF, είναι και η δυνατότητα να έχουμε ένα
ιδιωτικό τοπικό δίκτυο (LAN) πίσω από το firewall το οποίο να
μοιράζεται μια μοναδική δημόσια διεύθυνση IP στο Internet.Ίσως να αναρωτηθείτε γιατί να θέλει κάποιος να το κάνει αυτό.
Οι ISPs συνήθως αποδίδουν δυναμικές διευθύνσεις σε μη εταιρικούς
πελάτες. Αυτό ουσιαστικά σημαίνει ότι η διεύθυνση IP που
αποδίδεται στο μηχάνημα σας, μπορεί να είναι διαφορετική κάθε φορά
που κάνετε κλήση για να συνδεθείτε. Για τους χρήστες DSL modem και
router, η αλλαγή διεύθυνσης πραγματοποιείται κάθε φορά που
ενεργοποιείται το modem. Η διεύθυνση IP που σας αποδίδεται από
τον ISP σας, είναι αυτή με την οποία φαίνεστε στο Internet.Ας υποθέσουμε τώρα ότι έχετε πέντε PC στο σπίτι σας, και
χρειάζεστε σε όλα σύνδεση Internet. Κανονικά, θα έπρεπε να πληρώσετε
τον ISP σας χωριστό λογαριασμό για κάθε PC και να διαθέτετε πέντε
γραμμές τηλεφώνου.Με το NAT, χρειάζεστε μόνο ένα λογαριασμό με
τον ISP σας. Μπορείτε απλώς να συνδέσετε τα τέσσερα PC σε ένα
διανομέα ή switch στο οποίο θα συνδέσετε επίσης και το &os; μηχάνημα
σας. Το μηχάνημα αυτό θα ενεργεί ως πύλη του τοπικού σας δικτύου για
το Internet. Το NAT θα μεταφράσει αυτόματα τις
ιδιωτικές διευθύνσεις IP του κάθε μηχανήματος στην μοναδική δημόσια
IP διεύθυνση που έχετε, καθώς το πακέτο φεύγει από το firewall και
κατευθύνεται προς το Internet. Εκτελεί επίσης και την αντίστροφη
μετάφραση για τα πακέτα που επιστρέφουν.Υπάρχει μια ειδική περιοχή διευθύνσεων IP που έχουν παραχωρηθεί
για χρήση σε τοπικά δίκτυα με NAT. Σύμφωνα με το
RFC 1918, μπορείτε να χρησιμοποιήσετε για αυτό το σκοπό τις παρακάτω
περιοχές, οι οποίες δεν δρομολογούνται ποτέ απευθείας στο δημόσιο
Internet:Αρχικό IP 10.0.0.0-Τελικό IP 10.255.255.255Αρχικό IP 172.16.0.0-Τελικό IP 172.31.255.255Αρχικό IP 192.168.0.0-Τελικό IP 192.168.255.255IPNATNATand IPFILTERipnatΟι κανόνες του NAT φορτώνονται με τη χρήση της
εντολής ipnat. Τυπικά, οι κανόνες του
NAT αποθηκεύονται στο αρχείο
/etc/ipnat.rules. Δείτε τη σελίδα manual του
&man.ipnat.1; για λεπτομέρειες.Για να αλλάξετε τους κανόνες του NAT καθώς αυτό
εκτελείται, τροποποιήστε το αρχείο που τους περιέχει, και εκτελέστε
την εντολή ipnat με την παράμετρο
για να διαγράψετε τους εσωτερικούς κανόνες του
NAT και να αδειάσετε όλες τις ενεργές καταχωρίσεις
του πίνακα μεταφράσεων.Για να φορτώσετε τους κανόνες του NAT από την
αρχή, εκτελέστε μια εντολή όπως την παρακάτω:&prompt.root; ipnat -CF -f /etc/ipnat.rulesΓια να δείτε κάποια στατιστικά σχετικά με το
NAT, χρησιμοποιήστε την παρακάτω εντολή:&prompt.root; ipnat -sΓια να δείτε μια λίστα με τις τρέχουσες καταχωρίσεις του πίνακα
NAT, χρησιμοποιήστε την παρακάτω εντολή:&prompt.root; ipnat -lΓια να ενεργοποιήσετε την λεπτομερή απεικόνιση μηνυμάτων και να
δείτε πληροφορίες που σχετίζονται με την επεξεργασία των κανόνων και
τους ενεργούς κανόνες και καταχωρίσεις στον πίνακα, γράψτε:&prompt.root; ipnat -vΚανόνες του IPNATΟι κανόνες του NAT είναι αρκετά ευέλικτοι,
και διαθέτουν πλήθος δυνατοτήτων ώστε να καλύπτουν τις ανάγκες
των οικιακών αλλά και των επιχειρησιακών χρηστών.Η σύνταξη των κανόνων που παρουσιάζεται εδώ, έχει απλοποιηθεί
ώστε να συμβαδίζει με τη συνήθη χρήση σε μη-εμπορικά περιβάλλοντα.
Για πιο πλήρη περιγραφή της σύνταξης, δείτε τη σελίδα manual του
&man.ipnat.5;.Η σύνταξη ενός κανόνα NAT μοιάζει με την
παρακάτω:map IFLAN_IP_RANGE -> PUBLIC_ADDRESSΟ κανόνας ξεκινάει με τη λέξη map.Αντικαταστήστε το IF με την εξωτερική
διεπαφή (τη κάρτα δικτύου που συνδέεται στο Internet).Η παράμετρος LAN_IP_RANGE είναι η
περιοχή διευθύνσεων που χρησιμοποιείται από το εσωτερικό σας δίκτυο.
Στην πραγματικότητα θα μοιάζει με κάτι σαν το 192.168.1.0/24.Η παράμετρος PUBLIC_ADDRESS μπορεί να
είναι είτε η εξωτερική IP διεύθυνση, είτε η ειδική λέξη
0/32, η οποία σημαίνει ότι θα χρησιμοποιηθεί η
IP διεύθυνση που έχει αποδοθεί στο
IF.Πως λειτουργεί το NATΈνα πακέτο φτάνει στο firewall από το LAN με προορισμό το
Internet. Περνάει διαμέσου των κανόνων φιλτραρίσματος εξερχομένων,
όπου γίνεται η επεξεργασία του από το NAT.
Οι κανόνες εφαρμόζονται από τον πρώτο και προς τα κάτω, και κερδίζει
ο πρώτος που ταιριάζει. Ο έλεγχος γίνεται με βάση τη διεπαφή από την
οποία λήφθηκε το πακέτο και τη διεύθυνση IP από την οποία προέρχεται.
Όταν το όνομα της διεπαφής ενός πακέτου ταιριάζει με κάποιο κανόνα του
NAT, η διεύθυνση IP της αφετηρίας (που προέρχεται
από το ιδιωτικό δίκτυο) ελέγχεται για να εξακριβωθεί αν ταιριάζει με
την περιοχή διευθύνσεων που καθορίζεται στην αριστερά πλευρά του
συμβόλου (βέλος) του κανόνα NAT. Αν ταιριάζει, η
διεύθυνση του πακέτου ξαναγράφεται, χρησιμοποιώντας τη δημόσια
διεύθυνση IP η οποία παρέχεται από το 0/32. Το
NAT δημιουργεί μια καταχώριση στον εσωτερικό του
πίνακα, έτσι ώστε όταν επιστρέψει η απάντηση από το Internet, να
μπορεί να αντιστοιχηθεί ξανά στην αρχική ιδιωτική διεύθυνση IP και να
περάσει έπειτα από τους κανόνες του φίλτρου για περαιτέρω
επεξεργασία.Ενεργοποιώντας το IPNATΓια να ενεργοποιήσετε το IPNAT, προσθέστε τις
παρακάτω γραμμές στο /etc/rc.conf.Για να επιτρέψετε στο μηχάνημα σας να δρομολογεί πακέτα μεταξύ
διεπαφών δικτύου:gateway_enable="YES"Για να ξεκινάει αυτόματα το IPNAT σε κάθε
εκκίνηση:ipnat_enable="YES"Για να καθορίσετε από που επιθυμείτε να φορτώνονται οι κανόνες
του IPNAT:ipnat_rules="/etc/ipnat.rules"Το NAT σε Ένα Μεγάλο Τοπικό ΔίκτυοΓια τοπικά δίκτυα με μεγάλο αριθμό υπολογιστών, ή για δίκτυα που
διασυνδέουν περισσότερα από ένα LAN, η διαδικασία της μετατροπής όλων
αυτών των ιδιωτικών διευθύνσεων σε μια μοναδική δημόσια διεύθυνση,
δημιουργεί πρόβλημα κατανομής πόρων, καθώς χρησιμοποιούνται πολλές
φορές οι ίδιοι αριθμοί θυρών, οδηγώντας τα PC του δικτύου σε
συγκρούσεις. Υπάρχουν δύο τρόποι για να ελαττώσουμε αυτό το
πρόβλημα.Ανάθεση των θυρών που θα ΧρησιμοποιηθούνΈνα συνηθισμένος κανόνας NAT μοιάζει με τον παρακάτω:map dc0 192.168.1.0/24 -> 0/32Στον παραπάνω κανόνα, η θύρα αφετηρίας του πακέτου παραμένει
αναλλοίωτη καθώς το πακέτο διέρχεται μέσω του
IPNAT. Αν προσθέσετε την λέξη-κλειδί
portmap, μπορείτε να ρυθμίσετε το
IPNAT να χρησιμοποιεί θύρες που ανήκουν σε μια
καθορισμένη περιοχή. Για παράδειγμα, ο παρακάτω κανόνας θα
οδηγήσει το NAT να τροποποιήσει την θύρα της
αφετηρίας, ώστε να είναι μέσα στην περιοχή που φαίνεται:map dc0 192.168.1.0/24 -> 0/32 portmap tcp/udp 20000:60000Μπορούμε επίσης να απλοποιήσουμε ακόμα περισσότερο τη
διαδικασία χρησιμοποιώντας τη λέξη auto ώστε το
IPNAT να καθορίζει από μόνο του ποιες θύρες είναι
διαθέσιμες για χρήση:map dc0 192.168.1.0/24 -> 0/32 portmap tcp/udp autoΧρησιμοποιώντας ένα Απόθεμα Δυναμικών ΔιευθύνσεωνΣε ένα πολύ μεγάλο τοπικό δίκτυο, αργά ή γρήγορα φτάνουμε στο
σημείο που μια μοναδική δημόσια διεύθυνση δεν επαρκεί για να καλύψει
τόσες πολλές ιδιωτικές. Αν υπάρχει διαθέσιμο ένα εύρος δημοσίων
διευθύνσεων, μπορούν να χρησιμοποιηθούν ως
απόθεμα (pool), επιτρέποντας στην
IPNAT να επιλέξει μια από αυτές καθώς αντιστοιχεί
τα πακέτα κατά την έξοδο τους προς το δημόσιο δίκτυο.Για παράδειγμα, αντί να αντιστοιχούν όλα τα πακέτα μέσω μιας
μοναδικής δημόσιας IP διεύθυνσης όπως παρακάτω:map dc0 192.168.1.0/24 -> 204.134.75.1μπορούμε να χρησιμοποιήσουμε ένα εύρος IP διευθύνσεων, είτε με
τη χρήση μάσκας δικτύου:map dc0 192.168.1.0/24 -> 204.134.75.0/255.255.255.0είτε με συμβολισμό CIDR:map dc0 192.168.1.0/24 -> 204.134.75.0/24Ανακατεύθυνση ΘυρώνΕίναι κοινή πρακτική να εγκαθίστανται υπηρεσίες όπως ο
εξυπηρετητής ιστοσελίδων, ταχυδρομείου, βάσης δεδομένων και DNS σε
διαφορετικά PC στο τοπικό δίκτυο. Στην περίπτωση αυτή, η κίνηση
πακέτων από αυτά τα μηχανήματα εξακολουθεί να χρειάζεται το
NAT, αλλά χρειάζεται επίσης να υπάρχει κάποιος
τρόπος να κατευθύνεται η εισερχόμενη κίνηση στα σωστά PC του δικτύου.
Το IPNAT έχει τις κατάλληλες δυνατότητες για την
επίλυση αυτού του προβλήματος. Για παράδειγμα, έστω ότι ένας
εξυπηρετητής ιστοσελίδων βρίσκεται στην διεύθυνση LAN 10.0.10.25 και η μοναδική δημόσια IP
είναι 20.20.20.5. Ο κανόνας που θα
γράφατε θα έμοιαζε με τον παρακάτω:rdr dc0 20.20.20.5/32 port 80 -> 10.0.10.25 port 80ή:rdr dc0 0.0.0.0/0 port 80 -> 10.0.10.25 port 80ή για ένα εξυπηρετητή DNS με διεύθυνση στο τοπικό δίκτυο 10.0.10.33 ο οποίος πρέπει να δέχεται
αναζητήσεις από το δημόσιο δίκτυο:rdr dc0 20.20.20.5/32 port 53 -> 10.0.10.33 port 53 udpFTP και NATΤο FTP είναι ένας δεινόσαυρος που έχει απομείνει από την εποχή
που το Internet ήταν στα αρχικά του στάδια, όπου τα ερευνητικά
εργαστήρια των πανεπιστήμιων ήταν συνδεμένα μεταξύ τους με
μισθωμένες γραμμές και οι ερευνητές το χρησιμοποιούσαν για να
στέλνουν αρχεία ο ένας στον άλλο. Την εποχή εκείνη, δεν υπήρχαν
ανησυχίες σχετικά με την ασφάλεια. Με το πέρασμα του χρόνου, το
FTP θάφτηκε στο πίσω μέρος του ταχέως εξελισσόμενου Internet. Δεν
εξελίχθηκε ποτέ ώστε να ξεπεράσει προβλήματα ασφάλειας, όπως π.χ. το
γεγονός ότι στέλνει το όνομα και τον κωδικό του χρήστη ως απλό
κείμενο. Το FTP έχει δυο καταστάσεις λειτουργίας, την ενεργή και την
παθητική. Η διαφορά είναι στο πως γίνεται η ανάκτηση του καναλιού
δεδομένων. Η παθητική λειτουργία είναι πιο ασφαλής, καθώς το
κανάλι δεδομένων αποτελεί το κύριο κανάλι της συνεδρίας. Μπορείτε να
βρείτε πολύ καλή περιγραφή του πρωτοκόλλου και των διαφορετικών τρόπων
λειτουργίας του, στο .Κανόνες του IPNATΤο IPNAT διαθέτει μια ειδική επιλογή για
διαμεσολάβηση FTP (proxy) η οποία μπορεί να καθοριστεί στον
κατάλληλο κανόνα του NAT. Μπορεί να
παρακολουθήσει όλα τα εξερχόμενα πακέτα για να ανιχνεύσει την
έναρξη μιας ενεργής ή παθητικής συνεδρίας FTP, και να δημιουργήσει
δυναμικά προσωρινούς κανόνες στο φίλτρο που να περιέχουν μόνο τον
αριθμό της θύρας που χρησιμοποιείται από το κανάλι δεδομένων. Αυτό
εξαλείφει το πρόβλημα ασφάλειας που δημιουργείται από το γεγονός
ότι διαφορετικά θα χρειαζόταν να ανοιχθεί μια μεγάλη περιοχή θυρών
(στην υψηλή περιοχή) στο firewall.Ο παρακάτω κανόνας χειρίζεται όλα τα δεδομένα για το εσωτερικό
δίκτυο (LAN):map dc0 10.0.10.0/29 -> 0/32 proxy port 21 ftp/tcpΟ παρακάτω κανόνας χειρίζεται την κίνηση FTP από την
πύλη (gateway):map dc0 0.0.0.0/0 -> 0/32 proxy port 21 ftp/tcpΟ παρακάτω κανόνας χειρίζεται όλη την κίνηση από το εσωτερικό
LAN που δεν ανήκει στο πρωτόκολλο FTP:map dc0 10.0.10.0/29 -> 0/32Ο κανόνας χαρτογράφησης του FTP τοποθετείται πριν από τον
κανονικό κανόνα χαρτογράφησης. Κάθε πακέτο ελέγχεται αρχικά από
τον κανόνα που βρίσκεται στην κορυφή. Αν ταιριάζει στη διεπαφή και
στην ιδιωτική διεύθυνση IP και πρόκειται για πακέτο FTP,
ο διαμεσολαβητής FTP δημιουργεί προσωρινούς κανόνες στο φίλτρο
οι οποίοι επιτρέπουν την εισερχόμενη και εξερχόμενη κίνηση FTP ενώ
ταυτόχρονα εκτελούν και την απαραίτητη μετάφραση
NAT. Όλα τα πακέτα που δεν ανήκουν σε μετάδοση
FTP δεν ταιριάζουν με τον πρώτο κανόνα, έτσι κατευθύνονται στον
τρίτο κανόνα, εξετάζονται όσο αφορά τη διεπαφή και το IP από το
οποίο προέρχονται, και γίνεται η αντίστοιχη μετάφραση τους από το
NAT.Κανόνες Φίλτρου για το IPNATΌταν χρησιμοποιείται ο μεσολαβητής FTP, χρειάζεται μόνο ένας
κανόνας για το NAT.Χωρίς το μεσολαβητή FTP, χρειάζονται οι παρακάτω τρεις
κανόνες:# Allow out LAN PC client FTP to public Internet
# Active and passive modes
pass out quick on rl0 proto tcp from any to any port = 21 flags S keep state
# Allow out passive mode data channel high order port numbers
pass out quick on rl0 proto tcp from any to any port > 1024 flags S keep state
# Active mode let data channel in from FTP server
pass in quick on rl0 proto tcp from any to any port = 20 flags S keep stateIPFWfirewallIPFWΤο IPFIREWALL (IPFW) είναι λογισμικό που
αναπτύχθηκε για το &os;. Έχει γραφεί και συντηρείται από εθελοντές που
ανήκουν στο Project. Χρησιμοποιεί τους κλασικούς κανόνες χωρίς
διατήρηση της κατάστασης (stateless) καθώς και μια τεχνική
κωδικοποίησης που επιτυγχάνει αυτό που αναφέρεται ως Απλή Stateful
Λογική (Simple Stateful Logic).Το υπόδειγμα κανόνων για το IPFW (στα αρχεία
/etc/rc.firewall και
/etc/rc.firewall6) της τυπικής εγκατάστασης του
&os; είναι μάλλον απλό και θα χρειαστεί να κάνετε κάποιες αλλαγές
πριν το χρησιμοποιήσετε. Το παράδειγμα δεν χρησιμοποιεί φιλτράρισμα
τύπου stateful. Η stateful λειτουργία είναι ευεργετική στις
περισσότερες περιπτώσεις, έτσι δεν θα χρησιμοποιήσουμε αυτό το
παράδειγμα ως βάση αυτής της ενότητας.Η σύνταξη των κανόνων stateless του IPFW έχει ενισχυθεί με
εξελιγμένες δυνατότητες επιλογής οι οποίες συνήθως ξεπερνάνε κατά πολύ
τις τυπικές γνώσεις του ατόμου που καλείται να το ρυθμίσει. Το IPFW
απευθύνεται στον επαγγελματία χρήστη ή τον τεχνικά προχωρημένο χομπίστα,
ο οποίος έχει ανάγκη προχωρημένου φιλτραρίσματος πακέτων. Η πραγματική
δύναμη των κανόνων του IPFW αποκαλύπτεται μόνο αν διαθέτετε προχωρημένες
γνώσεις σχετικά με το πως διαφορετικά πρωτόκολλα δημιουργούν και
χρησιμοποιούν την επικεφαλίδα των πακέτων τους. Τέτοιο επίπεδο
επεξηγήσεων είναι πέρα από το σκοπό αυτής της ενότητας του
Εγχειριδίου.Το IPFW αποτελείται από επτά εξαρτήματα. Το βασικό εξάρτημα είναι
ο επεξεργαστής κανόνων του firewall στον πυρήνα, με ενσωματωμένη τη
δυνατότητα καταγραφής. Τα υπόλοιπα εξαρτήματα είναι το σύστημα
καταγραφής (logging), ο κανόνας divert ο οποίος
ενεργοποιεί τη λειτουργία NAT, καθώς και οι
προχωρημένες δυνατότητες ειδικού σκοπού: το σύστημα διαμόρφωσης κίνησης
(traffic shaper) dummynet, η δυνατότητα προώθησης μέσω του
fwd rule, η δυνατότητα γεφύρωσης (bridge) καθώς και
η δυνατότητα απόκρυψης (ipstealth). To IPFW υποστηρίζει τόσο το
πρωτόκολλο IPv4 όσο και το IPv6.Ενεργοποιώντας το IPFWIPFWenablingΤο IPFW περιλαμβάνεται στην βασική εγκατάσταση του &os; ως άρθρωμα
του πυρήνα το οποίο μπορεί να φορτωθεί δυναμικά. Το σύστημα θα
φορτώσει δυναμικά το άρθρωμα όταν βρει την καταχώριση
firewall_enable="YES" στο αρχείο
/etc/rc.conf. Δεν χρειάζεται να μεταγλωττίσετε
το IPFW μέσα στον πυρήνα, εκτός αν θέλετε να χρησιμοποιήσετε τις
λειτουργίες NAT που παρέχει.Αφού επανεκκινήσετε το σύστημα σας με την καταχώριση
firewall_enable="YES" στο
rc.conf, θα δείτε με άσπρα έντονα γράμματα το
ακόλουθο μήνυμα κατά τη διαδικασία της εκκίνησης:ipfw2 initialized, divert disabled, rule-based forwarding disabled, default to deny, logging disabledΤο άρθρωμα έχει ενσωματωμένη τη δυνατότητα καταγραφής. Για να
ενεργοποιήσετε την καταγραφή και να θέσετε το επίπεδο λεπτομέρειας,
υπάρχουν κάποιες ρυθμίσεις που μπορείτε να θέσετε στο
/etc/sysctl.conf. Προσθέτοντας τις παρακάτω
καταχωρίσεις, θα ενεργοποιηθεί η καταγραφή στις επόμενες
εκκινήσεις:net.inet.ip.fw.verbose=1
net.inet.ip.fw.verbose_limit=5Επιλογές του Πυρήναkernel optionsIPFIREWALLkernel optionsIPFIREWALL_VERBOSEkernel optionsIPFIREWALL_VERBOSE_LIMITIPFWkernel optionsΔεν είναι υποχρεωτικό να ενεργοποιήσετε το IPFW μεταγλωττίζοντας
τις παρακάτω επιλογές στον πυρήνα του &os;, εκτός και αν θέλετε να
χρησιμοποιήσετε NAT. Ο σκοπός αυτής της
παρουσίασης είναι καθαρά ενημερωτικός.options IPFIREWALLΗ επιλογή αυτή ενεργοποιεί το IPFW ως μέρος του πυρήνα.options IPFIREWALL_VERBOSEΕνεργοποιεί την καταγραφή των πακέτων που περνούν μέσω του IPFW
και περιλαμβάνουν τη λέξη log στον κανόνα
τους.options IPFIREWALL_VERBOSE_LIMIT=5Περιορίζει τον πλήθος των πακέτων που καταγράφονται μέσω του
&man.syslogd.8; σε συγκεκριμένο αριθμό ανά καταχώριση. Η ρύθμιση
είναι χρήσιμη σε εχθρικά περιβάλλοντα στα οποία είναι επιθυμητή
η καταγραφή. Με αυτό τον τρόπο μπορεί να αποφευχθεί μια πιθανή
επίθεση με στόχο την υπερχείλιση των αρχείων καταγραφής.kernel optionsIPFIREWALL_DEFAULT_TO_ACCEPToptions IPFIREWALL_DEFAULT_TO_ACCEPTΗ επιλογή αυτή αφήνει τα πάντα να περνάνε μέσα από το firewall,
το οποίο είναι καλή ιδέα την πρώτη φορά που ρυθμίζετε το firewall
σας.kernel optionsIPDIVERToptions IPDIVERTΗ επιλογή αυτή ενεργοποιεί τη λειτουργία
NAT.Το firewall θα απορρίπτει όλα τα πακέτα που κατευθύνονται από
και προς το μηχάνημα, αν δεν περιλάβετε την επιλογή
IPFIREWALL_DEFAULT_TO_ACCEPT ή αν δεν ρυθμίσετε
ένα κατάλληλο κανόνα που να επιτρέπει αυτές τις συνδέσεις.Επιλογές στο /etc/rc.confΕνεργοποιήστε το firewall:firewall_enable="YES"Για να επιλέξετε ένα από τους προεπιλεγμένους τύπους firewall που
υποστηρίζονται από το &os;, διαβάστε το αρχείο
/etc/rc.firewall και δημιουργήστε μια εγγραφή
όπως την παρακάτω:firewall_type="open"Οι διαθέσιμες τιμές για αυτή τη ρύθμιση είναι:open — επιτρέπει τη διέλευση όλης
της κίνησης.client — προστατεύει μόνο το
συγκεκριμένο μηχάνημα.simple — προστατεύει ολόκληρο το
δίκτυο.closed — απενεργοποιεί εντελώς την
κίνηση πακέτων, εκτός από την εσωτερική διεπαφή (loopback).UNKNOWN — απενεργοποιεί την φόρτωση
κανόνων του firewall.filename
— το πλήρες μονοπάτι του αρχείου που περιέχει τους κανόνες
του firewall.Μπορείτε να χρησιμοποιήσετε δύο διαφορετικούς τρόπους για να
φορτώσετε προσαρμοσμένους κανόνες στο
ipfw firewall. Ο ένας είναι θέτοντας τη
μεταβλητή firewall_type στην απόλυτη διαδρομή του
αρχείου που περιέχει τους κανόνες του firewall,
χωρίς να δώσετε ορίσματα στην γραμμή εντολών για το ίδιο το
&man.ipfw.8;. Το αρχείο κανόνων που φαίνεται παρακάτω, απορρίπτει
όλη την εισερχόμενη και εξερχόμενη κίνηση:add deny in
add deny outΑπό την άλλη μεριά, είναι επίσης δυνατό να θέσετε τη μεταβλητή
firewall_script στην απόλυτη διαδρομή ενός
εκτελέσιμου script που περιλαμβάνει μια σειρά από εντολές
ipfw που θα εκτελεστούν κατά την εκκίνηση.
Ένα έγκυρο τέτοιο script το οποίο είναι αντίστοιχο με το αρχείο
κανόνων που δείξαμε παραπάνω, είναι το ακόλουθο:#!/bin/sh
ipfw -q flush
ipfw add deny in
ipfw add deny outΑν θέσετε την τιμή του firewall_type είτε
σε client είτε σε simple,
θα πρέπει να ελέγξετε ότι οι προεπιλεγμένοι κανόνες που περιέχονται
στο /etc/rc.firewall ταιριάζουν με τις
ρυθμίσεις του συγκεκριμένου μηχανήματος. Παρατηρήστε επίσης ότι τα
παραδείγματα που χρησιμοποιούνται σε αυτό το κεφάλαιο αναμένουν να
να έχετε θέσει τη μεταβλητή firewall_script στην
τιμή /etc/ipfw.rules.Ενεργοποιήστε την καταγραφή:firewall_logging="YES"Το μόνο πράγμα που κάνει η μεταβλητή
firewall_logging είναι να θέσει την τιμή
της μεταβλητής sysctl net.inet.ip.fw.verbose στην
τιμή 1 (δείτε το ). Δεν υπάρχει μεταβλητή του
rc.conf που να ορίζει περιορισμούς στην
καταγραφή, αλλά αυτό μπορεί να ρυθμιστεί μέσω της παραπάνω
μεταβλητής sysctl είτε χειροκίνητα, είτε μέσω του αρχείου
/etc/sysctl.conf:net.inet.ip.fw.verbose_limit=5Αν το μηχάνημα σας λειτουργεί ως πύλη (gateway), δηλαδή παρέχει
υπηρεσία μετάφρασης διευθύνσεων δικτύου (Network Address
Translation, NAT) μέσω του &man.natd.8;, παρακαλούμε να διαβάσετε το
για πληροφορίες σχετικά με τις
ρυθμίσεις που απαιτούνται στο αρχείο
/etc/rc.conf.Η Εντολή IPFWipfwΗ εντολή ipfw είναι ο συνήθης τρόπος για την
προσθήκη η διαγραφή κανόνων στους εσωτερικούς ενεργούς κανόνες του
firewall, καθώς αυτό εκτελείται. Το πρόβλημα με τη χρήση αυτής της
μεθόδου είναι ότι οι αλλαγές χάνονται με τον τερματισμό λειτουργίας
του μηχανήματος. Μπορείτε να γράψετε όλους τους κανόνες σας σε ένα
αρχείο και να το χρησιμοποιείτε για να τους φορτώνετε στην εκκίνηση.
Μπορείτε να χρησιμοποιήσετε το ίδιο αρχείο για να αντικαταστήσετε
τους τρέχοντες κανόνες του firewall, την ώρα που αυτό εκτελείται.
Αυτός είναι και ο συνιστώμενος τρόπος που χρησιμοποιούμε στα
παραδείγματα μας.Η εντολή ipfw είναι επίσης χρήσιμη για να
απεικονίζει τους τρέχοντες κανόνες στη κονσόλα σας. Το σύστημα
καταγραφής χρήσης της IPFW δημιουργεί αυτόματα ένα μετρητή για κάθε
κανόνα, ο οποίος μετράει πόσα πακέτα ταίριαξαν με αυτόν. Κατά τη
διάρκεια των δοκιμών, η δυνατότητα να ελέγξετε την τιμή του μετρητή
είναι ένας τρόπος για να διαπιστώσετε αν ο κανόνας λειτουργεί
κανονικά.Για να δείτε όλους τους κανόνες με τη σειρά:&prompt.root; ipfw listΓια να δείτε μια λίστα όλων των κανόνων, μαζί με την ώρα που
ενεργοποιήθηκε τελευταία φορά ο κάθε κανόνας, γράψτε:&prompt.root; ipfw -t listΤο επόμενο παράδειγμα δείχνει τον αριθμό των πακέτων που ταίριαξαν
μαζί με τον αντίστοιχο κανόνα. Η πρώτη στήλη δείχνει τον αριθμό του
κανόνα, ακολουθείται από τον αριθμό πακέτων που ταίριαξαν (πρώτα τα
εξερχόμενα και μετά τα εισερχόμενα) και τέλος από τον ίδιο τον
κανόνα.&prompt.root; ipfw -a listΓια να δείτε μια λίστα που να περιλαμβάνει τόσο τους δυναμικούς
όσο και τους στατικούς κανόνες:&prompt.root; ipfw -d listΓια να δείτε και τους δυναμικούς κανόνες που έχουν λήξει:&prompt.root; ipfw -d -e listΓια να μηδενίσετε τους μετρητές:&prompt.root; ipfw zeroΓια να μηδενίσετε τους μετρητές μόνο για τον κανόνα με τον αριθμό
NUM:&prompt.root; ipfw zero NUMΤο Σύνολο Κανόνων του IPFWΩς σύνολο κανόνων στο IPFW, ορίζουμε μια ομάδα
κανόνων που έχουν γραφεί για να επιτρέπουν ή να απορρίπτουν πακέτα
ανάλογα με τις τιμές που περιέχονται σε αυτά. Η διπλής κατεύθυνσης
ανταλλαγή πακέτων μεταξύ υπολογιστών αποτελεί μια συνεδρία.
Το σύνολο κανόνων του firewall επεξεργάζεται τόσο τα πακέτα που
έρχονται από το Internet, όσο και τα πακέτα που παράγονται από το
σύστημα ως απάντηση σε αυτά. Κάθε υπηρεσία TCP/IP
(π.χ. telnet, www, mail, κ.λ.π.) καθορίζεται από το πρωτόκολλο και
την προνομιακή (privileged) θύρα που χρησιμοποιεί για να δέχεται
αιτήματα εξυπηρέτησης. Τα πακέτα που προορίζονται για μια
συγκεκριμένη υπηρεσία, ξεκινούν από τη διεύθυνση αφετηρίας
χρησιμοποιώντας μια μη-προνομιακή θύρα και καταλήγουν στη
συγκεκριμένη θύρα υπηρεσίας στον προορισμό. Όλες οι παραπάνω
παράμετροι (θύρες και διευθύνσεις) μπορούν να χρησιμοποιηθούν ως
κριτήρια επιλογής για την δημιουργία κανόνων που επιτρέπουν
ή εμποδίζουν την πρόσβαση σε υπηρεσίες.IPFWrule processing orderΌταν ένα πακέτο εισέρχεται στο firewall, συγκρίνεται με βάση τον
πρώτο κανόνα. Η σύγκριση συνεχίζεται διαδοχικά με τους υπόλοιπους
κανόνες, από τον πρώτο προς τον τελευταίο, με βάση τον αύξοντα αριθμό
τους. Όταν το πακέτο ταιριάξει με τις παραμέτρους επιλογής κάποιου
κανόνα, εκτελείται η οδηγία που αναφέρεται στο πεδίο ενεργειών του
κανόνα αυτού και η αναζήτηση κανόνων για το συγκεκριμένο πακέτο
τερματίζεται. Σε αυτή τη μέθοδο αναζήτησης,
ο πρώτος κανόνας που ταιριάζει, είναι ο νικητής. Αν
το πακέτο δεν ταιριάζει με κανένα από τους κανόνες, θα ληφθεί από τον
υποχρεωτικό προεπιλεγμένο κανόνα του IPFW, με αριθμό 65535, ο οποίος
εμποδίζει τη διέλευση όλων των πακέτων, και τα απορρίπτει χωρίς να
στείλει καμιά απάντηση στον αρχικό αποστολέα τους.Η αναζήτηση συνεχίζεται μετά από κανόνες τύπου
count, skipto και
tee.Οι οδηγίες που φαίνονται εδώ, βασίζονται στη χρήση κανόνων που
περιέχουν τις οδηγίες keep state,
limit, in,
out και via. Αυτές είναι και
οι βασικές λειτουργίες για την δόμηση ενός firewall τύπου
inclusive με stateful λειτουργία.Να δίνετε μεγάλη προσοχή όταν δουλεύετε με τους κανόνες ενός
firewall. Μπορεί άθελα σας να κλειδωθείτε έξω από το σύστημα
σας.Σύνταξη ΚανόνωνIPFWrule syntaxΣτην ενότητα αυτή, θα παρουσιάσουμε μια απλοποιημένη σύνταξη
κανόνων. Δείχνουμε μόνο ότι χρειάζεται για να δημιουργηθεί ένα
τυποποιημένο σύνολο κανόνων για ένα inclusive firewall. Για πλήρη
περιγραφή, δείτε τη σελίδα manual του &man.ipfw.8;.Οι κανόνες περιέχουν λέξεις-κλειδιά. Οι λέξεις αυτές θα πρέπει
να κωδικοποιηθούν με συγκεκριμένη σειρά από τα αριστερά προς τα
δεξιά της γραμμής. Οι λέξεις-κλειδιά φαίνονται παρακάτω με έντονα
γράμματα. Μερικές λέξεις έχουν υπο-επιλογές οι οποίες μπορεί να
είναι επίσης λέξεις-κλειδιά και να περιλαμβάνουν επίσης ακόμα
περισσότερες υπο-επιλογές.Η αρχή ενός σχολίου, σηματοδοτείται με το σύμβολο
#, το οποίο μπορεί να εμφανίζεται στο τέλος μιας
γραμμής κανόνα, ή και σε μια δική του γραμμή. Οι κενές γραμμές
αγνοούνται.CMD RULE_NUMBER ACTION LOGGING SELECTION
STATEFULCMDΓια να γίνει η προσθήκη ενός νέου κανόνα στον εσωτερικό
πίνακα, τοποθετείται μπροστά από αυτόν η παράμετρος
add.RULE_NUMBERΚάθε κανόνας πρέπει να διαθέτει ένα αριθμό που να τον
χαρακτηρίζει.ACTIONΈνας κανόνας μπορεί να σχετίζεται με μια ή περισσότερες
ενέργειες, οι οποίες εκτελούνται όταν το πακέτο ταιριάζει με τα
κριτήρια επιλογής αυτού του κανόνα.allow | accept | pass |
permitΌλα τα παραπάνω έχουν το ίδιο αποτέλεσμα: το πακέτο εξέρχεται
από την σύστημα του firewall. Η αναζήτηση για το συγκεκριμένο
πακέτο τερματίζεται σε αυτό τον κανόνα.check-stateΕλέγχει το πακέτο με βάση το δυναμικό πίνακα κανόνων. Αν
βρεθεί κανόνας που να ταιριάζει, θα εκτελεστεί η ενέργεια του
κανόνα ο οποίος δημιούργησε τον συγκεκριμένο δυναμικό κανόνα.
Διαφορετικά, η αναζήτηση συνεχίζεται με τον επόμενο κανόνα.
Ένας κανόνας check-state δεν έχει κριτήρια επιλογής. Αν δεν
υπάρχει κανόνας check-state στο σύνολο κανόνων, ο έλεγχος του
πίνακα δυναμικών κανόνων ξεκινάει από τον πρώτο κανόνα τύπου
keep-state ή limit.deny | dropΚαι οι δύο λέξεις σημαίνουν το ίδιο πράγμα: τα πακέτα που
ταιριάζουν με αυτό τον κανόνα απορρίπτονται. Η αναζήτηση
τερματίζεται.Καταγραφήlog ή
logamountΌταν ένα πακέτο ταιριάζει με ένα κανόνα που περιέχει τη λέξη
log, γίνεται καταγραφή του μηνύματος μέσω του
&man.syslogd.8; στη δυνατότητα SECURITY. Η καταγραφή συμβαίνει
μόνο αν ο αριθμός των πακέτων που έχει καταγραφεί μέχρι στιγμής
δεν υπερβαίνει την παράμετρο logamount. Αν η
παράμετρος αυτή δεν έχει καθοριστεί, το όριο ρυθμίζεται με βάση
την τιμή της μεταβλητής sysctl
net.inet.ip.fw.verbose_limit. Και στις δύο
περιπτώσεις, μια μηδενική τιμή σημαίνει ότι δεν θα υπάρχει όριο
στην καταγραφή. Μόλις η καταγραφή φτάσει στο όριο, μπορεί να
γίνει επανενεργοποίηση της με το μηδενισμό του μετρητή
καταγραφής, ή του μετρητή για το συγκεκριμένο κανόνα. Δείτε την
εντολή ipfw reset log.Η καταγραφή γίνεται μόνο αφού επαληθευθούν όλες οι άλλες
συνθήκες ταιριάσματος του πακέτου, και πριν την τελική αποδοχή
ή απόρριψη του. Είναι στη δική σας ευχέρεια να αποφασίσετε σε
ποιους κανόνες θα ενεργοποιήσετε την καταγραφή.ΕπιλογήΟι λέξεις-κλειδιά που περιγράφονται σε αυτή την ενότητα,
χρησιμοποιούνται για να περιγράψουν χαρακτηριστικά του πακέτου που
θα πρέπει να διερευνηθούν για να καθοριστεί αν το πακέτο ταιριάζει
ή όχι με τον κανόνα. Η επιλογή μπορεί να γίνει με βάση τα
παρακάτω γενικής φύσεως χαρακτηριστικά, τα οποία και θα πρέπει να
χρησιμοποιηθούν με τη σειρά που φαίνονται:udp | tcp | icmpΜπορούν επίσης να χρησιμοποιηθούν τα πρωτόκολλα που
περιέχονται στο αρχείο /etc/protocols.
Η τιμή που καθορίζεται χρησιμοποιείται για το ταίριασμα του
πρωτοκόλλου. Πρόκειται για υποχρεωτική παράμετρο.from src to dstΟι λέξεις from και to
χρησιμοποιούνται για το ταίριασμα IP διευθύνσεων. Οι κανόνες
πρέπει να καθορίζουν τόσο την πηγή όσο και
τον προορισμό. Η λέξη any μπορεί να
χρησιμοποιηθεί για ταίριασμα με οποιαδήποτε διεύθυνση. Η λέξη
me έχει επίσης ειδική σημασία. Ταιριάζει με
οποιαδήποτε διεύθυνση που έχει ρυθμιστεί σε κάποια διεπαφή του
συστήματος σας, αντιπροσωπεύοντας έτσι το PC στο οποίο εκτελείται
το firewall. Μπορούν έτσι να γραφούν κανόνες του τύπου
from me to any ή
from any to me ή
from any to 0.0.0.0/0 ή
from 0.0.0.0/0 to me ή
from any to 0.0.0.0 ή
from me to 0.0.0.0. Οι διευθύνσεις IP
καθορίζονται ως αριθμητικές οκτάδες χωρισμένες με τελείες
και ακολουθούνται από το μήκος της μάσκας υποδικτύου. Μια
IP διεύθυνση μπορεί να καθορίζεται με αριθμούς που χωρίζονται
με τελείες. Μπορεί επίσης να ακολουθείται από το μέγεθος της
μάσκας υποδικτύου (μορφή CIDR). Πρόκειται για υποχρεωτική
παράμετρο. Μπορείτε να χρησιμοποιήσετε το βοηθητικό πρόγραμμα
net-mgmt/ipcalc για
διευκόλυνση σας στους υπολογισμούς. Δείτε την δικτυακή τοποθεσία
του προγράμματος για περισσότερες πληροφορίες: .port numberΧρησιμοποιείται σε πρωτόκολλα που υποστηρίζουν αριθμούς θυρών
(όπως είναι τα TCP και UDP).
Είναι υποχρεωτικό να δίνεται ο αριθμός θύρας της υπηρεσίας
που θέλετε να ταιριάξετε. Μπορείτε να χρησιμοποιήσετε τα
ονόματα των υπηρεσιών (μπορείτε να τα βρείτε στο αρχείο
/etc/services) αντί για τους κανονικούς
αριθμούς θυρών.in | outΜε το παραπάνω μπορεί να καθοριστεί αν το ταίριασμα θα
γίνεται σε εισερχόμενα ή σε εξερχόμενα πακέτα αντίστοιχα. Είναι
υποχρεωτικό να έχετε ως μέρος των κριτηρίων του κανόνα σας, είτε
τη λέξη in είτε τη λέξη
out.via IFΤαιριάζει τα πακέτα τα οποία διέρχονται μέσω της διεπαφής με
το όνομα που καθορίζεται. Η λέξη via
εξασφαλίζει ότι το όνομα της διεπαφής θα είναι πάντα μέρος των
κριτηρίων κατά τη διαδικασία ταιριάσματος.setupΠρόκειται για υποχρεωτική παράμετρο που αναγνωρίζει την
αίτηση έναρξης μιας συνεδρίας για πακέτα
TCP.keep-stateΠρόκειται για υποχρεωτική παράμετρο. Μόλις υπάρξει ταίριασμα,
το firewall θα δημιουργήσει ένα δυναμικό κανόνα, του οποίου η
προεπιλεγμένη συμπεριφορά είναι να ταιριάζει επικοινωνία διπλής
κατεύθυνσης μεταξύ της διεύθυνσης IP και της θύρας αφετηρίας και
προορισμού, χρησιμοποιώντας το ίδιο πρωτόκολλο.limit {src-addr | src-port | dst-addr |
dst-port}Το firewall θα επιτρέψει μόνο N
πλήθος συνδέσεων με τις παραμέτρους που περιγράφονται σε αυτό
τον κανόνα. Μπορούν να καθοριστούν περισσότερες από μια
διευθύνσεις και πόρτες αφετηρίας και προορισμού. Δεν μπορούν
να χρησιμοποιηθούν στον ίδιο κανόνα οι παράμετροι
limit και keep-state.
Η επιλογή limit παρέχει την ίδια λειτουργία
stateful με την keep-state, καθώς και
επιπρόσθετες δικές της λειτουργίες.Επιλογή για Stateful ΚανόνεςIPFWstateful filteringΤο stateful φιλτράρισμα, αντιμετωπίζει την κίνηση του δικτύου ως
διπλής κατεύθυνσης ανταλλαγή πακέτων τα οποία δημιουργούν μια
συνεδρία. Έχει επίσης τη δυνατότητα να διερευνήσει αν τηρούνται
οι έγκυροι κανόνες ανταλλαγής μηνυμάτων μεταξύ του αποστολέα και
του παραλήπτη. Οποιαδήποτε πακέτα δεν ταιριάζουν με το πρότυπο
αυτής της επικοινωνίας, απορρίπτονται ως ψεύτικα.Η επιλογή check-state χρησιμοποιείται για
να αναγνωριστεί σε ποιο σημείο του συνόλου κανόνων του IPFW θα
ελεγχθεί το πακέτο με βάση τη δυνατότητα των δυναμικών κανόνων.
Σε περίπτωση ταιριάσματος, το πακέτο εξέρχεται από το firewall και
συνεχίζει την πορεία του, ενώ την ίδια στιγμή δημιουργείται ένας
νέος δυναμικός κανόνας για το επόμενο πακέτο που αναμένεται να
έρθει με βάση τη συγκεκριμένη διπλής κατεύθυνσης επικοινωνία. Σε
περίπτωση που το πακέτο δεν ταιριάζει με το δυναμικό κανόνα, θα
προχωρήσει για να ελεγχθεί από τον επόμενο κανόνα του
firewall.Η δυνατότητα δυναμικών κανόνων είναι ευάλωτη σε εξάντληση πόρων
σε περίπτωση επίθεσης υπερχείλισης (flood) SYN. Η επίθεση αυτή
μπορεί να δημιουργήσει πολύ μεγάλο πλήθος δυναμικών κανόνων.
Για την αντιμετώπιση μιας τέτοιας επίθεσης, το &os; χρησιμοποιεί
μια ακόμα επιλογή που ονομάζεται limit.
Η επιλογή αυτή μπορεί να περιορίσει τον αριθμό των ταυτόχρονων
συνεδριών, εξετάζοντας τα πεδία αφετηρίας και προορισμού των
κανόνων. Ανιχνεύει με αυτό τον τρόπο το πλήθος των δυναμικών
κανόνων και πόσες φορές έχει χρησιμοποιηθεί ο καθένας από
τη συγκεκριμένη IP διεύθυνση. Αν ο αριθμός αυτός ξεπερνάει το
όριο που έχει τεθεί με την επιλογή limit, το
πακέτο απορρίπτεται.Καταγραφή Μηνυμάτων του FirewallIPFWloggingΤα πλεονεκτήματα της καταγραφής συμβάντων του firewall, είναι
προφανή: παρέχουν τη δυνατότητα να δείτε για ποιο λόγο
ενεργοποιήθηκαν οι κανόνες στους οποίους έχετε ενεργοποιήσει την
καταγραφή. Οι πληροφορίες περιλαμβάνουν τα πακέτα που απορρίφθηκαν,
τις διευθύνσεις από τις οποίες προήλθαν και που κατευθύνονταν.
Με αυτό τον τρόπο, έχετε ένα σημαντικό πλεονέκτημα στην ανίχνευση
των εισβολέων.Ακόμα και αν ενεργοποιήσετε τη λειτουργία καταγραφής, το IPFW
δεν θα αρχίσει από μόνο του την καταγραφή για κανένα κανόνα.
Ο διαχειριστής του firewall θα αποφασίσει σε ποιους από όλους τους
κανόνες θα ενεργοποιήσει την καταγραφή, και θα προσθέσει την
λέξη log στην αντίστοιχη καταχώριση.
Φυσιολογικά, γίνεται καταγραφή μόνο για κανόνες που απορρίπτουν
πακέτα (κανόνες deny), όπως για παράδειγμα ο
κανόνας απόρριψης των εισερχόμενων ICMP pings.
Είναι κοινή πρακτική, να αντιγράφεται στο τέλος των κανόνων ο
κανόνας ipfw default deny everything και να
προστίθεται σε αυτόν η επιλογή log.
Με τον τρόπο αυτό, μπορείτε να δείτε όλα τα πακέτα που δεν
ταίριαξαν με κανένα κανόνα του συνόλου.Η καταγραφή συμβάντων είναι δίκοπο μαχαίρι. Αν δεν είστε
προσεκτικός, θα χαθείτε μέσα στο πλήθος των δεδομένων της
καταγραφής και θα γεμίσετε το δίσκο σας με άχρηστα αρχεία. Οι πιο
παλιές και κοινές επιθέσεις τύπου άρνησης υπηρεσίας (DoS), είναι
αυτές που προσπαθούν να γεμίσουν τους δίσκους σας. Τα μηνύματα
αυτά όχι μόνο καταγράφονται στο syslogd,
αλλά εμφανίζονται και στην κονσόλα του συστήματος σας, και σύντομα
γίνονται πολύ ενοχλητικά.Η επιλογή IPFIREWALL_VERBOSE_LIMIT=5 στον
πυρήνα, περιορίζει τον αριθμό των συνεχόμενων όμοιων μηνυμάτων που
στέλνονται στον καταγραφέα συστήματος &man.syslogd.8; σχετικά με
το ταίριασμα πακέτων ενός συγκεκριμένου κανόνα. Όταν ενεργοποιείται
αυτή η επιλογή στον πυρήνα, ο αριθμός των συνεχόμενων μηνυμάτων
ενός συγκεκριμένου κανόνα, σταματάει μετά τον αριθμό που
καθορίζεται. Δεν υπάρχει κανένα όφελος από 200 συνεχόμενα μηνύματα
με το ίδιο ακριβώς περιεχόμενο. Για παράδειγμα, πέντε συνεχόμενα
μηνύματα για ένα συγκεκριμένο κανόνα θα καταγράφονταν κανονικά στο
syslogd. Τα υπόλοιπα όμοια μηνύματα θα
καταμετρηθούν και θα καταγραφούν όπως φαίνεται παρακάτω:last message repeated 45 timesΌλα τα μηνύματα καταγραφής των πακέτων, γράφονται από προεπιλογή
στο αρχείο /var/log/security το οποίο
καθορίζεται στο αρχείο /etc/syslog.conf.Δημιουργία Ενός Script ΚανόνωνΟι περισσότεροι έμπειροι χρήστες του IPFW, δημιουργούν ένα
αρχείο που περιέχει τους κανόνες και το γράφουν με τέτοιο τρόπο
ώστε να να μπορεί να εκτελεστεί ως script. Το βασικό πλεονέκτημα
του παραπάνω τρόπου, είναι ότι οι κανόνες του firewall μπορούν να
ανανεωθούν χωρίς την ανάγκη να επανεκκινήσει το σύστημα για να
φορτωθούν οι νέοι. Η μέθοδος αυτή είναι πολύ βολική για
την δοκιμή νέων κανόνων, καθώς η διαδικασία μπορεί να επαναληφθεί
όσες φορές χρειάζεται. Καθώς πρόκειται για κανονικό script,
μπορείτε να χρησιμοποιήσετε συμβολική υποκατάσταση για να
κωδικοποιήσετε και να υποκαταστήσετε συχνά χρησιμοποιούμενες τιμές
σε πολλαπλούς κανόνες. Αυτό φαίνεται στο παρακάτω
παράδειγμα.Η σύνταξη που χρησιμοποιείται εδώ, είναι συμβατή με τα κελύφη
&man.sh.1;, &man.csh.1; και &man.tcsh.1;. Μπροστά από τα πεδία
της συμβολικής υποκατάστασης, υπάρχει το σήμα του δολαρίου,
$. Το σύμβολο αυτό δεν υπάρχει μπροστά από τα συμβολικά
πεδία. Η τιμή που θα αποδοθεί στο συμβολικό πεδίο, πρέπει να
εσωκλείεται σε διπλά εισαγωγικά.Ξεκινήστε το αρχείο των κανόνων σας όπως φαίνεται
παρακάτω:############### start of example ipfw rules script #############
#
ipfw -q -f flush # Delete all rules
# Set defaults
oif="tun0" # out interface
odns="192.0.2.11" # ISP's DNS server IP address
cmd="ipfw -q add " # build rule prefix
ks="keep-state" # just too lazy to key this each time
$cmd 00500 check-state
$cmd 00502 deny all from any to any frag
$cmd 00501 deny tcp from any to any established
$cmd 00600 allow tcp from any to any 80 out via $oif setup $ks
$cmd 00610 allow tcp from any to $odns 53 out via $oif setup $ks
$cmd 00611 allow udp from any to $odns 53 out via $oif $ks
################### End of example ipfw rules script ############Αυτό είναι όλο. Στο παράδειγμα αυτό δεν είναι σημαντικοί οι
κανόνες, αλλά ο τρόπος με τον οποίο λειτουργούν και παίρνουν τιμές
τα πεδία συμβολικής υποκατάστασης.Αν το παραπάνω παράδειγμα ήταν στο αρχείο
/etc/ipfw.rules θα μπορούσατε να φορτώσετε
αυτούς τους κανόνες, γράφοντας την παρακάτω εντολή:&prompt.root; sh /etc/ipfw.rulesΤο αρχείο /etc/ipfw.rules μπορεί να
βρίσκεται σε όποιο κατάλογο θέλετε, και να ονομάζεται επίσης όπως
θέλετε.Θα μπορούσατε να επιτύχετε το ίδιο πράγμα, εκτελώντας τις
παρακάτω εντολές χειροκίνητα:&prompt.root; ipfw -q -f flush
&prompt.root; ipfw -q add check-state
&prompt.root; ipfw -q add deny all from any to any frag
&prompt.root; ipfw -q add deny tcp from any to any established
&prompt.root; ipfw -q add allow tcp from any to any 80 out via tun0 setup keep-state
&prompt.root; ipfw -q add allow tcp from any to 192.0.2.11 53 out via tun0 setup keep-state
&prompt.root; ipfw -q add 00611 allow udp from any to 192.0.2.11 53 out via tun0 keep-stateΣύνολο Κανόνων StatefulΤο παρακάτω σύνολο κανόνων (που δεν περιέχει κανόνες για
NAT) είναι ένα παράδειγμα γραφής ενός inclusive
firewall. Ένα inclusive firewall επιτρέπει την είσοδο μόνο των
πακέτων που ταιριάζουν με τους κανόνες αποδοχής (pass) και
απορρίπτει από προεπιλογή όλα τα άλλα. Τα firewalls που έχουν
σχεδιαστεί να προστατεύουν ολόκληρα δίκτυα, διαθέτουν το λιγότερο
δύο διεπαφές, στις οποίες πρέπει να υπάρχουν κανόνες ώστε το
firewall να λειτουργεί.Όλα τα λειτουργικά συστήματα τύπου &unix;, συμπεριλαμβανομένου
και του &os;, έχουν σχεδιαστεί να χρησιμοποιούν τη διεπαφή
lo0 και τη διεύθυνση IP
127.0.0.1 για εσωτερική επικοινωνία
με το λειτουργικό σύστημα. Το firewall πρέπει να περιέχει κανόνες
που να επιτρέπουν την απρόσκοπτη κίνηση αυτών των ειδικών, για
εσωτερική χρήση, πακέτων.Οι κανόνες που ορίζουν την πρόσβαση εισερχόμενων και
εξερχόμενων πακέτων, γράφονται για τη διεπαφή που συνδέεται στο
δημόσιο Internet. Η διεπαφή αυτή μπορεί να είναι για παράδειγμα η
tun0 (σε περίπτωση που χρησιμοποιείτε το
PPP χρήστη), ή η κάρτα δικτύου που συνδέεται στο
καλωδιακό ή DSL modem σας.Σε περίπτωση που μια ή περισσότερες κάρτες δικτύου συνδέονται σε
εσωτερικά ιδιωτικά δίκτυα πίσω από το firewall, θα πρέπει να
υπάρχουν οι αντίστοιχοι κανόνες που να επιτρέπουν την ελεύθερη
διακίνηση των πακέτων ανάμεσα στις διεπαφές αυτές ή/και στο
Internet.Οι κανόνες πρέπει να οργανώνονται σε τρεις κύριες ενότητες:
αρχικά όλες οι διεπαφές στις οποίες επιτρέπεται η ελεύθερη διακίνηση
δεδομένων, έπειτα η διεπαφή από την οποία εξέρχονται τα πακέτα προς
το δημόσιο δίκτυο (Internet) και τέλος η διεπαφή από την οποία
λαμβάνονται πακέτα από το Internet.Σε κάθε μια από τις ενότητες των διεπαφών που συνδέονται στο
Internet, πρέπει να τοποθετούνται πρώτοι οι κανόνες που ταιριάζουν
συχνότερα με την αντίστοιχη κίνηση. Ο τελευταίος κανόνας της
ενότητας θα πρέπει να απορρίπτει και να καταγράφει όλα τα πακέτα
της συγκεκριμένης διεπαφής/κατεύθυνσης.Η ενότητα εξερχομένων (Outbound) στο σύνολο κανόνων που φαίνεται
παρακάτω, περιέχει μόνο κανόνες τύπου allow. Οι
κανόνες αυτοί περιέχουν συγκεκριμένες επιλεγμένες τιμές, με τις
οποίες αναγνωρίζεται με μοναδικό τρόπο η υπηρεσία στην οποία
επιτρέπεται η πρόσβαση από το δημόσιο Internet. Όλοι οι κανόνες
έχουν τις επιλογές proto,
port, in/out και
keep-state. Οι κανόνες τύπου
proto tcp περιέχουν την επιλογή
setup για την αναγνώριση του πακέτου έναρξης της
συνεδρίας, ώστε να γίνει η καταχώριση της στον πίνακα συνδέσεων
(stateful).Στην ενότητα των εισερχόμενων πακέτων (Inbound) που φαίνεται
παρακάτω, εμφανίζονται πρώτοι οι κανόνες που χρησιμοποιούνται για
την απόρριψη των ανεπιθύμητων πακέτων. Αυτό γίνεται για δύο
διαφορετικούς λόγους. Ο πρώτος είναι ότι τα κακόβουλα πακέτα
μπορεί εν μέρει να ταιριάζουν με κάποια χαρακτηριστικά της έγκυρης
κίνησης. Τα πακέτα αυτά θα πρέπει να απορριφθούν, αντί να γίνουν
δεκτά από κάποιο επόμενο κανόνα allow.
Ο δεύτερος είναι ότι μπορείτε να απορρίψετε συγκεκριμένα πακέτα τα
οποία γνωρίζετε ότι δεν είναι έγκυρα, αλλά σας είναι αδιάφορη η
καταγραφή τους. Με τον τρόπο αυτό εμποδίζεται η λήψη και καταγραφή
τους από τον τελευταίο κανόνα. Ο τελευταίος κανόνας τυπικά
απορρίπτει και καταγράφει όλα τα πακέτα που έφτασαν μέχρι αυτόν.
Ο κανόνας αυτός χρησιμοποιείται για την παροχή νομικών αποδείξεων
σε περίπτωση που κινήσετε νομική διαδικασία κατά ατόμων που
προέβησαν σε επιθέσεις στο σύστημα σας.Θα πρέπει επίσης να εξασφαλίσετε ότι το σύστημα σας δεν θα
δώσει καμιά απάντηση σε κανένα από τα ανεπιθύμητα πακέτα.
Τα πακέτα αυτά θα πρέπει να απορριφθούν και να εξαφανιστούν.
Με τον τρόπο αυτό, ο επιτιθέμενος δεν έχει καμιά γνώση αν τα πακέτα
του έφτασαν μέχρι το σύστημα σας. Όσο λιγότερα μπορούν να μάθουν
οι επιτιθέμενοι σχετικά με το σύστημα σας, τόσο πιο ασφαλές
είναι. Όταν εκτελείτε καταγραφή πακέτων με αριθμούς θυρών που δεν
αναγνωρίζετε, κοιτάξτε στο αρχείο
/etc/services/ ή δείτε το
και αναζητήστε τον αριθμό της θύρας για να δείτε ποιος είναι ο
σκοπός της. Ελέγξτε την παρακάτω τοποθεσία για τους αριθμούς θυρών
που χρησιμοποιούνται συχνά από κακόβουλα προγράμματα (Trojans):
.Ένα Υπόδειγμα Συνόλου Κανόνων InclusiveΤο παρακάτω σύνολο κανόνων (στο οποίο δεν υλοποιείται λειτουργία
NAT) είναι αρκετά πλήρες και πολύ ασφαλές.
Δημιουργεί firewall τύπου inclusive, και έχει δοκιμαστεί σε
πραγματικές συνθήκες λειτουργίας. Μπορεί να εξυπηρετήσει το ίδιο
καλά και το δικό σας σύστημα. Απλώς μετατρέψτε σε σχόλιο τους
κανόνες pass για τις υπηρεσίες που δεν θέλετε
να ενεργοποιήσετε. Για να αποφύγετε την καταγραφή ανεπιθύμητων
μηνυμάτων, απλώς προσθέστε ένα κανόνα τύπου
deny στην ενότητα των εισερχομένων. Σε όλους
τους κανόνες, Θα πρέπει να αλλάξετε το όνομα της διεπαφής από
dc0 στο πραγματικό όνομα της διεπαφής που
συνδέεται στο δημόσιο Internet. Σε περίπτωση που χρησιμοποιείτε το
PPP χρήστη, το όνομα της διεπαφής θα είναι
tun0.Θα διαπιστώσετε ότι υπάρχει μια συγκεκριμένη λογική στη χρήση
αυτών των κανόνων.Όλοι οι κανόνες που αποτελούν αίτηση για έναρξη μιας νέας
συνεδρίας με το δημόσιο Internet, χρησιμοποιούν την επιλογή
keep-state.Όλες οι διαπιστευμένες υπηρεσίες που προέρχονται από το
δημόσιο Internet, διαθέτουν την επιλογή
limit, για την αποφυγή επιθέσεων
υπερχείλισης (flooding).Όλοι οι κανόνες χρησιμοποιούν τις επιλογές
in ή out για να
διευκρινίζουν την κατεύθυνση της επικοινωνίας.Όλοι οι κανόνες χρησιμοποιούν την επιλογή
via όνομα-διεπαφής
για να καθορίσουν τη διεπαφή από την οποία διέρχεται το
πακέτο.Οι κανόνες που φαίνονται παρακάτω, θα πρέπει να γραφούν στο
/etc/ipfw.rules.################ Start of IPFW rules file ###############################
# Flush out the list before we begin.
ipfw -q -f flush
# Set rules command prefix
cmd="ipfw -q add"
pif="dc0" # public interface name of NIC
# facing the public Internet
#################################################################
# No restrictions on Inside LAN Interface for private network
# Not needed unless you have LAN.
# Change xl0 to your LAN NIC interface name
#################################################################
#$cmd 00005 allow all from any to any via xl0
#################################################################
# No restrictions on Loopback Interface
#################################################################
$cmd 00010 allow all from any to any via lo0
#################################################################
# Allow the packet through if it has previous been added to the
# the "dynamic" rules table by a allow keep-state statement.
#################################################################
$cmd 00015 check-state
#################################################################
# Interface facing Public Internet (Outbound Section)
# Check session start requests originating from behind the
# firewall on the private network or from this gateway server
# destined for the public Internet.
#################################################################
# Allow out access to my ISP's Domain name server.
# x.x.x.x must be the IP address of your ISP.s DNS
# Dup these lines if your ISP has more than one DNS server
# Get the IP addresses from /etc/resolv.conf file
$cmd 00110 allow tcp from any to x.x.x.x 53 out via $pif setup keep-state
$cmd 00111 allow udp from any to x.x.x.x 53 out via $pif keep-state
# Allow out access to my ISP's DHCP server for cable/DSL configurations.
# This rule is not needed for .user ppp. connection to the public Internet.
# so you can delete this whole group.
# Use the following rule and check log for IP address.
# Then put IP address in commented out rule & delete first rule
$cmd 00120 allow log udp from any to any 67 out via $pif keep-state
#$cmd 00120 allow udp from any to x.x.x.x 67 out via $pif keep-state
# Allow out non-secure standard www function
$cmd 00200 allow tcp from any to any 80 out via $pif setup keep-state
# Allow out secure www function https over TLS SSL
$cmd 00220 allow tcp from any to any 443 out via $pif setup keep-state
# Allow out send & get email function
$cmd 00230 allow tcp from any to any 25 out via $pif setup keep-state
$cmd 00231 allow tcp from any to any 110 out via $pif setup keep-state
# Allow out FBSD (make install & CVSUP) functions
# Basically give user root "GOD" privileges.
$cmd 00240 allow tcp from me to any out via $pif setup keep-state uid root
# Allow out ping
$cmd 00250 allow icmp from any to any out via $pif keep-state
# Allow out Time
$cmd 00260 allow tcp from any to any 37 out via $pif setup keep-state
# Allow out nntp news (i.e. news groups)
$cmd 00270 allow tcp from any to any 119 out via $pif setup keep-state
# Allow out secure FTP, Telnet, and SCP
# This function is using SSH (secure shell)
$cmd 00280 allow tcp from any to any 22 out via $pif setup keep-state
# Allow out whois
$cmd 00290 allow tcp from any to any 43 out via $pif setup keep-state
# deny and log everything else that.s trying to get out.
# This rule enforces the block all by default logic.
$cmd 00299 deny log all from any to any out via $pif
#################################################################
# Interface facing Public Internet (Inbound Section)
# Check packets originating from the public Internet
# destined for this gateway server or the private network.
#################################################################
# Deny all inbound traffic from non-routable reserved address spaces
$cmd 00300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918 private IP
$cmd 00301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918 private IP
$cmd 00302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918 private IP
$cmd 00303 deny all from 127.0.0.0/8 to any in via $pif #loopback
$cmd 00304 deny all from 0.0.0.0/8 to any in via $pif #loopback
$cmd 00305 deny all from 169.254.0.0/16 to any in via $pif #DHCP auto-config
$cmd 00306 deny all from 192.0.2.0/24 to any in via $pif #reserved for docs
$cmd 00307 deny all from 204.152.64.0/23 to any in via $pif #Sun cluster interconnect
$cmd 00308 deny all from 224.0.0.0/3 to any in via $pif #Class D & E multicast
# Deny public pings
$cmd 00310 deny icmp from any to any in via $pif
# Deny ident
$cmd 00315 deny tcp from any to any 113 in via $pif
# Deny all Netbios service. 137=name, 138=datagram, 139=session
# Netbios is MS/Windows sharing services.
# Block MS/Windows hosts2 name server requests 81
$cmd 00320 deny tcp from any to any 137 in via $pif
$cmd 00321 deny tcp from any to any 138 in via $pif
$cmd 00322 deny tcp from any to any 139 in via $pif
$cmd 00323 deny tcp from any to any 81 in via $pif
# Deny any late arriving packets
$cmd 00330 deny all from any to any frag in via $pif
# Deny ACK packets that did not match the dynamic rule table
$cmd 00332 deny tcp from any to any established in via $pif
# Allow traffic in from ISP's DHCP server. This rule must contain
# the IP address of your ISP.s DHCP server as it.s the only
# authorized source to send this packet type.
# Only necessary for cable or DSL configurations.
# This rule is not needed for .user ppp. type connection to
# the public Internet. This is the same IP address you captured
# and used in the outbound section.
#$cmd 00360 allow udp from any to x.x.x.x 67 in via $pif keep-state
# Allow in standard www function because I have apache server
$cmd 00400 allow tcp from any to me 80 in via $pif setup limit src-addr 2
# Allow in secure FTP, Telnet, and SCP from public Internet
$cmd 00410 allow tcp from any to me 22 in via $pif setup limit src-addr 2
# Allow in non-secure Telnet session from public Internet
# labeled non-secure because ID & PW are passed over public
# Internet as clear text.
# Delete this sample group if you do not have telnet server enabled.
$cmd 00420 allow tcp from any to me 23 in via $pif setup limit src-addr 2
# Reject & Log all incoming connections from the outside
$cmd 00499 deny log all from any to any in via $pif
# Everything else is denied by default
# deny and log all packets that fell through to see what they are
$cmd 00999 deny log all from any to any
################ End of IPFW rules file ###############################Ένα Υπόδειγμα NAT με Stateful Σύνολο
ΚανόνωνNATand IPFWΓια να ενεργοποιηθεί η λειτουργία NAT στο
IPFW, χρειάζονται κάποιες επιπλέον ρυθμίσεις. Θα πρέπει να
προσθέσετε την επιλογή option IPDIVERT μαζί με
τις υπόλοιπες επιλογές για το IPFIREWALL στο αρχείο ρυθμίσεων του
πυρήνα. Θα πρέπει έπειτα να μεταγλωττίσετε και να εγκαταστήσετε
το νέο σας προσαρμοσμένο πυρήνα.Εκτός από τις συνηθισμένες επιλογές για το IPFW, θα πρέπει να
προσθέσετε και τις παρακάτω στο αρχείο
/etc/rc.conf:natd_enable="YES" # Enable NATD function
natd_interface="rl0" # interface name of public Internet NIC
natd_flags="-dynamic -m" # -m = preserve port numbers if possibleΗ χρήση κανόνων stateful μαζί με τον κανόνα
divert natd (NAT), περιπλέκει πολύ την λογική
συγγραφής των κανόνων. Η θέση εμφάνισης των κανόνων
check-state και divert natd
μέσα στο σύνολο κανόνων γίνεται πολύ κρίσιμη. Δεν πρόκειται πλέον
για απλή λογική περάσματος από τον ένα κανόνα στον επόμενο.
Χρησιμοποιείται ένα νέο είδος ενέργειας που ονομάζεται
skipto. Για να χρησιμοποιηθεί η εντολή
skipto, είναι υποχρεωτικό να έχετε αριθμήσει τους
κανόνες, ώστε να ξέρετε σε ποιο κανόνα θα καταλήξει το άλμα που θα
εκτελεστεί από την εντολή αυτή.Παρακάτω θα βρείτε ένα υπόδειγμα (χωρίς πρόσθετα σχόλια) μιας
μεθόδου συγγραφής που επιλέξαμε εδώ για να εξηγήσουμε την ακολουθία
ροής του πακέτου μέσα στο σύνολο κανόνων.Η ροή της επεξεργασίας ξεκινάει με τον πρώτο από την κορυφή
κανόνα και συνεχίζει ένα κανόνα κάθε φορά προς τα κάτω, είτε μέχρι
να φτάσει τον τελευταίο, ή μέχρι το πακέτο να ταιριάξει με τα
κριτήρια επιλογής κάποιου κανόνα και να ελευθερωθεί από το firewall.
Είναι σημαντικό να παρατηρήσουμε τη θέση των κανόνων με αριθμούς
100, 101, 450, 500 και 510. Οι κανόνες αυτοί ελέγχουν την
μετάφραση των εξερχόμενων και εισερχόμενων πακέτων, ώστε οι
καταχωρήσεις τους στο δυναμικό πίνακα καταστάσεων να περιέχουν
πάντα την ιδιωτική IP διεύθυνση του τοπικού δικτύου. Παρατηρήστε
επίσης ότι όλοι οι κανόνες allow και deny καθορίζουν την κατεύθυνση
κίνησης του πακέτου καθώς και την διεπαφή. Επίσης, όλες οι
εξερχόμενες αιτήσεις για νέες συνεδρίες μεταφέρονται απευθείας
(μέσω του skipto rule 500) στον κανόνα 500 για
να γίνει η μετάφραση διευθύνσεων δικτύου (NAT).Ας υποθέσουμε ότι ένα χρήστης του τοπικού δικτύου χρησιμοποιεί
τον φυλλομετρητή του για να δει μια ιστοσελίδα. Οι ιστοσελίδες
χρησιμοποιούν την πόρτα 80 για την επικοινωνία. Το πακέτο
εισέρχεται στο firewall. Δεν ταιριάζει με τον κανόνα 100 γιατί
είναι εξερχόμενο και όχι εισερχόμενο. Περνάει τον κανόνα 101 γιατί
πρόκειται για νέα επικοινωνία και έτσι δεν υπάρχει ακόμα στον
δυναμικό πίνακα καταστάσεων. Το πακέτο τελικά φτάνει στον κανόνα
125 με τον οποίο και ταιριάζει. Εξέρχεται μέσω της κάρτας δικτύου
που συνδέεται στο δημόσιο Internet. Το πακέτο έχει ακόμα ως IP
αφετηρίας την ιδιωτική διεύθυνση του τοπικού δικτύου. Το ταίριασμα
με αυτό τον κανόνα προκαλεί δύο ενέργειες. Η επιλογή
keep-state θα δημιουργήσει ένα νέο δυναμικό
κανόνα, θα τον καταχωρήσει στον πίνακα, και θα εκτελέσει την
αντίστοιχη ενέργεια. Η ενέργεια αυτή είναι μέρος της πληροφορίας
που γράφεται στον δυναμικό πίνακα. Στην περίπτωση αυτή είναι
η skipto rule 500. Ο κανόνας 500 μεταφράζει μέσω
NAT τη διεύθυνση IP του πακέτου, πριν αυτό
εξέλθει προς το Internet. Αυτό είναι ιδιαίτερα σημαντικό.
Το πακέτο κατευθύνεται προς τον προορισμό του, όπου δημιουργείται
και αποστέλλεται ένα νέο πακέτο ως απάντηση. Το νέο αυτό πακέτο
εισέρχεται ξανά στο firewall, στον κανόνα που είναι στην κορυφή
της λίστας. Αυτή τη φορά ταιριάζει με τον κανόνα 100 και η
διεύθυνση προορισμού του αλλάζει ξανά στην αρχική του τοπικού
δικτύου. Έπειτα, γίνεται η επεξεργασία του από τον κανόνα
check-state ο οποίος ανακαλύπτει ότι πρόκειται
για πακέτο συνεδρίας σε εξέλιξη και το απελευθερώνει στο τοπικό
δίκτυο. Κατευθύνεται προς τον υπολογιστή του τοπικού δικτύου που το
έστειλε, ο οποίος στέλνει ένα νέο πακέτο ζητώντας περισσότερα
δεδομένα από τον απομακρυσμένο εξυπηρετητή. Το πακέτο αυτό
ελέγχεται από τον κανόνα check-state, ο οποίος
βρίσκει την καταχώριση του στα εξερχόμενα και εκτελεί την αντίστοιχη
ενέργεια που σε αυτή την περίπτωση είναι skipto 500.
Το πακέτο προωθείται στον κανόνα 500, γίνεται η μετάφραση της
διεύθυνσης του μέσω NAT και απελευθερώνεται στο
Internet.Από την μεριά των εισερχόμενων, όποιο πακέτο αναγνωρίζεται ως
μέρος μιας υπάρχουσας συνεδρίας, ελέγχεται αυτόματα από τον κανόνα
check-state και τους αντίστοιχους κανόνες
divert natd. Το μόνο που χρειάζεται να
αντιμετωπίσουμε είναι η απόρριψη όλων των προβληματικών πακέτων και
η έγκριση μόνο των πακέτων που προορίζονται για εγκεκριμένες
υπηρεσίες. Ας υποθέσουμε ότι έχουμε ένα εξυπηρετητή apache ο οποίος
εκτελείται στο μηχάνημα με το firewall, και επιθυμούμε το τοπικό
site να είναι προσβάσιμο από το δημόσιο Internet. Η εισερχόμενη
αίτηση νέας συνεδρίας ταιριάζει με τον κανόνα 100 και η IP διεύθυνση
της αντιστοιχίζεται στο τοπικό IP του μηχανήματος με το firewall.
Το πακέτο έπειτα ελέγχεται για οποιοδήποτε πρόβλημα μπορεί να έχει
σύμφωνα με τους κανόνες που χρησιμοποιούμε, και τελικά ταιριάζει με
τον κανόνα 425. Στην περίπτωση αυτή συμβαίνουν δύο πράγματα.
Ο κανόνας για το πακέτο γράφεται στο δυναμικό πίνακα καταστάσεων,
αλλά αυτή τη φορά περιορίζεται ο αριθμός αιτήσεων νέας συνεδρίας
από το συγκεκριμένο IP σε 2. Με αυτό τον τρόπο μπορούμε να
αμυνθούμε σε επιθέσεις τύπου άρνησης υπηρεσίας (DoS) όσο αφορά τη
συγκεκριμένη θύρα επικοινωνίας. Η ενέργεια του κανόνα είναι το
allow, και έτσι το πακέτο απελευθερώνεται στο
τοπικό δίκτυο. Το πακέτο που παράγεται ως απάντηση, ελέγχεται από
τον κανόνα check-state, ο οποίος αναγνωρίζει ότι
ανήκει σε μια ήδη ενεργή συνεδρία, και αποστέλλεται στον κανόνα 500
όπου γίνεται η μετάφραση της διεύθυνσης του μέσω
NAT. Το πακέτο τελικά απελευθερώνεται μέσω της
διεπαφής εξερχομένων.Υπόδειγμα Κανόνων #1:#!/bin/sh
cmd="ipfw -q add"
skip="skipto 500"
pif=rl0
ks="keep-state"
good_tcpo="22,25,37,43,53,80,443,110,119"
ipfw -q -f flush
$cmd 002 allow all from any to any via xl0 # exclude LAN traffic
$cmd 003 allow all from any to any via lo0 # exclude loopback traffic
$cmd 100 divert natd ip from any to any in via $pif
$cmd 101 check-state
# Authorized outbound packets
$cmd 120 $skip udp from any to xx.168.240.2 53 out via $pif $ks
$cmd 121 $skip udp from any to xx.168.240.5 53 out via $pif $ks
$cmd 125 $skip tcp from any to any $good_tcpo out via $pif setup $ks
$cmd 130 $skip icmp from any to any out via $pif $ks
$cmd 135 $skip udp from any to any 123 out via $pif $ks
# Deny all inbound traffic from non-routable reserved address spaces
$cmd 300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918 private IP
$cmd 301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918 private IP
$cmd 302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918 private IP
$cmd 303 deny all from 127.0.0.0/8 to any in via $pif #loopback
$cmd 304 deny all from 0.0.0.0/8 to any in via $pif #loopback
$cmd 305 deny all from 169.254.0.0/16 to any in via $pif #DHCP auto-config
$cmd 306 deny all from 192.0.2.0/24 to any in via $pif #reserved for docs
$cmd 307 deny all from 204.152.64.0/23 to any in via $pif #Sun cluster
$cmd 308 deny all from 224.0.0.0/3 to any in via $pif #Class D & E multicast
# Authorized inbound packets
$cmd 400 allow udp from xx.70.207.54 to any 68 in $ks
$cmd 420 allow tcp from any to me 80 in via $pif setup limit src-addr 1
$cmd 450 deny log ip from any to any
# This is skipto location for outbound stateful rules
$cmd 500 divert natd ip from any to any out via $pif
$cmd 510 allow ip from any to any
######################## end of rules ##################Οι παρακάτω κανόνες είναι σχεδόν ίδιοι με τους παραπάνω, αλλά
περιέχουν περισσότερα σχόλια για να βοηθήσουν τον αρχάριο χρήστη
του IPFW να καταλάβει καλύτερα πως λειτουργούν.Υπόδειγμα Κανόνων #2:#!/bin/sh
################ Start of IPFW rules file ###############################
# Flush out the list before we begin.
ipfw -q -f flush
# Set rules command prefix
cmd="ipfw -q add"
skip="skipto 800"
pif="rl0" # public interface name of NIC
# facing the public Internet
#################################################################
# No restrictions on Inside LAN Interface for private network
# Change xl0 to your LAN NIC interface name
#################################################################
$cmd 005 allow all from any to any via xl0
#################################################################
# No restrictions on Loopback Interface
#################################################################
$cmd 010 allow all from any to any via lo0
#################################################################
# check if packet is inbound and nat address if it is
#################################################################
$cmd 014 divert natd ip from any to any in via $pif
#################################################################
# Allow the packet through if it has previous been added to the
# the "dynamic" rules table by a allow keep-state statement.
#################################################################
$cmd 015 check-state
#################################################################
# Interface facing Public Internet (Outbound Section)
# Check session start requests originating from behind the
# firewall on the private network or from this gateway server
# destined for the public Internet.
#################################################################
# Allow out access to my ISP's Domain name server.
# x.x.x.x must be the IP address of your ISP's DNS
# Dup these lines if your ISP has more than one DNS server
# Get the IP addresses from /etc/resolv.conf file
$cmd 020 $skip tcp from any to x.x.x.x 53 out via $pif setup keep-state
# Allow out access to my ISP's DHCP server for cable/DSL configurations.
$cmd 030 $skip udp from any to x.x.x.x 67 out via $pif keep-state
# Allow out non-secure standard www function
$cmd 040 $skip tcp from any to any 80 out via $pif setup keep-state
# Allow out secure www function https over TLS SSL
$cmd 050 $skip tcp from any to any 443 out via $pif setup keep-state
# Allow out send & get email function
$cmd 060 $skip tcp from any to any 25 out via $pif setup keep-state
$cmd 061 $skip tcp from any to any 110 out via $pif setup keep-state
# Allow out FreeBSD (make install & CVSUP) functions
# Basically give user root "GOD" privileges.
$cmd 070 $skip tcp from me to any out via $pif setup keep-state uid root
# Allow out ping
$cmd 080 $skip icmp from any to any out via $pif keep-state
# Allow out Time
$cmd 090 $skip tcp from any to any 37 out via $pif setup keep-state
# Allow out nntp news (i.e. news groups)
$cmd 100 $skip tcp from any to any 119 out via $pif setup keep-state
# Allow out secure FTP, Telnet, and SCP
# This function is using SSH (secure shell)
$cmd 110 $skip tcp from any to any 22 out via $pif setup keep-state
# Allow out whois
$cmd 120 $skip tcp from any to any 43 out via $pif setup keep-state
# Allow ntp time server
$cmd 130 $skip udp from any to any 123 out via $pif keep-state
#################################################################
# Interface facing Public Internet (Inbound Section)
# Check packets originating from the public Internet
# destined for this gateway server or the private network.
#################################################################
# Deny all inbound traffic from non-routable reserved address spaces
$cmd 300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918 private IP
$cmd 301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918 private IP
$cmd 302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918 private IP
$cmd 303 deny all from 127.0.0.0/8 to any in via $pif #loopback
$cmd 304 deny all from 0.0.0.0/8 to any in via $pif #loopback
$cmd 305 deny all from 169.254.0.0/16 to any in via $pif #DHCP auto-config
$cmd 306 deny all from 192.0.2.0/24 to any in via $pif #reserved for docs
$cmd 307 deny all from 204.152.64.0/23 to any in via $pif #Sun cluster
$cmd 308 deny all from 224.0.0.0/3 to any in via $pif #Class D & E multicast
# Deny ident
$cmd 315 deny tcp from any to any 113 in via $pif
# Deny all Netbios service. 137=name, 138=datagram, 139=session
# Netbios is MS/Windows sharing services.
# Block MS/Windows hosts2 name server requests 81
$cmd 320 deny tcp from any to any 137 in via $pif
$cmd 321 deny tcp from any to any 138 in via $pif
$cmd 322 deny tcp from any to any 139 in via $pif
$cmd 323 deny tcp from any to any 81 in via $pif
# Deny any late arriving packets
$cmd 330 deny all from any to any frag in via $pif
# Deny ACK packets that did not match the dynamic rule table
$cmd 332 deny tcp from any to any established in via $pif
# Allow traffic in from ISP's DHCP server. This rule must contain
# the IP address of your ISP's DHCP server as it's the only
# authorized source to send this packet type.
# Only necessary for cable or DSL configurations.
# This rule is not needed for 'user ppp' type connection to
# the public Internet. This is the same IP address you captured
# and used in the outbound section.
$cmd 360 allow udp from x.x.x.x to any 68 in via $pif keep-state
# Allow in standard www function because I have Apache server
$cmd 370 allow tcp from any to me 80 in via $pif setup limit src-addr 2
# Allow in secure FTP, Telnet, and SCP from public Internet
$cmd 380 allow tcp from any to me 22 in via $pif setup limit src-addr 2
# Allow in non-secure Telnet session from public Internet
# labeled non-secure because ID & PW are passed over public
# Internet as clear text.
# Delete this sample group if you do not have telnet server enabled.
$cmd 390 allow tcp from any to me 23 in via $pif setup limit src-addr 2
# Reject & Log all unauthorized incoming connections from the public Internet
$cmd 400 deny log all from any to any in via $pif
# Reject & Log all unauthorized out going connections to the public Internet
$cmd 450 deny log all from any to any out via $pif
# This is skipto location for outbound stateful rules
$cmd 800 divert natd ip from any to any out via $pif
$cmd 801 allow ip from any to any
# Everything else is denied by default
# deny and log all packets that fell through to see what they are
$cmd 999 deny log all from any to any
################ End of IPFW rules file ###############################
diff --git a/el_GR.ISO8859-7/books/handbook/kernelconfig/chapter.sgml b/el_GR.ISO8859-7/books/handbook/kernelconfig/chapter.sgml
index 3652ba9c35..d2a3d9a8d7 100644
--- a/el_GR.ISO8859-7/books/handbook/kernelconfig/chapter.sgml
+++ b/el_GR.ISO8859-7/books/handbook/kernelconfig/chapter.sgml
@@ -1,1639 +1,1639 @@
JimMockΑνανεώθηκε και αναδομήθηκε από τον JakeHambyΑρχική συνεισφορά από τον Ρυθμίζοντας τον Πυρήνα του &os;Σύνοψηπυρήναςδημιουργία προσαρμοσμένου πυρήναΟ πυρήνας είναι η καρδιά του λειτουργικού συστήματος &os;. Είναι
υπεύθυνος για τη διαχείριση της μνήμης, την επιβολή των ρυθμίσεων
ασφαλείας, τη δικτύωση, την πρόσβαση στο δίσκο, και πολλά άλλα. Ένα
συνεχώς αυξανόμενο μέρος του &os; μπορεί να ρυθμιστεί δυναμικά, αλλά
υπάρχουν ακόμα περιπτώσεις οι οποίες απαιτούν ρυθμίσεις και μεταγλώττιση
του πυρήνα του &os; με προσαρμοσμένες παραμέτρους.Αφού διαβάσετε αυτό το κεφάλαιο, θα ξέρετε:Για ποιους λόγους μπορεί να χρειαστεί να φτιάξετε ένα
προσαρμοσμένο πυρήνα.Πως να γράψετε ένα αρχείο ρυθμίσεων πυρήνα, ή να αλλάξετε ένα
υπάρχον αρχείο ρυθμίσεων.Πως να χρησιμοποιήσετε το αρχείο ρυθμίσεων του πυρήνα για να
φτιάξετε και να μεταγλωττίσετε ένα νέο πυρήνα.Πως να εγκαταστήσετε το νέο πυρήνα.Πως να επιλύσετε τυχόν προβλήματα με το νέο πυρήνα.Όλες οι εντολές που εμφανίζονται σε αυτό το κεφάλαιο ως παραδείγματα
πρέπει να εκτελεστούν ως root για να είναι
επιτυχείς.Γιατί να Φτιάξετε Προσαρμοσμένο Πυρήνα;Κατά παράδοση, το &os; είχε αυτό που αποκαλούμε
μονολιθικό πυρήνα. Αυτό σημαίνει ότι ο πυρήνας ήταν ένα
μεγάλο πρόγραμμα, υποστήριζε ένα σταθερό αριθμό συσκευών, και αν θέλατε
να αλλάξετε τη συμπεριφορά του, θα έπρεπε να μεταγλωττίσετε καινούριο
και να επανεκκινήσετε τον υπολογιστή σας με αυτόν.Σήμερα, το &os; κινείται ταχύτατα προς ένα μοντέλο όπου οι
περισσότερες λειτουργίες του πυρήνα περιέχονται σε modules (αρθρώματα)
τα οποία μπορούν να φορτωθούν και να αποφορτωθούν κατά απαίτηση,
δυναμικά στον πυρήνα. Αυτό επιτρέπει στον πυρήνα να προσαρμόζεται
σε υλικό το οποίο ενεργοποιείται τη δεδομένη στιγμή (όπως για
παράδειγμα όταν εισέρχεται μια κάρτα PCMCIA σε ένα φορητό υπολογιστή).
Επίσης επιτρέπει στον πυρήνα να επεκτείνει δυναμικά τη λειτουργικότητά
του, προσθέτοντας χαρακτηριστικά τα οποία δεν ήταν απαραίτητα όταν
είχε μεταγλωττιστεί αρχικά. Αυτού του είδους ο πυρήνας είναι γνωστός ως
modular (αρθρωτός).Παρ' όλα αυτά, είναι ακόμα απαραίτητο να γίνουν κάποιες στατικές
ρυθμίσεις στον πυρήνα. Σε ορισμένες περιπτώσεις, αυτό συμβαίνει επειδή
η συγκεκριμένη λειτουργία είναι τόσο στενά συνδεμένη με τον πυρήνα
ώστε δεν μπορεί να φορτωθεί δυναμικά. Σε άλλες, συμβαίνει επειδή απλά
κανείς δεν έχει ακόμα ασχοληθεί να γράψει ένα δυναμικό module που να
παρέχει αυτή τη λειτουργικότητα.Η δημιουργία προσαρμοσμένου πυρήνα είναι από τις πλέον σημαντικές
τελετουργίες κάθε προχωρημένου χρήστη του BSD. Η διαδικασία
αυτή, αν και χρονοβόρα, θα αποβεί ιδιαίτερα ωφέλιμη για το &os; σύστημα
σας. Σε αντίθεση με τον πυρήνα GENERIC, ο οποίος
πρέπει να υποστηρίξει μεγάλο εύρος συσκευών, ένας προσαρμοσμένος πυρήνας
περιέχει υποστήριξη μόνο για το υλικό του δικού σας
υπολογιστή. Έτσι έχετε κάποια οφέλη, όπως:Ταχύτερη εκκίνηση. Καθώς ο πυρήνας θα ανιχνεύει μόνο το υλικό
που έχετε στο σύστημα σας, ο χρόνος που χρειάζεται για την εκκίνηση
του συστήματος σας θα μειωθεί δραματικά.Χαμηλότερη κατανάλωση μνήμης. Ένας προσαρμοσμένος πυρήνας,
συχνά χρησιμοποιεί λιγότερη μνήμη από τον
πυρήνα GENERIC, αφού απουσιάζουν από αυτόν
συσκευές και χαρακτηριστικά που δεν χρησιμοποιούνται. Αυτό είναι
σημαντικό, καθώς ο πυρήνας βρίσκεται πάντα φορτωμένος στη φυσική
μνήμη, μειώνοντας έτσι τη μνήμη που είναι διαθέσιμη για εφαρμογές.
Για το λόγο αυτό, ο προσαρμοσμένος πυρήνας είναι ιδιαίτερα χρήσιμος
σε συστήματα με μικρό μέγεθος φυσικής μνήμης (RAM).Επιπρόσθετη υποστήριξη συσκευών. Ο προσαρμοσμένος πυρήνας σας
επιτρέπει να προσθέσετε υποστήριξη για συσκευές οι οποίες δεν
υπάρχουν στον GENERIC πυρήνα, όπως για
παράδειγμα για κάρτες ήχου.TomRhodesΓράφηκε από τον Ανακαλύπτοντας τις Συσκευές του Συστήματος σαςΠριν ξεκινήσετε με τη ρύθμιση του πυρήνα σας, θα ήταν σκόπιμο να
κάνετε μια απογραφή υλικού του υπολογιστή σας. Σε περιπτώσεις που το
&os; δεν είναι το βασικό σας λειτουργικό σύστημα, μπορείτε εύκολα να
δημιουργήσετε αυτή τη λίστα, εξετάζοντας τις ρυθμίσεις του τρέχοντος
λειτουργικού συστήματος. Για παράδειγμα, η
Διαχείριση Συσκευών (Device Manager) της
µsoft; δείχνει συνήθως σημαντικές πληροφορίες σχετικά με τις
εγκατεστημένες συσκευές. Μπορείτε να βρείτε την
Διαχείριση Συσκευών
στον πίνακα ελέγχου.Μερικές εκδόσεις των µsoft.windows; διαθέτουν ένα εικονίδιο
με τίτλο Σύστημα (System). Από την οθόνη
που εμφανίζεται μπορείτε να επιλέξετε την
Διαχείριση Συσκευών.Αν δεν υπάρχει άλλο λειτουργικό σύστημα στον υπολογιστή,
ο διαχειριστής θα πρέπει να βρει αυτές τις πληροφορίες χειροκίνητα. Μια
μέθοδος είναι με τη χρήση του βοηθητικού προγράμματος &man.dmesg.8; και
της εντολής &man.man.1;. Τα περισσότερα προγράμματα οδήγησης του &os;
διαθέτουν σελίδα manual, η οποία δείχνει το υποστηριζόμενο υλικό. Κατά
τη διάρκεια της εκκίνησης, εμφανίζεται μια λίστα με τις συσκευές που
ανιχνεύθηκαν. Για παράδειγμα, οι παρακάτω γραμμές δείχνουν ότι το
πρόγραμμα οδήγησης psm εντόπισε ένα
ποντίκι:psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: [ITHREAD]
psm0: model Generic PS/2 mouse, device ID 0Αυτό το πρόγραμμα οδήγησης θα πρέπει να περιληφθεί στο αρχείο
ρυθμίσεων του προσαρμοσμένου πυρήνα σας, ή να φορτωθεί δυναμικά μέσω
του &man.loader.conf.5;.Σε ορισμένες περιπτώσεις, η έξοδος της dmesg
μπορεί να δείχνει μόνο τα μηνύματα του συστήματος και όχι τα
αποτελέσματα της ανίχνευσης συσκευών. Στις περιπτώσεις αυτές, μπορείτε
να δείτε την επιθυμητή έξοδο στα περιεχόμενα του αρχείου
/var/run/dmesg.boot.Μια άλλη μέθοδος για την ανίχνευση του υλικού, είναι μέσω του
βοηθητικού προγράμματος &man.pciconf.8;, το οποίο παρέχει πιο αναλυτική
περιγραφή. Για παράδειγμα:ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00
vendor = 'Atheros Communications Inc.'
device = 'AR5212 Atheros AR5212 802.11abg wireless'
class = network
subclass = ethernetΗ παραπάνω έξοδος, που λήφθηκε μέσω της εντολής
pciconf , δείχνει ότι το
πρόγραμμα οδήγησης ath εντόπισε μια συσκευή
ασύρματου Ethernet. Μπορείτε να δείτε την αντίστοιχη σελίδα manual
του προγράμματος &man.ath.4;, χρησιμοποιώντας την εντολή
man ath.Μπορείτε επίσης να πάρετε χρήσιμες πληροφορίες από την εντολή
&man.man.1;, αν δώσετε την επιλογή . Στο παραπάνω
παράδειγμα, δίνοντας:&prompt.root; man -k AtherosΘα δείτε μια λίστα από σελίδες manual που περιέχουν τη
συγκεκριμένη λέξη:ath(4) - Atheros IEEE 802.11 wireless network driver
ath_hal(4) - Atheros Hardware Access Layer (HAL)Έχοντας διαθέσιμη την απογραφή υλικού του υπολογιστή σας,
η διαδικασία δημιουργίας προσαρμοσμένου πυρήνα σίγουρα φαίνεται
λιγότερο αποθαρρυντική.Προγράμματα Οδήγησης, Υποσυστήματα και Αρθρώματα (modules)kerneldrivers / modules / subsystemsΠριν δημιουργήσετε ένα προσαρμοσμένο πυρήνα, θα πρέπει πρώτα να
σκεφτείτε για ποιους λόγους τον χρειάζεστε. Σε πολλές περιπτώσεις,
η υποστήριξη κάποιας συγκεκριμένης συσκευής μπορεί να επιτευχθεί με την
χρήση κάποιου αρθρώματος (module).Τα αρθρώματα του πυρήνα βρίσκονται στον κατάλογο
/boot/kernel/ και μπορούν να
φορτωθούν δυναμικά στον πυρήνα που εκτελείται τη δεδομένη στιγμή, με
τη χρήση της εντολής &man.kldload.8;. Τα περισσότερα, αν και όχι όλα,
τα προγράμματα οδήγησης στον πυρήνα, διατίθενται και σε μορφή
αρθρώματος· έχουν επίσης τη δική του σελίδα βοήθειας το καθένα. Για
παράδειγμα, στην προηγούμενη ενότητα, είδαμε το πρόγραμμα οδήγησης
ασύρματου Ethernet ath. Η σελίδα βοήθειας
για αυτή τη συσκευή αναφέρει:Alternatively, to load the driver as a module at boot time, place the
following line in &man.loader.conf.5:
if_ath_load="YES"Όπως αναφέρεται στις οδηγίες, αν βάλετε την γραμμή
if_ath_load="YES" στο αρχείο
/boot/loader.conf, το άρθρωμα θα φορτωθεί δυναμικά
κατά την εκκίνηση του συστήματος σας.Σε μερικές περιπτώσεις ωστόσο, δεν υπάρχει άρθρωμα που να σχετίζεται
με κάποιο πρόγραμμα οδήγησης. Αυτό ισχύει περισσότερο για κάποια
ιδιαίτερα υποσυστήματα και πολύ σημαντικά προγράμματα οδήγησης. Για
παράδειγμα, το πρόγραμμα οδήγησης του συστήματος αρχείων fast file
system (FFS) απαιτείται να είναι ενσωματωμένο στον
πυρήνα. Το ίδιο συμβαίνει και με την υποστήριξη δικτύου (INET).
Δυστυχώς, ο μόνος τρόπος για να δείτε αν ένα πρόγραμμα οδήγησης πρέπει
να είναι υποχρεωτικά ενσωματωμένο στον πυρήνα, είναι να ελέγξετε αν
υπάρχει το αντίστοιχο άρθρωμα.Είναι αρκετά εύκολο να αφαιρέσετε την υποστήριξη για κάποια
συσκευή ή άλλη επιλογή, και να καταλήξετε με ένα πυρήνα που δεν μπορεί
να ξεκινήσει. Για παράδειγμα, αν βγάλετε το πρόγραμμα οδήγησης
&man.ata.4; από το αρχείο ρυθμίσεων του πυρήνα σας, αν το σύστημα σας
χρησιμοποιεί δίσκους ATA δεν θα μπορεί να
ξεκινήσει. Στην περίπτωση αυτή θα πρέπει να βάλετε την αντίστοιχη
γραμμή στο αρχείο loader.conf για να φορτώσετε
το σχετικό άρθρωμα. Αν δεν είστε σίγουροι, ελέγξτε για την ύπαρξη
του αρθρώματος, και απλώς αφήστε την υποστήριξη ενσωματωμένη στον
πυρήνα.Δημιουργία και Εγκατάσταση Προσαρμοσμένου Πυρήναkernelbuilding / installingΑρχικά, θα κάνουμε μια γρήγορη παρουσίαση του καταλόγου στον οποίο
γίνεται η μεταγλώττιση του πυρήνα. Όλοι οι κατάλογοι που θα αναφέρουμε
βρίσκονται κάτω από τον κατάλογο /usr/src/sys ο
οποίος είναι επίσης προσβάσιμος μέσω της διαδρομής
/sys. Υπάρχει εδώ ένας αριθμός υποκαταλόγων ο
οποίος αντιπροσωπεύει διαφορετικά τμήματα του πυρήνα, αλλά οι πλέον
σημαντικοί για το σκοπό μας είναι οι
arch/conf, όπου θα
επεξεργαστείτε τις ρυθμίσεις για τον προσαρμοσμένο πυρήνα σας, και ο
compile, που είναι ο χώρος εργασίας στον οποίο θα
γίνει η μεταγλώττιση του. Ο arch
αντιπροσωπεύει ένα από τα i386,
alpha, amd64,
ia64, powerpc,
sparc64, ή pc98
(ένας εναλλακτικός τύπος PC, διαδεδομένος στην Ιαπωνία). Οτιδήποτε
βρίσκεται μέσα στον συγκεκριμένο κατάλογο μιας αρχιτεκτονικής,
σχετίζεται μόνο με την αρχιτεκτονική αυτή. Το υπόλοιπο του κώδικα,
είναι ανεξάρτητο από την αρχιτεκτονική και κοινό σε κάθε πλατφόρμα όπου
θα μπορούσε να μεταγλωττιστεί το &os;. Παρατηρήστε τη λογική οργάνωση
της δομής των καταλόγων, όπου κάθε υποστηριζόμενη συσκευή, σύστημα
αρχείων και επιλογή βρίσκεται στο δικό της κατάλογο.Στα παραδείγματα αυτού του κεφαλαίου υποθέτουμε ότι χρησιμοποιείτε
την αρχιτεκτονική i386. Αν δεν συμβαίνει αυτό, κάντε τις αντίστοιχες
ρυθμίσεις στα ονόματα των καταλόγων και διαδρομών ώστε να συμβαδίζουν
με την αρχιτεκτονική του μηχανήματος σας.Αν δεν υπάρχει ο κατάλογος
/usr/src/sys στο σύστημα σας, τότε δεν έχετε
εγκαταστήσει τον πηγαίο κώδικα του πυρήνα. Ο ευκολότερος τρόπος για
να τον εγκαταστήσετε είναι εκτελώντας το sysinstall
ως root, επιλέγοντας
Configure, μετά
Distributions, έπειτα
src, μετά
base και
sys. Αν αντιπαθείτε το
sysinstall αλλά έχετε πρόσβαση σε ένα
επίσημο CDROM του &os; μπορείτε να
εγκαταστήσετε τον πηγαίο κώδικα μέσω της γραμμής εντολών:&prompt.root; mount /cdrom
&prompt.root; mkdir -p /usr/src/sys
&prompt.root; ln -s /usr/src/sys /sys
&prompt.root; cat /cdrom/src/ssys.[a-d]* | tar -xzvf -
&prompt.root; cat /cdrom/src/sbase.[a-d]* | tar -xzvf -Έπειτα, μετακινηθείτε στον κατάλογο
arch/conf
και αντιγράψτε το αρχείο ρυθμίσεων GENERIC στο
όνομα το οποίο θέλετε να δώσετε στο νέο σας πυρήνα. Για παράδειγμα:
&prompt.root; cd /usr/src/sys/i386/conf
&prompt.root; cp GENERIC MYKERNELΚατά παράδοση, το όνομα αυτό γράφεται εξ' ολοκλήρου με κεφαλαία
γράμματα και αν έχετε πολλά μηχανήματα &os; με διαφορετικό υλικό,
είναι καλή ιδέα να του δώσετε το όνομα του μηχανήματος. Για το
παράδειγμα μας, θα το αποκαλούμε
MYKERNEL.Δεν είναι γενικά καλή ιδέα να αποθηκεύσετε το αρχείο ρυθμίσεων σας
απευθείας στον κατάλογο /usr/src. Αν
αντιμετωπίσετε προβλήματα, ίσως μπείτε στον πειρασμό να διαγράψετε
απλώς τον κατάλογο /usr/src και να ξεκινήσετε
από την αρχή. Συνήθως λίγα δευτερόλεπτα μετά από αυτό θα
συνειδητοποιήσετε ότι έχετε επίσης διαγράψει το αρχείο ρυθμίσεων
του πυρήνα σας. Επίσης, μην επεξεργάζεστε απευθείας το αρχείο
GENERIC, καθώς μπορεί οι αλλαγές σας να χαθούν
την επόμενη φορά που θα
ανανεώσετε τον πηγαίο σας κώδικα.
Καλό θα είναι να αποθηκεύσετε το αρχείο ρυθμίσεων σε άλλο κατάλογο
και να δημιουργήσετε ένα συμβολικό δεσμό προς το αρχείο, στον κατάλογο
i386.Για παράδειγμα:&prompt.root; cd /usr/src/sys/i386/conf
&prompt.root; mkdir /root/kernels
&prompt.root; cp GENERIC /root/kernels/MYKERNEL
&prompt.root; ln -s /root/kernels/MYKERNELΤώρα, τροποποιήστε το αρχείο
MYKERNEL με τον
επεξεργαστή κειμένου που προτιμάτε. Αν ξεκινάτε μόλις τώρα, πιθανόν ο
μόνος διαθέσιμος επεξεργαστής κειμένου να είναι το
vi, ο οποίος είναι αρκετά πολύπλοκος για να
τον εξηγήσουμε εδώ, αλλά καλύπτεται αρκετά καλά από πλήθος βιβλίων στην
βιβλιογραφία. Ωστόσο, το &os;
διαθέτει επίσης ένα ευκολότερο επεξεργαστή κειμένου, τον
ee ο οποίος είναι η κατάλληλη επιλογή αν
είστε αρχάριος. Αλλάξτε κατά βούληση τα σχόλια στην αρχή του αρχείου
ρυθμίσεων ώστε να αντανακλούν τις αλλαγές που έχετε κάνει και οι οποίες
το διαχωρίζουν από το GENERIC.SunOSΑν έχετε δημιουργήσει πυρήνα στο &sunos; ή σε κάποιο άλλο
λειτουργικό σύστημα τύπου BSD, το μεγαλύτερο μέρος αυτού του αρχείου
θα σας φανεί γνωστό. Από την άλλη, αν έρχεστε από κάποιο άλλο
λειτουργικό, όπως το DOS το αρχείο ρυθμίσεων
GENERIC ίσως να σας είναι δύσκολο στην κατανόηση,
για το λόγο αυτό ακολουθήστε αργά και προσεκτικά τις περιγραφές του
τμήματος
Αρχείο Ρυθμίσεων.Αν συγχρονίσετε τον πηγαίο κώδικα
με τις τελευταίες αλλαγές του &os; project, να διαβάσετε το αρχείο
/usr/src/UPDATING πριν προχωρήσετε σε οποιοδήποτε
βήμα αναβάθμισης. Το αρχείο αυτό περιγράφει πιθανά σημαντικά
προβλήματα ή περιοχές που χρειάζονται ιδιαίτερη προσοχή όσο αφορά τον
ανανεωμένο πηγαίο κώδικα. Το αρχείο
/usr/src/UPDATING ταιριάζει πάντα με την έκδοση
του πηγαίου κώδικα του &os; που έχετε, και είναι για αυτό το λόγο
πιο ενημερωμένο σε σχέση με ότι διαβάσετε στο παρόν βιβλίο.Θα πρέπει τώρα να μεταγλωττίσετε τον πηγαίο κώδικα του πυρήνα.
Δημιουργώντας τον ΠυρήναΜετακινηθείτε στον κατάλογο /usr/src:&prompt.root; cd /usr/srcΜεταγλωττίστε τον πυρήνα:&prompt.root; make buildkernel KERNCONF=MYKERNELΕγκαταστήστε το νέο πυρήνα:&prompt.root; make installkernel KERNCONF=MYKERNELΕίναι απαραίτητο να έχετε όλο τον πηγαίο κώδικα (source tree) του
&os; για να δημιουργήσετε πυρήνα.Από προεπιλογή, όταν δημιουργείτε ένα προσαρμοσμένο πυρήνα,
δημιουργούνται επίσης και όλα τα modules
(αρθρώματα) πυρήνα. Αν θέλετε να κάνετε πιο γρήγορη ανανέωση του
πυρήνα ή να δημιουργήσετε μόνο συγκεκριμένα modules, θα πρέπει να
τροποποιήσετε το αρχείο /etc/make.conf πριν
ξεκινήσετε τη δημιουργία του πυρήνα:MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfsΣτη μεταβλητή αυτή δίνετε μια λίστα των modules που θέλετε να
δημιουργηθούν, αντί να δημιουργηθούν όλα.
- WITHOUT_MODULES = linux acpi sound/sound sound/driver/ds1 ntfs
+ WITHOUT_MODULES = linux acpi sound ntfs
- Στη μεταβλητή αυτή δίνετε μια λίστα modules που θέλετε να
- παραλείψετε κατά τη διαδικασία δημιουργίας. Για άλλες μεταβλητές που
- ίσως είναι χρήσιμες στη διαδικασία δημιουργίας πυρήνα, δείτε τη σελίδα
- manual του &man.make.conf.5;.
+ Στη μεταβλητή αυτή δίνετε μια λίστα βασικών (top level) modules
+ που θέλετε να παραλείψετε κατά τη διαδικασία δημιουργίας. Για άλλες
+ μεταβλητές που ίσως είναι χρήσιμες στη διαδικασία δημιουργίας πυρήνα,
+ δείτε τη σελίδα manual του &man.make.conf.5;./boot/kernel.oldΟ νέος πυρήνας θα αντιγραφεί στον κατάλογο
/boot/kernel με το όνομα
/boot/kernel/kernel ενώ ο παλιός πυρήνας θα
μετακινηθεί στο /boot/kernel.old/kernel. Τερματίστε
τώρα το σύστημα σας και επανεκκινήστε για να χρησιμοποιήσετε το νέο
πυρήνα. Αν κάτι πάει στραβά, υπάρχουν κάποιες πληροφορίες για
Αντιμετώπιση Προβλημάτων που
ίσως σας φανούν χρήσιμες, στο τέλος αυτού του κεφαλαίου. Βεβαιωθείτε ότι
διαβάσατε το τμήμα που εξηγεί πως να επαναφέρετε το σύστημα σας σε
περίπτωση που ο νέος πυρήνας
δεν εκκινεί.Άλλα αρχεία που σχετίζονται με τη διαδικασία εκκίνησης, όπως ο
&man.loader.8; και οι ρυθμίσεις του, βρίσκονται στον κατάλογο
/boot. Εξειδικευμένα modules ή modules τρίτων
κατασκευαστών μπορούν να τοποθετηθούν στον κατάλογο
/boot/kernel, αν και οι χρήστες
θα πρέπει να γνωρίζουν ότι είναι σημαντικό τα modules να είναι σε
συγχρονισμό με τον πυρήνα. Modules τα οποία δεν προορίζονται για
εκτέλεση με τον τρέχοντα πυρήνα, μπορούν να προκαλέσουν αστάθεια
ή εσφαλμένη λειτουργία του συστήματος σας.JoelDahlΑνανεώθηκε για το &os; 6.X από τον Το Αρχείο ΡυθμίσεωνkernelNOTESNOTESkernelconfiguration fileΗ γενική μορφή ενός αρχείου ρυθμίσεων πυρήνα, είναι αρκετά απλή.
Κάθε γραμμή περιέχει μια λέξη-κλειδί και ένα ή περισσότερα ορίσματα. Για
λόγους απλότητας, οι περισσότερες γραμμές περιέχουν μόνο ένα όρισμα.
Οτιδήποτε βρίσκεται μετά το σύμβολο # θεωρείται
σχόλιο και αγνοείται. Στα επόμενα τμήματα θα βρείτε περιγραφή για τις
λέξεις-κλειδιά, με τη σειρά που εμφανίζονται στο αρχείο ρυθμίσεων
GENERIC.
Για εξαντλητική λίστα των παραμέτρων και
συσκευών που εξαρτώνται από την αρχιτεκτονική, δείτε το αρχείο
NOTES το οποίο βρίσκεται στον ίδιο κατάλογο με το
αρχείο GENERIC. Για επιλογές και ρυθμίσεις που
είναι ανεξάρτητες από την αρχιτεκτονική, δείτε το αρχείο
/usr/src/sys/conf/NOTES.Από το &os; 5.0 και μετά, είναι δυνατή η χρήση της οδηγίας
include στα αρχεία ρυθμίσεων. Η οδηγία αυτή
επιτρέπει την λογική συμπερίληψη ενός άλλου αρχείου ρυθμίσεων μέσα στο
τρέχον, κάνοντας πιο εύκολη τη συντήρηση του όταν οι αλλαγές που
χρειάζονται είναι λίγες σε σχέση με το αρχικό αρχείο. Για παράδειγμα,
αν χρειάζεστε ένα πυρήνα GENERIC με λίγες μόνο
παραπάνω επιλογές ή προγράμματα οδήγησης, μπορείτε να δημιουργήσετε ένα
μικρό αρχείο διαφορών σε σχέση με τον
GENERIC:include GENERIC
ident MYKERNEL
options IPFIREWALL
options DUMMYNET
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPDIVERTΠολλοί διαχειριστές βρίσκουν ότι αυτό το μοντέλο προσφέρει σημαντικά
πλεονεκτήματα σε σχέση με τον παραδοσιακό τρόπο συγγραφής αρχείων
ρυθμίσεων από το μηδέν: το τοπικό αρχείο ρυθμίσεων περιέχει μόνο τις
διαφορές από ένα πυρήνα GENERIC. Καθώς γίνονται
αναβαθμίσεις στο σύστημα, τα νέα χαρακτηριστικά και δυνατότητες που
προστίθενται στον GENERIC θα προστεθούν και
στον προσαρμοσμένο πυρήνα, εκτός αν το αποτρέψετε χρησιμοποιώντας το
nooptions ή το nodevice.
Το υπόλοιπο αυτού του κεφαλαίου, εξηγεί το περιεχόμενο ενός τυπικού
αρχείου ρυθμίσεων και το ρόλο που έχουν οι διάφορες επιλογές και τα
προγράμματα οδήγησης που εμφανίζονται σε αυτό.Για να δημιουργήσετε ένα αρχείο το οποίο να περιέχει όλες τις
διαθέσιμες επιλογές, όπως γίνεται συνήθως για δοκιμές, εκτελέστε την
ακόλουθη εντολή ως root:&prompt.root; cd /usr/src/sys/i386/conf && make LINTkernelconfiguration fileΤο παρακάτω είναι ένα παράδειγμα του αρχείου ρυθμίσεων
GENERIC με επιπρόσθετα διευκρινιστικά σχόλια όπου
είναι απαραίτητο. Το παράδειγμα θα πρέπει να ταιριάζει αρκετά καλά
με το αντίγραφο του αρχείου πού έχετε στο
/usr/src/sys/i386/conf/GENERIC.kernel optionsmachinemachine i386Πρόκειται για την αρχιτεκτονική του μηχανήματος. Πρέπει να είναι
alpha, amd64,
i386, ia64,
pc98, powerpc, ή
sparc64.kernel optionscpucpu I486_CPU
cpu I586_CPU
cpu I686_CPUΗ παραπάνω επιλογή καθορίζει τον τύπο της CPU που έχετε στο σύστημα
σας. Μπορεί να έχετε παραπάνω από μια τέτοιες γραμμές (αν για παράδειγμα
δεν είστε σίγουρος αν θα πρέπει να χρησιμοποιήσετε
I586_CPU ή I686_CPU),
αλλά για ένα προσαρμοσμένο πυρήνα είναι καλύτερα να καθορίσετε μόνο τη
CPU που έχετε. Αν δεν είστε σίγουρος για τον τύπο της CPU μπορείτε να
ελέγξετε το αρχείο /var/run/dmesg.boot για να δείτε
τα μηνύματα εκκίνησης του συστήματος σας.kernel optionsidentident GENERICΑυτό είναι το αναγνωριστικό όνομα του πυρήνα. Θα πρέπει να το
αλλάξετε στο όνομα που δώσατε στον πυρήνα σας, π.χ.
MYKERNEL αν έχετε ακολουθήσει τις οδηγίες από το
προηγούμενο μας παράδειγμα. Η τιμή που θα βάλετε στο αλφαριθμητικό
ident θα εκτυπώνεται όταν εκκινείτε με τον
συγκεκριμένο πυρήνα, και έτσι είναι χρήσιμο να δώσετε στο νέο πυρήνα ένα
διαφορετικό όνομα αν θέλετε να το ξεχωρίζετε από το συνηθισμένο πυρήνα
σας (αν π.χ. θέλετε να φτιάξετε ένα πειραματικό πυρήνα).#To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" # Default places to look for devices.Το αρχείο &man.device.hints.5; χρησιμοποιείται για τον καθορισμό
επιλογών που σχετίζονται με τους οδηγούς συσκευών. Η προεπιλεγμένη θέση
την οποία ελέγχει ο &man.loader.8; κατά την εκκίνηση είναι το
/boot/device.hints. Χρησιμοποιώντας την επιλογή
hints μπορείτε να ενσωματώσετε στατικά τις οδηγίες
αυτές μέσα στον πυρήνα. Στην περίπτωση αυτή δεν υπάρχει λόγος να
δημιουργήσετε το αρχείο device.hints στον κατάλογο
/boot.makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbolsΗ φυσιολογική διαδικασία δημιουργίας του &os; περιλαμβάνει
πληροφορίες εκσφαλμάτωσης (debugging) όταν ο πυρήνας δημιουργείται με
την επιλογή , επιτρέποντας έτσι την χρήση τους όταν
δοθούν στο &man.gcc.1;.options SCHED_ULE # ULE schedulerΟ προεπιλεγμένος scheduler του &os;. Κρατήστε την επιλογή
αυτή.options PREEMPTION # Enable kernel thread preemptionΕπιτρέπει σε νήματα του πυρήνα να προσπεραστούν από άλλα,
υψηλότερης προτεραιότητας. Βοηθάει στην αύξηση απόκρισης του
συστήματος και επιτρέπει σε νήματα διακοπών (interrupts) να εκτελεστούν
πιο γρήγορα, αντί να μένουν σε αναμονή.options INET # InterNETworkingΥποστήριξη δικτύου. Αφήστε την επιλογή αυτή ενεργοποιημένη, ακόμα
και αν δεν σκοπεύετε να συνδεθείτε σε κάποιο δίκτυο. Τα περισσότερα
προγράμματα χρειάζονται έστω και την εσωτερική (loopback) δικτύωση
(τη δυνατότητα δηλ. να κάνουν συνδέσεις δικτύου μέσα στο ίδιο σας το
μηχάνημα), καθιστώντας την επιλογή αυτή ουσιαστικά υποχρεωτική.options INET6 # IPv6 communications protocolsΗ επιλογή αυτή ενεργοποιεί τα πρωτόκολλα επικοινωνίας IPv6.options FFS # Berkeley Fast FilesystemΠρόκειται για το βασικό σύστημα αρχείων του σκληρού δίσκου. Αφήστε
την επιλογή αυτή ενεργοποιημένη, αν ξεκινάτε από το σκληρό δίσκο.
options SOFTUPDATES # Enable FFS Soft Updates supportΗ επιλογή αυτή ενεργοποιεί τα Soft Updates στον πυρήνα, το οποίο
βοηθάει την επιτάχυνση της εγγραφής στους δίσκους. Ακόμα και αν η
λειτουργία αυτή παρέχεται από τον πυρήνα, θα πρέπει επίσης να
ενεργοποιηθεί για συγκεκριμένους δίσκους. Δείτε την έξοδο της εντολής
&man.mount.8; για να δείτε αν είναι ενεργοποιημένα τα Soft Updates
στους δίσκους του συστήματος σας. Αν δεν δείτε την επιλογή
soft-updates θα χρειαστεί να την ενεργοποιήσετε με
την εντολή &man.tunefs.8; (για υπάρχοντα συστήματα αρχείων) ή
&man.newfs.8; (για νέα συστήματα αρχείων).options UFS_ACL # Support for access control listsΜε την επιλογή αυτή, ενεργοποιείται η υποστήριξη του πυρήνα για
λίστες ελέγχου πρόσβασης (access control lists). Τα
ACLs εξαρτιούνται από τη χρήση εκτεταμένων ιδιοτήτων
και από το σύστημα αρχείων UFS2, και περιγράφονται
με λεπτομέρεια στο . Τα ACLs
είναι ενεργοποιημένα από προεπιλογή, και δεν θα πρέπει να τα
απενεργοποιήσετε από τον πυρήνα αν έχουν χρησιμοποιηθεί στο παρελθόν σε
κάποιο σύστημα αρχείων, καθώς αυτό θα τα αφαιρέσει από τα αρχεία,
αλλάζοντας έτσι τον τρόπο προστασίας τους με απρόβλεπτους τρόπους.
options UFS_DIRHASH # Improve performance on big directoriesΜε την επιλογή αυτή, περιλαμβάνονται λειτουργίες που αυξάνουν την
ταχύτητα πρόσβασης του δίσκου σε μεγάλους καταλόγους, με κόστος τη χρήση
επιπρόσθετης μνήμης. Φυσιολογικά, θα θέλετε να κρατήσετε την επιλογή
αυτή σε ένα μεγάλο εξυπηρετητή ή σταθμό εργασίας, και να την αφαιρέσετε
όταν χρησιμοποιείτε το &os; σε ένα μικρό σύστημα όπου η μνήμη είναι
περιορισμένη και η ταχύτητα πρόσβασης στο δίσκο είναι λιγότερο
σημαντική, όπως για παράδειγμα σε ένα firewall.options MD_ROOT # MD is a potential root deviceΜε την επιλογή αυτή ενεργοποιείται η υποστήριξη χρήσης ενός
εικονικού δίσκου στη μνήμη RAM (ramdrive) για χρήση ως συσκευή root.
kernel optionsNFSkernel optionsNFS_ROOToptions NFSCLIENT # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
options NFS_ROOT # NFS usable as /, requires NFSCLIENTΤο δικτυακό σύστημα αρχείων. Αν δεν έχετε σκοπό να προσαρτήσετε
συστήματα αρχείων από άλλο εξυπηρετητή αρχείων &unix; μέσω TCP/IP,
μπορείτε να μετατρέψετε αυτές τις γραμμές σε σχόλια.kernel optionsMSDOSFSoptions MSDOSFS # MSDOS FilesystemΤο σύστημα αρχείων του &ms-dos;. Αν δεν σκοπεύετε να προσαρτήσετε
δίσκο DOS κατά την εκκίνηση, μπορείτε με ασφάλεια να μετατρέψετε την
επιλογή αυτή σε σχόλιο. Η υποστήριξη θα φορτωθεί αυτόματα την πρώτη
φορά που θα προσαρτήσετε κατάτμηση DOS όπως περιγράψαμε παραπάνω.
Επίσης, το εξαιρετικό πρόγραμμα
emulators/mtools σας επιτρέπει να
έχετε πρόσβαση σε δισκέτες DOS χωρίς να χρειάζεται να τις προσαρτήσετε
και να αποπροσαρτήσετε (και επίσης δεν απαιτεί τη χρήση του
MSDOSFS).options CD9660 # ISO 9660 FilesystemΤο σύστημα αρχείων ISO 9660 για CDROM. Μετατρέψτε το σε σχόλιο αν
δεν έχετε οδηγό CDROM ή αν σπάνια προσαρτάτε CD δεδομένων (καθώς θα
φορτωθεί δυναμικά την πρώτη φορά που θα προσαρτήσετε τέτοιο CD ). Τα
μουσικά CD δεν χρειάζονται αυτό το σύστημα αρχείων.options PROCFS # Process filesystem (requires PSEUDOFS)Αυτό το σύστημα αρχείων περιέχει τις διεργασίες του συστήματος.
Πρόκειται για ένα εικονικό σύστημα αρχείων το οποίο
προσαρτάται στον κατάλογο /proc και επιτρέπει σε
προγράμματα όπως το &man.ps.1; να δίνουν περισσότερες πληροφορίες για
τις διεργασίες που εκτελούνται. Η χρήση του PROCFS
δεν απαιτείται στις περισσότερες περιπτώσεις, καθώς τα περισσότερα
εργαλεία παρακολούθησης και εκσφαλμάτωσης έχουν προσαρμοστεί να
εκτελούνται χωρίς το PROCFS. Στις νέες εγκαταστάσεις,
αυτό το σύστημα αρχείων δεν προσαρτάται από προεπιλογή.options PSEUDOFS # Pseudo-filesystem frameworkΠυρήνες της σειράς 6.Χ που χρησιμοποιούν το
PROCFS πρέπει επίσης να παρέχουν υποστήριξη για το
PSEUDOFS.options GEOM_GPT # GUID Partition Tables.Με την επιλογή αυτή δίνεται η δυνατότητα ύπαρξης μεγάλου αριθμού
κατατμήσεων σε ένα μόνο δίσκο.options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]Συμβατότητα με το 4.3BSD. Αφήστε την επιλογή αυτή ενεργή: κάποια
προγράμματα θα συμπεριφέρονται παράξενα αν την απενεργοποιήσετε.options COMPAT_FREEBSD4 # Compatible with &os;4Η επιλογή αυτή απαιτείται σε συστήματα &os; 5.X &i386; και
Alpha για την υποστήριξη εφαρμογών που έχουν μεταγλωττιστεί σε
παλιότερες εκδόσεις του &os; και οι οποίες χρησιμοποιούν παλιές
διεπαφές και κλήσεις συστήματος. Συνίσταται να υπάρχει αυτή η επιλογή
σε όλα τα συστήματα &i386; και Alpha τα οποία εκτελούν παλιότερες
εφαρμογές. Αρχιτεκτονικές όπως η ia64 και η &sparc64; που άρχισαν να
υποστηρίζονται από την έκδοση 5.Χ και μετά δεν χρειάζονται αυτή την
επιλογή.options COMPAT_FREEBSD5 # Compatible with &os;5Η επιλογή αυτή απαιτείται στο &os; 6.X και άνω για την
υποστήριξη εφαρμογών που έχουν μεταγλωττιστεί στο &os; 5.X και
χρησιμοποιούν τις αντίστοιχες κλήσεις συστήματος.options SCSI_DELAY=5000 # Delay (in ms) before probing SCSIΜε την επιλογή αυτή ο πυρήνας περιμένει 5 δευτερόλεπτα πριν
ανιχνεύσει κάθε συσκευή SCSI στο σύστημα σας. Αν έχετε μόνο IDE δίσκους
μπορείτε να την αγνοήσετε, διαφορετικά μπορείτε να δοκιμάσετε να
μειώσετε τον αριθμό αυτό, για να επιταχύνετε την εκκίνηση. Φυσικά, αν το
κάνετε αυτό και ανακαλύψετε ότι το &os; έχει πρόβλημα στην αναγνώριση
των συσκευών σας, θα πρέπει να την ανεβάσετε ξανά.options KTRACE # ktrace(1) supportΗ επιλογή αυτή ενεργοποιεί το tracing των διεργασιών του πυρήνα, το
οποίο είναι χρήσιμο στην εκσφαλμάτωση.options SYSVSHM # SYSV-style shared memoryΗ επιλογή αυτή ενεργοποιεί την κοινόχρηστη μνήμη σύμφωνα με το
πρότυπο του System V. Η πλέον κοινή χρήση της, είναι η
επέκταση XSHM στα Χ η οποία χρησιμοποιείται αυτόματα από πολλές βαριές
εφαρμογές γραφικών για καλύτερη ταχύτητα. Αν χρησιμοποιείτε Χ,
σίγουρα θέλετε να περιλάβετε αυτή την επιλογή.options SYSVMSG # SYSV-style message queuesΥποστήριξη για μηνύματα του System V. Η επιλογή αυτή προσθέτει
μόνο μερικές εκατοντάδες bytes στον πυρήνα.options SYSVSEM # SYSV-style semaphoresΥποστήριξη σηματοφορέων του System V. Χρησιμοποιείται λιγότερο
συχνά, αλλά προσθέτει μόνο μερικές εκατοντάδες bytes στον πυρήνα.
Η επιλογή της εντολής &man.ipcs.1; θα σας
δείξει ποιες διεργασίες χρησιμοποιούν κάθε μια από αυτές τις
λειτουργίες του System V.options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensionsΕπεκτάσεις πραγματικού χρόνου (Real-time) που προστέθηκαν στο
&posix; το 1993. Χρησιμοποιείται από κάποιες εφαρμογές στη συλλογή των
ports (όπως το &staroffice;).options KBD_INSTALL_CDEV # install a CDEV entry in /devΗ επιλογή αυτή είναι απαραίτητη για τη δημιουργία του αρχείου
συσκευής πληκτρολογίου στον κατάλογο /dev.options ADAPTIVE_GIANT # Giant mutex is adaptive.Το Giant είναι το όνομα ενός συστήματος αμοιβαίου αποκλεισμού
(sleep mutex) το οποίο προστατεύει ένα μεγάλο αριθμό πόρων του πυρήνα.
Στις μέρες μας, αυτό θεωρείται ανεπίτρεπτο από πλευράς απόδοσης και
αντικαθίσταται με κλειδώματα τα οποία προστατεύουν συγκεκριμένους
πόρους. Η επιλογή ADAPTIVE_GIANT επιτρέπει στο Giant
να συμπεριληφθεί στο σετ των mutexes που μπορούν να εκτελεστούν
επιλεκτικά. Έτσι, αν ένα νήμα θέλει να κλειδώσει το Giant mutex, αλλά
αυτό είναι ήδη κλειδωμένο από ένα νήμα σε μια άλλη CPU, το πρώτο νήμα
θα συνεχίσει να εκτελείται, και θα περιμένει για την απελευθέρωση του
κλειδώματος. Φυσιολογικά, το νήμα θα επέστρεφε στην κατάσταση ύπνου
(sleep) και θα περίμενε για την επόμενη ευκαιρία εκτέλεσης του. Αν δεν
είστε σίγουρος, αφήστε αυτή την επιλογή ενεργή.Σημειώστε ότι από το &os; 8.0-CURRENT και τις επόμενες εκδόσεις,
όλα τα mutexes έχουν από προεπιλογή τη δυνατότητα προσαρμογής, εκτός
αν έχει επίτηδες γίνει διαφορετική ρύθμιση, χρησιμοποιώντας την
επιλογή NO_ADAPTIVE_MUTEXES κατά τη μεταγλώττιση.
Το Giant έχει επίσης δυνατότητα προσαρμογής πλέον, και έτσι η
επιλογή ADAPTIVE_GIANT έχει αφαιρεθεί από το
αρχείο ρυθμίσεων πυρήνα.kernel optionsSMPdevice apic # I/O APICΗ συσκευή apic επιτρέπει τη χρήση του I/O APIC για την παράδοση των
interrupts (διακοπών). Η συσκευή apic μπορεί να χρησιμοποιηθεί τόσο σε
πυρήνες για ένα επεξεργαστή (UP) όσο και για πολλαπλούς (SMP), αλλά στη
δεύτερη περίπτωση είναι απαραίτητη. Προσθέστε την επιλογή
options SMP για να έχετε υποστήριξη πολλαπλών
επεξεργαστών.Η συσκευή apic υπάρχει μόνο στην αρχιτεκτονική i386, η γραμμή αυτή
δεν θα πρέπει να χρησιμοποιηθεί σε άλλες αρχιτεκτονικές.device eisaΘα πρέπει να συμπεριλάβετε την επιλογή αυτή αν έχετε μητρική με
δίαυλο τύπου EISA. Ενεργοποιείται έτσι η αυτόματη ανίχνευση και ρύθμιση
όλων των συσκευών στο δίαυλο EISA.device pciΘα πρέπει να συμπεριλάβετε αυτή την επιλογή αν έχετε μητρική με
δίαυλο PCI. Ενεργοποιείται έτσι η αυτόματη ανίχνευση των καρτών PCI και
η επικοινωνία μεταξύ των διαύλων PCI και ISA.# Floppy drives
device fdcΠρόκειται για τον ελεγκτή μονάδας δισκέτας.# ATA and ATAPI devices
device ataΑυτός ο οδηγός υποστηρίζει όλες τις συσκευές τύπου ATA και ATAPI.
Χρειάζεστε μόνο μια καταχώρηση device ata για να
ανιχνεύσει ο πυρήνας όλες τις συσκευές ATA/ATAPI τύπου PCI στα σύγχρονα
μηχανήματα.device atadisk # ATA disk drivesΗ επιλογή αυτή απαιτείται μαζί με το device ata
για την υποστήριξη δίσκων ATA.device ataraid # ATA RAID drivesΗ επιλογή αυτή απαιτείται μαζί με τοdevice ata
για την υποστήριξη δίσκων ATA RAID.
device atapicd # ATAPI CDROM drivesΗ επιλογή αυτή απαιτείται μαζί με το device ata
για την υποστήριξη οδηγών ATAPI CDROM.device atapifd # ATAPI floppy drivesΗ επιλογή αυτή απαιτείται μαζί με το device ata
για την υποστήριξη οδηγών δισκέτας ATAPI.device atapist # ATAPI tape drivesΗ επιλογή αυτή απαιτείται μαζί με το device ata
για την υποστήριξη μονάδων ταινίας ATAPI.options ATA_STATIC_ID # Static device numberingΜε την επιλογή αυτή, ο αριθμός του ελεγκτή γίνεται στατικός. Χωρίς
αυτή, οι αριθμοί συσκευών αποδίδονται δυναμικά.# SCSI Controllers
device ahb # EISA AHA1742 family
device ahc # AHA2940 and onboard AIC7xxx devices
options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~128k to driver.
device ahd # AHA39320/29320 and onboard AIC79xx devices
options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~215k to driver.
device amd # AMD 53C974 (Teckram DC-390(T))
device isp # Qlogic family
#device ispfw # Firmware for QLogic HBAs- normally a module
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets + those of `ncr')
device trm # Tekram DC395U/UW/F DC315U adapters
device adv # Advansys SCSI adapters
device adw # Advansys wide SCSI adapters
device aha # Adaptec 154x SCSI adapters
device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device bt # Buslogic/Mylex MultiMaster SCSI adapters
device ncv # NCR 53C500
device nsp # Workbit Ninja SCSI-3
device stg # TMC 18C30/18C50Ελεγκτές SCSI. Μπορείτε να μετατρέψετε σε σχόλιο οποιονδήποτε δεν
έχετε στο σύστημα σας. Αν το σύστημα σας έχει μόνο συσκευές IDE,
μπορείτε να αφαιρέσετε όλες τις γραμμές. Οι γραμμές τύπου
*_REG_PRETTY_PRINT χρησιμοποιούνται για να δίνουν
περισσότερες διαγνωστικές πληροφορίες για τους αντίστοιχους οδηγούς.
# SCSI peripherals
device scbus # SCSI bus (required for SCSI)
device ch # SCSI media changers
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI access)
device ses # SCSI Environmental Services (and SAF-TE)Περιφερειακά SCSI. Μπορείτε και πάλι να μετατρέψετε σε σχόλιο όσες
συσκευές δεν έχετε, ή αν έχετε μόνο συσκευές IDE, μπορείτε να
αφαιρέσετε εντελώς αυτές τις γραμμές.Ο οδηγός USB &man.umass.4; και κάποιοι άλλοι οδηγοί χρησιμοποιούν
το υποσύστημα SCSI αν και δεν είναι πραγματικές SCSI συσκευές. Για το
λόγο αυτό, σιγουρευτείτε ότι δεν αφαιρέσατε την υποστήριξη SCSI αν
περιλαμβάνονται τέτοιοι οδηγοί στο αρχείο ρύθμισης του πυρήνα σας.
# RAID controllers interfaced to the SCSI subsystem
device amr # AMI MegaRAID
device arcmsr # Areca SATA II RAID
device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID
device ciss # Compaq Smart RAID 5*
device dpt # DPT Smartcache III, IV - See NOTES for options
device hptmv # Highpoint RocketRAID 182x
device rr232x # Highpoint RocketRAID 232x
device iir # Intel Integrated RAID
device ips # IBM (Adaptec) ServeRAID
device mly # Mylex AcceleRAID/eXtremeRAID
device twa # 3ware 9000 series PATA/SATA RAID
# RAID controllers
device aac # Adaptec FSA RAID
device aacp # SCSI passthrough for aac (requires CAM)
device ida # Compaq Smart RAID
device mfi # LSI MegaRAID SAS
device mlx # Mylex DAC960 family
device pst # Promise Supertrak SX6000
device twe # 3ware ATA RAIDΥποστηριζόμενοι ελεγκτές RAID. Αν δεν έχετε κανένα από αυτούς,
μπορείτε να τους μετατρέψετε σε σχόλια ή να τους αφαιρέσετε εντελώς.
# atkbdc0 controls both the keyboard and the PS/2 mouse
device atkbdc # AT keyboard controllerΟ ελεγκτής πληκτρολογίου (atkbdc) παρέχει
υπηρεσίες I/O για πληκτρολόγια τύπου AT και συσκευές κατάδειξης
(ποντίκια) τύπου PS/2. Ο ελεγκτής απαιτείται για τη λειτουργία του
οδηγού πληκτρολογίου (atkbd) και του οδηγού
συσκευής κατάδειξης PS/2 (psm).device atkbd # AT keyboardΟ οδηγός atkbd, μαζί με τον ελεγκτή
atkbdc, παρέχει πρόσβαση σε πληκτρολόγιο τύπου AT 84
ή εκτεταμένου AT το οποίο συνδέεται στον ελεγκτή πληκτρολογίου.device psm # PS/2 mouseΧρησιμοποιήστε αυτή τη συσκευή αν το ποντίκι σας συνδέεται στην
θύρα PS/2.device kbdmux # keyboard multiplexerΒασική υποστήριξη πολυπλεξίας πληκτρολογίων. Αν δε σκοπεύετε να
χρησιμοποιήσετε περισσότερα από ένα πληκτρολόγια στο σύστημα σας,
μπορείτε με ασφάλεια να αφαιρέσετε αυτή τη γραμμή.device vga # VGA video card driverΤο πρόγραμμα οδήγησης της κάρτας γραφικών.
device splash # Splash screen and screen saver supportΓραφική οθόνη (splash) κατά την εκκίνηση! Η συσκευή αυτή
χρησιμοποιείται επίσης από τα προγράμματα προφύλαξης οθόνης (κονσόλας).
# syscons is the default console driver, resembling an SCO console
device scΟ οδηγός sc είναι ο προεπιλεγμένος οδηγός
κονσόλας και προσομοιώνει κονσόλα τύπου SCO. Καθώς τα περισσότερα
προγράμματα πλήρους οθόνης αποκτούν πρόσβαση στην κονσόλα μέσω κάποιας
βιβλιοθήκης βάσης δεδομένων τερματικών όπως το
termcap, δεν θα πρέπει να έχει σημασία αν
χρησιμοποιήσετε αυτόν τον οδηγό ή τον vt ο οποίος
είναι συμβατός με κονσόλα VT220. Μετά την είσοδο σας
στο σύστημα, θέστε την μεταβλητή TERM στην τιμή
scoansi αν κάποια προγράμματα πλήρους οθόνης έχουν
πρόβλημα όταν χρησιμοποιείται αυτή η κονσόλα.# Enable this for the pcvt (VT220 compatible) console driver
#device vt
#options XSERVER # support for X server on a vt console
#options FAT_CURSOR # start with block cursorΠρόκειται για ένα οδηγό κονσόλας συμβατό με VT220, και με προς τα
πίσω συμβατότητα με VT100/102. Λειτουργεί καλά σε κάποιους φορητούς
υπολογιστές που έχουν ασυμβατότητα υλικού με τον sc.
Μετά την είσοδο σας στο σύστημα, θέστε την μεταβλητή TERM
σε vt100 ή vt220. Ο οδηγός μπορεί
επίσης να αποδειχθεί χρήσιμος όταν συνδέεστε σε μεγάλο αριθμό από
διαφορετικά μηχανήματα μέσω δικτύου, όπου δεν υπάρχουν καταχωρήσεις για
τη συσκευή sc στο termcap ή
terminfo — το vt100
θα πρέπει να είναι διαθέσιμο πρακτικά σε κάθε πλατφόρμα.device agpΣυμπεριλάβετε τη συσκευή αυτή αν έχετε AGP κάρτα στο σύστημα σας.
Θα ενεργοποιήσετε με αυτό τον τρόπο την υποστήριξη για AGP και AGP GART
για μητρικές που υποστηρίζουν αυτές τις λειτουργίες.APM# Power management support (see NOTES for more options)
#device apmΥποστήριξη Advanced Power Management (προχωρημένης διαχείρισης
ισχύος). Χρήσιμο για φορητά, αν και η επιλογή αυτή, από προεπιλογή,
είναι ανενεργή στον πυρήνα GENERIC.# Add suspend/resume support for the i8254.
device pmtimerΠρόγραμμα οδήγησης μετρητή χρόνου (Timer) για συμβάντα που
σχετίζονται με διαχείριση ενέργειας όπως το APM και το ACPI.# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
device cbb # cardbus (yenta) bridge
device pccard # PC Card (16-bit) bus
device cardbus # CardBus (32-bit) busΥποστήριξη PCMCIA. Την χρειάζεστε αν χρησιμοποιείτε φορητό
υπολογιστή.# Serial (COM) ports
device sio # 8250, 16[45]50 based serial portsΠρόκειται για τις σειριακές θύρες οι οποίες είναι γνωστές στον κόσμο
του &ms-dos;/&windows; ως θύρες COM.Αν έχετε εσωτερικό μόντεμ στη θύρα COM4
και έχετε και σειριακή θύρα COM2, θα πρέπει
να αλλάξετε το IRQ του μόντεμ στο 2 (για περίεργους τεχνικούς λόγους,
IRQ2 = IRQ 9) για να μπορέσετε να το χρησιμοποιήσετε από το &os;. Αν
έχετε κάρτα πολλαπλών σειριακών εξόδων, ελέγξτε τη σελίδα manual του
&man.sio.4; για περισσότερες πληροφορίες σχετικά με τις σωστές τιμές
που πρέπει να προσθέσετε στο /boot/device.hints.
Κάποιες κάρτες γραφικών (ειδικά αυτές που βασίζονται σε ολοκληρωμένα
S3) χρησιμοποιούν διευθύνσεις IO μορφής 0x*2e8,
και καθώς πολλές φτηνές σειριακές κάρτες δεν αποκωδικοποιούν πλήρως
τη 16 bit περιοχή διευθύνσεων, συγκρούονται με τις κάρτες αυτές,
καθιστώντας έτσι πρακτικά άχρηστη τη θύρα
COM4.Κάθε σειριακή πόρτα χρειάζεται να έχει μια μοναδική IRQ (εκτός
αν χρησιμοποιείτε κάρτα πολλαπλών σειριακών που υποστηρίζει
κοινή χρήση interrupts), και έτσι δεν μπορούν να χρησιμοποιηθούν τα
προεπιλεγμένα interrupts για την COM3 και την
COM4.# Parallel port
device ppcΠρόκειται για την παράλληλη θύρα στο δίαυλο ISA.device ppbus # Parallel port bus (required)Παρέχει υποστήριξη για το δίαυλο της παράλληλης θύρας.device lpt # PrinterΠαρέχει υποστήριξη για εκτυπωτές παράλληλης θύρας.Χρειάζεστε και τα τρία παραπάνω για να ενεργοποιήσετε την
υποστήριξη εκτυπωτή παράλληλης θύρας.device plip # TCP/IP over parallelΠρόκειται για το πρόγραμμα οδήγησης δικτύου μέσω παράλληλης θύρας.
device ppi # Parallel port interface deviceΠρόγραμμα I/O γενικής χρήσης (geek port) + IEEE1284
I/O.#device vpo # Requires scbus and dazip driveΧρησιμοποιείται για μονάδα δισκέτας Iomega Zip. Απαιτεί υποστήριξη
από τους οδηγούς scbus και da.
Η καλύτερη απόδοση επιτυγχάνεται με θύρα σε κατάσταση λειτουργίας
EPP 1.9.#device pucΕνεργοποιήστε αυτή τη συσκευή αν έχετε μια χαζή
σειριακή ή παράλληλη PCI κάρτα η οποία υποστηρίζεται από το πρόγραμμα
οδήγησης &man.puc.4; (glue driver).# PCI Ethernet NICs.
device de # DEC/Intel DC21x4x (Tulip)
device em # Intel PRO/1000 adapter Gigabit Ethernet Card
device ixgb # Intel PRO/10GbE Ethernet Card
device txp # 3Com 3cR990 (Typhoon)
device vx # 3Com 3c590, 3c595 (Vortex)Διάφορα προγράμματα οδήγησης για PCI κάρτες δικτύου. Μετατρέψτε σε
σχόλιο ή αφαιρέστε τελείως όσες δεν υπάρχουν στο σύστημα σας.# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device miibus # MII bus supportΗ υποστήριξη διαύλου MII απαιτείται για κάποιες κάρτες δικτύου
Ethernet PCI 10/100, ειδικά για αυτές που χρησιμοποιούν πομποδέκτη
συμβατό με MII ή έχουν διεπαφή ελέγχου που λειτουργεί παρόμοια με τον
MII. Προσθέτοντας device miibus στο αρχείο ρύθμισης
του πυρήνα, θα έχετε υποστήριξη για το γενικό API του miibus και για
όλους τους οδηγούς PHY, συμπεριλαμβανομένου και ενός γενικού για PHYs
που δεν υποστηρίζονται από κάποιο συγκεκριμένο οδηγό.device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet
device bfe # Broadcom BCM440x 10/100 Ethernet
device bge # Broadcom BCM570xx Gigabit Ethernet
device dc # DEC/Intel 21143 and various workalikes
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device lge # Level 1 LXT1001 gigabit ethernet
device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet
device nge # NatSemi DP83820 gigabit ethernet
device nve # nVidia nForce MCP on-board Ethernet Networking
device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
device re # RealTek 8139C+/8169/8169S/8110S
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (Starfire)
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
device ste # Sundance ST201 (D-Link DFE-550TX)
device stge # Sundance/Tamarack TC9021 gigabit Ethernet
device ti # Alteon Networks Tigon I/II gigabit Ethernet
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170 EPIC)
device vge # VIA VT612x gigabit ethernet
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (Boomerang, Cyclone)Προγράμματα οδήγησης που χρησιμοποιούν τον κώδικα του διαύλου
ελέγχου MII.# ISA Ethernet NICs. pccard NICs included.
device cs # Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
device ex # Intel EtherExpress Pro/10 and Pro/10+
device ep # Etherlink III based cards
device fe # Fujitsu MB8696x based cards
device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc.
device lnc # NE2100, NE32-VL Lance Ethernet cards
device sn # SMC's 9000 series of Ethernet chips
device xe # Xircom pccard Ethernet
# ISA devices that use the old ISA shims
#device leΠρογράμματα οδήγησης καρτών Ethernet τύπου ISA. Δείτε το αρχείο
/usr/src/sys/i386/conf/NOTES
για λεπτομέρειες σχετικά με το ποιες κάρτες υποστηρίζονται από ποιον
οδηγό.# Wireless NIC cards
device wlan # 802.11 supportΓενική υποστήριξη του 802.11. Η γραμμή αυτή απαιτείται για ασύρματη
δικτύωση.device wlan_wep # 802.11 WEP support
device wlan_ccmp # 802.11 CCMP support
device wlan_tkip # 802.11 TKIP supportΥποστήριξη κρυπτογράφησης για συσκευές 802.11. Οι γραμμές αυτές
χρειάζονται αν σκοπεύετε να χρησιμοποιήσετε κρυπτογράφηση και πρωτόκολλα
ασφαλείας 802.11i.device an # Aironet 4500/4800 802.11 wireless NICs.
device ath # Atheros pci/cardbus NIC's
device ath_hal # Atheros HAL (Hardware Access Layer)
device ath_rate_sample # SampleRate tx rate control for ath
device awi # BayStack 660 and others
device ral # Ralink Technology RT2500 wireless NICs.
device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
#device wl # Older non 802.11 Wavelan wireless NIC.Υποστήριξη για διάφορες ασύρματες κάρτες.# Pseudo devices
device loop # Network loopbackΠρόκειται για τη γενική συσκευή εσωτερικού δικτύου (loopback) του
TCP/IP. Η σύνδεση μέσω telnet ή FTP στο localhost
(γνωστό επίσης και ως 127.0.0.1)
πραγματοποιείται μέσω αυτής της συσκευής. Η ύπαρξη αυτής της συσκευής
είναι υποχρεωτική.device random # Entropy deviceΚρυπτογραφικά ασφαλής γεννήτρια τυχαίων αριθμών.device ether # Ethernet supportΗ γραμμή ether απαιτείται μόνο αν έχετε κάρτα
δικτύου Ethernet. Περιέχει γενικό κώδικα για το πρωτόκολλο Ethernet.
device sl # Kernel SLIPΗ γραμμή sl παρέχει υποστήριξη SLIP. Η υποστήριξη
αυτή έχει σχεδόν ολοκληρωτικά ξεπεραστεί από το PPP, το οποίο είναι
ευκολότερο στη ρύθμιση, υποστηρίζει καλύτερα τις συνδέσεις μέσω μόντεμ,
και παρέχει καλύτερες δυνατότητες.device ppp # Kernel PPPΗ γραμμή αυτή είναι για υποστήριξη PPP μέσω του πυρήνα για
επιλογικές (dial-up) συνδέσεις. Υπάρχει επίσης μια έκδοση PPP η οποία
υλοποιείται ως εφαρμογή χρήστη (userland), χρησιμοποιεί το
tun και προσφέρει περισσότερη ευελιξία και
λειτουργίες όπως κλήση κατά απαίτηση (demand dialing).device tun # Packet tunnel.Η συσκευή αυτή χρησιμοποιείται από το πρόγραμμα PPP χρήστη
(userland). Δείτε το τμήμα PPP
αυτού του βιβλίου για περισσότερες πληροφορίες.
device pty # Pseudo-ttys (telnet etc)Πρόκειται για συσκευή ψευδό-τερματικού ή προσομοίωσης
θύρας login. Χρησιμοποιείται για εισερχόμενες συνδέσεις
telnet και rlogin, από το
xterm, και από κάποιες άλλες εφαρμογές όπως
το Emacs.device md # Memory disksΨευτό-συσκευές δίσκου με χρήση μνήμης (ramdrives).device gif # IPv6 and IPv4 tunnelingΗ συσκευή αυτή υλοποιεί IPv6 σε IPv4 tunneling, IPv4 σε IPv6
tunneling, IPv4 σε IPv4 tunneling, και IPv6 σε IPv6 tunneling. Η συσκευή
gifαυτό-κλωνοποιείται, και δημιουργεί
τα αντίστοιχα αρχεία συσκευών όπως απαιτούνται.device faith # IPv6-to-IPv4 relaying (translation)Αυτή η ψεύδο-συσκευή συλλαμβάνει πακέτα που στέλνονται προς αυτήν
και τα ανακατευθύνει προς το δαίμονα μετάφρασης του IPv4/IPv6.# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device bpf # Berkeley packet filterΠρόκειται για το φίλτρο πακέτων Berkeley. Αυτή η ψεύδο-συσκευή
επιτρέπει σε κάρτες δικτύου να λειτουργούν σε κατάσταση promiscuous
(πλήρους ακρόασης), συλλαμβάνοντας με αυτό τον τρόπο κάθε πακέτο ενός
δικτύου (π.χ. Ethernet). Τα πακέτα αυτά μπορεί να αποθηκεύονται στο
δίσκο ή να εξετάζονται με τη βοήθεια του προγράμματος &man.tcpdump.1;.
Η συσκευή &man.bpf.4; χρησιμοποιείται επίσης από το
&man.dhclient.8; για την ανάκτηση της διεύθυνσης IP της προεπιλεγμένης
πύλης κ.ο.κ. Αν χρησιμοποιείτε DHCP, αφήστε αυτή την επιλογή
ενεργοποιημένη.# USB support
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (required)
#device udbp # USB Double Bulk Pipe devices
device ugen # Generic
device uhid # Human Interface Devices
device ukbd # Keyboard
device ulpt # Printer
device umass # Disks/Mass storage - Requires scbus and da
device ums # Mouse
device ural # Ralink Technology RT2500USB wireless NICs
device urio # Diamond Rio 500 MP3 player
device uscanner # Scanners
# USB Ethernet, requires mii
device aue # ADMtek USB Ethernet
device axe # ASIX Electronics USB Ethernet
device cdce # Generic USB over Ethernet
device cue # CATC USB Ethernet
device kue # Kawasaki LSI USB Ethernet
device rue # RealTek RTL8150 USB EthernetΥποστήριξη για διάφορες συσκευές USB.# FireWire support
device firewire # FireWire bus code
device sbp # SCSI over FireWire (Requires scbus and da)
device fwe # Ethernet over FireWire (non-standard!)Υποστήριξη για διάφορες συσκευές Firewire.Για περισσότερες πληροφορίες και επιπλέον συσκευές που
υποστηρίζονται από το &os;, δείτε το αρχείο
/usr/src/sys/i386/conf/NOTES
.Λειτουργία με Μεγάλη Ποσότητα Μνήμης (PAE)
Physical Address Extensions
(PAE)large memoryΜηχανήματα με μεγάλη ποσότητα μνήμης, χρειάζονται πρόσβαση σε
μνήμη που υπερβαίνει το όριο των 4 gigabytes των Εικονικών
Διευθύνσεων Χρήστη+Πυρήνα (User+Kernel Virtual Address,
KVA). Εξαιτίας αυτού του περιορισμού, η Intel
πρόσθεσε υποστήριξη για 36bit φυσικών διευθύνσεων, από τον
επεξεργαστή &pentium; Pro και μετά.Η δυνατότητα Επέκτασης Φυσικών Διευθύνσεων, (Physical Address
Extension, PAE) των &intel; &pentium; Pro και
μεταγενέστερων CPU, επιτρέπει χρήση μνήμης ως 64 gigabytes. To &os;
παρέχει υποστήριξη για τη δυνατότητα αυτή μέσω της ρύθμισης πυρήνα
, η οποία διατίθεται για όλες τις τρέχουσες
σταθερές εκδόσεις του &os;. Λόγω περιορισμών στην αρχιτεκτονική του
συστήματος μνήμης της Intel, δεν γίνεται διάκριση για τη μνήμη που
βρίσκεται πάνω ή κάτω από τα 4 gigabytes. Η μνήμη που εκχωρείται
πάνω από τα 4 gigabytes, απλώς προστίθεται στο μέγεθος της
διαθέσιμης μνήμης.Για να ενεργοποιήσετε την υποστήριξη PAE
στον πυρήνα, απλώς προσθέστε την ακόλουθη γραμμή στο αρχείο
των ρυθμίσεων σας:options PAEΗ υποστήριξη PAE στο &os; είναι διαθέσιμη
μόνο για επεξεργαστές αρχιτεκτονικής &intel; IA-32. Θα πρέπει
επίσης να σημειώσουμε ότι η υποστήριξη PAE στο
&os; δεν έχει δοκιμαστεί εκτεταμένα, και θα πρέπει να θεωρείται
ποιότητας beta σε σχέση με τα άλλα σταθερά χαρακτηριστικά του
&os;.Η υποστήριξη PAE στο &os; υπόκειται σε
κάποιους περιορισμούς:Μια διαδικασία δεν έχει πρόσβαση σε περισσότερα από 4
gigabytes χώρου VM.Οδηγοί συσκευών που δεν χρησιμοποιούν τη διεπαφή
&man.bus.dma.9; ίσως προκαλέσουν καταστροφή δεδομένων σε ένα
PAE πυρήνα και για το λόγο αυτό δεν
συνίσταται η χρήση τους. Στο &os; παρέχεται ένα αρχείο
ρυθμίσεων PAE στο οποίο έχουν εξαιρεθεί
όλα τα προγράμματα οδήγησης που είναι γνωστό ότι δεν δουλεύουν
σε πυρήνα τύπου PAE.Κάποιες μεταβλητές συστήματος (system tunables) εξακριβώνουν
τη χρήση της μνήμης, βλέποντας το ποσό της διαθέσιμης φυσικής
μνήμης. Αυτές οι μεταβλητές μπορεί να χρησιμοποιήσουν
αδικαιολόγητα μεγάλη ποσότητα μνήμης, λόγω της φύσης του
συστήματος PAE. Ένα τέτοιο παράδειγμα είναι η
ρύθμιση sysctl η οποία ελέγχει
το μέγιστο αριθμό vnodes που επιτρέπονται στον πυρήνα. Είναι
σκόπιμο να ρυθμίσετε αυτή και άλλες παρόμοιες παραμέτρους σε
λογικές τιμές.Ίσως χρειαστεί να ρυθμίσετε τις εικονικές διευθύνσεις του
πυρήνα (KVA) ή να μειώσετε την ποσότητα
κάποιου συγκεκριμένου πόρου που έχει μεγάλη χρήση (δείτε
παραπάνω) για να αποφύγετε την εξάντληση του
KVA. Μπορείτε να αυξήσετε το μέγεθος του
KVA μέσω της επιλογής
.Για λόγους σταθερότητας και απόδοσης, σας συμβουλεύουμε να
διαβάσετε τη σελίδα manual &man.tuning.7;. Επίσης η σελίδα
&man.pae.4; περιέχει ενημερωμένες πληροφορίες σχετικά με την
υποστήριξη PAE στο &os;.Αν Κάτι Πάει ΛάθοςΥπάρχουν τέσσερις κατηγορίες προβλημάτων που μπορούν να
παρουσιαστούν όταν δημιουργείτε ένα προσαρμοσμένο πυρήνα:Αποτυχία της εντολής config:Αν η εντολή &man.config.8; αποτυγχάνει όταν της δίνετε την
περιγραφή του πυρήνα σας, έχετε κατά πάσα πιθανότητα, κάνει
κάποιο απλό λάθος. Ευτυχώς, η &man.config.8; θα σας δείξει τον
αριθμό γραμμής στον οποίο συνάντησε το πρόβλημα, και έτσι θα
μπορέσετε εύκολα να το εντοπίσετε. Για παράδειγμα, αν δείτε:
config: line 17: syntax errorΒεβαιωθείτε ότι η λέξη-κλειδί στη γραμμή αυτή είναι σωστή,
συγκρίνοντας τη με την αντίστοιχη στο αρχείο
GENERIC ή σε άλλο αρχείο αναφοράς.Αποτυχία της εντολής make:Αν αποτυγχάνει η εντολή make, συνήθως αυτό
σημαίνει κάποιο λάθος στο αρχείο ρυθμίσεων το οποίο δεν είναι
αρκετά σοβαρό για να το καταλάβει η &man.config.8;. Κοιτάξτε ξανά
το αρχείο ρυθμίσεων σας και αν ακόμα δεν μπορείτε να εντοπίσετε το
πρόβλημα, στείλτε το μαζί με το αρχείο με mail στην
&a.questions; και θα εντοπιστεί πολύ γρήγορα.Ο πυρήνας δεν εκκινεί:Αν ο νέος σας πυρήνας δεν εκκινεί ή αποτυγχάνει να αναγνωρίσει
τις συσκευές σας, μην πανικοβάλλεστε! Ευτυχώς, το &os; έχει ένα
εξαιρετικό μηχανισμό για να επανέλθετε από μη-συμβατούς πυρήνες.
Απλώς επιλέξτε τον πυρήνα από τον οποίο θέλετε να ξεκινήσετε μέσω
του συστήματος εκκίνησης (boot loader) του &os;. Έχετε πρόσβαση
σε αυτό, την ώρα που εμφανίζεται το μενού επιλογών εκκίνησης.
Επιλέξτε Escape to a loader prompt, αριθμός έξι.
Στην προτροπή που εμφανίζεται, γράψτε την εντολή
unload kernel και έπειτα γράψτε
boot /boot/kernel.old/kernel
, ή το όνομα αρχείου ενός άλλου πυρήνα που ξεκινάει
κανονικά. Όταν φτιάχνετε ένα νέο πυρήνα, είναι πάντα καλή ιδέα
να έχετε πρόχειρο ένα πυρήνα που ξέρετε ότι δουλεύει.Αφού εκκινήσετε με ένα καλό πυρήνα, μπορείτε να ελέγξετε το
αρχείο ρυθμίσεων σας από την αρχή, και να προσπαθήσετε ξανά.
Μια χρήσιμη πηγή πληροφοριών είναι το αρχείο
/var/log/messages το οποίο μεταξύ άλλων
καταγράφει όλα τα μηνύματα του πυρήνα από κάθε επιτυχημένη
εκκίνηση. Επίσης η εντολή &man.dmesg.8; θα σας δείξει όλα τα
μηνύματα του πυρήνα της τρέχουσας εκκίνησης.Αν έχετε πρόβλημα στη δημιουργία πυρήνα, βεβαιωθείτε ότι
έχετε κρατήσει ένα πυρήνα GENERIC, ή
κάποιο άλλο που γνωρίζετε ότι λειτουργεί, χρησιμοποιώντας ένα
διαφορετικό όνομα ώστε να μη διαγραφεί στην επόμενη
μεταγλώττιση. Δεν μπορείτε να βασιστείτε στον πυρήνα
kernel.old, γιατί κάθε φορά που
εγκαθιστάτε νέο πυρήνα, το kernel.old
αντικαθίσταται με τον τελευταίο εγκατεστημένο πυρήνα, ο οποίος
μπορεί να μην λειτουργεί. Επίσης, όσο το δυνατόν πιο σύντομα,
μετακινήστε τον πυρήνα που λειτουργεί στην σωστή θέση,
/boot/kernel, διαφορετικά
εντολές όπως η &man.ps.1; ίσως να μη λειτουργούν σωστά. Για να
το κάνετε αυτό, απλώς μετονομάστε τον κατάλογο που περιέχει τον
καλό πυρήνα, π.χ:&prompt.root; mv /boot/kernel /boot/kernel.bad
&prompt.root; mv /boot/kernel.good /boot/kernelΟ νέος πυρήνας λειτουργεί, αλλά η &man.ps.1; δεν λειτουργεί
πλέον:Αν εγκαταστήσετε πυρήνα διαφορετικής έκδοσης από αυτόν με τον
οποίο έχουν φτιαχτεί τα εργαλεία συστήματος, για παράδειγμα εάν
βάλετε ένα πυρήνα της σειράς -CURRENT σε ένα σύστημα -RELEASE,
πολλές από τις εντολές που σχετίζονται με την κατάσταση του
συστήματος όπως ή &man.ps.1; και η &man.vmstat.8; δεν θα
λειτουργούν πλέον. Θα πρέπει να
μεταγλωττίσετε και να εγκαταστήσετε όλο
το βασικό σύστημα (world) χρησιμοποιώντας ίδια έκδοση του
πηγαίου κώδικα με αυτή του πυρήνα σας. Αυτός είναι και ένας λόγος
για τον οποίο δεν είναι συνήθως καλή ιδέα να χρησιμοποιείτε
διαφορετική έκδοση πυρήνα από το υπόλοιπο του λειτουργικού
συστήματος.
diff --git a/el_GR.ISO8859-7/books/handbook/l10n/chapter.sgml b/el_GR.ISO8859-7/books/handbook/l10n/chapter.sgml
index 15bfeebb56..036953b243 100644
--- a/el_GR.ISO8859-7/books/handbook/l10n/chapter.sgml
+++ b/el_GR.ISO8859-7/books/handbook/l10n/chapter.sgml
@@ -1,1041 +1,1040 @@
AndreyChernovΣυνεισφορά του Michael C.WuΓράφηκε ξανά από τον Τοπικές Ρυθμίσεις - Χρήση και ρύθμιση I18N/L10NΣύνοψηΤο &os; είναι ένα ιδιαίτερα αποκεντρωμένο έργο με χρήστες και
εθελοντές σε ολόκληρο τον κόσμο. Στο κεφάλαιο αυτό συζητούνται
οι δυνατότητες τοπικών και διεθνών ρυθμίσεων του &os;, οι οποίες
επιτρέπουν σε χρήστες γλωσσών εκτός της Αγγλικής να εκτελέσουν
πραγματική εργασία. Υπάρχουν πολλοί παράγοντες στην υλοποίηση του
πλαισίου i18n, τόσο σε επίπεδο συστήματος, όσο και εφαρμογών, και
για το λόγο αυτό, όπου χρειάζεται, παραπέμπουμε τον αναγνώστη σε πιο
συγκεκριμένες πηγές τεκμηρίωσης.Αφού διαβάσετε αυτό το κεφάλαιο, θα ξέρετε:Πως κωδικοποιούνται οι γλώσσες και οι τοπικές ρυθμίσεις
στα σύγχρονα λειτουργικά συστήματα.Πως να βάλετε τοπικές ρυθμίσεις στο κέλυφος σας (login
shell).Πως να ρυθμίσετε την κονσόλα για γλώσσες εκτός της
Αγγλικής.Πως να χρησιμοποιήσετε αποτελεσματικά το σύστημα X
Windows με διαφορετικές γλώσσες.Που να βρείτε περισσότερες πληροφορίες για τη συγγραφή
εφαρμογών συμβατών με το πρότυπο i18n.Πριν διαβάσετε αυτό το κεφάλαιο, θα πρέπει:Να γνωρίζετε πως να εγκαταστήσετε πρόσθετο λογισμικό
τρίτου κατασκευαστή ().Βασικές ΓνώσειςΤι Είναι το I18N/L10N;internationalizationlocalizationlocalizationΟι ομάδες ανάπτυξης λογισμικού δημιούργησαν τον όρο I18N,
ως συντόμευση της λέξης internationalization
(διεθνοποίηση), μετρώντας απλώς τα γράμματα της λέξης ανάμεσα
στο πρώτο και το τελευταίο. Ο όρος L10N έχει προκύψει με τον ίδιο
τρόπο, αυτή τη φορά από τη λέξη localization
(τοπικοποίηση, ή απλώς τοπικές ρυθμίσεις). Συνδυάζοντας μεταξύ τους
τις μεθόδους, τα πρωτόκολλα, και τις εφαρμογές που συμβαδίζουν με τα
I18N/L10N, οι χρήστες μπορούν να χρησιμοποιήσουν τις γλώσσες της
επιλογής τους.Οι εφαρμογές I18N προγραμματίζονται με τη βοήθεια εργαλείων
(kits) και βιβλιοθηκών. Επιτρέπεται έτσι στους προγραμματιστές να
γράψουν ένα απλό αρχείο και να μεταφράσουν τα μενού και τα κείμενα
που απεικονίζει η εφαρμογή, σε κάθε γλώσσα που απαιτείται.
Συνιστούμε ένθερμα στους προγραμματιστές να ακολουθούν την παραπάνω
σύμβαση.Γιατί Πρέπει να Χρησιμοποιήσω τα I18N/L10N;Τα I18N/L10N χρησιμοποιούνται κάθε φορά που επιθυμείτε να δείτε,
να εισάγετε, ή να επεξεργαστείτε δεδομένα σε γλώσσες εκτός της
Αγγλικής.Ποιες Γλώσσες Υποστηρίζονται στο I18N;Το I18N και το L10N δεν είναι ειδικά φτιαγμένα για το &os;. Την
δεδομένη στιγμή, υποστηρίζονται οι περισσότερες γνωστές γλώσσες,
συμπεριλαμβανομένων των: Κινεζικών, Γερμανικών, Γιαπωνέζικων,
Κορεατικών, Γαλλικών, Ρωσικών, Βιετναμέζικων, κ.α.Χρήση των Τοπικών ΡυθμίσεωνΤο I18N είναι στην πραγματικότητα μια σύμβαση, και δεν έχει
δημιουργηθεί αποκλειστικά για το &os;. Επιθυμούμε τη βοήθεια σας
ώστε το &os; να ακολουθεί αυτή τη σύμβαση.localeΟι τοπικές ρυθμίσεις βασίζονται σε τρεις βασικούς όρους:
Κωδικό Γλώσσας, Κωδικό Χώρας και Κωδικοποίηση. Τα ονόματα των τοπικών
ρυθμίσεων προκύπτουν από τους παραπάνω όρους, με τον τρόπο που
περιγράφεται παρακάτω:ΚωδικόςΓλώσσας_ΚωδικόςΧώρας.ΚωδικοποίησηΚωδικοί Γλωσσών και Χωρώνlanguage codescountry codesΓια να χρησιμοποιηθούν οι τοπικές ρυθμίσεις για μια συγκεκριμένη
γλώσσα σε ένα σύστημα &os; (ή σε άλλο σύστημα τύπου &unix; που
υποστηρίζει το πρότυπο I18N), ο χρήστης θα πρέπει να βρει τους
κωδικούς της συγκεκριμένης χώρας και γλώσσας (οι κωδικοί χωρών
καθοδηγούν τις εφαρμογές σχετικά με τη διάλεκτο της γλώσσας που πρέπει
να χρησιμοποιηθεί). Προγράμματα όπως φυλλομετρητές, εξυπηρετητές
ιστοσελίδων, εξυπηρετητές SMTP/POP κλπ. παίρνουν επίσης κάποιες
αποφάσεις που εξαρτώνται από τους κωδικούς αυτούς. Παρακάτω φαίνονται
μερικά παραδείγματα γλωσσών/χωρών:Κωδικός Γλώσσας/ΧώραςΠεριγραφήen_USΑγγλικά - Ηνωμένες Πολιτείεςru_RUΡώσικα - Ρωσίαzh_TWΠαραδοσιακά Κινέζικα - ΤαϊβάνΚωδικοποιήσειςencodingsASCIIΚάποιες γλώσσες χρησιμοποιούν κωδικοποιήσεις που δεν είναι ASCII,
αλλά περιέχουν χαρακτήρες 8-bit, wide, ή multibyte (δείτε τη
σελίδα manual &man.multibyte.3; για περισσότερες πληροφορίες). Οι
πιο καινούριες εφαρμογές συνήθως αναγνωρίζουν τους χαρακτήρες 8-bit.
Ανάλογα με την υλοποίηση, οι χρήστες μπορεί να χρειάζεται να
μεταγλωττίσουν μια εφαρμογή με υποστήριξη χαρακτήρων wide ή
multibyte, ή να προσαρμόσουν τις ρυθμίσεις του προγράμματος. Για να
έχετε την ικανότητα να εισάγετε και να επεξεργάζεστε χαρακτήρες
multibyte, η Συλλογή των Ports
του &os; διαθέτει προγράμματα για κάθε γλώσσα. Δείτε την
τεκμηρίωση για το I18N στο αντίστοιχο Port του &os;.Ειδικότερα, ο χρήστης χρειάζεται να διαβάσει την τεκμηρίωση της
εφαρμογής, για να αποφασίσει πως πρέπει να τη ρυθμίσει σωστά ή πως να
περάσει τις σωστές τιμές στο configure, το Makefile ή τον
μεταγλωττιστή.Θα πρέπει να έχετε κατά νου κάποια πράγματα:Σετ χαρακτήρων που εξαρτώνται από τη γλώσσα (single C chars
character set, δείτε την &man.multibyte.3;), π.χ.
ISO8859-1, ISO8859-15, KOI8-R, CP437.Κωδικοποιήσεις Wide ή multibyte, π.χ. EUC, Big5.Μπορείτε να δείτε την ενεργή λίστα των σετ χαρακτήρων στο
Μητρώο
IANA.Το &os; χρησιμοποιεί για τις τοπικές ρυθμίσεις κωδικοποιήσεις
συμβατές με το X11.Εφαρμογές I18NΣτο σύστημα πακέτων και ports του &os;, οι εφαρμογές που
σχετίζονται με το I18N έχουν στο όνομα τους τη λέξη
I18N ώστε να αναγνωρίζονται εύκολα. Ωστόσο, μπορεί
να μην υποστηρίζουν πάντοτε τη γλώσσα που χρειάζεστε.Τοπικές ΡυθμίσειςΕίναι συνήθως αρκετό να γίνει export η τιμή με την ονομασία της
επιθυμητής τοπικής ρύθμισης, μέσω της μεταβλητής περιβάλλοντος
LANG στο κέλυφος εισόδου. Αυτό μπορεί να γίνει στο
αρχείο ~/.login_conf του χρήστη, ή στο αρχείο
εκκίνησης του κελύφους του χρήστη (~/.profile,
~/.bashrc, ~/.cshrc).
Δεν είναι ανάγκη να θέσετε και τις υπόλοιπες μεταβλητές των τοπικών
ρυθμίσεων, όπως οι LC_CTYPE, LC_CTIME.
Για περισσότερες πληροφορίες, διαβάστε την τεκμηρίωση του &os; που
σχετίζεται με την υποστήριξη της επιθυμητής γλώσσας.Θα πρέπει να θέσετε τις δύο παρακάτω μεταβλητές περιβάλλοντος,
στα αρχεία ρυθμίσεων:POSIXΤην LANG για λειτουργίες που ανήκουν στην
οικογένεια &posix; &man.setlocale.3;MIMEΤην MM_CHARSET για το σύνολο χαρακτήρων MIME
των εφαρμογών.Το παραπάνω περιλαμβάνει την ρύθμιση του κελύφους χρήστη, την
ρύθμιση για μια συγκεκριμένη εφαρμογή, και τη ρύθμιση για τα
X11.Μέθοδοι Αλλαγής Τοπικών Ρυθμίσεωνlocalelogin classΥπάρχουν δύο μέθοδοι για την αλλαγή των τοπικών ρυθμίσεων, τις
οποίες και περιγράφουμε παρακάτω. Η πρώτη (την οποία και
συνιστούμε) υλοποιείται θέτοντας τιμές στις μεταβλητές περιβάλλοντος
στο login class, και η δεύτερη
αλλάζοντας τις τιμές των μεταβλητών περιβάλλοντος στο
αρχείο εκκίνησης του κελύφους
του χρήστη.Μέθοδος Κλάσεων Εισόδου (Login Class)Η μέθοδος αυτή επιτρέπει να γίνει η ρύθμιση των μεταβλητών
περιβάλλοντος μια φορά για κάθε κέλυφος, αντί να χρειάζεται να
τεθούν συγκεκριμένες τιμές στο αρχείο εκκίνησης του καθενός
χωριστά. Οι Ρυθμίσεις σε Επίπεδο
Χρήστη μπορούν να γίνουν από τον ίδιο το χρήστη, ενώ οι
Ρυθμίσεις σε Επίπεδο Διαχειριστή
απαιτούν προνόμια υπερχρήστη.Ρυθμίσεις σε Επίπεδο ΧρήστηΤο παρακάτω απλό παράδειγμα, δείχνει ένα αρχείο
.login_conf στον κατάλογο κάποιου χρήστη
στο οποίο και οι δύο μεταβλητές έχουν τεθεί για κωδικοποίηση
Latin-1:me:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO8859-1:Traditional ChineseBIG-5 encodingΠαρακάτω βλέπετε ένα .login_conf στο
οποίο οι μεταβλητές έχουν τεθεί για Παραδοσιακά Κινέζικα σε
κωδικοποίηση BIG-5. Παρατηρήστε ότι έχουμε θέσει πολύ
περισσότερες μεταβλητές, καθώς κάποιες εφαρμογές δεν σέβονται
σωστά τις μεταβλητές για Κινέζικα, Γιαπωνέζικα και
Κορεάτικα.#Users who do not wish to use monetary units or time formats
#of Taiwan can manually change each variable
me:\
:lang=zh_TW.Big5:\
:setenv=LC_ALL=zh_TW.Big:\
:setenv=LC_COLLATE=zh_TW.Big5:\
:setenv=LC_CTYPE=zh_TW.Big5:\
:setenv=LC_MESSAGES=zh_TW.Big5:\
:setenv=LC_MONETARY=zh_TW.Big5:\
:setenv=LC_NUMERIC=zh_TW.Big5:\
:setenv=LC_TIME=zh_TW.Big5:\
:charset=big5:\
:xmodifiers="@im=gcin": #Set gcin as the XIM Input ServerΓια περισσότερες πληροφορίες, δείτε τις Ρυθμίσεις σε Επίπεδο Διαχειριστή
και την &man.login.conf.5;.Ρυθμίσεις σε Επίπεδο ΔιαχειριστήΒεβαιωθείτε ότι έχει οριστεί η σωστή γλώσσα στην κλάση του
χρήστη, στο αρχείο /etc/login.conf.
Στο αρχείο αυτό θα πρέπει να υπάρχουν οι παρακάτω
ρυθμίσεις:language_name:accounts_title:\
:charset=MIME_charset:\
:lang=locale_name:\
:tc=default:Με βάση το προηγούμενο παράδειγμα μας που χρησιμοποιήσαμε
Latin-1, το αρχείο θα μοιάζει με το παρακάτω:german:German Users Accounts:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO8859-1:\
:tc=default:Πριν κάνετε αλλαγές στις Κλάσεις Εισόδου (Login Classes) των
χρηστών, εκτελέστε την παρακάτω εντολή:&prompt.root; cap_mkdb /etc/login.confώστε να ενεργοποιηθούν στο σύστημα οι αλλαγές που κάνατε στο
/etc/login.conf.Αλλαγή Κλάσεων Εισόδου μέσω της &man.vipw.8;vipwΧρησιμοποιήστε την vipw για να
προσθέσετε νέους χρήστες, και κάντε την καταχώριση να μοιάζει με
την παρακάτω:user:password:1111:11:language:0:0:User Name:/home/user:/bin/shΑλλαγή Κλάσεων Εισόδου μέσω της &man.adduser.8;adduserlogin classΧρησιμοποιήστε την adduser για να
προσθέσετε νέους χρήστες, και έπειτα ακολουθήστε τις παρακάτω
οδηγίες:Θέστε το defaultclass =
language στο
/etc/adduser.conf. Να έχετε υπόψη σας
ότι σε αυτή την περίπτωση, θα πρέπει να ορίσετε μια κλάση
default για όλους τους χρήστες άλλων
γλωσσών.Μια εναλλακτική λύση, είναι να απαντάτε κάθε φορά στην
ερώτησηEnter login class: default []: που εμφανίζεται από την &man.adduser.8;.Ακόμα μια εναλλακτική λύση, είναι να χρησιμοποιήσετε το
παρακάτω σε κάθε χρήστη που θέλετε να προσθέσετε και ο
οποίος χρησιμοποιεί διαφορετική γλώσσα:&prompt.root; adduser -class languageΑλλαγή Κλάσεων Εισόδου μέσω της &man.pw.8;pwΑν χρησιμοποιείτε την &man.pw.8; για να προσθέσετε νέους
χρήστες, καλέστε την με τον παρακάτω τρόπο:&prompt.root; pw useradd user_name -L languageΜέθοδος Αρχείων Εκκίνησης ΚελύφουςΗ μέθοδος αυτή δεν συνίσταται, καθώς απαιτεί διαφορετικές
ρυθμίσεις για κάθε διαφορετικό πρόγραμμα κελύφους που
χρησιμοποιείται. Προτιμήστε καλύτερα την μέθοδο των
Κλάσεων Εισόδου.MIMElocaleΓια να προσθέσετε τις τοπικές ρυθμίσεις και το σετ χαρακτήρων
MIME, ρυθμίστε απλώς τις δύο μεταβλητές περιβάλλοντος που
φαίνονται παρακάτω στο αρχείο
/etc/profile ή/και στο
/etc/csh.login. Θα χρησιμοποιήσουμε τα
Γερμανικά ως γλώσσα για το παρακάτω παράδειγμα:Στο /etc/profile:LANG=de_DE.ISO8859-1; export LANGMM_CHARSET=ISO-8859-1; export MM_CHARSETΉ στο /etc/csh.login:setenv LANG de_DE.ISO8859-1setenv MM_CHARSET ISO-8859-1Εναλλακτικά, μπορείτε να προσθέσετε τις παραπάνω οδηγίες στο
/usr/share/skel/dot.profile (αντίστοιχα με
τις οδηγίες για το /etc/profile που είδαμε
παραπάνω), ή στο /usr/share/skel/dot.login
(αντίστοιχα με τις οδηγίες για το
/etc/csh.login που είδαμε επίσης
παραπάνω).Για το X11:Στο $HOME/.xinitrc:LANG=de_DE.ISO8859-1; export LANGΉ:setenv LANG de_DE.ISO8859-1Ανάλογα με το κέλυφος που χρησιμοποιείτε (δείτε
παραπάνω).Ρυθμίσεις για την ΚονσόλαΓια όλα τα single C σετ χαρακτήρων, μπορείτε να θέσετε τις
γραμματοσειρές της κονσόλας στο /etc/rc.conf
για την επιθυμητή γλώσσα, γράφοντας:font8x16=font_name
font8x14=font_name
font8x8=font_nameΤο font_name εδώ προκύπτει από το
αντίστοιχο αρχείο του καταλόγου
/usr/share/syscons/fonts, αφαιρώντας την
κατάληξη .fnt.sysinstallkeymapscreenmap
- Βεβαιωθείτε επίσης ότι χρησιμοποιείτε την κατάλληλη αντιστοίχηση
+ Αν χρειάζεται, χρησιμοποιήστε την κατάλληλη αντιστοίχηση
πληκτρολογίου (keymap) και οθόνης για το σετ χαρακτήρων single C που
χρησιμοποιείτε, μέσω του
- sysinstall (/stand/sysinstall
- σε εκδόσεις του &os; παλιότερες από την 5.2).
+ sysinstall.
Μόλις εκτελέσετε το sysinstall, επιλέξτε
το Configure, και έπειτα το
Console. Εναλλακτικά, μπορείτε να
προσθέσετε το παρακάτω στο /etc/rc.conf:scrnmap=screenmap_name
keymap=keymap_name
keychange="fkey_number sequence"Στην περίπτωση αυτή, το screenmap_name
προέρχεται από ένα αρχείο του καταλόγου
/usr/share/syscons/scrnmaps, χωρίς την κατάληξη
.scm. Η αντιστοίχηση οθόνης μαζί με την
αντίστοιχη γραμματοσειρά, χρησιμοποιείται συνήθως για την επέκταση του
8ου bit στο 9o, για κάρτες VGA που χρησιμοποιούν μήτρα χαρακτήρων με
8 στήλες.Αν έχετε ενεργοποιημένο τον δαίμονα
moused στο αρχείο
/etc/rc.conf:moused_enable="YES"καλό θα είναι να εξετάσετε τις πληροφορίες σχετικά με τον δρομέα
του ποντικιού που εμφανίζονται στην παρακάτω παράγραφο.mousedΟ προεπιλεγμένος δρομέας του ποντικιού που χρησιμοποιείται από το
πρόγραμμα οδήγησης &man.syscons.4;, καταλαμβάνει τις θέσεις 0xd0-0xd3
του συνόλου χαρακτήρων. Αν αυτή η περιοχή χαρακτήρων δεν είναι
διαθέσιμη στη γλώσσα που χρησιμοποιείτε, θα πρέπει να μετακινήσετε την
περιοχή του δρομέα έξω από αυτήν. Για να γίνει αυτό στο &os;,
προσθέστε την ακόλουθη γραμμή στο
/etc/rc.conf:mousechar_start=3Το keymap_name προέρχεται από ένα
αρχείο του καταλόγου /usr/share/syscons/keymaps,
χωρίς την κατάληξη .kbd. Αν δεν είστε σίγουρος
για την αντιστοίχηση πληκτρολογίου που χρειάζεται να χρησιμοποιήσετε,
μπορείτε να χρησιμοποιήσετε το &man.kbdmap.1; για να κάνετε δοκιμές
σε διάφορες αντιστοιχίσεις, χωρίς να χρειάζεται να κάνετε
επανεκκίνηση.Η λειτουργία keychange χρησιμοποιείται συνήθως
για τον προγραμματισμό των πλήκτρων λειτουργιών (function keys), ώστε
να ταιριάζουν με τον επιλεγμένο τύπο τερματικού, καθώς οι ακολουθίες
των πλήκτρων λειτουργιών δεν μπορούν να καθοριστούν στις
αντιστοιχίσεις πληκτρολογίου.Βεβαιωθείτε επίσης ότι έχετε ρυθμίσει το σωστό τύπου τερματικού
στο /etc/ttys για όλες τις καταχωρίσεις
ttyv*. Τη δεδομένη στιγμή, οι προκαθορισμένες
αντιστοιχίες είναι:Σετ ΧαρακτήρωνΤύπος ΤερματικούISO8859-1 ή ISO8859-15cons25l1ISO8859-2cons25l2ISO8859-7cons25l7KOI8-Rcons25rKOI8-Ucons25uCP437 (προεπιλεγμένο VGA)cons25US-ASCIIcons25wΓια γλώσσες με χαρακτήρες wide ή multibyte, χρησιμοποιήστε το
σωστό &os; port στον κατάλογο
/usr/ports/language.
Μερικές θύρες εμφανίζονται ως κονσόλα, ενώ το σύστημα τις βλέπει ως
σειριακά vtty, και έτσι πρέπει να παρακρατήσετε αρκετά vtty, τόσο για
το X11 όσο και για την ψευτό-σειριακή κονσόλα. Παρακάτω θα βρείτε
μια μερικώς ενημερωμένη λίστα για χρήση άλλων γλωσσών στην
κονσόλα:ΓλώσσαΤοποθεσίαΠαραδοσιακά Κινέζικα (BIG-5)chinese/big5conΓιαπωνέζικαjapanese/kon2-16dot
ή
japanese/mule-freewnnΚορεάτικαkorean/hanΡύθμιση του X11Αν και το X11 δεν είναι μέρος του &os; Project, θα δώσουμε
εδώ κάποιες χρήσιμες πληροφορίες για όσους το χρησιμοποιούν στο &os;.
Για περισσότερες πληροφορίες, δείτε την δικτυακή τοποθεσία του &xorg;,
ή του εξυπηρετητή X11 που πρόκειται να χρησιμοποιήσετε.Στο αρχείο ~/.Xresources, μπορείτε
επιπρόσθετα να αλλάξετε και άλλες ρυθμίσεις που σχετίζονται με το
I18N (π.χ. γραμματοσειρές, μενού, κ.λ.π.).Απεικόνιση ΓραμματοσειρώνX11 True Type font serverΕγκαταστήστε τον εξυπηρετητή &xorg;
(x11-servers/xorg-server)
ή τον εξυπηρετητή &xfree86;
(x11-servers/XFree86-4-Server),
και έπειτα εγκαταστήστε τις γραμματοσειρές &truetype; για την
επιθυμητή γλώσσα. Με τις σωστές τοπικές ρυθμίσεις, θα μπορείτε να
δείτε την επιλεγμένη γλώσσα στα μενού και τα μηνύματα του γραφικού
περιβάλλοντος.Εισαγωγή μη-Αγγλικών ΧαρακτήρωνX11 Input Method (XIM)Η μέθοδος εισόδου X11 (XIM, X11 Input Method), είναι ένα νέο
πρότυπο για όλους τους πελάτες X11. Όλες οι εφαρμογές του X11 θα
πρέπει να γράφονται ως πελάτες του XIM, και να λαμβάνουν είσοδο από
εξυπηρετητές εισόδου XIM. Υπάρχουν διαθέσιμοι διάφοροι
εξυπηρετητές XIM, για διαφορετικές γλώσσες.Ρύθμιση ΕκτυπωτήΚάποια σετ χαρακτήρων single C είναι συνήθως ενσωματωμένα στο
ίδιο το υλικό των εκτυπωτών. Τα σετ χαρακτήρων τύπου wide ή multibyte
απαιτούν ειδικές ρυθμίσεις, και συνιστούμε να χρησιμοποιήσετε το
apsfilter. Μπορείτε επίσης να μετατρέψετε
το έγγραφο σας σε &postscript; ή PDF, χρησιμοποιώντας εργαλεία ειδικά
φτιαγμένα για τη συγκεκριμένη γλώσσα.Πυρήνας και Συστήματα ΑρχείωνΤο σύστημα αρχείων FFS (fast filesystem) του &os; μπορεί να
διαχειριστεί ονόματα αρχείων που ανήκουν σε σετ single C (είναι 8-bit
clean, δείτε και το &man.multibyte.3;), αλλά δεν αποθηκεύει το σετ
χαρακτήρων που χρησιμοποιείται. Με άλλα λόγια, είναι 8-bit αλλά δεν
γνωρίζει τίποτα για την κωδικοποίηση των χαρακτήρων. Επίσημα, το FFS
δεν υποστηρίζει ακόμα σετ χαρακτήρων wide ή multibyte. Υπάρχουν
ωστόσο κάποια ανεξάρτητα patches για το FFS που υποστηρίζουν αυτές τις
δυνατότητες. Πρόκειται μόνο για προσωρινές και μη μεταφέρσιμες λύσεις
ή hacks, και έχουμε αποφασίσει να μην τα περιλάβουμε στο κεντρικό
δέντρο πηγαίου κώδικα. Δείτε τις ιστοσελίδες των αντίστοιχων γλωσσών
για περισσότερες πληροφορίες και για να ανακτήσετε τα απαραίτητα
αρχεία.DOSUnicodeΤο σύστημα αρχείων &ms-dos; στο &os; έχει την δυνατότητα να
ρυθμιστεί ώστε να μετατρέπει μεταξύ των σετ χαρακτήρων
Unicode, του &ms-dos;, και του σετ χαρακτήρων που έχει επιλεγεί για
το σύστημα αρχείων του &os;. Για περισσότερες λεπτομέρειες, δείτε τη
σελίδα manual &man.mount.msdosfs.8;.Μεταγλώττιση Προγραμμάτων I18NΠολλά ports του &os; διαθέτουν υποστήριξη I18N. Σε μερικά από αυτά,
το -I18N είναι μέρος του ονόματος τους. Τα προγράμματα αυτά, και πολλά
περισσότερα, έχουν ενσωματωμένη υποστήριξη για I18N και δεν χρειάζονται
άλλες ειδικές ρυθμίσεις.MySQLΩστόσο, σε κάποιες εφαρμογές όπως η
MySQL, θα πρέπει να ρυθμιστεί το
Makefile με το επιθυμητό σετ χαρακτήρων. Αυτό
συνήθως γίνεται περνώντας μια τιμή στο
configure στον πηγαίο κώδικα, ή αλλάζοντας
το ίδιο το Makefile.Τοπικές Ρυθμίσεις για Συγκεκριμένες ΓλώσσεςAndreyChernovΑρχική συνεισφορά του Ρώσικη Γλώσσα (Κωδικοποίηση KOI8-R)localizationRussianΓια περισσότερες πληροφορίες σχετικά με την κωδικοποίηση KOI8-R,
δείτε τις Αναφορές Σχετικά με το Σετ
Χαρακτήρων KOIR-8 (Ρωσικό Σύνολο Χαρακτήρων).Τοπικές ΡυθμίσειςΤοποθετήστε τις ακόλουθες γραμμές στο αρχείο σας
~/.login_conf:me:My Account:\
:charset=KOI8-R:\
:lang=ru_RU.KOI8-R:Για παραδείγματα που σχετίζονται με τις
Τοπικές Ρυθμίσεις, δείτε
προηγούμενες ενότητες σε αυτό το κεφάλαιο.Ρύθμιση ΚονσόλαςΠροσθέστε την ακόλουθη γραμμή στο αρχείο
/etc/rc.conf:mousechar_start=3Χρησιμοποιήστε επίσης τις παρακάτω ρυθμίσεις στο
/etc/rc.conf:keymap="ru.koi8-r"
scrnmap="koi8-r2cp866"
font8x16="cp866b-8x16"
font8x14="cp866-8x14"
font8x8="cp866-8x8"Για κάθε καταχώριση ttyv* στο αρχείο
/etc/ttys, χρησιμοποιήστε το
cons25r ως τύπο τερματικού.Για παραδείγματα που σχετίζονται με την ρύθμιση της
κονσόλας, δείτε προηγούμενες
ενότητες αυτού του κεφαλαίου.Ρύθμιση ΕκτυπωτήprintersΚαθώς οι περισσότεροι εκτυπωτές που διαθέτουν Ρωσικούς
χαρακτήρες έχουν ενσωματωμένη την κωδικοσελίδα CP866, θα χρειαστείτε
ειδικό φίλτρο εξόδου για να μετατρέψετε από το KOI8-R στο CP866.
Το φίλτρο αυτό εγκαθίσταται από προεπιλογή στο
/usr/libexec/lpr/ru/koi2alt. Η καταχώριση για
ένα Ρώσικο εκτυπωτή στο /etc/printcap θα
μοιάζει με την παρακάτω:lp|Russian local line printer:\
:sh:of=/usr/libexec/lpr/ru/koi2alt:\
:lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:Δείτε το &man.printcap.5; για πιο λεπτομερή περιγραφή.Σύστημα Αρχείων &ms-dos; και Ρώσικα Ονόματα ΑρχείωνΤο παρακάτω υπόδειγμα καταχώρισης στο &man.fstab.5; ενεργοποιεί
την υποστήριξη για Ρώσικα ονόματα αρχείων σε προσαρτημένα συστήματα
αρχείων τύπου &ms-dos;:/dev/ad0s2 /dos/c msdos rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0Η επιλογή επιλέγει τις τοπικές ρυθμίσεις που
θα χρησιμοποιηθούν, και η ορίζει τον πίνακα
μετατροπής χαρακτήρων. Για να χρησιμοποιήσετε την επιλογή
βεβαιωθείτε ότι έχετε προσαρτήσει την κατάτμηση
/usr πριν την κατάτμηση &ms-dos;, καθώς οι
πίνακες μετατροπής βρίσκονται στο
/usr/libdata/msdosfs. Για περισσότερες
πληροφορίες, δείτε τη σελίδα manual του
&man.mount.msdosfs.8;.Ρύθμιση X11Εκτελέστε πρώτα τις γενικές
τοπικές ρυθμίσεις που έχουμε ήδη περιγράψει.Αν χρησιμοποιείτε τον εξυπηρετητή
&xorg;, εγκαταστήστε το πακέτο
x11-fonts/xorg-fonts-cyrillic.Ελέγξτε την ενότητα "Files" στο αρχείο
/etc/X11/xorg.conf. Θα πρέπει να
προσθέσετε την παρακάτω γραμμή πριν
από οποιαδήποτε άλλη καταχώριση
FontPath:FontPath "/usr/local/lib/X11/fonts/cyrillic"Δείτε στην Συλλογή των Ports για περισσότερες κυριλλικές
γραμματοσειρές.Για την ενεργοποίηση του Ρωσικού πληκτρολογίου, προσθέστε
τις παρακάτω γραμμές στην ενότητα "Keyboard"
του αρχείου xorg.conf:Option "XkbLayout" "us,ru"
Option "XkbOptions" "grp:toggle"Βεβαιωθείτε επίσης ότι η γραμμή
XkbDisable είναι ανενεργή (μαρκαρισμένη ως
σχόλιο).Αν χρησιμοποιήσετε το grp:toggle
η εναλλαγή RUS/LAT θα γίνεται με το Δεξιό Alt,
ενώ αν θέσετε grp:ctrl_shift_toggle,
η εναλλαγή θα γίνεται με το
CtrlShift.
Για grp:caps_toggle, η εναλλαγή RUS/LAT θα
γίνεται με το CapsLock.
Η κανονική λειτουργία του CapsLock εξακολουθεί
να είναι διαθέσιμη μέσω του συνδυασμού πλήκτρων
ShiftCapsLock
(μόνο σε κατάσταση LAT). Το grp:caps_toggle
για κάποιο άγνωστο λόγο, δεν λειτουργεί στο
&xorg;.Αν το πληκτρολόγιο σας διαθέτει πλήκτρα
&windows;, και έχετε παρατηρήσει ότι κάποια από
τα μη-αλφαριθμητικά πλήκτρα έχουν λάθος αντιστοίχηση όταν είστε
σε κατάσταση RUS, προσθέστε την παρακάτω γραμμή στο αρχείο
xorg.conf:Option "XkbVariant" ",winkeys"Το Ρώσικο XKB πληκτρολόγιο ίσως δεν λειτουργεί με
εφαρμογές που δεν έχουν φτιαχτεί για τις αντίστοιχες τοπικές
ρυθμίσεις.Οι εφαρμογές που τηρούν τις ελάχιστες προδιαγραφές τοπικών
ρυθμίσεων, θα πρέπει να καλούν από νωρίς τη συνάρτηση
XtSetLanguageProc (NULL, NULL, NULL); μέσα
στον κώδικα τους.Δείτε το KOI8-R για
το σύστημα X Window για περισσότερες οδηγίες σχετικά με
την δημιουργία εφαρμογών X11 που να χρησιμοποιούν τοπικές
ρυθμίσεις.Τοπικές Ρυθμίσεις για Παραδοσιακά Κινέζικα ΤαϊβάνlocalizationTraditional ChineseΤο &os;-Taiwan Project έχει δημιουργήσει ένα HOWTO για τα
Κινέζικα στο &os;, το οποίο μπορείτε να βρείτε στη διεύθυνση
,
χρησιμοποιώντας πολλά Κινέζικα ports.
Ο τρέχων συντάκτης του Κινέζικου &os; Howto είναι ο
Shen Chuan-Hsing statue@freebsd.sinica.edu.tw.
Ο Chuan-Hsing Shen statue@freebsd.sinica.edu.tw
έχει δημιουργήσει την Κινέζικη Συλλογή
&os; (CFC) χρησιμοποιώντας την κωδικοποίηση
zh-L10N-tut του &os;-Ταΐβάν. Τα πακέτα και τα
scripts διατίθενται στη διεύθυνση .Τοπικές Ρυθμίσεις για την Γερμανική Γλώσσα (για Όλες τις Γλώσσες
που Βασίζονται στο ISO 8859-1)localizationGermanΟ Slaven Rezic eserte@cs.tu-berlin.de έχει γράψει
ένα οδηγό για την χρήση των umlauts σε ένα μηχάνημα &os;. Ο οδηγός
είναι γραμμένος στα Γερμανικά και διατίθεται στην τοποθεσία
.Τοπικές Ρυθμίσεις για την Ελληνική ΓλώσσαlocalizationGreekΟ &a.el.kokkalis; έχει γράψει ένα πλήρες άρθρο για την υποστήριξη
της Ελληνικής γλώσσας στο &os;. Το άρθρο αυτό διατίθεται ως μέρος της
επίσημης Ελληνικής τεκμηρίωσης του &os;, στην τοποθεσία http://www.freebsd.org/doc/el_GR.ISO8859-7/artilces/greek-language-support/index.html.Τοπικές Ρυθμίσεις Για Γιαπωνέζικα και ΚορεάτικαlocalizationJapaneselocalizationKoreanΓια Γιαπωνέζικα, δείτε στην τοποθεσία
,
ενώ για Κορεάτικα, δείτε στην τοποθεσία
.Τεκμηρίωση του &os; σε Γλώσσες Εκτός της ΑγγλικήςΚάποιοι εθελοντές του &os; έχουν μεταφράσει τμήματα της
τεκμηρίωσης του σε άλλες γλώσσες. Οι μεταφράσεις αυτές διατίθενται
μέσω συνδέσμων στην κύρια δικτυακή
τοποθεσία του &os; ή στον κατάλογο
/usr/share/doc.
diff --git a/el_GR.ISO8859-7/books/handbook/ports/chapter.sgml b/el_GR.ISO8859-7/books/handbook/ports/chapter.sgml
index f29a1a584a..822c0c5b69 100644
--- a/el_GR.ISO8859-7/books/handbook/ports/chapter.sgml
+++ b/el_GR.ISO8859-7/books/handbook/ports/chapter.sgml
@@ -1,1644 +1,1642 @@
Εγκατάσταση Εφαρμογών: Πακέτα και PortsΣύνοψηportsPackagesΤο &os; συνοδεύεται από μία πλούσια συλλογή από προγράμματα σαν
μέρος του βασικού συστήματος. Όμως, λίγα μπορεί να κάνει κάποιος πριν
βρεθεί στην ανάγκη να εγκαταστήσει μια πρόσθετη εφαρμογή για να
υλοποιήσει μια πραγματική εργασία. Το &os; παρέχει δυο συμπληρωματικές
τεχνολογίες για να εγκαταστήσετε πρόσθετες εφαρμογές στο σύστημα σας:
τη Συλλογή των Ports (Ports Collection, για εγκατάσταση από τον
πηγαίο κώδικα), και τα πακέτα (packages, για εγκατάσταση από
προ-μεταγλωττισμένα εκτελέσιμα πακέτα). Κάθε μία από τις δυο μεθόδους
μπορεί να χρησιμοποιηθεί για να εγκαταστήσετε τις νεότερες εκδόσεις από
τις αγαπημένες σας εφαρμογές, από τοπικά αποθηκευτικά μέσα ή απευθείας
από το δίκτυο.Αφού διαβάσετε αυτό το κεφάλαιο, θα ξέρετε:Πως να εγκαθιστάτε προ-μεταγλωττισμένα πακέτα λογισμικού.Πως να μεταγλωττίζετε πρόσθετο λογισμικό από τον πηγαίο κώδικα
χρησιμοποιώντας την Συλλογή των Ports.Πως να κάνετε απεγκατάσταση εγκαταστημένων πακέτων ή
ports.Πως να αλλάζετε τις προκαθορισμένες ρυθμίσεις που χρησιμοποιεί
η Συλλογή των Ports.Πως να βρίσκετε τα κατάλληλα πακέτα λογισμικού.Πως να αναβαθμίζετε τις εφαρμογές σας.Επισκόπησή της εγκατάστασης λογισμικούΑν έχετε χρησιμοποιήσει ένα &unix; σύστημα στο παρελθόν, θα
γνωρίζετε ότι η συνηθισμένη διαδικασία για την εγκατάσταση πρόσθετου
λογισμικού είναι περίπου η παρακάτω:Κατέβασμα του λογισμικού, που μπορεί να
διανέμεται σε μορφή πηγαίου κώδικα, ή σαν εκτελέσιμο.Αποσυμπίεση του λογισμικού από την μορφή της διανομής του
(συνήθως ένα tarball συμπιεσμένο με το &man.compress.1;,
&man.gzip.1;, ή &man.bzip2.1;).Εντοπισμός της τεκμηρίωσης (πιθανώς ένα αρχείο
INSTALL ή README
ή μερικά αρχεία μέσα σε ένα υποκατάλογο doc/)
και ανάγνωσή τους για το πως θα εγκατασταθεί το λογισμικό.Αν το λογισμικό διανέμεται με τη μορφή πηγαίου κώδικα,
μεταγλώττιση του. Αυτό μπορεί να περιλαμβάνει την επεξεργασία ενός
Makefile, ή την εκτέλεση ενός
configure script, και άλλες εργασίες.Δοκιμή και εγκατάσταση του λογισμικού.Και αυτά μόνο αν όλα πάνε καλά. Αν εγκαθιστάτε ένα λογισμικό που
δεν έχει μεταφερθεί στο &os; ίσως να πρέπει να τροποποιήσετε τον πηγαίο
κώδικα για να δουλέψει σωστά.Αν το θέλετε, μπορείτε να συνεχίσετε να εγκαθιστάτε λογισμικό με
τον παραδοσιακό τρόπο στο &os;. Όμως, το &os;
παρέχει δυο τεχνολογίες που μπορούν να σας γλιτώσουν από πολύ κόπο:
τα πακέτα και τα ports. Την στιγμή που γράφτηκε αυτό το κείμενο,
διατίθονταν με αυτόν τον τρόπο πάνω από &os.numports; πρόσθετες
εφαρμογές.Για οποιαδήποτε εφαρμογή, το αντίστοιχο &os; πακέτο της
είναι ένα μοναδικό αρχείο που πρέπει εσείς να κατεβάσετε.
Το πακέτο περιέχει προ-μεταγλωττισμένα αντίγραφα από όλες τις εντολές
της εφαρμογής, όπως επίσης και αρχεία παραμετροποίησης ή τεκμηρίωσης.
Ένα τέτοιο πακέτο σε μορφή αρχείου, μπορείτε να το χειριστείτε με τις
εντολές διαχείρισής πακέτων του &os;, όπως οι &man.pkg.add.1;,
&man.pkg.delete.1;, &man.pkg.info.1;, και πάει λέγοντας.
Η εγκατάσταση μιας νέας εφαρμογής μπορεί να γίνει με μία μόνο
εντολή.Ένα &os; port για μία εφαρμογή είναι μια συλλογή από αρχεία
σχεδιασμένα για να αυτοματοποιήσουν την διαδικασία μεταγλώττισης της
εφαρμογής από τον πηγαίο κώδικα.Θυμηθείτε ότι υπάρχουν μερικά βήματα που θα πρέπει λογικά να κάνετε
αν μεταγλωττίσετε ένα πρόγραμμα μόνος σας (κατέβασμα,
αποσυμπίεση, προσαρμογή (patching), μεταγλώττιση, εγκατάσταση).
Τα αρχεία που αποτελούν ένα port περιέχουν όλες τις απαραίτητες
πληροφορίες για να επιτρέψουν στο σύστημα να κάνει όλα αυτά για εσάς.
Εσείς εκτελείτε μερικές απλές εντολές, και ο πηγαίος κώδικας για την
εφαρμογή αυτόματα κατεβαίνει, αποσυμπιέζεται,
προσαρμόζεται, μεταγλωττίζεται, και εγκαθίσταται για εσάς.Στην πραγματικότητα, το σύστημα ports μπορεί επίσης να
χρησιμοποιηθεί για να δημιουργηθούν πακέτα που μπορείτε αργότερα να
διαχειριστείτε με την pkg_add και τις άλλες εντολές
διαχείρισής πακέτων που θα αναφερθούν σε λίγο.Τόσο τα πακέτα, όσο και τα ports κατανοούν τις
εξαρτήσεις (dependencies). Ας υποθέσουμε ότι
θέλετε να εγκαταστήσετε μία εφαρμογή που εξαρτάται από μία συγκεκριμένη
βιβλιοθήκη για να λειτουργήσει. Τόσο η εφαρμογή, όσο και η βιβλιοθήκη
διατίθενται ως πακέτα και ports του &os;. Αν χρησιμοποιήσετε την εντολή
pkg_add ή το σύστημα των ports για να εγκαταστήσετε
την εφαρμογή, αμφότερα θα παρατηρήσουν ότι η βιβλιοθήκη δεν είναι
εγκατεστημένη, και αυτόματα θα την εγκαταστήσουν πριν από το
πρόγραμμα.Έχοντας αναφέρει ότι οι δύο τεχνολογίες είναι αρκετά όμοιες, ίσως να
αναρωτιέστε γιατί το &os; προσφέρει και τις δύο. Τα πακέτα και τα
ports αμφότερα έχουν τα δικά τους πλεονεκτήματα, και το τι θα
χρησιμοποιήσετε εξαρτάται από την δική σας προτίμηση.Πλεονεκτήματα των ΠακέτωνΈνα συμπιεσμένο tarball πακέτου είναι συνήθως μικρότερο από
το συμπιεσμένο tarball που περιέχει τον πηγαίο κώδικα για την
εφαρμογή.Τα πακέτα δεν χρειάζονται μεταγλώττιση. Για
μεγάλες εφαρμογές, όπως είναι ο
Mozilla, το
KDE, ή το
GNOME αυτό μπορεί να είναι σημαντικό,
ιδιαίτερα αν βρίσκεστε σε ένα αργό μηχάνημα.Τα πακέτα δεν απαιτούν να κατανοήσετε την διαδικασία
που σχετίζεται με την μεταγλώττιση λογισμικού στο &os;.Πλεονεκτήματα των PortsΤα πακέτα συνήθως είναι μεταγλωττισμένα με συντηρητικές
επιλογές, επειδή πρέπει να λειτουργούν στον μέγιστο αριθμό
συστημάτων. Με εγκατάσταση από το port, μπορείτε να ρυθμίσετε τις
επιλογές μεταγλώττισης (για παράδειγμα) να δημιουργήσουν εκτελέσιμο
κώδικα που να εκμεταλλεύεται τις ικανότητες ενός Pentium 4 ή Athlon
επεξεργαστή.Μερικές εφαρμογές έχουν επιλογές μεταγλώττισης που σχετίζονται
με το τι μπορούν να κάνουν και τι όχι. Για παράδειγμα, ο
Apache μπορεί να μεταγλωττιστεί με ένα
ευρύ φάσμα από επιλογές. Μεταγλωττίζοντας τον από το port, δεν
είναι ανάγκη να δεχτείτε τις προεπιλεγμένες επιλογές, μπορείτε να
κάνετε τις δικές σας.Σε μερικές περιπτώσεις, μπορεί να υπάρχουν πολλαπλά πακέτα
για την ίδια εφαρμογή, με διαφορετικές ρυθμίσεις. Για παράδειγμα,
το Ghostscript διατίθεται ως ένα πακέτο
ghostscript και ένα πακέτο
ghostscript-nox11, αναλόγως αν
θα εγκαταστήσετε ή όχι έναν X11 server. Αυτού του τύπου
οι ρυθμίσεις είναι δυνατές με τα πακέτα, αλλά γρήγορα
γίνονται αδύνατες αν μία εφαρμογή έχει περισσότερες από μία ή δύο
διαφορετικές ρυθμίσεις μεταγλώττισης.Οι συνθήκες των αδειών διανομής από μερικές διανομές
λογισμικού, απαγορεύουν την διανομή εκτελέσιμου κώδικα. Πρέπει να
διανεμηθούν με την μορφή πηγαίου κώδικα.Μερικά άτομα δεν εμπιστεύονται τα έτοιμα εκτελέσιμα.
Τουλάχιστον με τον πηγαίο κώδικα, μπορείτε (θεωρητικά) να τον
διαβάσετε και να ψάξετε για πιθανά προβλήματα μόνος σας.Αν έχετε τοπικά, δικά σας patches, θα χρειαστείτε τον πηγαίο
κώδικα για να τα εφαρμόσετε.Μερικά άτομα γουστάρουν να έχουν τον πηγαίο κώδικα, ώστε να τον
διαβάσουν αν βαρεθούνε, να τον αλλάξουν (hack), να δανειστούν από
αυτόν (αν βέβαια το επιτρέπει η άδεια), κ.λ.π.Για να είστε ενήμερος για τα ανανεωμένα ports, εγγραφείτε στην
&a.ports; και στην &a.ports-bugs;.Πριν εγκαταστήσετε οποιοδήποτε εφαρμογή, πρέπει να ελέγχετε το
για θέματα ασφαλείας
που σχετίζονται με την εφαρμογή σας.Μπορείτε επίσης να εγκαταστήσετε το ports-mgmt/portaudit το οποίο αυτόματα
θα ελέγχει όλες τις εγκαταστημένες εφαρμογές για γνωστά τρωτά
σημεία. Έλεγχος επίσης θα πραγματοποιείται πριν τη μεταγλώττιση
οποιουδήποτε port. Στο ενδιάμεσο, μπορείτε να χρησιμοποιείτε την
εντολή portaudit -F -a αφότου έχετε πρώτα
εγκαταστήσει μερικά πακέτα.Το υπόλοιπο αυτού του κεφαλαίου εξηγεί πως να χρησιμοποιήσετε τα
πακέτα και τα ports για να εγκαταστήσετε και να διαχειριστείτε πρόσθετο
λογισμικό στο &os;.Βρίσκοντας την Εφαρμογή σαςΠριν εγκαταστήσετε οποιαδήποτε εφαρμογή πρέπει να γνωρίζετε τι
θέλετε να κάνει, και πως ονομάζεται η εφαρμογή.Η λίστα των διαθέσιμων εφαρμογών στο &os; μεγαλώνει συνεχώς.
Ευτυχώς, υπάρχουν πολλοί τρόποι να βρείτε αυτό που θέλετε:Στη δικτυακή τοποθεσία του &os; θα βρείτε μια
λίστα από όλες τις διαθέσιμες εφαρμογές, στο http://www.FreeBSD.org/ports/.
Η λίστα αυτή ανανεώνεται συχνά, ενώ υπάρχει και δυνατότητα
αναζήτησης. Τα ports είναι χωρισμένα σε κατηγορίες, και μπορείτε
να αναζητήσετε μία εφαρμογή είτε με το όνομα (αν το ξέρετε), ή να
δείτε όλες τις εφαρμογές που είναι διαθέσιμες σε μια
κατηγορία.FreshPortsΟ Dan Langille διατηρεί το FreshPorts, στο . Το FreshPorts
καταγράφει τις αλλαγές των εφαρμογών στο δέντρο των ports καθώς
συμβαίνουν, επιτρέποντάς σας να παρακολουθείτε ένα
ή περισσότερα ports, και μπορεί να σας στείλει email όταν αυτά
ανανεώνονται.FreshMeatΑν δεν γνωρίζετε το όνομα της εφαρμογής που θέλετε,
δοκιμάστε να χρησιμοποιήσετε ένα site σαν το FreshMeat () για να βρείτε μία
εφαρμογή, και μετά μπορείτε να ελέγξετε ξανά το site του &os; για
να δείτε αν η εφαρμογή έχει γίνει port.Αν ξέρετε το ακριβές όνομα του port, και θέλετε μόνο να
βρείτε σε ποια κατηγορία είναι, μπορείτε να χρησιμοποιήσετε την
εντολή &man.whereis.1;. Απλά γράψτε
whereis αρχείο, όπου
αρχείο είναι το πρόγραμμα που θέλετε να
εγκαταστήσετε. Αν αυτό βρίσκεται στο σύστημα σας, η εντολή θα σας
πει που είναι, όπως παρακάτω:&prompt.root; whereis lsof
lsof: /usr/ports/sysutils/lsofΑυτό μας λέει ότι το lsof (ένα εργαλείο
συστήματος) μπορεί να βρεθεί στον κατάλογο
/usr/ports/sysutils/lsof.Επιπρόσθετα, μπορείτε να χρησιμοποιήσετε μια απλή εντολή
&man.echo.1; για να εντοπίσετε την τοποθεσία κάποιου προγράμματος
μέσα στα ports. Για παράδειγμα:&prompt.root; echo /usr/ports/*/*lsof*
/usr/ports/sysutils/lsofΣημειώστε ότι το παραπάνω θα δείξει επίσης και οποιαδήποτε
αρχεία έχουν κατέβει στον κατάλογο
/usr/ports/distfiles εφόσον
ταιριάζουν στην αναζήτηση.Ακόμη ένας τρόπος να βρείτε ένα συγκεκριμένο port, είναι
χρησιμοποιώντας τον εσωτερικό μηχανισμό αναζήτησης της Συλλογής των
Ports. Γα να χρησιμοποιήσετε αυτό τον τρόπο αναζήτησης, Θα
χρειαστεί να βρίσκεστε στον κατάλογο
/usr/ports. Όταν βρεθείτε σε αυτόν τον
κατάλογο, εκτελέστε το make search
name=όνομα--προγράμματος όπου
όνομα--προγράμματος είναι το όνομα
του προγράμματος που θέλετε να βρείτε. Για παράδειγμα, αν αναζητάτε
το lsof:&prompt.root; cd /usr/ports
&prompt.root; make search name=lsof
Port: lsof-4.56.4
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Maint: obrien@FreeBSD.org
Index: sysutils
B-deps:
R-deps: Το τμήμα της εξόδου που πρέπει να προσέξετε ιδιαίτερα
είναι η γραμμή Path:, αφού αυτή σας
λέει που να βρείτε το port. Οι υπόλοιπες πληροφορίες που
παρέχονται δεν χρειάζονται για να εγκατασταθεί το port, για αυτό
δεν θα αναλυθούν εδώ.Για πιο λεπτομερή αναζήτηση μπορείτε να χρησιμοποιήσετε επίσης
make search key=φράση όπου
φράση είναι κάποιο κείμενο προς
αναζήτηση. Αυτό αναζητά ονόματα port, σχόλια, περιγραφές και
εξαρτήσεις, και μπορεί να χρησιμοποιηθεί για να βρεθούν ports που
σχετίζονται με ένα συγκεκριμένο θέμα, εάν δεν γνωρίζετε το όνομα
του προγράμματος που αναζητάτε.Σε όλες τις παραπάνω περιπτώσεις, η φράση προς αναζήτηση είναι
case-insensitive (δεν λαμβάνει υπόψη τις διαφορές κεφαλαίων-μικρών).
Η αναζήτηση για το LSOF, θα δώσει τα ίδια
αποτελέσματα με την αναζήτηση για το lsof.ChernLeeΣυνεισφορά του Χρησιμοποιώντας το Σύστημα των ΠακέτωνΥπάρχουν διάφορα εργαλεία με τα οποία μπορείτε να διαχειριστείτε τα
πακέτα στο &os;:Σε ένα σύστημα που βρίσκεται ήδη σε λειτουργία, μπορείτε να
εκτελέσετε το sysinstall για να
εγκαταστήσετε, να διαγράψετε, και να δείτε τις εγκατεστημένες και
τις διαθέσιμες εφαρμογές. Για περισσότερες πληροφορίες, δείτε το
.Τα διάφορα εργαλεία διαχείρισης μέσω της γραμμής εντολών, που
αποτελούν και το αντικείμενο συζήτησης αυτής της ενότητας.Εγκαθιστώντας ένα Πακέτοpackagesinstallingpkg_addΜπορείτε να χρησιμοποιήσετε το εργαλείο &man.pkg.add.1; για να
εγκαταστήσετε ένα πακέτο λογισμικού του &os; από ένα τοπικά
αποθηκευμένο αρχείο ή από έναν διακομιστή στο δίκτυο.Κατέβασμα ενός πακέτου χειροκίνητα και
εγκατάσταση του τοπικά&prompt.root; ftp -a ftp2.FreeBSD.org
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230- This machine is in Vienna, VA, USA, hosted by Verio.
230- Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp>get lsof-4.56.4.tgz
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375 00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp>exit
&prompt.root; pkg_add lsof-4.56.4.tgzΕάν δεν έχετε μία τοπική πηγή πακέτων (όπως είναι ένα
&os; CD-ROM set) τότε ίσως είναι ευκολότερο να χρησιμοποιήσετε
την επιλογή για το &man.pkg.add.1;. Αυτή θα
κάνει το εργαλείο να καθορίσει αυτόματα τη σωστή μορφή και έκδοση
και έπειτα να ανακτήσει και να εγκαταστήσει το πακέτο από ένα FTP
site.pkg_add&prompt.root; pkg_add -r lsofΤο παραπάνω παράδειγμα θα κατεβάσει και θα
εγκαταστήσει το σωστό πακέτο χωρίς περαιτέρω επέμβαση του χρήστη.
Αν δεν θέλετε να χρησιμοποιήσετε το κύριο site διανομής πακέτων,
μπορείτε να χρησιμοποιήσετε κάποιο mirror. Για το σκοπό αυτό, θα
πρέπει να ρυθμίσετε σωστά την τιμή της PACKAGESITE,
ώστε να παρακάμψετε τις προεπιλεγμένες ρυθμίσεις. Το &man.pkg.add.1;
χρησιμοποιεί το &man.fetch.3; για να κατεβάσει τα
αρχεία, και αυτό με τη σειρά του χρησιμοποιεί διάφορες μεταβλητές
περιβάλλοντος, περιλαμβανομένων των
FTP_PASSIVE_MODE, FTP_PROXY, και
FTP_PASSWORD. Ίσως χρειαστεί να ρυθμίσετε μία ή
περισσότερες από αυτές αν βρίσκεστε πίσω από ένα firewall, ή ίσως να
χρειαστεί να χρησιμοποιήσετε έναν FTP/HTTP proxy. Δείτε το
&man.fetch.3; για την πλήρη λίστα των μεταβλητών. Προσέξτε ότι στο
παραπάνω παράδειγμα χρησιμοποιείται το lsof αντί
του lsof-4.56.4. Όταν γίνεται απομακρυσμένη λήψη,
πρέπει να αφαιρεθεί ο αριθμός έκδοσης του πακέτου.
Το &man.pkg.add.1; θα κατεβάσει αυτόματα την τελευταία
έκδοση της εφαρμογής.Το &man.pkg.add.1; θα κατεβάσει την τελευταία
έκδοση της εφαρμογής αν χρησιμοποιείτε &os.current; ή
&os.stable;. Αν τρέχετε μια -RELEASE έκδοση, θα
κατεβάσει την έκδοση του πακέτου που έχει
μεταγλωττιστεί με την έκδοση σας. Είναι δυνατό να το αλλάξετε
αυτό, αλλάζοντας την PACKAGESITE.
Για παράδειγμα, αν τρέχετε ένα σύστημα &os; 5.4-RELEASE,
το &man.pkg.add.1;, από προεπιλογή, θα προσπαθήσει να
κατεβάσει πακέτα από το
ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5.4-release/Latest/.
Αν θέλετε να αναγκάσετε το &man.pkg.add.1;
να κατεβάσει πακέτα του &os; 5-STABLE, θέστε
την PACKAGESITE ως
ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5-stable/Latest/.Τα αρχεία των πακέτων διανέμονται σε μορφές
.tgz και .tbz. Μπορείτε
να τα βρείτε στο ,
ή στα CD-ROM της διανομής του &os;. Κάθε CD στο &os; 4-CD set (και
στο PowerPak, κλπ.) περιέχει πακέτα στον κατάλογο
/packages. Η κατηγοριοποίηση των πακέτων
ακολουθεί την δομή του δέντρου /usr/ports.
Κάθε κατηγορία έχει το δικό της κατάλογο, και κάθε πακέτο μπορεί να
βρεθεί στον κατάλογο All.Η δομή των καταλόγων του συστήματος πακέτων ταιριάζει με την
αντίστοιχη των ports. Τα δύο συστήματα συνεργάζονται μεταξύ τους για
να δημιουργήσουν το συνολικό σύστημα πακέτων/ports.Διαχείριση των ΠακέτωνpackagesmanagingΤο &man.pkg.info.1; είναι ένα εργαλείο που παραθέτει και
περιγράφει τα διάφορα πακέτα που είναι εγκαταστημένα.pkg_info&prompt.root; pkg_info
cvsup-16.1 A general network file distribution system optimized for CV
docbook-1.2 Meta-port for the different versions of the DocBook DTD
...Το &man.pkg.version.1; είναι ένα εργαλείο που συνοψίζει τις
εκδόσεις όλων των εγκαταστημένων πακέτων. Συγκρίνει την έκδοση κάθε
πακέτου, με την τρέχουσα έκδοση που βρίσκεται στο δέντρο των
ports.pkg_version&prompt.root; pkg_version
cvsup =
docbook =
...Τα σύμβολα στην δεύτερη στήλη δηλώνουν την σχετική ηλικία
μεταξύ των εγκατεστημένων εκδόσεων και των εκδόσεων που είναι
διαθέσιμες στο τοπικό δέντρο των ports.ΣύμβολοΣημασία=Η έκδοση του εγκατεστημένου πακέτου ταιριάζει με αυτή
που είναι διαθέσιμη στο τοπικό δέντρο των ports.<Η εγκατεστημένη έκδοση είναι παλαιότερη από αυτή που
είναι διαθέσιμη στο δέντρο των ports.>Η εγκατεστημένη έκδοση είναι νεότερη από αυτή που είναι
διαθέσιμη στο τοπικό δέντρο των ports. (Το τοπικό δέντρο των
ports είναι πιθανότατα απαρχαιωμένο.)?Το εγκατεστημένο πακέτο δεν βρίσκεται στα περιεχόμενα
των ports. (Αυτό μπορεί να συμβεί, για παράδειγμα, αν ένα
εγκατεστημένο port έχει αφαιρεθεί από την Συλλογή των Ports,
ή έχει μετονομαστεί.)*Υπάρχουν πολλαπλές εκδόσεις του πακέτου.!Το εγκατεστημένο πακέτο υπάρχει στο index, αλλά για
κάποιο λόγο το pkg_version δεν κατάφερε να
συγκρίνει την έκδοση του εγκατεστημένου πακέτου με την
αντίστοιχη καταχώρηση στο index.Αφαιρώντας ένα Πακέτοpkg_deletepackagesdeletingΓια να αφαιρέσετε ένα εγκατεστημένο πακέτο λογισμικού,
χρησιμοποιήστε το εργαλείο &man.pkg.delete.1;.&prompt.root; pkg_delete xchat-1.7.1Σημειώστε ότι το &man.pkg.delete.1; απαιτεί το πλήρες όνομα και
αριθμό έκδοσης του πακέτου. Η παραπάνω εντολή δεν θα λειτουργήσει
αν δώσετε απλώς xchat αντί για
xchat-1.7.1. Είναι ωστόσο εύκολο να
χρησιμοποιήσετε την &man.pkg.version.1; για να βρείτε την έκδοση του
εγκατεστημένου πακέτου. Αντί για αυτό, μπορείτε επίσης να
χρησιμοποιήσετε ένα μπαλαντέρ:&prompt.root; pkg_delete xchat\*Στην περίπτωση αυτή, θα διαγραφούν όλα τα πακέτα που τα ονόματα
τους αρχίζουν με xchat.ΔιάφοραΌλες οι πληροφορίες για τα πακέτα είναι αποθηκευμένες στον
κατάλογο /var/db/pkg. Στα αρχεία αυτού του
καταλόγου, θα βρείτε τη περιγραφή κάθε πακέτου, καθώς και τη λίστα
των αρχείων που εγκαθιστά.Χρησιμοποιώντας την Συλλογή των PortsΤα παρακάτω τμήματα δίνουν βασικές οδηγίες χρήσης της
Συλλογής των Ports για εγκατάσταση ή διαγραφή προγραμμάτων στο
σύστημα σας. Μπορείτε να βρείτε λεπτομερή περιγραφή των διαθέσιμων
επιλογών του make και των μεταβλητών περιβάλλοντος
στο &man.ports.7;.Ανακτώντας την Συλλογή των PortsΠριν μπορέσετε να εγκαταστήσετε προγράμματα μέσω των ports,
πρέπει πρώτα να ανακτήσετε την Συλλογή των Ports. Πρόκειται
ουσιαστικά για μια συλλογή από Makefiles,
patches, και αρχεία περιγραφής που τοποθετούνται στο
/usr/ports.Όταν εγκαταστήσατε το &os; σύστημα σας,
το sysinstall σας ρώτησε αν θέλατε
να εγκαταστήσετε την Συλλογή των Ports. Αν επιλέξατε όχι, μπορείτε να
ακολουθήσετε αυτές τις οδηγίες για να ανακτήσετε την Συλλογή των
Ports:Μέθοδος CVSupΑυτή είναι μια γρήγορη μέθοδος για να ανακτήσετε και να
διατηρήσετε ένα ανανεωμένο αντίγραφο της Συλλογής των Ports,
χρησιμοποιώντας το πρωτόκολλο CVSup.
Αν θέλετε να μάθετε περισσότερα για το
CVSup, δείτε το
Χρησιμοποιώντας το CVSup.Η υλοποίηση του CVSup που
περιλαμβάνεται σε ένα σύστημα &os;, ονομάζεται
csup. Εμφανίστηκε για πρώτη φορά στο
&os; 6.2. Οι χρήστες παλαιότερων εκδόσεων του &os;, μπορούν
να το εγκαταστήσουν μέσω του πακέτου ή port
net/csup.Σιγουρευθείτε ότι το
/usr/ports
είναι άδειο πριν εκτελέσετε το csup για
πρώτη φορά! Εάν έχετε ήδη ανακτήσει τη Συλλογή των Ports μέσω
κάποιας άλλης πηγής, το csup
δεν θα διαγράψει patches που έχουν αφαιρεθεί στο μεταξύ.Εκτελέστε το csup:&prompt.root; csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfileΑλλάξτε το
cvsup.FreeBSD.org με έναν
κοντινό σας διακομιστή CVSup. Δείτε
το CVSup Mirrors () για την πλήρη λίστα των mirror
sites.Αν θέλετε, μπορείτε να χρησιμοποιήσετε το δικό σας
ports-supfile, ώστε να αποφύγετε
(για παράδειγμα) να δηλώσετε τον διακομιστή
CVSup στην γραμμή εντολών.Σε αυτή την περίπτωση, ως root,
αντιγράψτε το
/usr/share/examples/cvsup/ports-supfile
σε μία νέα τοποθεσία, όπως το /root ή
τον δικό σας home κατάλογο.Τροποποιήστε το ports-supfile.Αλλάξτε το
CHANGE_THIS.FreeBSD.org
με έναν κοντινό σας διακομιστή
CVSup.Δείτε το CVSup Mirrors
() για την
πλήρη λίστα των mirror sites.Εκτελέστε τώρα το csup, με τον
ακόλουθο τρόπο:&prompt.root; csup -L 2 /root/ports-supfileΕκτελώντας την εντολή &man.csup.1; αργότερα, θα
κατεβάσει και θα εφαρμόσει όλες
τις πρόσφατες αλλαγές στην Συλλογή των Ports, εκτός από το να
επανα-μεταγλωττίσει τα ports για το σύστημα σας.Μέθοδος PortsnapΤο Portsnap είναι ένα εναλλακτικό
σύστημα για την διανομή της Συλλογής των Ports. Παρακαλώ ελέγξτε το
Χρησιμοποιώντας το
Portsnap για μία λεπτομερή περιγραφή όλων των
χαρακτηριστικών της εφαρμογής.Κατεβάστε ένα συμπιεσμένο snapshot της
Συλλογής των Ports
/var/db/portsnap.
Αν θέλετε, μπορείτε να αποσυνδεθείτε από το Διαδίκτυο μετά από
αυτό το βήμα.&prompt.root; portsnap fetchΑν εκτελείτε το Portsnap για
πρώτη φορά, κάντε εξαγωγή του snapshot μέσα στο /usr/ports:&prompt.root; portsnap extractΕάν ήδη έχετε ένα γεμάτο /usr/ports και απλώς το ανανεώνετε,
εκτελέστε την ακόλουθη εντολή:&prompt.root; portsnap updateΜέθοδος SysinstallΑυτή η μέθοδος χρησιμοποιεί το
sysinstall για την εγκατάσταση της
Συλλογής των Ports από το μέσο εγκατάστασης. Σημειώστε ότι με αυτό
τον τρόπο θα εγκαταστήσετε το παλαιό αντίγραφο της
Συλλογής των Ports, που αντιστοιχεί στην ημερομηνία της έκδοσης του
&os; που χρησιμοποιείτε. Εάν έχετε πρόσβαση στο Διαδίκτυο, πρέπει
πάντα να χρησιμοποιείτε μία από τις μεθόδους που αναφέρθηκαν πιο
πάνω.Ως root, εκτελέστε το
- sysinstall
- (/stand/sysinstall σε εκδόσεις του &os;
- πριν την 5.2) όπως φαίνεται παρακάτω:
+ sysinstall όπως φαίνεται παρακάτω:
&prompt.root; sysinstallΕπιλέξτε το Configure,
και πιέστε Enter.Επιλέξτε το Distributions, και
πιέστε Enter.Μετακινηθείτε στο ports, και πιέστε
Space.Μετακινηθείτε στο Exit, και πιέστε
Enter.Επιλέξτε το μέσο εγκατάστασης της επιθυμίας σας, όπως CDROM,
FTP, και πάει λέγοντας.Μετακινηθείτε στο Exit και πιέστε
Enter.Πιέστε X για να βγείτε από το
sysinstall.Εγκαθιστώντας PortsportsinstallingΤο πρώτο πράγμα που πρέπει να διευκρινιστεί σχετικά
με την Συλλογή των Ports είναι η έννοια του όρου
skeleton (σκελετός). Με λίγα λόγια, ένα port skeleton
είναι η ελάχιστη συλλογή αρχείων που καθοδηγούν ένα σύστημα &os; ώστε
να μεταγλωττίσει και να εγκαταστήσει σωστά ένα πρόγραμμα. Κάθε port
skeleton περιέχει:Ένα Makefile. Το
Makefile περιέχει διάφορες δηλώσεις
που ορίζουν πως πρέπει να μεταγλωττιστεί η εφαρμογή και που
πρέπει να εγκατασταθεί στο σύστημά σας.Ένα αρχείο distinfo. Αυτό το αρχείο
περιέχει πληροφορίες για τα αρχεία που πρέπει να
κατέβουν για την μεταγλώττιση του port, και τα
checksums τους (χρησιμοποιώντας τις &man.md5.1; και
&man.sha256.1;), για να επιβεβαιωθεί ότι τα αρχεία δεν έχουν
αλλοιωθεί κατά την διάρκεια της μεταφοράς τους.Έναν κατάλογο files. Αυτός ο
κατάλογος περιέχει τα patches που επιτρέπουν στο πρόγραμμα να
μεταγλωττιστεί και εγκατασταθεί στο &os; σύστημα σας. Τα patches
είναι μικρά αρχεία που ορίζουν αλλαγές σε συγκεκριμένα αρχεία.
Είναι σε μορφή κοινού κειμένου, και βασικά λένε
Αφαίρεσε την γραμμή 10 ή
Μετέτρεψε τη γραμμή 26 σε αυτό .... Τα patches
είναι επίσης γνωστά ως diffs επειδή δημιουργούνται
με το πρόγραμμα &man.diff.1;.Αυτός ο κατάλογος μπορεί να περιέχει και άλλα αρχεία που
χρησιμοποιούνται για να μεταγλωττιστεί το port.Ένα αρχείο pkg-descr. Αυτό είναι μία πιο
λεπτομερής, συχνά πολλών γραμμών, περιγραφή του
προγράμματος.Ένα αρχείο pkg-plist. Αυτό περιέχει μια
λίστα όλων των αρχείων που θα εγκατασταθούν από το port.
Επίσης καθοδηγεί το σύστημα των ports τι αρχεία να αφαιρέσει
κατά την απεγκατάσταση.Μερικά ports έχουν και άλλα αρχεία, όπως το
pkg-message. Το σύστημα των ports χρησιμοποιεί
αυτά τα αρχεία για να χειριστεί ειδικές περιστάσεις. Αν θέλετε
περισσότερες λεπτομέρειες για αυτά τα αρχεία, και τα ports
γενικότερα, δείτε το &os; Porter's
Handbook.Το port περιέχει οδηγίες για το πως να μεταγλωττιστεί ο πηγαίος
κώδικας, αλλά δεν περιέχει τον πηγαίο κώδικα. Μπορείτε να
προμηθευτείτε τον πηγαίο κώδικα από ένα CD-ROM ή από το Διαδίκτυο.
Ο πηγαίος κώδικας διανέμεται με οποιοδήποτε τρόπο επιθυμεί ο
δημιουργός του. Συχνά είναι ένα tarred και gzipped αρχείο,
αλλά μπορεί να είναι συμπιεσμένος με κάποιο άλλο εργαλείο ή να είναι
ακόμα και ασυμπίεστος. Ο πηγαίος κώδικας του προγράμματος, σε
οποιαδήποτε μορφή κι αν διατίθεται, λέγεται distfile.
Οι δύο μέθοδοι για να εγκαταστήσετε ένα &os; port περιγράφονται
παρακάτω.Πρέπει να συνδεθείτε ως root για να
εγκαταστήσετε ports.Πριν εγκαταστήσετε οποιαδήποτε port, πρέπει να σιγουρευτείτε
ότι έχετε μία ανανεωμένη Συλλογή των Ports, και πρέπει να ελέγξετε
το για θέματα
ασφαλείας σχετικά με το port που ενδιαφέρεστε.Αν θέλετε να ελέγχετε αυτόματα για τυχόν προβλήματα ασφαλείας
πριν από κάθε εγκατάσταση νέας εφαρμογής, μπορείτε να
χρησιμοποιήσετε το portaudit.
Θα βρείτε αυτό το εργαλείο στην Συλλογή των Ports
(ports-mgmt/portaudit). Είναι
καλή ιδέα να εκτελέσετε το portaudit -F πριν
εγκαταστήσετε ένα νέο port, για να ανακτήσετε την τρέχουσα βάση
δεδομένων προβλημάτων ασφαλείας. Αντίστοιχος έλεγχος και ανανέωση
της βάσης δεδομένων εκτελείται επίσης αυτόματα κατά τον καθημερινό
έλεγχο ασφαλείας του συστήματος. Για περισσότερες
πληροφορίες διαβάστε τις σελίδες manual &man.portaudit.1; και
&man.periodic.8;.Η Συλλογή των Ports προϋποθέτει ότι έχετε λειτουργική σύνδεση με
το Διαδίκτυο. Εάν δεν έχετε, θα χρειαστεί να βάλετε μόνος σας ένα
αντίγραφο του distfile μέσα στο
/usr/ports/distfiles.Αρχικά, μετακινηθείτε στον κατάλογο του port που θέλετε να
εγκαταστήσετε:&prompt.root; cd /usr/ports/sysutils/lsofΜόλις βρεθείτε στον κατάλογο lsof, θα
δείτε τον port skeleton. Το επόμενο βήμα είναι να μεταγλωττίσετε,
ή να κτίσετε (build), το port. Αυτό γίνεται απλά
πληκτρολογώντας make στην γραμμή εντολών. Όταν το
κάνετε, θα δείτε κάτι όπως αυτό:&prompt.root; make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===> Extracting for lsof-4.57
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===> Patching for lsof-4.57
===> Applying FreeBSD patches for lsof-4.57
===> Configuring for lsof-4.57
...
[configure output snipped]
...
===> Building for lsof-4.57
...
[compilation output snipped]
...
&prompt.root;Προσέξτε ότι μόλις η μεταγλώττιση ολοκληρωθεί θα επιστρέψετε
στην γραμμή εντολών. Το επόμενο βήμα είναι να εγκαταστήσετε το
port. Για να το εγκαταστήσετε, χρειάζεται απλώς να προσθέσετε μια
λέξη στην εντολή make, και αυτή η λέξη είναι
install:&prompt.root; make install
===> Installing for lsof-4.57
...
[installation output snipped]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
&prompt.root;Μόλις επιστρέψετε στην γραμμή εντολών, θα πρέπει να μπορείτε
να εκτελέσετε την εφαρμογή που μόλις εγκαταστήσατε. Θα δείτε μια
προειδοποίηση ασφαλείας, επειδή το lsof είναι ένα
πρόγραμμα που τρέχει με αυξημένα προνόμια. Κατά την μεταγλώττιση
και εγκατάσταση των ports, θα πρέπει να προσέχετε οποιαδήποτε
προειδοποίηση εμφανιστεί.Μια καλή ιδέα, είναι να διαγράψετε τον υποκατάλογο
που περιέχει όλα τα προσωρινά αρχεία που χρησιμοποιήθηκαν κατά την
μεταγλώττιση. Όχι μόνο καταναλώνουν πολύτιμο χώρο, άλλα μπορεί να
προκαλέσουν προβλήματα αργότερα όταν θα θελήσετε να εγκαταστήσετε μια
νεότερη έκδοση του port.&prompt.root; make clean
===> Cleaning for lsof-4.57
&prompt.root;Μπορείτε να γλιτώσετε δύο πρόσθετα βήματα απλώς εκτελώντας
make install clean αντί
για make,
make install και
make clean
ως τρία ξεχωριστά βήματα.Μερικά κελύφη κρατάνε μια λίστα από τις εντολές που βρίσκονται
διαθέσιμες στους καταλόγους που αναφέρονται στην μεταβλητή
περιβάλλοντος PATH, για να επιταχύνουν τις
αναζητήσεις για τα εκτελέσιμα αρχεία αυτών των εντολών.
Αν χρησιμοποιείτε ένα από αυτά τα κελύφη, θα πρέπει
να χρησιμοποιήσετε την εντολή rehash μετά
την εγκατάσταση ενός port, πριν μπορέσετε να χρησιμοποιήσετε τις
νέες εντολές. Αυτή η εντολή λειτουργεί σε κελύφη όπως το
tcsh. Χρησιμοποιήστε την εντολή
hash -r για κελύφη όπως το
sh. Δείτε την τεκμηρίωση του κελύφους σας για
περισσότερες πληροφορίες.Μερικά προϊόντα τρίτων κατασκευαστών σε DVD-ROM, όπως το &os;
Toolkit από το &os; Mall, περιέχουν
distfiles. Αυτά μπορούν να χρησιμοποιηθούν με την Συλλογή των Ports.
Προσαρτήστε το DVD-ROM στο /cdrom. Αν
χρησιμοποιείτε κάποιο διαφορετικό σημείο προσάρτησης, ρυθμίστε την
μεταβλητή CD_MOUNTPTS του make. Τα αναγκαία
distfiles θα χρησιμοποιηθούν αυτόματα αν υπάρχουν στο δισκάκι.Πρέπει να γνωρίζετε ότι οι άδειες μερικών ports δεν επιτρέπουν
την διανομή τους σε CD-ROM. Αυτό μπορεί να οφείλεται π.χ. στο ότι
πρέπει να συμπληρώσετε μια φόρμα εγγραφής πριν
κατεβάσετε την εφαρμογή, ή στο ότι δεν επιτρέπεται η
επαναδιανομή, ή σε κάποιο άλλο λόγο. Εάν θέλετε να εγκαταστήσετε
ένα port που δεν περιλαμβάνεται στο CD-ROM, θα χρειαστεί να είστε
συνδεδεμένος στο Διαδίκτυο για να το επιτύχετε.Το σύστημα των ports χρησιμοποιεί το &man.fetch.3; για να
κατεβάσει τα αρχεία. Το &man.fetch.3;
χρησιμοποιεί διάφορες μεταβλητές περιβάλλοντος, περιλαμβανομένων των
FTP_PASSIVE_MODE, FTP_PROXY, και
FTP_PASSWORD. Ίσως χρειαστεί να ρυθμίσετε μία ή
περισσότερες αν βρίσκεστε πίσω από ένα firewall, ή ίσως να χρειαστεί
να χρησιμοποιήσετε έναν FTP/HTTP proxy. Δείτε το &man.fetch.3; για
μια πλήρη λίστα των μεταβλητών αυτών.Για χρήστες που δεν μπορούν να είναι συνδεδεμένοι όλη την ώρα,
διατίθεται η επιλογή
make fetch.
Απλώς εκτελέστε την εντολή στον κατάλογο
(/usr/ports) και τα απαραίτητα αρχεία
θα κατέβουν για εσάς. Η εντολή αυτή θα λειτουργήσει
και σε υποκαταλόγους, όπως για παράδειγμα:
/usr/ports/net. Προσέξτε ότι αν ένα port
εξαρτάται από βιβλιοθήκες ή άλλα ports, η εντολή αυτή
δεν θα ανακτήσει τα distfiles τους.
Αντικαταστήστε το fetch με το
fetch-recursive
αν θέλετε μαζί με το port να ανακτήσετε και όλες τις
εξαρτήσεις του.Μπορείτε να μεταγλωττίσετε όλα τα ports σε μία κατηγορία ή
ακόμα και σε όλες, εκτελώντας το make στον αρχικό
κατάλογο, όπως με την προαναφερθείσα
make fetch μέθοδο.
Αυτό όμως είναι επικίνδυνο, γιατί μερικά ports δεν μπορούν να
συνυπάρχουν. Σε άλλες περιπτώσεις, μερικά ports μπορεί να
εγκαταστήσουν δυο διαφορετικά αρχεία με το με το ίδιο
όνομα.Σε μερικές σπάνιες περιπτώσεις, οι χρήστες μπορεί να χρειάζεται
να ανακτήσουν τα tarballs από ένα site διαφορετικό από τα
MASTER_SITES (η τοποθεσία από όπου
κατεβαίνουν τα αρχεία). Μπορείτε να αλλάξετε την
επιλογή MASTER_SITES με την ακόλουθη
εντολή:&prompt.root; cd /usr/ports/directory
&prompt.root; make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetchΣε αυτό το παράδειγμα αλλάξαμε την επιλογή
MASTER_SITES σε ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.Μερικά ports επιτρέπουν (ή απαιτούν) να δώσετε επιλογές
μεταγλώττισης που μπορούν να ενεργοποιήσουν/απενεργοποιήσουν
τμήματα της εφαρμογής που είναι αχρείαστα, συγκεκριμένες επιλογές
ασφαλείας, και άλλες τροποποιήσεις. Κοινά παραδείγματα τέτοιων
ports είναι τα www/mozilla,
security/gpgme, και το
mail/sylpheed-claws. Όταν
υπάρχουν διαθέσιμες τέτοιες επιλογές, θα εμφανιστεί στην οθόνη
σας σχετικό μήνυμα.Παρακάμπτοντας τους Προεπιλεγμένους Καταλόγους των
PortsΜερικές φορές είναι χρήσιμο (ή επιτακτικό) να χρησιμοποιήσετε
ένα διαφορετικό κατάλογο εργασίας και εγκατάστασης. Οι μεταβλητές
WRKDIRPREFIX και PREFIX
μπορούν να παρακάμψουν τους προεπιλεγμένους καταλόγους. Για
παράδειγμα, η εντολή:&prompt.root; make WRKDIRPREFIX=/usr/home/example/ports installθα μεταγλωττίσει το port στο
/usr/home/example/ports και θα εγκαταστήσει
τα πάντα στο /usr/local, ενώ η εντολή:&prompt.root; make PREFIX=/usr/home/example/local installθα μεταγλωττίσει το port στο /usr/ports και
θα το εγκαταστήσει στο
/usr/home/example/local.Και φυσικά η εντολή:&prompt.root; make WRKDIRPREFIX=../ports PREFIX=../local installθα συνδυάσει και τα δυο (είναι πολύ μεγάλη για να την δείξουμε
εδώ, άλλα πρέπει να πήρατε την γενική ιδέα).Εναλλακτικά, αυτές οι μεταβλητές μπορούν να ρυθμιστούν ως μέρος
του περιβάλλοντος σας. Διαβάστε την σελίδα manual για το κέλυφος
σας, για να βρείτε τις σχετικές οδηγίες.Αντιμετωπίζοντας το imakeΜερικά ports που χρησιμοποιούν το imake
(μέρος του X Window System) δεν συνεργάζονται σωστά με το
PREFIX, και επιμένουν να εγκατασταθούν
στο /usr/X11R6. Όμοια, μερικά Perl
ports αγνοούν το PREFIX και εγκαθίστανται στο
δέντρο Perl. Το να κάνετε αυτά τα ports να σέβονται το
PREFIX είναι μία δύσκολη ή αδύνατη
δουλειά.Επαναρύθμιση Επιλογών PortsΌταν μεταγλωττίζετε κάποια ports, μπορεί να εμφανιστεί στην
οθόνη σας ένα μενού επιλογών (βασισμένο σε ncurses) το οποίο να σας
επιτρέπει να αλλάξετε διάφορες επιλογές μεταγλώττισης. Δεν είναι
σπάνιο κάποιοι χρήστες να θέλουν να επισκεφτούν ξανά αυτό το μενού,
για να προσθέσουν, να αφαιρέσουν ή να αλλάξουν κάποιες επιλογές,
μετά την μεταγλώττιση του port. Μια επιλογή είναι να μετακινηθείτε
στον κατάλογο του port και να γράψετε
make config, με το
οποίο θα εμφανιστεί ξανά το μενού με τις προηγούμενες ρυθμίσεις σας
ήδη επιλεγμένες. Μια άλλη δυνατότητα, είναι να χρησιμοποιήσετε την
εντολή make showconfig,
με την οποία θα δείτε όλες τις επιλεγμένες ρυθμίσεις του port.
Τέλος, μια ακόμα επιλογή είναι να εκτελέσετε την εντολή
make rmconfig η οποία
θα αφαιρέσει όλες τις αποθηκευμένες επιλογές και θα σας επιτρέψει να
ξεκινήσετε ξανά από την αρχή. Όλες αυτές οι επιλογές, και ακόμα
περισσότερες, εξηγούνται στη σελίδα manual του &man.ports.7;.Αφαιρώντας Εγκατεστημένα PortsportsremovingΤώρα που γνωρίσατε πως να εγκαθιστάτε ports, πιθανώς θα
αναρωτιέστε πως αφαιρούνται, στην περίπτωση που εγκαταστήσατε ένα
και αργότερα αποφασίσατε ότι εγκαταστήσατε το λάθος port.
Θα αφαιρέσουμε το προηγούμενο παράδειγμα (που ήταν το
lsof για όσους δεν το πρόσεξαν). Τα ports
αφαιρούνται όπως και τα πακέτα (το αναλύσαμε στην ενότητα Χρησιμοποιώντας το Σύστημα των
Πακέτων), χρησιμοποιώντας την
εντολή &man.pkg.delete.1;:&prompt.root; pkg_delete lsof-4.57Αναβαθμίζοντας τα PortsportsupgradingΑρχικά, δείτε τα παρωχημένα ports για τα οποία υπάρχουν
διαθέσιμες νεότερες εκδόσεις στην Συλλογή των Ports, με την εντολή
&man.pkg.version.1;:&prompt.root; pkg_version -v/usr/ports/UPDATINGΜόλις ανανεώσετε την Συλλογή των Ports, πρέπει να ελέγξετε το
αρχείο /usr/ports/UPDATING, πριν επιχειρήσετε
την αναβάθμιση ενός port. Αυτό το αρχείο περιγράφει διάφορα πιθανά
προβλήματα, καθώς και ενδεχόμενα πρόσθετα βήματα που πρέπει να
εκτελέσετε όταν ανανεώνετε ένα port. Παραδείγματα των παραπάνω,
είναι η αλλαγή μορφής κάποιων αρχείων, αλλαγή στην τοποθεσία
των αρχείων ρυθμίσεων, ή άλλες ασυμβατότητες
με παλαιότερες εκδόσεις.Αν το UPDATING αναιρεί κάτι που διαβάσατε
εδώ, θεωρήστε ότι ισχύει το UPDATING.Αναβαθμίζοντας Ports με το PortupgradeportupgradeΤο εργαλείο portupgrade είναι
σχεδιασμένο για να αναβαθμίζει εύκολα εγκατεστημένα ports.
Διατίθεται από το
ports-mgmt/portupgrade port.
Εγκαταστήστε το όπως κάθε port, χρησιμοποιώντας την εντολή
make install clean:&prompt.root; cd /usr/ports/ports-mgmt/portupgrade
&prompt.root; make install cleanΗ εντολή pkgdb -F θα διαβάσει και θα
διορθώσει όλες τις ασυνέπειες που ίσως υπάρχουν στη λίστα των
εγκατεστημένων ports. Είναι καλή ιδέα είναι να την εκτελείτε
συχνά, ενδεχομένως πριν από κάθε αναβάθμιση.Όταν εκτελείτε το portupgrade -a, το
portupgrade θα αρχίσει να αναβαθμίζει
όλα τα παρωχημένα ports που είναι εγκατεστημένα στο σύστημα σας.
Χρησιμοποιήστε την επιλογή αν θέλετε να σας
ρωτά για επιβεβαίωση για κάθε ξεχωριστή αναβάθμιση.&prompt.root; portupgrade -aiΑν θέλετε να αναβαθμίσετε μόνο μία συγκεκριμένη εφαρμογή, και
όχι όλα τα διαθέσιμα ports, χρησιμοποιήστε το
portupgrade pkgname.
Συμπεριλάβετε την επιλογή αν το
portupgrade πρέπει πρώτα να αναβαθμίσει
όλα τα ports που απαιτούνται για την συγκεκριμένη εφαρμογή.&prompt.root; portupgrade -R firefoxΓια να χρησιμοποιήσετε πακέτα αντί για ports στην εγκατάσταση,
δώστε την επιλογή . Με αυτή την επιλογή το
portupgrade αναζητά
τους τοπικούς καταλόγους που ορίζονται στο PKG_PATH,
ή ανακτά τα πακέτα από απομακρυσμένα sites εάν δεν βρεθούν τοπικά.
Αν τα πακέτα δεν μπορούν να ανακτηθούν με τους παραπάνω τρόπους, το
portupgrade θα χρησιμοποιήσει τα ports.
Για να αποφύγετε εντελώς την χρήση των ports, καθορίστε την επιλογή
.&prompt.root; portupgrade -PR gnome2Για να ανακτήσετε απλώς τα distfiles (ή τα πακέτα, αν έχετε
ορίσει την επιλογή ) χωρίς να μεταγλωττίσετε ή να
εγκαταστήσετε τίποτα, χρησιμοποιήστε το .
Για περισσότερες πληροφορίες, δείτε το &man.portupgrade.1;.Αναβαθμίζοντας Ports με το PortmanagerportmanagerΤο Portmanager είναι ένα ακόμα
εργαλείο για εύκολη αναβάθμιση εγκατεστημένων ports. Διατίθεται
από το ports-mgmt/portmanager
port:&prompt.root; cd /usr/ports/ports-mgmt/portmanager
&prompt.root; make install cleanΌλα τα εγκατεστημένα ports μπορούν να αναβαθμιστούν
χρησιμοποιώντας αυτή την απλή εντολή:&prompt.root; portmanager -uΜπορείτε να προσθέσετε την επιλογή για να
ερωτηθείτε να επιβεβαιώσετε κάθε βήμα που θα εκτελέσει το
Portmanager.
Το Portmanager μπορεί επίσης
να χρησιμοποιηθεί για να εγκαταστήσετε νέα ports στο σύστημα.
Σε αντίθεση με την εντολή
make install clean, το
Portmanager θα αναβαθμίσει όλες
τις εξαρτήσεις πριν την μεταγλώττιση και εγκατάσταση του
επιλεγμένου port.&prompt.root; portmanager x11/gnome2Αν υπάρχουν προβλήματα που σχετίζονται με τις εξαρτήσεις ενός
επιλεγμένου port, μπορείτε να χρησιμοποιήσετε το
Portmanager για να τις
επανα-μεταγλωττίσει όλες με την σωστή σειρά. Μόλις τελειώσει με
τις εξαρτήσεις, θα επανα-μεταγλωττίσει και το προβληματικό
port.&prompt.root; portmanager graphics/gimp -fΓια περισσότερες πληροφορίες δείτε τη σελίδα manual
&man.portmanager.1;.Αναβαθμίζοντας τα Ports μέσω του PortmasterportmasterΤο Portmaster είναι ένα ακόμα
εργαλείο για την αναβάθμιση των εγκατεστημένων ports. Το
Portmaster σχεδιάστηκε ώστε να
χρησιμοποιεί τα εργαλεία που παρέχει το βασικό
σύστημα (δεν εξαρτάται από άλλα ports) και χρησιμοποιεί τις
πληροφορίες του /var/db/pkg
για να καθορίσει ποια ports θα αναβαθμίσει. Είναι διαθέσιμο μέσω
του port
ports-mgmt/portmaster:&prompt.root; cd /usr/ports/ports-mgmt/portmaster
&prompt.root; make install cleanΤο Portmaster ομαδοποιεί τα ports
σε τέσσερις κατηγορίες:Root ports (δεν εξαρτώνται από άλλα, και ούτε άλλα
εξαρτώνται από αυτά)Trunk ports (δεν εξαρτώνται από άλλα, ωστόσο κάποια πακέτα
εξαρτώνται από αυτά)Branch ports (έχουν εξαρτήσεις και προς τις δύο
κατευθύνσεις)Leaf ports (εξαρτώνται από άλλα, αλλά όχι το
αντίθετο)Μπορείτε να δείτε μια λίστα όλων των εγκατεστημένων ports και
να ψάξετε για ενημερωμένες εκδόσεις, χρησιμοποιώντας την επιλογή
:&prompt.root; portmaster -L
===>>> Root ports (No dependencies, not depended on)
===>>> ispell-3.2.06_18
===>>> screen-4.0.3
===>>> New version available: screen-4.0.3_1
===>>> tcpflow-0.21_1
===>>> 7 root ports
...
===>>> Branch ports (Have dependencies, are depended on)
===>>> apache-2.2.3
===>>> New version available: apache-2.2.8
...
===>>> Leaf ports (Have dependencies, not depended on)
===>>> automake-1.9.6_2
===>>> bash-3.1.17
===>>> New version available: bash-3.2.33
...
===>>> 32 leaf ports
===>>> 137 total installed ports
===>>> 83 have new versions availableΜπορείτε να αναβαθμίσετε όλα τα εγκατεστημένα ports με την
παρακάτω απλή εντολή:&prompt.root; portmaster -aΑπό προεπιλογή, το Portmaster
θα δημιουργήσει αντίγραφο ασφαλείας του εγκατεστημένου πακέτου
πριν το διαγράψει. Αν η εγκατάσταση της νέας έκδοσης είναι
επιτυχής, το Portmaster θα σβήσει το
αντίγραφο αυτό. Αν χρησιμοποιήσετε την επιλογή
, το Portmaster δεν
θα σβήσει αυτόματα το αντίγραφο. Αν χρησιμοποιήσετε την επιλογή
, θα θέσετε το
Portmaster σε διαδραστική λειτουργία,
όπου θα σας ζητάει επιβεβαίωση πριν την αναβάθμιση κάθε
port.Αν αντιμετωπίσετε λάθη κατά τη διαδικασία της αναβάθμισης,
μπορείτε να χρησιμοποιήσετε την επιλογή για
να αναβαθμίσετε και να μεταγλωττίσετε ξανά όλα τα ports:&prompt.root; portmaster -afΜπορείτε επίσης να χρησιμοποιήσετε το
Portmaster για να εγκαταστήσετε νέα
ports στο σύστημα σας, αναβαθμίζοντας και όλες τις εξαρτήσεις τους
πριν τη μεταγλώττιση και εγκατάσταση τους:&prompt.root; portmaster shells/bashΠαρακαλούμε δείτε τη σελίδα manual του &man.portmaster.8; για
περισσότερες πληροφορίες.Ports και Αποθηκευτικός Χώροςportsdisk-spaceΗ Συλλογή των Ports καταναλώνει διαθέσιμο χώρο στο δίσκο με την
πάροδο του χρόνου. Μετά την μεταγλώττιση και εγκατάσταση λογισμικού
από τα ports, πρέπει πάντα να θυμάστε να καθαρίζετε τους προσωρινούς
καταλόγους work
χρησιμοποιώντας την εντολή
make clean. Mπορείτε να
καθαρίσετε όλη την Συλλογή των Ports με την ακόλουθη εντολή:&prompt.root; portsclean -CΜε την πάροδο του χρόνου, θα συσσωρευτούν πολλά αρχεία διανομής
πηγαίου κώδικα στον κατάλογο
distfiles.
Μπορείτε να τα αφαιρέσετε χειροκίνητα, ή μπορείτε να χρησιμοποιήσετε
την ακόλουθη εντολή για να διαγράψετε όλα τα distfiles που δεν
σχετίζονται πλέον με κανένα port:&prompt.root; portsclean -DΉ για να αφαιρέσετε όλα τα distfiles που δεν σχετίζονται με
κανένα port που βρίσκεται εγκατεστημένο στο σύστημα σας:&prompt.root; portsclean -DDΤο εργαλείο portsclean εγκαθίσταται ως μέρος
του portupgrade.Μην ξεχνάτε να αφαιρείτε τα εγκατεστημένα ports όταν δεν τα
χρειάζεστε πλέον. Ένα καλό εργαλείο για να αυτοματοποιηθεί αυτή η
εργασία, είναι το port
ports-mgmt/pkg_cutleaves.Ενέργειες μετά την ΕγκατάστασηΜετά την εγκατάσταση μιας νέας εφαρμογής, λογικά θα θέλετε
να διαβάσετε ότι τεκμηρίωση υπάρχει, να τροποποιήσετε τα
αρχεία ρυθμίσεων που χρειάζεται, να βεβαιωθείτε ότι η
εφαρμογή ξεκινάει κατά την εκκίνηση (αν είναι daemon), κ.λ.π.Τα ακριβή βήματα που θα χρειαστούν για να ρυθμίσετε κάθε
εφαρμογή, θα είναι προφανώς διαφορετικά. Όμως, αν μόλις
εγκαταστήσατε μια νέα εφαρμογή και αναρωτιέστε Τώρα τι;
οι παρακάτω συμβουλές μπορεί να σας βοηθήσουν:Χρησιμοποιήστε το &man.pkg.info.1; για να δείτε τι αρχεία
εγκαταστάθηκαν, και που. Για παράδειγμα, αν μόλις εγκαταστήσατε το
FooPackage version 1.0.0, τότε η εντολή:&prompt.root; pkg_info -L foopackage-1.0.0 | lessθα σας δείξει όλα τα αρχεία που εγκαταστάθηκαν από αυτό το
πακέτο. Προσέξτε τα αρχεία στον κατάλογο
man/, που θα είναι σελίδες manual, τους
κατάλογους etc/, όπου θα είναι τα αρχεία
ρυθμίσεων, και το doc/, όπου θα βρίσκεται πιο
περιεκτική τεκμηρίωση.Αν δεν είστε σίγουρος ποια έκδοση της εφαρμογής εγκαταστήσατε,
μια εντολή όπως αυτή:&prompt.root; pkg_info | grep -i foopackageθα βρει όλα τα εγκατεστημένα πακέτα που έχουν το
foopackage στο όνομα του πακέτου.
Αντικαταστήστε το foopackage στην
γραμμή εντολών με το πακέτο που αναζητάτε.Μόλις δείτε που βρίσκονται τα manual pages της εφαρμογής, δείτε
τα με την &man.man.1;. Όμοια, δείτε τα παραδείγματα των αρχείων
ρύθμισης, και όποια άλλη πρόσθετη τεκμηρίωση διατίθεται.Αν υπάρχει web site για την εφαρμογή, ελέγξτε το για πρόσθετη
τεκμηρίωση, συχνές ερωτήσεις (FAQ), και άλλα. Αν δεν είστε
σίγουρος για την διεύθυνσή του web site, ίσως το βρείτε στην έξοδο
της εντολής:&prompt.root; pkg_info foopackage-1.0.0Αν υπάρχει γραμμή WWW:, θα πρέπει να
έχει το URL για το web site της εφαρμογής.Ports που πρέπει να ξεκινούν κατά την εκκίνηση
(όπως διακομιστές Internet) συνήθως εγκαθιστούν ένα script στο
/usr/local/etc/rc.d. Πρέπει να ελέγξετε το
script για την ορθότητα του και να το τροποποιήσετε ή να το
μετονομάσετε αν χρειάζεται. Δείτε το Εκκινώντας
Υπηρεσίες για περισσότερες πληροφορίες.Αντιμετωπίζοντας Χαλασμένα PortsΑν έρθετε αντιμέτωπος με ένα port το οποίο δεν λειτουργεί,
υπάρχουν κάποια πράγματα που μπορείτε να κάνετε:Δείτε αν εκκρεμεί κάποια διόρθωση για το port στο
Problem Report
database. Εάν ναι, μπορείτε να χρησιμοποιήσετε τη
προτεινόμενη διόρθωση.Ζητήστε βοήθεια από τον συντηρητή του port. Πληκτρολογήστε
make maintainer ή
διαβάστε το Makefile για να βρείτε την
διεύθυνση email του συντηρητή. Στο μήνυμα σας, θυμηθείτε να
συμπεριλάβετε το όνομα και την έκδοση του port (στείλτε τη γραμμή
$&os;: από το
Makefile) καθώς και την έξοδο του
σφάλματος.Μερικά ports δεν συντηρούνται από κάποιο συγκεκριμένο άτομο,
αλλά από κάποια mailing
list. Πολλές, αν όχι όλες, από αυτές τις διευθύνσεις
έχουν την μορφή
freebsd-listname@FreeBSD.org.
Παρακαλούμε να το έχετε υπόψη σας κατά τη διατύπωση των
ερωτήσεων σας.Συγκεκριμένα, τα ports που φαίνονται ότι συντηρούνται από το
ports@FreeBSD.org, δεν
συντηρούνται από κανέναν στην πραγματικότητα. Διορθώσεις και
υποστήριξη, αν υπάρχουν, έρχονται γενικά από την κοινότητα που
συμμετέχει στην συγκεκριμένη mailing list. Χρειαζόμαστε πάντοτε
περισσότερους εθελοντές!Αν δεν λάβετε απάντηση,
μπορείτε να χρησιμοποιήσετε το &man.send-pr.1; για να στείλετε
μια αναφορά σφάλματος (δείτε το Γράφοντας
Αναφορές Σφάλματος για το &os;).Διορθώστε το! Το Porter's
Handbook περιέχει λεπτομερείς πληροφορίες για την υποδομή
των Ports ώστε να μπορείτε να διορθώσετε το
περιστασιακό προβληματικό port ή ακόμα και να δημιουργήσετε ένα
δικό σας port!Ανακτήστε το πακέτο από ένα κοντινό σας FTP site. Η
κύρια συλλογή πακέτων βρίσκεται στο ftp.FreeBSD.org, στον κατάλογο
πακέτων. Πριν τη χρησιμοποιήσετε, ελέγξτε
πρώτα το τοπικό σας mirror.
Τα πακέτα είναι πιο σίγουρο ότι θα λειτουργήσουν,
από το να προσπαθείτε να μεταγλωττίσετε τον πηγαίο κώδικα, και
η διαδικασία τελειώνει πιο γρήγορα. Χρησιμοποιήστε το πρόγραμμα
&man.pkg.add.1; για να εγκαταστήσετε το πακέτο στο
σύστημα σας.
diff --git a/el_GR.ISO8859-7/books/handbook/x11/chapter.sgml b/el_GR.ISO8859-7/books/handbook/x11/chapter.sgml
index 8b3da5b820..7d5df77835 100644
--- a/el_GR.ISO8859-7/books/handbook/x11/chapter.sgml
+++ b/el_GR.ISO8859-7/books/handbook/x11/chapter.sgml
@@ -1,1895 +1,1826 @@
KenTomΑνανεώθηκε για τον X11 server του X.Org από τον MarcFonvieilleΤο Σύστημα X WindowΣύνοψηΤο &os; χρησιμοποιεί το X11 για να παρέχει στους χρήστες
ένα ισχυρό γραφικό περιβάλλον εργασίας. Το περιβάλλον X11
είναι μια υλοποίηση ανοικτού κώδικα του συστήματος X Window που
περιλαμβάνει τόσο το &xorg; όσο και το
&xfree86; (καθώς και άλλο λογισμικό που δεν
περιγράφεται εδώ). Οι εκδόσεις του &os; μέχρι και την
&os; 5.2.1-RELEASE διαθέτουν στην προεπιλεγμένη εγκατάσταση το
&xfree86;, τον X11 server από
The &xfree86; Project, Inc. Από το &os; 5.3-RELEASE και έπειτα, η
προεπιλεγμένη και επίσημη διανομή του X11 άλλαξε στο
&xorg;, τον X11 server που αναπτύχθηκε από
το X.Org Foundation με άδεια χρήσης αρκετά όμοια με αυτή που
χρησιμοποιείται από το &os;. Υπάρχουν επίσης διαθέσιμοι εμπορικοί X
servers για το &os;.Αυτό το κεφάλαιο θα καλύψει την εγκατάσταση και ρύθμιση των
X11 με έμφαση στην έκδοση &xorg.version; του
&xorg;. Για πληροφορίες σχετικά με την
ρύθμιση του &xfree86;
(π.χ. σε παλιότερες εκδόσεις του &os; όπου το
&xfree86; ήταν η προεπιλεγμένη διανομή X11),
μπορείτε πάντα να ανατρέξετε στις αρχειοθετημένες εκδόσεις του
&os; Handbook στο .Για περισσότερες πληροφορίες που σχετίζονται με τις κάρτες γραφικών
που υποστηρίζονται από το περιβάλλον X11, δείτε την δικτυακή
τοποθεσία &xorg;.Αφού διαβάσετε αυτό το κεφάλαιο, θα ξέρετε:Τα διάφορα τμήματα του συστήματος X Window, και πως
συνεργάζονται μεταξύ τους.Πως να εγκαταστήσετε και να ρυθμίσετε το περιβάλλον X11.Πως να εγκαταστήσετε και να ρυθμίσετε διαφορετικούς
διαχειριστές παραθύρων (window managers).Πως να χρησιμοποιήσετε &truetype; γραμματοσειρές στο X11.Πως να ρυθμίσετε το σύστημα σας για σύνδεση (login) μέσω
γραφικού περιβάλλοντος (XDM).Πριν διαβάσετε αυτό το κεφάλαιο, θα πρέπει:Να ξέρετε πως να εγκαταστήσετε πρόσθετο λογισμικό τρίτου
κατασκευαστή ().Κατανόηση του περιβάλλοντος X11Η χρήση του περιβάλλοντος X11 για πρώτη φορά μπορεί να προκαλέσει
μια μικρή ταραχή σε όποιον έχει συνηθίσει σε άλλα γραφικά περιβάλλοντα,
όπως τα µsoft.windows; ή το &macos;.Γενικά, δεν είναι απαραίτητο να καταλαβαίνετε με κάθε λεπτομέρεια
των διαφόρων τμημάτων του X11 και πώς αλληλεπιδρούν μεταξύ τους.
Κάποιες βασικές γνώσεις όμως, είναι χρήσιμες και βοηθούν στο να
εκμεταλλευτείτε καλύτερα τις δυνατότητες του X11.Γιατί λέγεται X11 το περιβάλλον εργασίας;Το X δεν είναι το πρώτο περιβάλλον εργασίας που γράφτηκε για
συστήματα &unix;, αλλά είναι σήμερα το πιο δημοφιλές. Η αρχική ομάδα
ανάπτυξης του X είχε δουλέψει σε ένα άλλο σύστημα πριν γράψει το X.
Το όνομα του παλιότερου συστήματος ήταν W (από την
Αγγλική λέξη window). Το γράμμα X ήταν απλά το επόμενο
γράμμα στο Λατινικό αλφάβητο.Μπορείτε να αναφέρεσθε στο X με τα
ονόματα X, X Window
System, X11, καθώς και με μερικούς άλλους
όρους. Προσοχή όμως: κάποιοι άνθρωποι θεωρούν προσβλητικό τον
όρο X Windows. Για περισσότερες πληροφορίες σχετικά με
αυτό, δείτε τη σελίδα manual &man.X.7;.Το Μοντέλο Πελάτη/Διακομιστή των X11Το περιβάλλον X11 έχει σχεδιαστεί από την αρχή έτσι ώστε να έχει
εγγενή δικτυακή υποστήριξη, με βάση ένα
μοντέλο πελάτη-διακομιστή.Στο μοντέλο λειτουργίας του X11, ο διακομιστής X
εκτελείται στον υπολογιστή στον οποίο έχει συνδεθεί το πληκτρολόγιο, η
οθόνη και το ποντίκι. Ο διακομιστής X είναι υπεύθυνος για τη
διαχείριση της οθόνης, της εισόδου από το πληκτρολόγιο, το ποντίκι,
κλπ. Κάθε εφαρμογή X (π.χ. το XTerm ή το
&netscape;) είναι ένας
πελάτης. Ένας πελάτης στέλνει μηνύματα στον διακομιστή
όπως Παρακαλώ σχεδίασε ένα παράθυρο σε αυτές τις
συντεταγμένες, και ο διακομιστής στέλνει πίσω μηνύματα όπως
Ο χρήστης μόλις πάτησε το πλήκτρο OK.Σε ένα σπίτι ή ένα μικρό γραφείο, ο διακομιστής και οι πελάτες
X συχνά εκτελούνται στον ίδιο υπολογιστή. Όμως, είναι απόλυτα εφικτό
να εκτελείται ο διακομιστής X σε έναν λιγότερο ισχυρό επιτραπέζιο
υπολογιστή, και να εκτελούνται οι εφαρμογές X (οι πελάτες) σε ένα, ας
πούμε, ισχυρό και ακριβό μηχάνημα που εξυπηρετεί το γραφείο. Σε αυτό
το σενάριο η επικοινωνία μεταξύ των πελατών X και του διακομιστή
γίνεται μέσω δικτύου.Αυτό προκαλεί σύγχυση σε ορισμένους, επειδή η ορολογία του X είναι
ακριβώς αντίθετη από ότι περίμεναν. Οι χρήστες συνήθως περιμένουν ο
διακομιστής X να είναι ένα μεγάλο ισχυρό μηχάνημα σε
ένα δωμάτιο και ο πελάτης X να είναι το μηχάνημα του
γραφείου τους.Είναι σημαντικό να θυμάστε ότι ο διακομιστής X είναι το μηχάνημα
με την οθόνη και το πληκτρολόγιο, και οι πελάτες X είναι τα
προγράμματα που εμφανίζουν τα παράθυρα.Δεν υπάρχει τίποτα στο πρωτόκολλο που να αναγκάζει τα μηχανήματα
των πελατών και του διακομιστή να εκτελούνται στο ίδιο λειτουργικό
σύστημα, ή ακόμη να εκτελούνται στον ίδιο τύπο υπολογιστή. Είναι
απόλυτα εφικτό να εκτελείται ένας διακομιστής X στα
µsoft.windows; ή στο &macos; της Apple, και υπάρχουν διαθέσιμες
διάφορες ελεύθερες και εμπορικές εφαρμογές που κάνουν ακριβώς
αυτό.Ο Διαχειριστής ΠαραθύρωνΗ φιλοσοφία σχεδιασμού του X μοιάζει πολύ με την φιλοσοφία
σχεδιασμού του &unix;, εργαλεία, όχι πολιτική. Αυτό
σημαίνει ότι το X δεν προσπαθεί να υπαγορεύσει πως θα υλοποιηθεί μια
εργασία. Αντίθετα, παρέχονται εργαλεία στον χρήστη, και είναι δική
του ευθύνη να αποφασίσει πως θα τα χρησιμοποιήσει.Αυτή η φιλοσοφία επεκτείνεται στο ότι το X δεν υπαγορεύει πως
πρέπει να εμφανίζονται τα παράθυρα στην οθόνη, πως θα μετακινηθούν με
το ποντίκι, τι συνδυασμοί πλήκτρων πρέπει να χρησιμοποιηθούν για να
μετακινηθούμε μεταξύ των παραθύρων (π.χ.,
AltTab, στην περίπτωση των µsoft.windows;), πώς πρέπει να
μοιάζουν οι μπάρες τίτλων σε κάθε παράθυρο, αν θα έχουν ή όχι πλήκτρα
κλεισίματος πάνω τους, κ.o.κ.Αντίθετα, το X αναθέτει αυτήν την ευθύνη σε μία εφαρμογή που
ονομάζεται Διαχειριστής Παραθύρων. Υπάρχουν πάρα
πολλοί διαχειριστές παραθύρων διαθέσιμοι για το περιβάλλον X.
Ορισμένοι από αυτούς είναι οι:
AfterStep,
Blackbox, ctwm,
Enlightenment,
fvwm, Sawfish,
twm,
Window Maker, και πολλοί άλλοι. Κάθε ένας
από αυτούς τους διαχειριστές παραθύρων έχει διαφορετική αίσθηση και
εμφάνιση. Μερικοί από αυτούς υποστηρίζουν
εικονικές επιφάνειες εργασίας, μερικοί επιτρέπουν
προσαρμοσμένους συνδυασμούς πλήκτρων για την διαχείριση της
επιφάνειας εργασίας, μερικοί έχουν ένα πλήκτρο Start ή
κάτι παρόμοιο, μερικοί υποστηρίζουν θέματα (themes),
επιτρέποντας την ολοκληρωτική αλλαγή εμφάνισης με την εφαρμογή ενός
νέου θέματος. Οι διαχειριστές παραθύρων που έχουμε αναφέρει ως τώρα,
και πολλοί άλλοι, είναι διαθέσιμοι στην κατηγορία
x11-wm της συλλογής των Ports.Επιπλέον, τα δύο πιο δημοφιλή ολοκληρωμένα περιβάλλοντα εργασίας,
το KDE και
το GNOME, έχουν τον δικό τους διαχειριστή
παραθύρων που είναι ενσωματωμένος με το υπόλοιπο περιβάλλον
εργασίας.Κάθε διαχειριστής παραθύρων έχει επίσης και διαφορετικό μηχανισμό
ρύθμισης: μερικοί ρυθμίζονται συμπληρώνοντας με χειροκίνητο τρόπο ένα
αρχείο ρυθμίσεων, άλλοι διαθέτουν γραφικά εργαλεία για τις
περισσότερες ρυθμίσεις. Υπάρχει ακόμα κι ένας
(Sawfish) που έχει αρχείο ρυθμίσεων
γραμμένο σε μια διάλεκτο της γλώσσας Lisp.Πολιτική ΕστίασηςΆλλο ένα θέμα για το οποίο είναι υπεύθυνος ο διαχειριστής
παραθύρων είναι η πολιτική εστίασης του ποντικιού.
Κάθε σύστημα παραθύρων χρειάζεται κάποιο τρόπο επιλογής του
παραθύρου που θα δέχεται αυτά που πληκτρολογούνται, και θα πρέπει
να φαίνεται κάπως ότι αυτό το παράθυρο είναι ενεργό.Μία γνωστή πολιτική εστίασης λέγεται
click-to-focus. Αυτό το μοντέλο χρησιμοποιείται στα
µsoft.windows;, όπου ένα παράθυρο γίνεται ενεργό αν δεχτεί ένα
πάτημα του ποντικιού.Το X δεν υποστηρίζει καμία συγκεκριμένη πολιτική εστίασης.
Αντίθετα, ο διαχειριστής παραθύρων ελέγχει ποίο παράθυρο έχει
εστιαστεί κάθε στιγμή. Διαφορετικοί διαχειριστές παραθύρων
υποστηρίζουν διαφορετικές μεθόδους εστίασης. Όλοι τους
υποστηρίζουν την μέθοδο click to focus, και οι περισσότεροι από
αυτούς υποστηρίζουν και αρκετές άλλες.Οι πιο δημοφιλείς μέθοδοι εστίασης είναι:focus-follows-mouseΤο παράθυρο που βρίσκεται κάτω από τον δείκτη του
ποντικιού είναι το παράθυρο που έχει την εστίαση.
Το ενεργό παράθυρο δεν είναι απαραίτητο να είναι αυτό που
βρίσκεται πάνω από όλα τα άλλα. Η εστίαση αλλάζει με την
στόχευση ενός άλλου παραθύρου, χωρίς να είναι απαραίτητο το
κλικ πάνω του.sloppy-focusΑυτή η πολιτική είναι μια μικρή επέκταση του
focus-follows-mouse. Με την πολιτική εστίασης
focus-follows-mouse, αν το ποντίκι βρεθεί πάνω από το αρχικό
(root) παράθυρο (ή το παρασκήνιο) δεν υπάρχει εστίαση σε
κανένα παράθυρο, και ότι πληκτρολογείται απλώς χάνεται. Με τη
sloppy-focus, η εστίαση αλλάζει μόνο αν ο δείκτης βρεθεί πάνω
από ένα νέο παράθυρο, και όχι όταν φεύγει από το τρέχον
παράθυρο.click-to-focusΤο ενεργό παράθυρο επιλέγεται με κλικ του ποντικιού. Το
παράθυρο τότε ανασηκώνεται, και εμφανίζεται
μπροστά από όλα τα άλλα παράθυρα. Ότι πληκτρολογηθεί θα
οδηγηθεί σε αυτό το παράθυρο, ακόμα και αν ο δείκτης
μετακινηθεί σε άλλο παράθυρο.Πολλοί διαχειριστές παραθύρων υποστηρίζουν ακόμα πιο εξωτικές
πολιτικές εστίασης, καθώς και παραλλαγές των παραπάνω.
Συμβουλευθείτε την τεκμηρίωση του εκάστοτε διαχειριστή παραθύρων για
περισσότερες λεπτομέρειες.Γραφικά Στοιχεία Διεπαφής (Widgets)Η προσέγγιση του X να διαθέτει εργαλεία και όχι να υπαγορεύει τον
τρόπο χρήσης τους, διευρύνεται και στα γραφικά στοιχεία διεπαφής
(widgets) που φαίνονται στην οθόνη σε κάθε εφαρμογή.Τα widgets είναι ένας όρος για
όλα τα αντικείμενα στο περιβάλλον του χρήστη που μπορεί κάποιος να
κάνει κλικ ή να τα χειριστεί με κάποιον τρόπο: πλήκτρα, πλαίσια
επιλογής, πλήκτρα εναλλαγής, εικονίδια, λίστες, και άλλα. Τα
µsoft.windows; τα ονομάζουν
controls (χειριστήρια).Τα µsoft.windows; και το &macos; της Apple έχουν και τα δύο
πολύ αυστηρή πολιτική γραφικών στοιχείων διεπαφής. Οι προγραμματιστές
εφαρμογών πρέπει υποτίθεται να εξασφαλίσουν ότι οι εφαρμογές τους
θα έχουν κοινή αίσθηση και εμφάνιση (look and feel). Στο X, δεν
θεωρήθηκε απαραίτητο να γίνει επιβολή ενός συγκεκριμένου στυλ
γραφικών, ή να τεθούν κάποια υποχρεωτικά γραφικά στοιχεία
διεπαφής.Σαν αποτέλεσμα, μην περιμένετε τις εφαρμογές για X να έχουν κοινή
εμφάνιση. Υπάρχουν διάφορες δημοφιλείς συλλογές γραφικών στοιχείων
διεπαφής και παραλλαγές τους, συμπεριλαμβανομένης και της αυθεντικής
Athena συλλογής γραφικών στοιχείων διεπαφής του MIT,
&motif; (παραλλαγή της οποίας είναι και η
συλλογή γραφικών στοιχείων διεπαφής των µsoft.windows;, με λοξές
γωνίες και τρεις διαβαθμίσεις του γκρι), το
OpenLook, και άλλα.Οι περισσότερες νέες X εφαρμογές σήμερα χρησιμοποιούν μια συλλογή
γραφικών στοιχείων διεπαφής με μοντέρνα εμφάνιση, είτε το Qt, που
χρησιμοποιείται από το KDE, είτε το GTK+,
που χρησιμοποιείται από το GNOME.
Από αυτή την άποψη, υπάρχει κάποια σύγκλιση στην εμφάνιση του &unix;
desktop, το οποίο οπωσδήποτε κάνει τα πράγματα ευκολότερα για τον
νέο χρήστη.Εγκατάσταση του X11Το &xorg; είναι η προεπιλεγμένη υλοποίηση
X11 για το &os;. Το &xorg; είναι
ο διακομιστής Χ της υλοποίησης X Window System του X.Org Foundation,
και είναι ανοικτού κώδικα. Ο &xorg; είναι
βασισμένος στον κώδικα του
&xfree86 4.4RC2 και του X11R6.6.
Η έκδοση του &xorg; που διατίθεται
από την συλλογή των Ports του &os; είναι η &xorg.version;.Για να μεταγλωττίσετε και να εγκαταστήσετε το
&xorg; από την συλλογή των Ports:&prompt.root; cd /usr/ports/x11/xorg
&prompt.root; make install cleanΓια να μεταγλωττίσετε ολόκληρο το
&xorg; σιγουρευθείτε ότι έχετε το λιγότερο
4 GB ελεύθερο χώρο διαθέσιμο.Εναλλακτικά, το X11 μπορεί να εγκατασταθεί άμεσα από πακέτα.
Υπάρχουν διαθέσιμα έτοιμα πακέτα του Χ11 για χρήση με το εργαλείο
&man.pkg.add.1;. Αν χρησιμοποιήσετε τη δυνατότητα του &man.pkg.add.1;
για λήψη μέσω δικτύου, δεν θα πρέπει στην γραμμή εντολών να δώσετε τον
αριθμό έκδοσης (version number) του πακέτου. Το &man.pkg.add.1; θα
κατεβάσει αυτόματα την τελευταία έκδοση της
εφαρμογής.Έτσι, για να γίνει η λήψη και η εγκατάσταση του
&xorg;, απλώς εκτελέστε:&prompt.root; pkg_add -r xorgΤα παραπάνω παραδείγματα θα εγκαταστήσουν ολόκληρη την διανομή
X11 που περιλαμβάνει διακομιστές, πελάτες, γραμματοσειρές κλπ.
Διατίθενται επίσης ξεχωριστά, τμηματικά πακέτα και ports για το
X11.Το υπόλοιπο του κεφαλαίου θα σας εξηγήσει πως ρυθμίζεται το
X11, και πως να στήσετε ένα παραγωγικό desktop περιβάλλον.ChristopherShumwayΣυνεισφορά του Ρύθμιση του X11&xorg;X11Πριν ξεκινήσετεΠριν την ρύθμιση του X11 χρειάζονται οι ακόλουθες πληροφορίες
για το σύστημα:Προδιαγραφές της οθόνηςChipset της κάρτας γραφικώνΜνήμη της κάρτας γραφικώνοριζόντιος ρυθμός ανανέωσηςκατακόρυφος ρυθμός ανανέωσηςΟι προδιαγραφές της οθόνης χρησιμοποιούνται από το
X11 για να ορισθεί η ανάλυση και ο ρυθμός ανανέωσης στο οποίο θα
λειτουργήσει. Οι προδιαγραφές αυτές βρίσκονται συνήθως
στην τεκμηρίωση που συνοδεύει την οθόνη ή στην ιστοσελίδα του
κατασκευαστή. Χρειάζονται δύο σειρές αριθμών, ο οριζόντιος ρυθμός
ανανέωσης και ο κατακόρυφος ρυθμός ανανέωσης.Το chipset (ολοκληρωμένο κύκλωμα) της κάρτας γραφικών ορίζει
ποίος οδηγός συσκευής θα χρησιμοποιηθεί από το X11 για την
επικοινωνία με την κάρτα γραφικών. Για τα περισσότερα chipset, αυτό
μπορεί να ανιχνευθεί αυτόματα, αλλά είναι χρήσιμο να το γνωρίζετε σε
περίπτωση που δεν πετύχει η αυτόματη ανίχνευση.Η μνήμη της κάρτας γραφικών καθορίζει την ανάλυση και το βάθος
χρώματος στο οποίο μπορεί να δουλέψει το σύστημα. Αυτό είναι
σημαντικό ώστε να γνωρίζει ο χρήστης τα όρια του συστήματος.Ρύθμιση του X11Από την έκδοση 7.3 και μετά, το &xorg;
μπορεί συχνά να λειτουργήσει χωρίς κανένα αρχείο ρυθμίσεων, γράφοντας
απλώς στη γραμμή εντολών:&prompt.user; startxΑπό την έκδοση 7.4 και μετά, το &xorg;
έχει τη δυνατότητα να χρησιμοποιεί το HAL για την
αυτόματη ανίχνευση του πληκτρολογίου και του ποντικιού. Τα ports
sysutils/hal και
devel/dbus εγκαθίστανται ως
εξαρτήσεις του x11/xorg, αλλά
θα πρέπει να ενεργοποιηθούν με τις ακόλουθες εγγραφές στο
/etc/rc.conf:hald_enable="YES"
dbus_enable="YES"Θα πρέπει να ξεκινήσετε τις υπηρεσίες αυτές (είτε χειροκίνητα,
είτε κάνοντας επανεκκίνηση) πριν συνεχίσετε με τη ρύθμιση του
&xorg;.Σε κάποιες περιπτώσεις, η αυτόματη ρύθμιση μπορεί να μη
λειτουργήσει σωστά, ή να μη ρυθμίσει τις συσκευές ακριβώς όπως
επιθυμείτε. Στις περιπτώσεις αυτές, θα χρειαστεί να κάνετε
χειροκίνητες ρυθμίσεις.Κάποια γραφικά περιβάλλοντα, όπως το
GNOME το
KDE ή το XFCE,
διαθέτουν εργαλεία που επιτρέπουν στο χρήστη να ρυθμίσει με εύκολο
τρόπο διάφορες παραμέτρους της οθόνης, όπως η ανάλυση. Αν η
προεπιλεγμένη ρύθμιση δεν είναι αποδεκτή, και σκοπεύετε να
εγκαταστήσετε κάποιο από αυτά τα περιβάλλοντα, μπορείτε να
συνεχίσετε με την εγκατάσταση του, και να ολοκληρώσετε τις ρυθμίσεις
σας χρησιμοποιώντας το κατάλληλο γραφικό εργαλείο.Το πρώτο βήμα είναι η δημιουργία ενός αρχικού αρχείου ρυθμίσεων.
Ως root, απλώς εκτελέστε:&prompt.root; Xorg -configureΑυτό θα δημιουργήσει ένα πρότυπο αρχείο ρυθμίσεων του X11 στον
κατάλογο /root με το όνομα
xorg.conf.new (είτε χρησιμοποιήσετε το
&man.su.1; είτε συνδεθείτε απευθείας, η μεταβλητή καταλόγου
$HOME αλλάζει δείχνοντας τον κατάλογο του root). Το
X11 θα προσπαθήσει να ανιχνεύσει το υποσύστημα γραφικών του συστήματος
και να δημιουργήσει ένα αρχείο ρυθμίσεων που θα φορτώνει τους σωστούς
οδηγούς συσκευών για το υλικό που ανιχνεύθηκε στο σύστημα σας.Το επόμενο βήμα είναι ο έλεγχος των υπάρχοντων ρυθμίσεων
για να επιβεβαιώσετε ότι το &xorg;
λειτουργεί με το υποσύστημα γραφικών του συστήματος σας. Για εκδόσεις
του &xorg; μέχρι το 7.3,
πληκτρολογήστε:&prompt.root; Xorg -config xorg.conf.newΑπό το &xorg; 7.4 και μετά, το
παραπάνω τεστ δείχνει μια μαύρη οθόνη η οποία κάνει δύσκολη τη
διάγνωση καλής λειτουργίας του X11. Χρησιμοποιήστε την επιλογή
για να αποκαταστήσετε την παλιότερη
συμπεριφορά:&prompt.root; Xorg -config xorg.conf.new -retroΕάν εμφανιστεί ένα μαύρο και γκρι πλέγμα και ένας δείκτης
ποντικιού με μορφή X, η ρύθμιση ήταν επιτυχής. Για να τερματίσετε
τη δοκιμή, μεταβείτε στην εικονική κονσόλα από την οποία την
ξεκινήσατε, πιέζοντας
CtrlAltFn (F1 για την πρώτη εικονική κονσόλα) και
πιέστε
CtrlC.Στις εκδόσεις του &xorg; πριν την
7.3, μπορούσε να χρησιμοποιηθεί ο συνδυασμός πλήκτρων
CtrlAltBackspace για τον τερματισμό του προγράμματος. Για να τον
ενεργοποιήσετε από την έκδοση 7.4 και μετά, μπορείτε να δώσετε την
παρακάτω εντολή σε κάποιο τερματικό του X:&prompt.user; setxkbmap -option terminate:ctrl_alt_bkspΕναλλακτικά, δημιουργήστε ένα αρχείο ρυθμίσεων πληκτρολογίου
για το hald με την ονομασία
x11-input.fdi και αποθηκεύστε το στον
κατάλογο /usr/local/etc/hal/fdi/policy.
Το αρχείο αυτό θα πρέπει να περιέχει τις παρακάτω γραμμές:<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.keyboard">
<merge key="input.x11_options.XkbOptions" type="string">terminate:ctrl_alt_bksp</merge>
</match>
</device>
</deviceinfo>Θα χρειαστεί να επανεκκινήσετε το μηχάνημα σας για να
εξαναγκάσετε το hald να διαβάσει αυτό
το αρχείο.Θα πρέπει επίσης να προσθέσετε την παρακάτω γραμμή στο αρχείο
xorg.conf.new, στην ενότητα
ServerLayout ή
ServerFlags:Option "DontZap" "off"Αν το ποντίκι δεν λειτουργεί, θα χρειαστεί να το ρυθμίσετε
πριν συνεχίσετε. Δείτε το στο κεφάλαιο
εγκατάστασης του &os;. Επιπρόσθετα, από την έκδοση 7.4 και μετά,
οι ενότητες InputDevice στο
xorg.conf αγνοούνται καθώς γίνεται χρήση των
συσκευών που ανιχνεύθηκαν αυτόματα. Για να επαναφέρετε την παλιά
συμπεριφορά, προσθέστε την παρακάτω γραμμή στην ενότητα
ServerLayout ή ServerFlags
του αρχείου ρυθμίσεων:Option "AutoAddDevices" "false"Θα μπορείτε έπειτα να ρυθμίσετε τις συσκευές εισόδου όπως
στις προηγούμενες εκδόσεις του &xorg;,
χρησιμοποιώντας και όποιες άλλες επιλογές χρειάζεστε
(π.χ. εναλλαγή πληκτρολογίου).Όπως εξηγήσαμε και προηγουμένως, από την έκδοση 7.4 και μετά
ο δαίμονας hald αναλαμβάνει να
ανιχνεύσει αυτόματα το πληκτρολόγιο σας. Υπάρχει περίπτωση να
μην γίνει σωστή ανίχνευση του μοντέλου ή της διάταξης, ωστόσο
κάποια γραφικά περιβάλλοντα όπως το
GNOME το KDE
και το Xfce παρέχουν τα δικά τους
εργαλεία για τη ρύθμιση του. Μπορείτε όμως να ρυθμίσετε τις
ιδιότητες του πληκτρολογίου και απευθείας, είτε μέσω του
βοηθητικού προγράμματος &man.setxkbmap.1; είτε με την προσθήκη
ενός κανόνα στο hald.Για παράδειγμα, αν κάποιος θέλει να χρησιμοποιήσει ένα
πληκτρολόγιο 102 πλήκτρων με γαλλική διάταξη, θα πρέπει να
δημιουργήσει ένα αρχείο ρυθμίσεων για το
hald με το όνομα
x11-input.fdi και να το αποθηκεύσει στον
κατάλογο /usr/local/etc/hal/fdi/policy.
Το αρχείο αυτό θα περιέχει τις παρακάτω γραμμές:<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.keyboard">
<merge key="input.x11_options.XkbModel" type="string">pc102</merge>
<merge key="input.x11_options.XkbLayout" type="string">fr</merge>
</match>
</device>
</deviceinfo>Αν το αρχείο αυτό υπάρχει ήδη, απλώς αντιγράψτε τις παραπάνω
γραμμές μέσα στο υπάρχον περιεχόμενο.Θα πρέπει να επανεκκινήσετε το μηχάνημα σας για να
εξαναγκάσετε το hald να διαβάσει το
αρχείο.Μπορείτε επίσης να κάνετε την ίδια ρύθμιση μέσα από ένα
τερματικό στα Χ ή ακόμα και από ένα script, εκτελώντας την
παρακάτω εντολή:&prompt.user; setxkbmap -model pc102 -layout frΜπορείτε να βρείτε τις διαθέσιμες επιλογές πληκτρολογίων και
διατάξεων στο αρχείο
/usr/local/share/X11/xkb/rules/base.lst.Ρύθμιση του X11Έπειτα, προσαρμόστε το αρχείο ρυθμίσεων
xorg.conf.new στις προτιμήσεις σας. Ανοίξτε το
με έναν συντάκτη κειμένου όπως ο &man.emacs.1; ή ο &man.ee.1;.
Πρώτα, προσθέστε τις συχνότητες της οθόνης. Συνήθως αναφέρονται ως
οριζόντιοι και κατακόρυφοι ρυθμοί συγχρονισμού. Αυτές οι
τιμές τοποθετούνται στο αρχείο xorg.conf.new
στο Section "Monitor":Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30-107
VertRefresh 48-120
EndSectionΟι μεταβλητές HorizSync και
VertRefresh μπορεί να μην υπάρχουν στο αρχείο
ρυθμίσεων. Αν δεν υπάρχουν, πρέπει να προστεθούν, με τον σωστό
οριζόντιο ρυθμό συγχρονισμού μετά την λέξη
HorizSync και τον κατακόρυφο ρυθμό συγχρονισμού
μετά την λέξη VertRefresh.
Στο παραπάνω παράδειγμα, προσθέσαμε τους αντίστοιχους ρυθμούς
ανανέωσης της οθόνης μας.Το X επιτρέπει τη χρήση των δυνατοτήτων DPMS (Energy Star) σε
οθόνες που υποστηρίζουν την αντίστοιχη λειτουργία. Το πρόγραμμα
&man.xset.1; ελέγχει τους χρόνους και μπορεί να επιβάλλει τις
καταστάσεις standby, suspend, ή off. Αν θέλετε να ενεργοποιήσετε
τις δυνατότητες DPMS της οθόνης σας, πρέπει να προσθέσετε την
ακόλουθη γραμμή στο Section monitor:
Option "DPMS"xorg.confΌσο το αρχείο ρυθμίσεων xorg.conf.new
είναι ακόμα ανοικτό σε έναν συντάκτη κειμένου, επιλέξτε
την ανάλυση και το βάθος χρωμάτων που επιθυμείτε. Αυτό καθορίζεται
στο Section "Screen":Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSectionΗ μεταβλητή DefaultDepth ορίζει το
προεπιλεγμένο βάθος χρώματος που θα χρησιμοποιηθεί. Μπορείτε να την
παρακάμψετε με τον διακόπτη στη γραμμή εντολών
του &man.Xorg.1;. Η επιλογή Modes ορίζει
την ανάλυση με την οποία θα λειτουργεί η οθόνη σε ένα συγκεκριμένο
βάθος χρωμάτων. Προσέξτε ότι υποστηρίζονται μόνο κανονικές
καταστάσεις VESA, όπως ορίζονται από το υποσύστημα γραφικών του
συστήματος. Στο παραπάνω παράδειγμα, το καθορισμένο βάθος χρωμάτων
είναι εικοσιτέσσερα bits ανά pixel. Σε αυτό το βάθος χρωμάτων, η
αποδεκτή ανάλυση είναι 1024Χ768 pixels.Τέλος, αποθηκεύστε το αρχείο ρυθμίσεων και ελέγξτε το με την
μέθοδο ελέγχου που εξηγήσαμε παραπάνω.Ένα από τα εργαλεία που μπορεί να σας βοηθήσουν κατά την
διαδικασία επίλυσης προβλημάτων, είναι τα αρχεία X11 log, που
περιέχουν πληροφορίες για κάθε συσκευή που επικοινωνεί με τον
διακομιστή X11. Τα αρχεία &xorg; log
ονομάζονται με την μορφή
/var/log/Xorg.0.log. Το ακριβές όνομα
ενός log μπορεί να είναι Xorg.0.log έως
Xorg.8.log και πάει λέγοντας.Αν όλα είναι καλά, το αρχείο ρυθμίσεων πρέπει να τοποθετηθεί σε
μια κοινή τοποθεσία ώστε να εντοπίζεται από το &man.Xorg.1;.
Αυτή συνήθως είναι η /etc/X11/xorg.conf ή
/usr/local/etc/X11/xorg.conf.&prompt.root; cp xorg.conf.new /etc/X11/xorg.confΗ διαδικασία ρύθμισης του X11 έχει τώρα ολοκληρωθεί
Το &xorg; μπορείτε να το ξεκινήσετε με το
βοηθητικό πρόγραμμα &man.startx.1;. Ο διακομιστής X11 μπορεί επίσης
να εκκινήσει με τη βοήθεια του &man.xdm.1;.Εξειδικευμένα Θέματα ΡυθμίσεωνΡυθμίσεις για τα &intel; i810 Graphics ChipsetsIntel i810 graphic chipsetΓια να χρησιμοποιήσετε κάρτα βασισμένη στα &intel; i810
integrated chipsets, απαιτείται το agpgart,
η διεπαφή προγραμματισμού των X11 για το AGP. Δείτε την σελίδα
manual του προγράμματος οδήγησης &man.agp.4; για περισσότερες
πληροφορίες.Mε αυτό τον τρόπο, η ρύθμιση του υλικού σας θα μπορεί να γίνει
όπως και σε κάθε άλλη κάρτα γραφικών. Προσοχή, σε συστήματα χωρίς
ενσωματωμένο τον οδηγό &man.agp.4;, ο οδηγός δεν θα φορτωθεί με την
εντολή &man.kldload.8;. Ο οδηγός αυτός πρέπει να βρίσκεται
στον πυρήνα κατά την εκκίνηση, είτε στατικά μεταγλωττισμένος, είτε
με χρήση του /boot/loader.conf.Προσθέτοντας μια Widescreen Επίπεδη ΟθόνηΡύθμιση widescreen επίπεδης οθόνηςΑυτό το τμήμα προϋποθέτει μερικές γνώσεις εξειδικευμένων
ρυθμίσεων. Αν οι προσπάθειες με τα συνήθη εργαλεία ρυθμίσεων δεν
καταλήξουν σε μια ρύθμιση που να λειτουργεί, υπάρχουν αρκετές
πληροφορίες στα αρχεία log που μπορούν να σας βοηθήσουν.
Ωστόσο, είναι απαραίτητη η χρήση ενός συντάκτη κειμένου.Οι τρέχουσες αναλύσεις widescreen (WSXGA, WSXGA+, WUXGA, WXGA,
WXGA+, κ.α.) υποστηρίζουν formats και aspect ratios (αναλογίες)
16:10 και 16:9 που μπορεί να δημιουργήσουν προβλήματα. Παραδείγματα
μερικών κοινών αναλύσεων για αναλογία 16:10 είναι τα:2560x16001920x12001680x10501440x9001280x800Κάποια στιγμή, η ρύθμιση θα γίνεται πολύ απλά προσθέτοντας την
ανάλυση ως ένα πιθανό Mode στο
Section "Screen" όπως εδώ:Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1680x1050"
EndSubSection
EndSectionΤο &xorg; είναι αρκετά έξυπνο ώστε
να ανακτήσει τις πληροφορίες της ανάλυσης της widescreen οθόνης
μέσω των πληροφοριών I2C/DDC, γνωρίζοντας έτσι τι μπορεί να
χειριστεί η οθόνη όσο αφορά τις συχνότητες και τις αναλύσεις.Αν αυτές οι ModeLines δεν υπάρχουν στους
οδηγούς, μπορεί να χρειαστεί να τις δώσετε εσείς στο
&xorg;. Χρησιμοποιώντας το
/var/log/Xorg.0.log μπορείτε να
ανακτήσετε αρκετές πληροφορίες ώστε να δημιουργήσετε μόνοι σας ένα
ModeLine που να λειτουργεί.
Απλώς αναζητήστε πληροφορίες που θα μοιάζουν με αυτό:(II) MGA(0): Supported additional Video Mode:
(II) MGA(0): clock: 146.2 MHz Image Size: 433 x 271 mm
(II) MGA(0): h_active: 1680 h_sync: 1784 h_sync_end 1960 h_blank_end 2240 h_border: 0
(II) MGA(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1089 v_border: 0
(II) MGA(0): Ranges: V min: 48 V max: 85 Hz, H min: 30 H max: 94 kHz, PixClock max 170 MHzΑυτές ονομάζονται πληροφορίες EDID. Η δημιουργία ενός
ModeLine από αυτές, γίνεται βάζοντας απλώς τους
αριθμούς στη σωστή σειρά:ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>Τελικά, το ModeLine στο
Section "Monitor" στο παράδειγμα μας θα μοιάζει
με αυτό:Section "Monitor"
Identifier "Monitor1"
VendorName "Bigname"
ModelName "BestModel"
ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
Option "DPMS"
EndSectionΤώρα που έχετε τελειώσει με αυτά τα απλά βήματα, το X θα πρέπει
να λειτουργήσει στη νέα widescreen οθόνη σας.MurrayStokelyΣυνεισφορά του Χρήση Γραμματοσειρών στο X11Γραμματοσειρές τύπου Type1Οι προκαθορισμένες γραμματοσειρές που συνοδεύουν το
X11 δεν είναι ιδανικές για εφαρμογές επιτραπέζιας τυπογραφίας.
Οι μεγάλες γραμματοσειρές παρουσίασης φαίνονται οδοντωτές και
ερασιτεχνικές, και οι μικρές γραμματοσειρές στο
&netscape; είναι σχεδόν ακατάληπτες.
Ευτυχώς όμως, υπάρχουν διαθέσιμες αρκετές, υψηλής ποιότητας
γραμματοσειρές Type1 (&postscript;) που μπορούν να χρησιμοποιηθούν
άμεσα από το X11. Για παράδειγμα, η συλλογή γραμματοσειρών URW
(x11-fonts/urwfonts) περιέχει
εκδόσεις υψηλής ποιότητας των συνηθισμένων type1 γραμματοσειρών
(Times Roman,
Helvetica,
Palatino και άλλες). Η
συλλογή Freefonts
(x11-fonts/freefonts) περιέχει
πολλές περισσότερες γραμματοσειρές, αλλά οι περισσότερες από αυτές
είναι για λογισμικό γραφικών όπως το Gimp,
και δεν είναι κατάλληλες για γραμματοσειρές οθόνης. Ακόμη, το X11
μπορεί με ελάχιστο κόπο να ρυθμιστεί ώστε να χρησιμοποιεί &truetype;
γραμματοσειρές. Για περισσότερες λεπτομέρειες, δείτε την σελίδα
manual &man.X.7; ή το τμήμα σχετικά με τις
γραμματοσειρές &truetype;.Για να εγκαταστήσετε τις παραπάνω συλλογές γραμματοσειρών Type1
από την συλλογή των ports, εκτελέστε τις παρακάτω εντολές:&prompt.root; cd /usr/ports/x11-fonts/urwfonts
&prompt.root; make install cleanΜε παρόμοιο τρόπο μπορείτε να εγκαταστήσετε και την freefont ή
άλλες συλλογές. Για να ανιχνεύσει ο X server αυτές τις
γραμματοσειρές, προσθέστε την κατάλληλη γραμμή στο αρχείο ρυθμίσεων
του (/etc/X11/xorg.conf):FontPath "/usr/local/lib/X11/fonts/URW/"Εναλλακτικά, εκτελέστε στην γραμμή εντολών μιας συνόδου X:&prompt.user; xset fp+ /usr/local/lib/X11/fonts/URW
&prompt.user; xset fp rehashΑυτό θα λειτουργήσει, αλλά όταν τερματίσει η σύνοδος X, οι
ρυθμίσεις θα χαθούν, εκτός αν προστεθούν στο αρχείο εκκίνησης
(το ~/.xinitrc για μία συνηθισμένη
σύνοδο μέσω startx, η το
~/.xsession αν συνδέεστε μέσω ενός
γραφικού διαχειριστή σύνδεσης όπως ο XDM).
Ένας ακόμη τρόπος είναι να χρησιμοποιήσετε το αρχείο
/usr/local/etc/fonts/local.conf: δείτε το τμήμα
anti-aliasing (εξομάλυνσης).Γραμματοσειρές &truetype;Γραμματοσειρές TrueTypeγραμματοσειρέςTrueTypeΤο &xorg; έχει ενσωματωμένη υποστήριξη
απεικόνισης γραμματοσειρών &truetype;. Υπάρχουν δύο διαφορετικά
modules (αρθρώματα) που μπορούν να ενεργοποιήσουν αυτήν την
λειτουργία. Σε αυτό το παράδειγμα χρησιμοποιείται το freetype module
επειδή είναι πιο συνεργάσιμο με τα άλλα back-ends απεικόνισης
γραμματοσειρών. Για να ενεργοποιήσετε το freetype module, απλώς
προσθέστε την παρακάτω γραμμή στο τμήμα "Module"
του αρχείου /etc/X11/xorg.conf.Load "freetype"Τώρα, δημιουργήστε έναν κατάλογο για τις γραμματοσειρές &truetype;
(για παράδειγμα,
/usr/local/lib/X11/fonts/TrueType)
και αντιγράψτε όλες τις γραμματοσειρές &truetype; σε αυτόν. Προσέξτε
ότι οι γραμματοσειρές &truetype; δεν μπορούν να είναι από ένα σύστημα
&macintosh; πρέπει να είναι σε μορφή &unix;/&ms-dos;/&windows; για να
λειτουργούν στο X11. Μόλις αντιγραφούν τα αρχεία στον κατάλογο,
χρησιμοποιήστε το ttmkfdir για να
δημιουργήσετε το αρχείο fonts.dir, ώστε ο X font
renderer να γνωρίζει την ύπαρξη των νέων αυτών αρχείων.
Το ttmkfdir διατίθεται από την συλλογή ports του
&os; ως x11-fonts/ttmkfdir.&prompt.root; cd /usr/local/lib/X11/fonts/TrueType
&prompt.root; ttmkfdir -o fonts.dirΤώρα, πρoσθέστε τον κατάλογο &truetype; στη διαδρομή των fonts.
Αυτό γίνεται με τον ίδιο τρόπο που περιγράψαμε παραπάνω στις Type1 γραμματοσειρές, χρησιμοποιώντας το&prompt.user; xset fp+ /usr/local/lib/X11/fonts/TrueType
&prompt.user; xset fp rehashή απλά προσθέστε μια γραμμή FontPath στο αρχείο
xorg.conf.Αυτό ήταν. Τώρα ο &netscape;,
το Gimp,
το &staroffice;, και όλες οι άλλες
εφαρμογές X πρέπει να αναγνωρίζουν τις εγκαταστημένες &truetype;
γραμματοσειρές. Πολύ μικρές γραμματοσειρές (όπως αυτές που φαίνονται
στο κείμενο μιας ιστοσελίδας σε υψηλή ανάλυση) και πολύ μεγάλες
γραμματοσειρές (στο &staroffice;) θα
φαίνονται τώρα πολύ καλύτερα.Joe MarcusClarkeΑνανεώθηκε από τον Anti-Aliased Γραμματοσειρέςanti-aliased γραμματοσειρέςγραμματοσειρέςanti-aliased
- Το anti-aliasing (εξομάλυνση γραμματοσειρών) διατίθεται στο X11
- ήδη από το &xfree86; 4.0.2. Όμως, ή
- ρύθμιση των γραμματοσειρών ήταν δύσκολη πριν το
- &xfree86; 4.3.0.
- Από το &xfree86; 4.3.0 και μετά, όλες οι
- γραμματοσειρές X11 που βρίσκονται στο
+ Όλες οι γραμματοσειρές X11 που βρίσκονται στο
/usr/local/lib/X11/fonts/ και το
- ~/.fonts/ είναι έτοιμες για anti-aliasing σε
- Xft-aware εφαρμογές. Δεν είναι όλες οι εφαρμογές Xft-aware, αλλά
- πολλές υποστηρίζουν το Xft. Παραδείγματα Xft-aware εφαρμογών είναι
- το Qt από την έκδοση 2.3 και μετά (πρόκειται για το toolkit του
- KDE), το GTK+ από την έκδοση 2.0 και μετά
- (πρόκειται για το toolkit του GNOME), και ο
- Mozilla από την έκδοση 1.2 και μετά.
+ ~/.fonts/ είναι αυτόματα διαθέσιμες για
+ anti-aliasing σε εφαρμογές Xft-aware, συμπεριλαμβανομένων
+ του KDE, GNOME και Firefox.Για να ελέγξετε ποίες γραμματοσειρές είναι anti-aliased, ή να
ρυθμίσετε τις ιδιότητες του anti-aliasing, δημιουργήστε (ή
τροποποιήστε, αν ήδη υπάρχει) το αρχείο
/usr/local/etc/fonts/local.conf. Μέσω αυτού του
αρχείου μπορούν να ρυθμιστούν αρκετά εξειδικευμένα χαρακτηριστικά του
συστήματος γραμματοσειρών Xft. Αυτό το τμήμα περιγράφει μόνο μερικές
απλές δυνατότητες. Για περισσότερες λεπτομέρειες, δείτε το
&man.fonts-conf.5;.XMLΤο αρχείο αυτό πρέπει να είναι μορφής XML. Δώστε μεγάλη προσοχή
στα πεζά / κεφαλαία, και σιγουρευθείτε ότι όλα τα tags έχουν κλείσει
σωστά. Το αρχείο ξεκινά με την συνηθισμένη επικεφαλίδα XML και ένα
ορισμό DOCTYPE, και έπειτα ακολουθεί το
<fontconfig> tag:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>Όπως είπαμε προηγουμένως, όλες οι γραμματοσειρές στο
/usr/local/lib/X11/fonts/ όπως και στο
~/.fonts/ διατίθενται ήδη σε Xft-aware εφαρμογές.
Αν θέλετε να προσθέσετε και άλλους καταλόγους εκτός από αυτούς τους
δύο, προσθέστε μια γραμμή παρόμοια με αυτή που ακολουθεί στο
/usr/local/etc/fonts/local.conf:<dir>/path/to/my/fonts</dir>Αφού προσθέσετε νέες γραμματοσειρές, και ειδικότερα νέους
καταλόγους γραμματοσειρών, πρέπει να εκτελέσετε την ακόλουθη εντολή
για να αναδημιουργήσετε την cache γραμματοσειρών:&prompt.root; fc-cache -fΤο anti-aliasing κάνει τα άκρα ελαφρώς συγκεχυμένα, κάνοντας έτσι
τα πολύ μικρά γράμματα πιο αναγνώσιμα, και αφαιρεί τις
κλίμακες (σκαλοπάτια) από τα μεγάλα γράμματα, αλλά
μπορεί να προκαλέσει ενοχλήσεις στα μάτια αν χρησιμοποιηθεί σε
κανονικά μεγέθη. Για να εξαιρέσετε από το anti-aliasing μεγέθη
γραμματοσειρών μικρότερα από 14 point, προσθέστε αυτές τις
γραμμές: <match target="font">
<test name="size" compare="less">
<double>14</double>
</test>
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="font">
<test name="pixelsize" compare="less" qual="any">
<double>14</double>
</test>
<edit mode="assign" name="antialias">
<bool>false</bool>
</edit>
</match>γραμματοσειρέςspacingΤο spacing (διαστήματα) σε μερικές monospaced γραμματοσειρές
μπορεί επίσης να είναι ακατάλληλο όταν χρησιμοποιείται anti-aliasing.
Αυτό φαίνεται να αποτελεί ιδιαίτερο πρόβλημα με το
KDE. Μια διόρθωση για αυτό, είναι να
επιβάλλετε στο spacing την τιμή 100 για αυτές τις γραμματοσειρές.
Προσθέστε τις ακόλουθες γραμμές: <match target="pattern" name="family">
<test qual="any" name="family">
<string>fixed</string>
</test>
<edit name="family" mode="assign">
<string>mono</string>
</edit>
</match>
<match target="pattern" name="family">
<test qual="any" name="family">
<string>console</string>
</test>
<edit name="family" mode="assign">
<string>mono</string>
</edit>
</match>(αυτό μετονομάζει τα άλλα κοινά ονόματα των fixed γραμματοσειρών
ως "mono"), και έπειτα προσθέστε: <match target="pattern" name="family">
<test qual="any" name="family">
<string>mono</string>
</test>
<edit name="spacing" mode="assign">
<int>100</int>
</edit>
</match> Συγκεκριμένες γραμματοσειρές, όπως οι Helvetica, μπορεί να
εμφανίζουν πρόβλημα όταν είναι anti-aliased. Το πρόβλημα συχνά
εκδηλώνεται ως μία γραμματοσειρά κομμένη κάθετα στην μέση. Στην
- χειρότερη περίπτωση, μπορεί να κάνει εφαρμογές όπως ο
- Mozilla να καταρρεύσουν. Για να το
- αποφύγετε αυτό, μπορείτε να προσθέσετε το ακόλουθο στο
- local.conf:
+ χειρότερη περίπτωση, μπορεί να κάνει κάποιες εφαρμογές να
+ καταρρεύσουν. Για να το αποφύγετε αυτό, μπορείτε να προσθέσετε το
+ ακόλουθο στο local.conf:
<match target="pattern" name="family">
<test qual="any" name="family">
<string>Helvetica</string>
</test>
<edit name="family" mode="assign">
<string>sans-serif</string>
</edit>
</match> Μόλις τελειώσετε την μετατροπή του
local.conf σιγουρευθείτε ότι κλείσατε το αρχείο
με το </fontconfig> tag. Αν δεν το κάνετε,
οι αλλαγές σας θα αγνοηθούν.
- Η συλλογή γραμματοσειρών που συνοδεύει το X11 δεν είναι ιδιαίτερα
- καλή όσο αφορά το anti-aliasing. Μπορείτε να βρείτε μια πολύ
- καλύτερη συλλογή προεπιλεγμένων γραμματοσειρών στο port
- x11-fonts/bitstream-vera
- Αυτό το port θα εγκαταστήσει το αρχείο
- /usr/local/etc/fonts/local.conf αν δεν υπάρχει
- ήδη. Αν το αρχείο υπάρχει, το port θα δημιουργήσει ένα αρχείο
- /usr/local/etc/fonts/local.conf-vera.
- Συγχωνεύστε τα περιεχόμενα αυτού του αρχείου με το
- /usr/local/etc/fonts/local.conf, και οι
- γραμματοσειρές Bitstream θα αντικαταστήσουν αυτόματα τις αρχικές
- X11 Serif, Sans Serif, και Monospaced.
-
Τέλος, οι χρήστες μπορούν να προσθέσουν τις δικές τους ρυθμίσεις
μέσω των προσωπικών τους αρχείων
.fonts.conf. Για να γίνει αυτό, κάθε χρήστης
πρέπει απλώς να δημιουργήσει ένα ~/.fonts.conf.
Αυτό το αρχείο πρέπει να είναι επίσης XML μορφής.LCD οθόνηγραμματοσειρέςLCD screenΚάτι τελευταίο: σε μία LCD οθόνη, μπορεί να είναι επιθυμητός
ο δειγματισμός sub-pixel. Ο δειγματισμός χειρίζεται χωριστά τα
(οριζόντια διαχωρισμένα) κόκκινα, πράσινα και μπλε στοιχεία ώστε να
βελτιώσει την οριζόντια ανάλυση. Τα αποτελέσματα μπορεί να είναι
δραματικά καλύτερα. Για να τον ενεργοποιήσετε, προσθέστε την
παρακάτω γραμμή κάπου στο αρχείο
local.conf:
<match target="font">
<test qual="all" name="rgba">
<const>unknown</const>
</test>
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
</match>
Ανάλογα με τον τύπο της οθόνης, το rgb
μπορεί να χρειαστεί να αλλάξει σε bgr,
vrgb ή vbgr:
πειραματιστείτε και δείτε ποίο λειτουργεί καλύτερα.
-
-
- Mozilla
- κατάργηση των anti-aliased γραμματοσειρών
-
-
- Το anti-aliasing θα πρέπει να ενεργοποιηθεί στην επόμενη
- εκκίνηση του διακομιστή X. Όμως, τα προγράμματα πρέπει να γνωρίζουν
- πώς να το εκμεταλλευθούν. Τη δεδομένη στιγμή, το Qt toolkit το
- γνωρίζει, έτσι όλο το περιβάλλον KDE
- μπορεί να χρησιμοποιήσει anti-aliased γραμματοσειρές. Το GTK+ και
- το GNOME μπορούν επίσης να
- χρησιμοποιήσουν το anti-aliasing μέσω του Font
- capplet (δείτε το για
- λεπτομέρειες). Εξ ορισμού, ο Mozilla
- από την έκδοση 1.2 και μετά χρησιμοποιεί αυτόματα το
- anti-aliasing. Για να το απενεργοποιήσετε, αναμεταγλωττίστε τον
- Mozilla με την επιλογή
- -DWITHOUT_XFT.SethKingsleyΣυνεισφορά του Ο X Display ManagerΕισαγωγήX Display ManagerΟ X Display Manager (XDM) είναι
ένα προαιρετικό μέρος του συστήματος X Windows που χρησιμοποιείται
για διαχείριση συνδέσεων (logins). Αυτό είναι χρήσιμο σε πολλές
περιπτώσεις, όπως σε απλά X Terminals, σε
desktop μηχανήματα, καθώς και σε διακομιστές μεγάλων δικτύων.
Αφού το σύστημα X Windows είναι ανεξάρτητο πρωτοκόλλων και δικτύων,
υπάρχει μεγάλο εύρος πιθανών ρυθμίσεων
για την λειτουργία X πελατών και διακομιστών σε διαφορετικά
μηχανήματα συνδεδεμένα σε ένα δίκτυο. Ο
XDM παρέχει ένα γραφικό περιβάλλον για
την επιλογή του διακομιστή με τον οποίο θα γίνει η σύνδεση, και για
την είσοδο πληροφοριών πιστοποίησης όπως του ονόματος χρήστη και του
κωδικού πρόσβασης.Σκεφθείτε τον XDM ως μια εφαρμογή που
παρέχει τις ίδιες δυνατότητες στον χρήστη με το εργαλείο
&man.getty.8; (δείτε το για
λεπτομέρειες). Το XDM εκτελεί συνδέσεις (logins) στον διακομιστή
και έπειτα εκτελεί ένα διαχειριστή συνεδρίας (session manager,
συνήθως έναν X διαχειριστή παραθύρων, window manager) για λογαριασμό
του χρήστη. Ο XDM έπειτα περιμένει να
τερματίσει αυτό το πρόγραμμα, που σηματοδοτεί ότι ο χρήστης τελείωσε
και πρέπει να αποσυνδεθεί. Σε αυτό το σημείο,
ο XDM μπορεί να εμφανίσει ξανά την οθόνη
εισόδου (login) και την οθόνη επιλογής γραφικής σύνδεσης ώστε να
συνδεθεί ένας άλλος χρήστης.Χρήση του XDMΓια να ξεκινήσετε να χρησιμοποιείτε το
XDM, εγκαταστήστε το port x11/xdm (δεν εγκαθίσταται από προεπιλογή
στις πρόσφατες εκδόσεις του &xorg;).
Μπορείτε έπειτα να βρείτε τον δαίμονα XDM
στο /usr/local/bin/xdm. Αυτό το πρόγραμμα
μπορεί να εκτελεστεί οποιαδήποτε στιγμή ως root
και θα ξεκινήσει να διαχειρίζεται την οθόνη του X στο τοπικό
μηχάνημα. Αν ο XDM πρέπει να εκτελείται
κάθε φορά που εκκινείται το μηχάνημα, ένας βολικός τρόπος είναι η
προσθήκη μιας γραμμής στο /etc/ttys. Για
περισσότερες πληροφορίες σχετικά με την μορφή και την χρήση αυτού του
αρχείου, δείτε το . Υπάρχει μία γραμμή
στο αρχικό /etc/ttys αρχείο για την εκτέλεση του
XDM σε ένα εικονικό τερματικό:ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secureΑρχικά αυτή η λειτουργία είναι απενεργοποιημένη — για να
την ενεργοποιήσετε αλλάξτε το πεδίο 5 από off σε
on και επαννεκίνηστε το &man.init.8;
χρησιμοποιώντας τις οδηγίες του . Το πρώτο
πεδίο, το όνομα του τερματικού που θα διαχειρίζεται το πρόγραμμα,
είναι το ttyv8. Αυτό σημαίνει ότι ο
XDM θα εκτελείται στο 9ο
εικονικό τερματικό.Ρύθμιση του XDMΟ κατάλογος ρυθμίσεων του XDM
βρίσκεται στο /usr/local/lib/X11/xdm. Σε αυτόν
τον κατάλογο υπάρχουν πολλά αρχεία που χρησιμοποιούνται για να
αλλάξουν την συμπεριφορά και εμφάνιση του
XDM. Τυπικά, θα βρείτε τα παρακάτω
αρχεία:ΑρχείοΠεριγραφήXaccessΚανόνες πιστοποίησης πελατών.XresourcesΠροκαθορισμένες τιμές X resource.XserversΛίστα απομακρυσμένων και τοπικών οθονών (Χ displays)
στις οποίες θα γίνεται διαχείριση.XsessionΠροεπιλεγμένο script συνόδων για logins.Xsetup_*Script για την εκτέλεση εντολών πριν την εμφάνιση του
περιβάλλοντος σύνδεσης (login screen).xdm-configΡυθμίσεις για όλες τις απεικονίσεις (displays) που
εκτελούνται σε αυτό το μηχάνημα.xdm-errorsΛάθη που δημιουργούνται από το πρόγραμμα.xdm-pidΤο ID της διεργασίας του τρέχοντος XDM.Επίσης σε αυτόν τον κατάλογο υπάρχουν μερικά scripts και
προγράμματα που χρησιμοποιούνται για να ρυθμίσουν την επιφάνεια
εργασίας όταν εκτελείται το XDM.
Θα περιγράψουμε περιληπτικά το σκοπό καθενός από αυτά τα αρχεία.
Η ακριβής σύνταξη και χρήση όλων αυτών των αρχείων περιγράφεται
στο &man.xdm.1;.Η προκαθορισμένη ρύθμιση είναι ένα απλό ορθογώνιο παράθυρο
σύνδεσης με το όνομα του μηχανήματος να φαίνεται στην κορυφή με
μεγάλα γράμματα και τις προτροπές Login: και
Password: από κάτω. Αυτό είναι ένα καλό σημείο
εκκίνησης για να αλλάξετε την εμφάνιση του
XDM.XaccessΤο πρωτόκολλο για σύνδεση με απεικονίσεις που ελέγχονται από το
XDM ονομάζεται X Display Manager
Connection Protocol (XDMCP). Το αρχείο αυτό είναι ένα σύνολο
κανόνων για των έλεγχο των συνδέσεων XDMCP από απομακρυσμένα
μηχανήματα. Αγνοείται, εκτός και αν το
xdm-config έχει ρυθμιστεί ώστε να δέχεται
εισερχόμενες συνδέσεις. Η προεπιλογή είναι να μην επιτρέπεται σε
κανένα πελάτη να συνδεθεί.XresourcesΠρόκειται για το αρχείο προκαθορισμένων τιμών για τις εφαρμογές
εμφάνισης του παράθυρου σύνδεσης (login) και επιλογέα απεικόνισης
(display chooser). Μέσα από αυτό μπορεί να τροποποιηθεί η εμφάνιση
του προγράμματος login. Η μορφή του είναι ίδια με το αρχείο
app-defaults που περιγράφεται στην τεκμηρίωση του X11.XserversΑυτή είναι μια λίστα των απομακρυσμένων σταθμών που πρέπει να
εμφανίζονται ως επιλογές στο πρόγραμμα (chooser).XsessionΑυτό είναι το προκαθορισμένο session script που εκτελεί το
XDM μετά τη σύνδεση κάποιου χρήστη.
Κανονικά, κάθε χρήστης θα έχει ένα τροποποιημένο, δικό του, session
script στο ~/.xsession που θα παρακάμπτει αυτό
το script.Xsetup_*Τα αρχεία αυτά εκτελούνται αυτόματα πριν την εμφάνιση των
παραθύρων επιλογής ή σύνδεσης. Υπάρχει ένα script για κάθε display
που χρησιμοποιείται, που ονομάζεται Xsetup_ με
το νούμερο του display στο τέλος (για παράδειγμα
Xsetup_0). Κανονικά αυτά τα scripts θα
εκτελούν ένα ή δυο προγράμματα στο παρασκήνιο όπως π.χ. το
xconsole.xdm-configΤο αρχείο αυτό περιέχει ρυθμίσεις στην μορφή των app-defaults,
που εφαρμόζονται σε κάθε display που διαχειρίζεται η συγκεκριμένη
εγκατάσταση.xdm-errorsΤο αρχείο αυτό περιέχει την έξοδο των διακομιστών X που
προσπαθεί να εκτελέσει το XDM. Αν ένα
display που προσπαθεί να εκκινήσει o XDM
κολλήσει για κάποιο λόγο, καλό είναι να αναζητήσετε εδώ τυχόν
μηνύματα σφαλμάτων. Τα μηνύματα αυτά καταγράφονται και στα αρχεία
χρηστών ~/.xsession-errors.Διατηρώντας έναν Διακομιστή Απομακρυσμένων ΣυνδέσεωνΓια να συνδέονται και άλλοι πελάτες στον διακομιστή οθόνης,
τροποποιήστε τους κανόνες ελέγχου πρόσβασης, και ενεργοποιήστε τις
εισερχόμενες συνδέσεις. Τα παραπάνω είναι, από προεπιλογή ρυθμισμένα
σε συντηρητικές τιμές. Για να κάνετε το
XDM να δέχεται συνδέσεις, αρχικά μετατρέψτε
σε σχόλιο την παρακάτω γραμμή στο αρχείο
xdm-config:! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort: 0και μετά επανεκκινήστε τον XDM.
Να έχετε υπόψιν σας ότι τα σχόλια στα αρχεία
app-defaults ξεκινούν με τον χαρακτήρα !,
και όχι τον συνήθη #. Μπορεί να επιθυμείτε πιο
αυστηρούς κανόνες ελέγχου πρόσβασης. Δείτε τα παραδείγματα
στο Xaccess, και συμβουλευθείτε τη σελίδα manual
του &man.xdm.1;.Αντικαταστάτες του XDMΥπάρχουν αρκετοί αντικαταστάτες για το πρόγραμμα
XDM. Ένας από αυτούς,
ο kdm (έρχεται με το
KDE) αναλύεται αργότερα σε αυτό το
κεφάλαιο. Ο kdm display manager
προσφέρει πολλά προτερήματα στα γραφικά και διακοσμητικά στοιχεία,
όπως επίσης και την δυνατότητα να επιλέγουν οι χρήστες τον
επιθυμητό διαχειριστή παραθύρων την στιγμή της σύνδεσης.ValentinoVaschettoΣυνεισφορά του Γραφικά ΠεριβάλλονταΑυτό το τμήμα περιγράφει μερικά γραφικά περιβάλλοντα που διατίθενται
για το X στο &os;. Η έννοια γραφικό περιβάλλον
μπορεί να σημαίνει οτιδήποτε, από έναν απλό διαχειριστή παραθύρων μέχρι
ένα ολοκληρωμένα πακέτο desktop εφαρμογών, όπως το
KDE ή το
GNOME.GNOMEΣχετικά με το GNOMEGNOMEΤο GNOME είναι ένα φιλικό προς τον
χρήστη γραφικό περιβάλλον που επιτρέπει στους χρήστες να
χρησιμοποιούν και να ρυθμίζουν εύκολα τους υπολογιστές τους. Το
GNOME διαθέτει ένα panel (για
την εκκίνηση εφαρμογών και την προβολή κατάστασης), επιφάνεια
εργασίας (όπου εμφανίζονται δεδομένα και εφαρμογές), ένα πλήθος από
διαδεδομένα εργαλεία και εφαρμογές, καθώς και ένα σύνολο
τυποποιήσεων που επιτρέπει στις εφαρμογές να συνεργάζονται μεταξύ
τους και να δείχνουν ένα συνεπές περιβάλλον εργασίας. Οι χρήστες
άλλων λειτουργικών συστημάτων ή περιβάλλoντων θα αισθάνονται σαν
στο σπίτι τους χρησιμοποιώντας το πανίσχυρο γραφικό περιβάλλον που
παρέχει το GNOME. Περισσότερες
πληροφορίες σχετικά με το GNOME στο
&os; μπορούν να βρεθούν στο διαδικτυακό τόπο του &os; GNOME Project. Η
τοποθεσία περιέχει επίσης και αναλυτικά FAQs σχετικά με την
εγκατάσταση, την ρύθμιση, και την διαχείριση του
GNOME.Εγκατάσταση του GNOMEΤο GNOME μπορεί να εγκατασταθεί
εύκολα από πακέτα ή από την συλλογή των ports:Για να εγκαταστήσετε το έτοιμο πακέτο του
GNOME από το δίκτυο, απλώς
πληκτρολογήστε:&prompt.root; pkg_add -r gnome2Για να μεταγλωττίσετε το GNOME από
τον πηγαίο κώδικα, χρησιμοποιήστε την συλλογή των ports:&prompt.root; cd /usr/ports/x11/gnome2
&prompt.root; make install cleanΜόλις εγκατασταθεί το GNOME, θα
πρέπει να ρυθμιστεί ο διακομιστής X ώστε να εκκινεί το
GNOME αντί για τον προκαθορισμένο
διαχειριστή παραθύρων.Ο ευκολότερος τρόπος για να εκκινήσετε το
GNOME είναι με το
GDM, τον GNOME Display Manager.
Το GDM, που εγκαθίσταται ως μέρος
του GNOME (αλλά είναι ανενεργό
αρχικά), μπορεί να ενεργοποιηθεί με την προσθήκη του
gdm_enable="YES" στο
/etc/rc.conf. Μόλις κάνετε επανεκκίνηση,
το GDM θα ξεκινήσει αυτόματα.Επιπρόσθετα, για να ενεργοποιήσετε όλες τις υπηρεσίες του
GNOME ταυτόχρονα με την εκκίνηση του
GDM, προσθέστε τη γραμμή
gnome_enable="YES" στο αρχείο
/etc/rc.conf.Το GNOME μπορεί επίσης να ξεκινήσει
από την γραμμή εντολών ρυθμίζοντας κατάλληλα το αρχείο
.xinitrc.
Αν υπάρχει ήδη το αρχείο .xinitrc, απλώς
αντικαταστήστε την γραμμή που εκκινεί τον τρέχοντα διαχειριστή
παραθύρων με μία που να εκκινεί το
/usr/local/bin/gnome-session.
Αν δεν θέλετε να κάνετε περισσότερες ρυθμίσεις στο αρχείο,
χρειάζεται απλά να γράψετε:&prompt.user; echo "/usr/local/bin/gnome-session" > ~/.xinitrcΈπειτα, πληκτρολογήστε startx, και θα
ξεκινήσει το γραφικό περιβάλλον του
GNOMEΑν χρησιμοποιείτε κάποιο παλαιότερο display manager,
όπως το XDM, το παραπάνω δεν θα
λειτουργήσει. Στην περίπτωση αυτή, δημιουργήστε ένα εκτελέσιμο
αρχείο .xsession το οποίο να περιέχει την ίδια
εντολή. Τροποποιήστε το αρχείο .xsession
και αντικαταστήστε την εντολή του τρέχοντος διαχειριστή παραθύρων
με το
/usr/local/bin/gnome-session:&prompt.user; echo "#!/bin/sh" > ~/.xsession
&prompt.user; echo "/usr/local/bin/gnome-session" >> ~/.xsession
&prompt.user; chmod +x ~/.xsessionΆλλη μια επιλογή είναι να ρυθμιστεί ο display manager ώστε να
επιτρέπει την επιλογή του διαχειριστή παραθύρων κατά την σύνδεση.
Το τμήμα Λεπτομέρειες KDE
εξηγεί πως μπορεί να γίνει αυτό μέσω του
kdm, του display manager του
KDE.
-
-
- Anti-aliased Γραμματοσειρές στο GNOME
-
-
- GNOME
- anti-aliased γραμματοσειρές
-
-
- Το X11 επιτρέπει το anti-aliasing μέσω της επέκτασης
- RENDER. Το GTK+ 2.0 (η βιβλιοθήκη που χρησιμοποιεί
- το GNOME) ή μεταγενέστερο μπορεί να
- χρησιμοποιήσει αυτή την δυνατότητα. Η ρύθμιση του anti-aliasing
- περιγράφεται στο . Έτσι, με ανανεωμένο
- λογισμικό, είναι εφικτό το anti-aliasing στο περιβάλλον του
- GNOME. Απλώς πηγαίνετε στο
-
- Applications
- Desktop Preferences
- Font, και επιλέξτε είτε το
- Best shapes,
- Best contrast, είτε το
- Subpixel smoothing (LCDs). Για κάποια
- εφαρμογή GTK+ που δεν ανήκει στο GNOME,
- θέστε την μεταβλητή περιβάλλοντος GDK_USE_XFT σε
- 1 πριν την ξεκινήσετε.
- KDEKDEΣχετικά με το KDEΤο KDE είναι ένα σύγχρονο, εύκολο στη
χρήση, γραφικό περιβάλλον. Μερικά πράγματα που προσφέρει το
KDE στον χρήστη είναι:Ένα όμορφο σύγχρονο περιβάλλονΈνα περιβάλλον με πλήρη δικτυακή διαφάνειαΈνα ενσωματωμένο σύστημα βοήθειας που επιτρέπει εύκολη,
συνεπή πρόσβαση στην βοήθεια για την χρήση του
KDE και των εφαρμογών
τουΣυνεπής εμφάνιση και συμπεριφορά όλων των εφαρμογών του
KDEΤυποποιημένα menu και γραμμές εργαλείων (toolbars),
συνδυασμοί πλήκτρων, χρωματικοί συνδυασμοί, κλπ.Διεθνείς ρυθμίσεις: το KDE
διατίθεται σε περισσότερες από 40 γλώσσεςΚεντρικό και συνεπές σύστημα ρυθμίσεων βασισμένο σε
διαλόγουςΜεγάλο αριθμό χρήσιμων εφαρμογών, σχεδιασμένων ειδικά για το
KDEΤο KDE συνοδεύεται από έναν
περιηγητή (browser) που ονομάζεται
Konqueror, και ανταγωνίζεται σοβαρά
τους άλλους περιηγητές των συστημάτων &unix;.
Περισσότερες πληροφορίες για το KDE
μπορείτε να βρείτε στο KDE
website. Για πληροφορίες σχετικές με το &os;
και το KDE, συμβουλευθείτε τον
διαδικτυακό τόπο του
FreeBSD-KDE team.Υπάρχουν διαθέσιμες δύο εκδόσεις του
KDE για το &os;. Η Έκδοση
3, κυκλοφορεί αρκετό καιρό και θεωρείται γενικά ώριμη. Στη Συλλογή
των Ports θα βρείτε επίσης την Έκδοση 4 από τη νεότερη γενιά.
Οι δύο αυτές εκδόσεις μπορούν μάλιστα να συνυπάρχουν στον ίδιο
υπολογιστή.Εγκατάσταση του KDEΌπως και με το GNOME ή κάθε
άλλο γραφικό περιβάλλον, το λογισμικό μπορεί να εγκατασταθεί εύκολα
μέσω πακέτων ή από την συλλογή των Ports:Για να εγκαταστήσετε το KDE3 μέσω
πακέτων από το δίκτυο, απλώς πληκτρολογήστε:&prompt.root; pkg_add -r kdeΓια να εγκαταστήσετε το KDE4 μέσω
πακέτων από το δίκτυο, απλώς πληκτρολογήστε:&prompt.root; pkg_add -r kde4Το &man.pkg.add.1; θα ανακτήσει αυτόματα την τελευταία έκδοση
της εφαρμογής.Για να μεταγλωττίσετε το KDE3 από τον
πηγαίο κώδικα, χρησιμοποιήστε τη Συλλογή των Ports:&prompt.root; cd /usr/ports/x11/kde3
&prompt.root; make install cleanΓια να μεταγλωττίσετε το KDE4 από τον
πηγαίο κώδικα, χρησιμοποιήστε τη Συλλογή των Ports:&prompt.root; cd /usr/ports/x11/kde4
&prompt.root; make install cleanΑφού εγκατασταθεί το KDE,
θα πρέπει να ρυθμιστεί ο διακομιστής X ώστε να το εκκινεί αντί για
τον προκαθορισμένο διαχειριστή παραθύρων. Αυτό γίνεται με την
αλλαγή του αρχείου .xinitrc:Για το KDE3:&prompt.user; echo "exec startkde" > ~/.xinitrcΓια το KDE4:&prompt.user; echo "exec /usr/local/kde4/bin/startkde" > ~/.xinitrcΤώρα, όποτε το X Window System εκκινείται μέσω του
startx, το γραφικό περιβάλλον θα είναι το
KDE.Αν χρησιμοποιείτε κάποιο display manager όπως το
XDM, η ρύθμιση είναι λίγο
διαφορετική. Θα πρέπει αντί για το .xinitrc να
τροποποιήσετε το .xsession. Οδηγίες για το
kdm δίνονται αργότερα στο κεφάλαιο
αυτό.Περισσότερες Λεπτομέρειες για το KDEΤώρα που το KDE έχει εγκατασταθεί στο
σύστημα, μπορείτε να ανακαλύψετε τις περισσότερες λειτουργίες μέσω
των σελίδων βοήθειας ή δοκιμάζοντας μενού και επιλογές. Οι χρήστες
των &windows; η του &mac; θα αισθάνονται σαν στο σπίτι τους.Η καλύτερη βοήθεια για το KDE είναι η
on-line τεκμηρίωση. Το KDE
συνοδεύεται από τον δικό του περιηγητή,
τον Konqueror, πολλές χρήσιμες εφαρμογές,
και αναλυτική τεκμηρίωση. Το υπόλοιπο αυτής της ενότητας
συζητά τεχνικά θέματα που είναι δύσκολο να ανακαλυφθούν με
δοκιμές.Ο KDE Display ManagerKDEdisplay managerΟ διαχειριστής ενός πολυχρηστικού συστήματος θέλει ενδεχομένως
η σύνδεση των χρηστών να γίνεται μέσω γραφικού περιβάλλοντος.
Όπως περιγράψαμε πρίν, μπορεί να χρησιμοποιηθεί το
XDM. Όμως, το
KDE περιέχει μια
εναλλακτική επιλογή, το kdm, το οποίο
έχει σχεδιαστεί να είναι ποίο ελκυστικό και παρέχει περισσότερες
επιλογές κατά τη σύνδεση. Συγκεκριμένα, οι χρήστες μπορούν εύκολα
να επιλέξουν (μέσω μενού) ποίο γραφικό περιβάλλον
(KDE, GNOME,
ή κάποιο άλλο) θα εκτελεστεί μετά την σύνδεση τους.Για να ενεργοποιήσετε το kdm, θα
πρέπει να αλλάξετε το ttyv8 στο
/etc/ttys. Η γραμμή θα μοιάζει με την
παρακάτω:Για το KDE3:ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secureΓια το KDE4:ttyv8 "/usr/local/kde4/bin/kdm -nodaemon" xterm on secureXfceΣχετικά με το XfceΤο Xfce είναι ένα γραφικό περιβάλλον
που στηρίζεται στην βιβλιοθήκη GTK+ που χρησιμοποιείται και από το
GNOME, αλλά είναι πολύ πιο ελαφρύ και
προορίζεται για όσους θέλουν ένα απλό, αποτελεσματικό γραφικό
περιβάλλον που είναι εύκολο να χρησιμοποιηθεί και να ρυθμιστεί.
Οπτικά, μοιάζει πολύ με το CDE, που
συναντάται σε εμπορικά συστήματα &unix;.
Μερικά από τα χαρακτηριστικά του Xfce
είναι:Ένα απλό, εύκολο στην χρήση γραφικό περιβάλλονΠλήρως παραμετροποιήσιμο με το ποντίκι, με drag and
drop, κλπ.Κεντρικό panel παρόμοιο με του
CDE, με μενού, μικρο-εφαρμογές και
πλήκτρα εκκίνησης εφαρμογώνΟλοκληρωμένος διαχειριστής παραθύρων, διαχειριστής
αρχείων, διαχειριστής ήχου, συμβατότητα με το
GNOME, και άλλαΔυνατότητα χρήσης θεμάτων (themes, αφού χρησιμοποιεί
το GTK+)Γρήγορο, ελαφρύ και αποτελεσματικό: ιδανικό για
παλαιότερα/πιο αργά μηχανήματα ή μηχανήματα με λίγη
μνήμηΠερισσότερες πληροφορίες για το Xfce
μπορείτε να βρείτε στη δικτυακή
τοποθεσία του Xfce.Εγκατάσταση του XfceΥπάρχει (την ώρα που γράφονται αυτές οι γραμμές) έτοιμο πακέτο
για το Xfce. Για να το εγκαταστήσετε,
απλώς πληκτρολογήστε:&prompt.root; pkg_add -r xfce4Εναλλακτικά, για να το μεταγλωττίσετε από τον πηγαίο κώδικα,
χρησιμοποιήστε την συλλογή των ports:&prompt.root; cd /usr/ports/x11-wm/xfce4
&prompt.root; make install cleanΤώρα, πείτε στον διακομιστή X να εκκινήσει το
Xfce την επόμενη φορά που θα γίνει
εκκίνηση του γραφικού περιβάλλοντος. Απλώς πληκτρολογήστε το
παρακάτω:&prompt.user; echo "/usr/local/bin/startxfce4" > ~/.xinitrcΤην επόμενη φορά που θα εκκινήσετε το Χ, θα εμφανιστεί το
Xfce. Όπως και προηγουμένως, αν
χρησιμοποιείτε κάποιο display manager όπως το
XDM, δημιουργήστε ένα αρχείο
.xsession, όπως περιγράφεται στην παράγραφο
του GNOME, αλλά
με την εντολή /usr/local/bin/startxfce4,
ή ρυθμίστε τον display manager να επιτρέπει
την επιλογή γραφικού περιβάλλοντος, όπως περιγράφεται στην παράγραφο
σχετικά με το kdm.