Το σύστημα X Window (γνωστό και ως X11) είναι το πιο διαδεμένο σύστημα παραθύρων για χρήση σε συστήματα τύπου UNIX®, συμπεριλαμβανομένων του FreeBSD. Το ίδρυμα X.Org διαχειρίζεται τα πρότυπα των πρωτοκόλλων X, με βάση την τρέχουσα πρότυπη υλοποίηση, έκδοση 11 7.5.1. Τις περισσότερες φορές θα το δείτε απλώς να αναφέρεται συντομευμένα ως X11.
Διατίθενται διάφορες υλοποιήσεις, για διαφορετικές αρχιτεκτονικές και λειτουργικά συστήματα. Η υλοποίηση που αναφέρεται στο τμήμα του κώδικα που λειτουργεί ως εξυπηρετητής είναι γνωστή ως X server ή εξυπηρετητής Χ.
Η προεπιλεγμένη υλοποίηση του Χ στο FreeBSD από παλιά ήταν η XFree86" η οποία αναπτύσσεται από The XFree86 Project, Inc. Το λογισμικό αυτό εγκαθιστούνταν από προεπιλογή στις εκδόσεις του FreeBSD μέχρι την 4.10 και την 5.2. Αν και υπήρχε ήδη μια έκδοση που συντηρούνταν την ίδια περίοδο από το Xorg, ή χρήση της ήταν περισσότερο ως πλατφόρμα αναφοράς καθώς χρόνο με το χρόνο μαζεύονταν όλο και περισσότερα προβλήματα στον κώδικα της.
Νωρίς ωστόσο το 2004, κάποια μέλη της ομάδας ανάπτυξης του XFree86 εγκατέλειψαν το project λόγω προβλημάτων που οφείλονταν στο ρυθμό με τον οποίο γίνονταν οι αλλαγές στον κώδικα, τη γενική κατεύθυνση του έργου καθώς και προσωπικές διαμάχες. Τα μέλη αυτά άρχισαν να συνεισφέρουν κώδικα απευθείας στο Xorg. Την ίδια εποχή, το Xorg ανανέωσε τον δέντρο του πηγαίου του κώδικα στην τελευταία έκδοση του XFree86 πριν την αλλαγή της άδειας χρήσης του (XFree86 έκδοση 4.3.99.903), ενσωμάτωσε πολλές αλλαγές που πιο πριν συντηρούνταν χωριστά και δημιούργησε μια διανομή του λογισμικού γνωστή ως X11R6.7.0. Ένα χωριστό αλλά σχετικό project το, freedesktop.org (για συντομία fd.o), εργάζεται στον επανασχεδιασμό του αρχικού κώδικα του XFree86 ώστε να μεταφέρει μεγαλύτερο μέρος των εργασιών του στις κάρτες γραφικών (για να επιτευχθεί καλύτερη απόδοση) και να το μετατρέψει σε τμηματικό (ώστε η συντήρηση του να είναι πιο εύκολη και να υπάρχει δυνατότητα να κυκλοφορούν γρηγορότερα νέες εκδόσεις, καθώς και να ρυθμίζεται ευκολότερα). Το Xorg σκοπεύει να ενσωματώσει τις αλλαγές του freedesktop.org σε μελλοντικές εκδόσεις του.
Από τον Ιούλιο του 2004, στο FreeBSD-CURRENT, XFree86 αντικαταστάθηκε από το Xorg ως την προεπιλεγμένη υλοποίηση. Από τότε η προεπιλγμένη υλοποίηση X11 για το FreeBSD είναι το Xorg.
Για περισσότερες πληροφορίες, διαβάστε την ενότητα X11 του Εγχειριδίου του FreeBSD.
Η απάντηση σε αυτό το ερώτημα ξεπερνάει τους σκοπούς αυτού του FAQ. Σημειώστε ότι υπάρχει πλήθος δημοσιεύσεων στα αρχεία διάφορων λιστών ταχυδρομείου. Χρησιμοποιήστε τη μηχανή αναζήτησης που προτιμάτε για να εξερευνήσετε την ιστορία αντί να ρωτάτε στις λίστες του FreeBSD. Ίσως μάλιστα μόνο αυτοί που συμμετείχαν στο project τότε να ξέρουν πραγματικά τι έγινε.
Η ομάδα ανάπτυξης του Xorg ισχυρίζεται ότι σκοπός της είναι να παρέχει εκδόσεις πιο συχνά και να ενσωματώνει τα νέα χαρακτηριστικά γρηγορότερα. Αν το επιτύχουν αυτό, η διανομή τους θα είναι ιδιαίτερα ελκυστική. Επίσης το λογισμικό τους εξακολουθεί να χρησιμοποιεί την παραδοσιακή άδεια χρήσης του X, ενώ στο μεταξύ το XFree86 άρχισε να χρησιμοποιεί μια τροποποιημένη άδεια.
Αν θέλετε να προσθέσετε τα X σε μια υπάρχουσα εγκατάσταση, μπορείτε είτε να χρησιμοποιήσετε το meta-port x11/xorg το οποίο θα μεταγλωττίσει και θα εγκαταστήσει όλα τα απαραίτητα προγράμματα, ή να εγκαταστήσετε το Xorg από πακέτα του FreeBSD.
# pkg_add -r xorg
Είναι επίσης δυνατόν να εγκαταστήσετε το Xorg μέσω του sysinstall(8) επιλέγοντας Configure, μετά Distributions και τέλος The X.Org Distribution.
Μετά την επιτυχή εγκατάσταση του Xorg, ακολουθήστε τις οδηγίες του xorgconfig(1). Θα σας βοηθήσουν να ρυθμίσετε το Xorg για το υλικό σας (κάρτα γραφικών, ποντίκι, κλπ). Μπορείτε επίσης να δείτε το εργαλείο xorgcfg(1) το οποίο παρέχει γραφικές ρυθμίσεις για την παραπάνω διαδικασία.
Για περισσότερες πληροφορίες, διαβάστε την ενότητα X11 του Εγχειριδίου του FreeBSD.
11.6. Προσπάθησα να εκτελέσω τα X, αλλά παίρνω το σφάλμα KDENABIO failed (Operation not permitted) όταν γράφω startx. Τι να κάνω τώρα;
Το σύστημα σας πιθανώς εκτελείται σε ανεβασμένο securelevel. Δεν είναι δυνατόν να εκτελέσετε τα X σε ανεβασμένο securelevel καθώς τα X απαιτούν πρόσβαση για εγγραφή στη συσκευή io(4). Για περισσότερες πληροφορίες, δείτε τη σελίδα manual του init(8).
¶ρα το πραγματικό ερώτημα είναι τι θα πρέπει να κάνετε. Έχετε δύο βασικές επιλογές: να θέσετε το securelevel ξανά στο μηδέν (συνήθως μέσω του from /etc/rc.conf), ή να εκτελέσετε το xdm(1) κατά την εκκίνηση (πριν ανέβει το securelevel).
Δείτε το Ε: 11.12. για περισσότερες πληροφορίες σχετικά με την εκτέλεση του xdm(1) κατά την εκκίνηση.
Αν χρησιμοποιείτε το syscons(4) (το προεπιλεγμένο πρόγραμμα οδήγησης για την κονσόλα) μπορείτε να ρυθμίσετε το FreeBSD να υποστηρίζει το ποντίκι σε κάθε εικονική οθόνη. Για να αποφευθχεί διένεξη με τα X, το syscons(4) υποστηρίζει μια εικονική συσκευή που καλείται /dev/sysmouse. Όλα συμβάντα που λαμβάνονται από την πραγματική συσκευή γράφονται στο sysmouse(4) μέσω του moused(8). Αν επιθυμείτε να χρησιμοποιήσετε το ποντίκι σας σε μια ή περισσότερες εικονικές κονσόλες και στα X, δείτε το Ε: 4.5.4. και ρυθμίστε το moused.
Επεξεργαστείτε έπειτα το αρχείο /etc/X11/xorg.conf και βεβαιωθείτε ότι έχετε τις παρακάτω γραμμές:
Section "InputDevice" Option "Protocol" "SysMouse" Option "Device" "/dev/sysmouse" .....
Κάποιο χρήστες προτιμούν να χρησιμοποιούν τη συσκευή /dev/mouse στα X. Για να δουλέψει αυτό, θα πρέπει το /dev/mouse να συνδεθεί με το /dev/sysmouse (δείτε το sysmouse(4)) προσθέτωντας την παρακάτω γραμμή στο /etc/devfs.conf (δείτε το devfs.conf(5)):
link sysmouse mouse
Μπορείτε να δημιουργήσετε τη σύνδεση επαννεκινώντας το devfs(5) με την παρακάτω εντολή (ως root):
# /etc/rc.d/devfs restart
Ναι.
Θα πρέπει να πείτε στα Χ ότι έχετε ένα ποντίκι 5 πλήκτρων. Για να το κάνετε αυτό, απλώς προσθέστε τις γραμμές Buttons 5 και ZAxisMapping 4 5 στην ενότητα «InputDevice» του /etc/X11/xorg.conf. Για παράδειγμα, ας θεωρήσουμε ότι έχετε την παρακάτω ενότητα «InputDevice» στο αρχείο /etc/X11/xorg.conf.
Για λόγους ασφαλείας, η προεπιλεγμένη ρύθμιση είναι να μην επιτρέπει σε ένα μηχάνημα να ανοίξει ένα παράθυρο μέσω απομακρυσμένης σύνδεσης.
Για να ενεργοποιήσετε αυτή τη δυνατότητα, απλώς ξεκινήστε τα X με την προαιρετική παράμετρο -listen_tcp:
% startx -listen_tcp
Για να το θέσουμε απλά, οι εικονικές κονσόλες σας επιτρέπουν να έχετε αρκετές ταυτόχρονες συνεδρίες στο ίδιο μηχάνημα χωρίς να χρειάζεται να κάνετε κάτι πολύπλοκο όπως το να ρυθμίσετε το δίκτυο ή να εκτελέσετε τα X.
Όταν το σύστημα εκκινεί, σας δείχνει μια προτροπή εισόδου (login) στην οθόνη, αμέσως μετά το τέλος των μυνημάτων εκκίνησης. Μπορείτε έπειτα να γράψετε το όνομα χρήστη και τον κωδικό σας και να ξεκινήσετε να δουλεύετε (ή να παίζετε!) στην πρώτη εικονική κονσόλα.
Κάποια στιγμή θα θελήσετε να ξεκινήσετε μια δεύτερη συνεδρία, ίσως για να δείτε την τεκμηρίωση κάποιου προγράμματος που εκτελείτε τη δεδομένη στιγμή ή για να διαβάσετε το email σας καθώς περιμένετε να κατέβει μέσω FTP κάποιο αρχείο. Μπορείτε απλώς να πιέσετε Alt+F2 (με πιεσμένο το Alt πιέστε το πλήκτρο F2) και θα βρείτε ξανά μια προτροπή εισόδου να σας περιμένει στην δεύτερη «εικονική κονσόλα»! Όταν θέλετε να επιστρέψετε στην αρχική συνεδρία, πιέστε Alt+F1.
Η προεπιλεγμένη εγκατάσταση του FreeBSD έχει ενεργοποιημένες οκτώ εικονικές κονσόλες. Οι συνδυασμοί πλήκτρων Alt+F1, Alt+F2, Alt+F3, εναλλάσσουν από τη μια κονσόλα στην άλλη.
Για να ενεργοποιήσετε περισσότερες, επεξεργαστείτε το αρχείο /etc/ttys (δείτε το ttys(5)) και προσθέστε καταχωρίσεις για ttyv8 ως ttyvc μετά το σχόλιο για «Virtual terminals»:
# Edit the existing entry for ttyv8 in /etc/ttys and change # "off" to "on". ttyv8 "/usr/libexec/getty Pc" cons25 on secure ttyv9 "/usr/libexec/getty Pc" cons25 on secure ttyva "/usr/libexec/getty Pc" cons25 on secure ttyvb "/usr/libexec/getty Pc" cons25 on secure
Χρησιμοποιήστε λιγότερες ή περισσότερες κατά βούληση. Όσες πιο πολλές εικονικές κονσόλες έχετε, τόσο περισσότερους πόρους καταναλώνουν από το σύστημα σας. Αυτό μπορεί να είναι σημαντικό αν έχετε 8 MB RAM ή λιγότερο. Ίσως θέλετε επίσης να αλλάξετε το secure σε insecure.
Σημαντικό: Αν θέλετε να εκτελέσετε ένα εξυπηρετητή Χ, θα πρέπει να αφήσετε τουλάχιστον ένα τερματικό αχρησιμοποιήτο (ή ανενεργό) ώστε να μπορεί να χρησιμοποιηθεί για αυτό το σκοπό. Για να το πούμε διαφορετικά, δεν μπορείτε να έχετε προτροπές εισόδου και στα δώδεκα τερματικά που σας παρέχουν οι συνδυασμοί πλήκτρων Alt και Fn. Μπορείτε να ενεργοποιήσετε μόνο έντεκα, εάν θέλετε να εκτελέσετε και Χ.
Ο ευκολότερος τρόπος για να απενεργοποιήσετε μια κονσόλα, είναι να τη θέσετε ως off. Για παράδειγμα, αν είχατε ενεργοποιήσει και τις 12 κονσόλες που αναφέραμε παραπάνω και θέλατε να εκτελέσετε τα Χ, θα μπορούσατε να αλλάξετε τις ρυθμίσεις για την εικονική κονσόλα 12 από:
ttyvb "/usr/libexec/getty Pc" cons25 on secure
σε:
ttyvb "/usr/libexec/getty Pc" cons25 off secure
Αν το πληκτρολόγιο σας έχει μόνο δέκα πλήκτρα λειτουργιών (function keys) θα καταλήγατε με κάτι όπως το παρακάτω:
ttyv9 "/usr/libexec/getty Pc" cons25 off secure ttyva "/usr/libexec/getty Pc" cons25 off secure ttyvb "/usr/libexec/getty Pc" cons25 off secure
(Θα μπορούσατε επίσης απλώς να διαγράψετε αυτές τις γραμμές.)
Ο ευκολότερος (και πιο καθαρός) τρόπος να ενεργοποιήσετε τις εικονικές κονσόλες, είναι να επανεκκινήσετε το μηχάνημα σας. Ωστόσο αν πραγματικά δεν θέλετε να επανεκκινήσετε, μπορείτε απλώς να τερματίσετε τα Χ και να εκτελέσετε (ως root):
# kill -HUP 1
Είναι πολύ σημαντικό να τερματίσετε τα Χ πριν εκτελέσετε την παραπάνω εντολή. Αν δεν το κάνετε, το σύστημα σας θα φαίνεται να έχει κρεμάσει ή κλειδώσει μετά την εκτέλεση της kill.
Use Ctrl+Alt+Fn to switch back to a virtual console. Ctrl+Alt+F1 would return you to the first virtual console.
Once you are back to a text console, you can then use Alt+Fn as normal to move between them.
To return to the X session, you must switch to the virtual console running X. If you invoked X from the command line, (e.g., using startx) then the X session will attach to the next unused virtual console, not the text console from which it was invoked. If you have eight active virtual terminals then X will be running on the ninth, and you would use Alt+F9 to return.
There are two schools of thought on how to start xdm(1). One school starts xdm from /etc/ttys (see ttys(5)) using the supplied example, while the other simply runs xdm from from rc.local (see rc(8)) or from an X script in /usr/local/etc/rc.d. Both are equally valid, and one may work in situations where the other does not. In both cases the result is the same: X will pop up a graphical login prompt.
The ttys(5) method has the advantage of documenting which vty X will start on and passing the responsibility of restarting the X server on logout to init(8). The rc(8) method makes it easy to kill xdm if there is a problem starting the X server.
If loaded from rc(8), xdm should be started without any arguments (i.e., as a daemon). The xdm command must start after getty(8) runs, or else getty and xdm will conflict, locking out the console. The best way around this is to have the script sleep 10 seconds or so then launch xdm.
If you are to start xdm from /etc/ttys, there still is a chance of conflict between xdm and getty(8). One way to avoid this is to add the vt number in the /usr/local/lib/X11/xdm/Xservers file:
:0 local /usr/local/bin/X vt4
The above example will direct the X server to run in /dev/ttyv3. Note the number is offset by one. The X server counts the vty from one, whereas the FreeBSD kernel numbers the vty from zero.
If you start X with startx, the permissions on /dev/console will not get changed, resulting in things like xterm -C and xconsole not working.
This is because of the way console permissions are set by default. On a multi-user system, one does not necessarily want just any user to be able to write on the system console. For users who are logging directly onto a machine with a VTY, the fbtab(5) file exists to solve such problems.
In a nutshell, make sure an uncommented line of the form is in /etc/fbtab (see fbtab(5)):
/dev/ttyv0 0600 /dev/console
It will ensure that whomever logs in on /dev/ttyv0 will own the console.
11.14. Before, I was able to run XFree86 as a regular user. Why does it now say that I must be root?
All X servers need to be run as root in order to get direct access to your video hardware. Older versions of XFree86 (<= 3.3.6) installed all bundled servers to be automatically run as root (setuid to root). This is obviously a security hazard because X servers are large, complicated programs. Newer versions of XFree86 do not install the servers setuid to root for just this reason.
Obviously, running an X server as the root user is not acceptable, nor a good idea security-wise. There are two ways to be able to use X as a regular user. The first is to use xdm or another display manager (e.g., kdm); the second is to use the Xwrapper.
xdm is a daemon that handles graphical logins. It is usually started at boot time, and is responsible for authenticating users and starting their sessions; it is essentially the graphical counterpart of getty(8) and login(1). For more information on xdm see the XFree86 documentation, and the the FAQ entry on it.
Xwrapper is the X server wrapper; it is a small utility to enable one to manually run an X server while maintaining reasonable safety. It performs some sanity checks on the command line arguments given, and if they pass, runs the appropriate X server. If you do not want to run a display manager for whatever reason, this is for you. If you have installed the complete Ports Collection, you can find the port in x11/wrapper.
Your mouse and the mouse driver may have somewhat become out of synchronization.
In rare cases the driver may erroneously report synchronization problem and you may see the kernel message:
psmintr: out of sync (xxxx != yyyy)
and notice that your mouse does not work properly.
If this happens, disable the synchronization check code by setting the driver flags
for the PS/2 mouse driver to 0x100. Enter UserConfig by giving the -c option at the boot prompt:
boot: -c
Then, in the UserConfig command line, type:
UserConfig> flags psm0 0x100 UserConfig> quit
There have been some reports that certain model of PS/2 mouse from MouseSystems works only if it is put into the «high resolution» mode. Otherwise, the mouse cursor may jump to the upper-left corner of the screen every so often.
Specify the flags 0x04 to the PS/2 mouse driver to put the
mouse into the high resolution mode. Enter UserConfig by giving the -c option at
the boot prompt:
boot: -c
Then, in the UserConfig command line, type:
UserConfig> flags psm0 0x04 UserConfig> quit
See the previous section for another possible cause of mouse problems.
Run the command xmodmap -e "pointer = 3 2 1" from your .xinitrc or .xsession.
The detailed answer for this question can be found in the Boot Time Splash Screens section of the FreeBSD Handbook.
Yes. All you need to do is use xmodmap(1) to define what function you wish them to perform.
Assuming all «Windows» keyboards are standard then the keycodes for these three keys are the following:
115 -- Windows key, between the left-hand Ctrl and Alt keys
116 -- Windows key, to the right of the AltGr key
117 -- Menu key, to the left of the right-hand Ctrl key
To have the left Windows key print a comma, try this.
# xmodmap -e "keycode 115 = comma"
You will probably have to re-start your window manager to see the result.
To have the Windows key-mappings enabled automatically every time you start X either put the xmodmap commands in your ~/.xinitrc file or, preferably, create a file ~/.xmodmaprc and include the xmodmap options, one per line, then add the following line to your ~/.xinitrc:
xmodmap $HOME/.xmodmaprc
For example, you could map the 3 keys to be F13, F14, and F15, respectively. This would make it easy to map them to useful functions within applications or your window manager, as demonstrated further down.
To do this put the following in ~/.xmodmaprc.
keycode 115 = F13 keycode 116 = F14 keycode 117 = F15
If you use the x11-wm/fvwm2 port, for example, you could map the keys so that F13 iconifies (or de-iconifies) the window the cursor is in, F14 brings the window the cursor is in to the front or, if it is already at the front, pushes it to the back, and F15 pops up the main Workplace (application) menu even if the cursor is not on the desktop, which is useful if you do not have any part of the desktop visible (and the logo on the key matches its functionality).
The following entries in ~/.fvwmrc implement the aforementioned setup:
Key F13 FTIWS A Iconify Key F14 FTIWS A RaiseLower Key F15 A A Menu Workplace Nop
The availability of 3D acceleration depends on the version of Xorg that you are using and the type of video chip you have. If you have an nVidia chip, you can use the binary drivers provided for FreeBSD by installing one of the following ports:
The latest versions of nVidia cards are supported by the x11/nvidia-driver port.
nVidia cards like the GeForce2 MX/3/4 series are supported by the 96XX series of drivers, available in the x11/nvidia-driver-96xx port.
Even older cards, like GeForce and RIVA TNT are supported by the 71XX series of drivers, available in the x11/nvidia-driver-71xx port.
In fact, nVidia provides detailed information on which card is supported by which driver. This information is available directly on their web site: http://www.nvidia.com/object/IO_32667.html.
For Matrox G200/G400, you should check the x11-servers/mga_hal port.
For ATI Rage 128 and Radeon, see the ati(4), r128(4) and radeon(4) manual pages.
For 3dfx Voodoo 3, 4, 5, and Banshee cards, there is a x11-servers/driglide port.
Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την
<questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.