27.3 Τερματικά

Συνεισφορά του Sean Kelly.

Προειδοποίηση: Από το FreeBSD 8.0 και μετά, τα αρχεία συσκευών των σειριακών θυρών μετονομάστηκαν από /dev/cuadN σε /dev/cuauN και από /dev/ttydN σε /dev/ttyuN. Οι χρήστες του FreeBSD 7.X θα πρέπει να προσαρμόσουν την παρακάτω τεκμηρίωση σύμφωνα με τις παραπάνω αλλαγές.

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

27.3.1 Χρήσεις και Είδη Τερματικών

Τα αρχικά συστήματα UNIX® δεν είχαν κονσόλες. Αντίθετα, οι χρήστες εισέρχονταν στο σύστημα και εκτελούσαν τα προγράμματα τους μέσω τερματικών που συνδέονταν στις σειριακές θύρες του υπολογιστή. Αυτό μοιάζει αρκετά με τη χρήση modem και λογισμικού εξομοίωσης τερματικού για σύνδεση σε ένα απομακρυσμένο σύστημα. Με τον τρόπο αυτό μπορείτε βέβαια να εκτελέσετε εργασίες μόνο σε περιβάλλον κειμένου.

Τα σημερινά PC διαθέτουν κονσόλες ικανές να απεικονίσουν γραφικά πολύ υψηλής ποιότητας, αλλά η ικανότητα σύνδεσης στο μηχάνημα μέσω σειριακής θύρας, υπάρχει ακόμα σχεδόν σε όλα τα σημερινά συστήματα τύπου UNIX. Το FreeBSD δεν αποτελεί εξαίρεση. Συνδέοντας ένα τερματικό σε μια αχρησιμοποίητη σειριακή θύρα, μπορείτε να εισέλθετε στο σύστημα και να εκτελέσετε οποιοδήποτε πρόγραμμα κειμένου το οποίο θα μπορούσατε φυσιολογικά να εκτελέσετε στην κονσόλα ή σε ένα παράθυρο xterm του συστήματος X Window.

Για χρήση σε επιχειρήσεις, είναι δυνατόν να συνδέσετε πολλά τερματικά σε ένα FreeBSD σύστημα και να τα τοποθετήσετε στις θέσεις εργασίας των υπαλλήλων. Ένας οικιακός χρήστης μπορεί να χρησιμοποιήσει κάποιο παλιό υπολογιστή (π.χ. ένα παλιό IBM PC ή Macintosh®) ως τερματικό ενός πολύ ισχυρότερου υπολογιστή που εκτελεί FreeBSD. Με τον τρόπο αυτό, μπορείτε να μετατρέψετε αυτό που κανονικά θα ήταν σύστημα ενός χρήστη, σε ένα πανίσχυρο σύστημα πολλαπλών χρηστών.

Στο FreeBSD υπάρχουν τρία είδη τερματικών:

Οι παρακάτω υποενότητες περιγράφουν καθένα από αυτούς τους τύπους.

27.3.1.1 Κουτά Τερματικά

Τα κουτά τερματικά είναι εξειδικευμένες συσκευές που επιτρέπουν τη σύνδεση σε υπολογιστές μέσω σειριακών γραμμών. Αποκαλούνται «κουτά» ακριβώς επειδή η μόνη υπολογιστική ισχύ που έχουν είναι για απεικόνιση, αποστολή, και λήψη κειμένου. Δεν μπορείτε να εκτελέσετε προγράμματα σε αυτά. Όλη η ισχύς τους προέρχεται από τον υπολογιστή που θα τα συνδέσετε, και μέσω αυτού μπορείτε να εκτελέσετε συντάκτες κειμένου, μεταγλωττιστές, προγράμματα email, παιχνίδια κ.ο.κ.

Υπάρχουν εκατοντάδες είδη κουτών τερματικών από αρκετούς κατασκευαστές, όπως το VT-100 της Digital Equipment Corporation και το WY-75 της Wyse. Σχεδόν οποιοσδήποτε τύπος μπορεί να λειτουργήσει με το FreeBSD. Μερικά τερματικά υψηλού κόστους μπορούν επίσης να απεικονίσουν και γραφικά, αλλά αυτή τη δυνατότητα μπορούν να την εκμεταλλευθούν σχετικά λίγα πακέτα λογισμικού.

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

27.3.1.2 PC που Λειτουργούν ως Τερματικά

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

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

Υπάρχουν δύο τουλάχιστον βοηθητικά προγράμματα στο βασικό σύστημα του FreeBSD που μπορούν να χρησιμοποιηθούν για να δουλέψετε μέσω σειριακής σύνδεσης: το cu(1) και το tip(1).

Για να συνδεθείτε από ένα άλλο μηχάνημα που εκτελεί FreeBSD στη σειριακή σύνδεση ενός άλλου συστήματος, μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή:

# cu -l serial-port-device

Όπου το «serial-port-device» είναι το όνομα του αρχείου συσκευής που αντιπροσωπεύει μια σειριακή θύρα στο σύστημα σας. Αυτά τα αρχεία συσκευών καλούνται /dev/cuauN.

Το «N» στο όνομα της συσκευής, αντιπροσωπεύει τον αριθμό της σειριακής θύρας.

Σημείωση: Σημειώστε ότι η αρίθμηση των συσκευών στο FreeBSD ξεκινά από το μηδέν, και όχι από το ένα (όπως συμβαίνει για παράδειγμα στα συστήματα που σχετίζονται με το MS-DOS®). Αυτό πρακτικά σημαίνει ότι η θύρα που στο MS-DOS καλείται COM1 θα είναι συνήθως η /dev/cuau0 στο FreeBSD.

Σημείωση: Κάποιοι χρήστες προτιμούν να χρησιμοποιούν άλλα προγράμματα που διατίθενται μέσω της Συλλογής των Ports. Τα Ports περιλαμβάνουν αρκετά βοηθητικά προγράμματα με λειτουργίες παρόμοιες με το cu(1) και το tip(1), για παράδειγμα το comms/minicom.

27.3.1.3 Τερματικά X

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

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

27.3.2 Ρύθμιση

Η ενότητα αυτή περιγράφει τι χρειάζεται να ρυθμίσετε στο FreeBSD σύστημα σας για να είναι δυνατή η είσοδος σε αυτό μέσω τερματικού. Προϋποθέτει ότι έχετε ήδη ρυθμίσει τον πυρήνα σας να υποστηρίζει τη σειριακή θύρα στην οποία είναι συνδεμένη το τερματικό—και ότι το έχετε ήδη συνδέσει.

Στο Κεφάλαιο 13 είδαμε ότι η διεργασία init είναι υπεύθυνη για τον έλεγχο των άλλων διεργασιών, και για την αρχικοποίηση κατά την εκκίνηση του συστήματος. Μια από τις εργασίες που εκτελεί η init είναι να διαβάζει το αρχείο /etc/ttys και να ξεκινά μια διεργασία getty σε κάθε διαθέσιμο τερματικό. Η διεργασία getty αναλαμβάνει να διαβάσει το όνομα χρήστη και να ξεκινήσει το πρόγραμμα login.

Για να ρυθμιστούν τα τερματικά στο FreeBSD σύστημα σας, θα πρέπει να εκτελέσετε τα ακόλουθα βήματα ως root:

  1. Προσθέστε μια γραμμή στο /etc/ttys με το όνομα της συσκευής όπως φαίνεται στον κατάλογο /dev, αν δεν υπάρχει ήδη.

  2. Καθορίστε ότι θα εκτελείται η /usr/libexec/getty στην θύρα, και επιλέξτε τον κατάλληλο τύπο getty από το αρχείο /etc/gettytab.

  3. Καθορίστε τον προεπιλεγμένο τύπο τερματικού.

  4. Ενεργοποιήστε τη θύρα θέτοντας την αντίστοιχη επιλογή στο «on».

  5. Επιλέξτε αν η θύρα θα είναι ασφαλής με την επιλογή «secure».

  6. Εξαναγκάστε την init να διαβάσει ξανά το αρχείο /etc/ttys.

Ως προαιρετικό βήμα, μπορείτε να δημιουργήσετε ένα προσαρμοσμένο τύπο getty για να τον χρησιμοποιήσετε στο βήμα 2, στην καταχώριση του /etc/gettytab. Στο κεφάλαιο αυτό δεν θα σας εξηγήσουμε πως γίνεται αυτό. Σας προτρέπουμε να διαβάσετε τις σελίδες manual του gettytab(5) και getty(8) για περισσότερες πληροφορίες.

27.3.2.1 Προσθέτοντας μια Καταχώριση στο /etc/ttys

Το αρχείο /etc/ttys περιέχει μια λίστα όλων των θυρών του FreeBSD συστήματος σας στις οποίες θέλετε να επιτρέπεται η είσοδος στο σύστημα. Για παράδειγμα, υπάρχει μια καταχώριση σε αυτό το αρχείο για την πρώτη εικονική κονσόλα ttyv0. Μέσω αυτής της καταχώρισης, μπορείτε να εισέλθετε στο σύστημα από την κονσόλα. Το αρχείο αυτό περιέχει επίσης καταχωρίσεις για άλλες εικονικές κονσόλες, σειριακές θύρες και ψευδό-τερματικά. Για κάποιο τερματικό που είναι συνδεμένο απευθείας σε μια σειριακή θύρα, γράψτε απλώς την καταχώριση της σειριακής συσκευής όπως φαίνεται στον κατάλογο /dev, χωρίς να γράψετε και τον κατάλογο /dev (για παράδειγμα, η συσκευή /dev/ttyv0 θα καταχωρισθεί ως ttyv0).

Η προεπιλεγμένη εγκατάσταση του FreeBSD περιέχει ένα αρχείο /etc/ttys το οποίο υποστηρίζει τις πρώτες τέσσερις σειριακές θύρες: ttyu0 ως και ttyu3. Αν συνδέσετε τερματικό σε κάποια από αυτές τις θύρες, δεν χρειάζεται να προσθέσετε άλλη καταχώριση.

Παράδειγμα 27-1. Προσθήκη Καταχωρίσεων για τα Τερματικά στο /etc/ttys

Ας υποθέσουμε ότι θέλουμε να συνδέσουμε δύο τερματικά στο σύστημα: ένα Wyse-50 και ένα παλιό IBM PC 286 στο οποίο εκτελούμε την εφαρμογή Procomm με την οποία εξομοιώνεται ένα τερματικό τύπου VT-100. Συνδέουμε το Wyse στη δεύτερη σειριακή θύρα και το 286 στην έκτη σειριακή θύρα (η οποία βρίσκεται σε μια κάρτα πολλαπλών θυρών). Οι αντίστοιχες καταχωρίσεις στο αρχείο /etc/ttys θα μοιάζουν με τις παρακάτω:

ttyu1(1)  "/usr/libexec/getty std.38400"(2)  wy50(3)  on(4)  insecure(5)
ttyu5   "/usr/libexec/getty std.19200"  vt100  on  insecure
	 
(1)
Το πρώτο πεδίο, είναι συνήθως το όνομα του ειδικού αρχείου τερματικού όπως φαίνεται στον κατάλογο /dev.
(2)
Το δεύτερο πεδίο, είναι η εντολή που θα εκτελεστεί για αυτή τη γραμμή, η οποία είναι συνήθως η getty(8). Η getty αρχικοποιεί και ανοίγει τη γραμμή, ρυθμίζει την ταχύτητα, εμφανίζει την προτροπή για εισαγωγή ονόματος χρήστη, και εκτελεί το πρόγραμμα login(1).

Το πρόγραμμα getty δέχεται μια (προαιρετική) παράμετρο στη γραμμή εντολής του, τον τύπο του getty. Ο τύπος του getty καθορίζει τα χαρακτηριστικά της γραμμής του τερματικού, όπως π.χ. το ρυθμό μετάδοσης σε bps και την ισοτιμία (parity). Το πρόγραμμα getty διαβάζει αυτά τα χαρακτηριστικά από το αρχείο /etc/gettytab.

Το αρχείο /etc/gettytab περιέχει πολλές καταχωρίσεις για γραμμές τερματικών, τόσο παλιές όσο και καινούριες. Στις περισσότερες από αυτές τις περιπτώσεις, οι καταχωρίσεις που ξεκινούν με το κείμενο std, θα λειτουργήσουν για απευθείας συνδεδεμένα τερματικά. Αυτές οι καταχωρίσεις αγνοούν την ισοτιμία. Υπάρχει μια καταχώριση std για κάθε ρυθμό μετάδοσης, από 110 ως 115200. Φυσικά, μπορείτε να προσθέσετε τις δικές σας καταχωρίσεις σε αυτό το αρχείο. Η σελίδα manual του gettytab(5) περιέχει περισσότερες πληροφορίες.

Όταν ρυθμίζετε τον τύπο της getty στο αρχείο /etc/ttys, βεβαιωθείτε ότι ταιριάζουν οι αντίστοιχες ρυθμίσεις επικοινωνιών στο τερματικό σας.

Στο παράδειγμα μας, το Wyse-50 δεν χρησιμοποιεί ισοτιμία και συνδέεται στα 38400 bps. Το 286 PC δεν χρησιμοποιεί ισοτιμία, και συνδέεται στα 19200 bps.

(3)
Το τρίτο πεδίο είναι ο τύπος του τερματικού που συνδέεται συνήθως σε αυτή τη γραμμή tty. Για θύρες επιλογικών συνδέσεων (dial-up), η τιμή αυτού του πεδίου συχνά θα είναι unknown ή dialup, καθώς οι χρήστες θα μπορούν να πραγματοποιήσουν σύνδεση με οποιοδήποτε λογισμικό ή τερματικό. Για άμεσα συνδεμένα τερματικά, ο τύπος τερματικού δεν αλλάζει, έτσι μπορείτε να βάλετε ένα πραγματικό τύπο τερματικού σε αυτό το πεδίο, τον οποίο θα βρείτε στη βάση δεδομένων του termcap(5).

Για παράδειγμα, το Wyse-50 χρησιμοποιεί τον πραγματικό τύπο τερματικού του, ενώ το 286 PC που εκτελεί το Procomm, έχει ρυθμιστεί να εξομοιώνει τερματικό τύπου VT-100.

(4)
Το τέταρτο πεδίο καθορίζει αν η θύρα θα είναι ενεργή. Τοποθετώντας εδώ τη λέξη on, η init θα ξεκινήσει το πρόγραμμα που αναφέρεται στο δεύτερο πεδίο, την getty. Αν βάλετε off σε αυτό το πεδίο, δεν θα εκτελεστεί η getty, και έτσι δεν θα μπορεί να γίνει είσοδος στο σύστημα από τη συγκεκριμένη θύρα.
(5)
Το τελευταίο πεδίο χρησιμοποιείται για να καθορίσει αν η θύρα είναι ασφαλής. Αν χαρακτηρίσετε μια θύρα ως ασφαλή, σημαίνει ότι την εμπιστεύεστε αρκετά ώστε να επιτρέπετε την είσοδο του root μέσω αυτής (ή οποιουδήποτε λογαριασμού με ID 0). Δεν επιτρέπεται η είσοδος του root σε μια θύρα που έχει χαρακτηριστεί μη-ασφαλής. Σε μη-ασφαλείς θύρες, οι χρήστες πρέπει να εισέρχονται χρησιμοποιώντας ένα συνηθισμένο λογαριασμό χρήστη, και να χρησιμοποιούν την εντολή su(1) ή άλλο αντίστοιχο μηχανισμό για να αποκτήσουν προνόμια υπερχρήστη.

Σας συνιστούμε ανεπιφύλακτα να χρησιμοποιήσετε τη ρύθμιση «insecure», ακόμα και για τερματικά που βρίσκονται σε κλειδωμένα δωμάτια. Είναι αρκετά εύκολο να εισέλθετε ως κανονικός χρήστης και να χρησιμοποιήσετε την εντολή su αν χρειάζεστε προνόμια υπερχρήστη.

27.3.2.2 Εξαναγκάστε την init να Ξαναδιαβάσει το /etc/ttys

Έχοντας κάνει τις απαραίτητες αλλαγές στο αρχείο /etc/ttys, θα πρέπει να στείλετε σήμα SIGHUP (hangup) στην διεργασία init για να την αναγκάσετε να διαβάσει ξανά το αρχείο ρυθμίσεων της. Για παράδειγμα:

# kill -HUP 1

Σημείωση: Η init είναι πάντοτε η πρώτη διεργασία που εκτελείται σε ένα σύστημα, και έτσι θα έχει πάντοτε τον αριθμό διεργασίας (PID) 1.

Αν όλες οι ρυθμίσεις είναι σωστές, τα καλώδια είναι στη θέση τους, και τα τερματικά είναι ενεργά, θα εκτελεστεί η getty σε κάθε τερματικό, και στο σημείο αυτό θα δείτε την προτροπή εισόδου (login) στις οθόνες των τερματικών σας.

27.3.3 Αντιμετώπιση Προβλημάτων Σύνδεσης

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

27.3.3.1 Δεν Εμφανίζεται Προτροπή Εισόδου (login)

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

Βεβαιωθείτε ότι το καλώδιο είναι καλά συνδεμένο τόσο στο τερματικό, όσο και στον υπολογιστή που εκτελεί FreeBSD. Βεβαιωθείτε ότι είναι το σωστό είδος καλωδίου.

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

Βεβαιωθείτε ότι εκτελείται η διαδικασία getty που εξυπηρετεί το τερματικό. Για να δείτε μια λίστα με τις ενεργές διαδικασίες getty, χρησιμοποιήστε την εντολή ps:

# ps -axww|grep getty

Θα πρέπει να δείτε μια καταχώριση για το τερματικό σας. Για παράδειγμα, η ακόλουθη οθόνη δείχνει ότι η διεργασία getty εκτελείτε στη δεύτερη σειριακή θύρα ttyu1 και χρησιμοποιεί την καταχώριση std.38400 στο αρχείο /etc/gettytab:

22189  d1  Is+    0:00.03 /usr/libexec/getty std.38400 ttyu1

Αν δεν εκτελείται καμιά διεργασία getty, βεβαιωθείτε ότι έχετε ενεργοποιήσει τη θύρα στο /etc/ttys. Επίσης θυμηθείτε να εκτελέσετε την εντολή kill -HUP 1 μετά την τροποποίηση του αρχείου ttys.

Αν εκτελείται η διεργασία getty αλλά το τερματικό εξακολουθεί να μη δείχνει προτροπή εισόδου, ή αν δείχνει προτροπή αλλά δεν σας επιτρέπει να γράψετε, ίσως το τερματικό σας ή το καλώδιο να μην επιτρέπουν συνεννόηση μέσω υλικού (hardware handshake). Δοκιμάστε να αλλάξετε την καταχώριση στο αρχείο /etc/ttys από std.38400 σε 3wire.38400 (θυμηθείτε να εκτελέσετε την εντολή kill -HUP 1 μετά την τροποποίηση του /etc/ttys). Η καταχώριση 3wire είναι αντίστοιχη με την std, αλλά αγνοεί το hardware handshaking. Μπορεί επίσης να χρειαστεί να μειώσετε το ρυθμό σηματοδοσίας (baud) και να ενεργοποιήσετε τον έλεγχο ροής μέσω λογισμικού όταν χρησιμοποιείτε το 3wire, προκειμένου να αποφύγετε υπερχείλιση της προσωρινής μνήμης (buffer overflow).

27.3.3.2 Αν Βλέπετε Σκουπίδια Αντί για Προτροπή Εισόδου

Βεβαιωθείτε ότι το τερματικό και το FreeBSD συμφωνούν στο ρυθμό bps και στις ρυθμίσεις ισοτιμίας. Ελέγξτε τις διεργασίες getty για να βεβαιωθείτε ότι εκτελείτε το σωστό τύπο getty. Αν αυτό δεν συμβαίνει, επεξεργαστείτε το αρχείο /etc/ttys και εκτελέστε την εντολή kill -HUP 1.

27.3.3.3 Οι Χαρακτήρες Εμφανίζονται Διπλοί, το Password Εμφανίζεται κατά την Πληκτρολόγηση

Αλλάξτε τη ρύθμιση του τερματικού (ή του προγράμματος εξομοίωσης τερματικού) από «half duplex» ή «local echo» σε «full duplex».

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

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