(Το ακόλουθο είναι φανταστική ιστορία, ίσως να συναντήσετε ομοιότητες με πραγματικές καταστάσεις!)
Ξύπνησα σήμερα το πρωΐ και άνοιξα το mail μου με αγωνία! Yes! Μου έστειλε την φωτογραφία της, την είδα και έμεινα! "Θα σε περιμένω στις 15:00 να τα πούμε από Skype", μου έγραψε. Έκλεισα τον υπολογιστή και πήγα στην σχολή μου ανυπομονώντας για την ψηφιακή μας συνάντηση!
Επιτέλους χτύπησε το κουδούνι για να σχολάσουμε! Άρπαξα την τσάντα μου, όρμηξα σε ένα λεωφορείο και έφτασα σπίτι! Μόλις άνοιξα την πόρτα του σπιτιού μου, τι να δω; Ο μικρότερος μου αδελφός είχε καταλάβει την θέση του υπολογιστή μου και δεν κινόνταν με τίποτε! Είχε κολλήσει το χαμένο με το counterstrike και δεν σηκωνόνταν από την θέση! Η ώρα ήταν 14:18. Κοίταξα μέσα στο δωμάτιο μου για να βρω μιά λύση. Η ματιά μου έπεσε στην πρώτη μου TFT 15" οθόνη καθώς και σε ένα παλιό σετ πληκτρολόγιο-ποντίκι. Κάπου σε μιά ντουλάπα είχα και την προηγούμενή μου PCI-Express κάρτα γραφικών. "Χμμμ. Θα μπορούσα να τα αξιοποιήσω όλα αυτά" σκέφτηκα.
Αφού κατάφερα και έπεισα τον μικρό μου αδελφό να σηκωθεί για λίγη ώρα από το PC, έβαλα εμπρός το σχέδιο multiseat!
Για αρχή να σας αναφέρω πως δεν φέρω καμμία ευθύνη για οποιαδήποτε ζημιά μπορεί να προκύψει στο μηχάνημά σας ή/και στα αρχεία σας. Οι οδηγίες παρακάτω απευθύνονται σε ανθρώπους που έχουν βασικές γνώσεις τεχνικής υποστήριξης συστημάτων linux/unix.
Παρόλο που είναι αρκετά απλό να στηθεί ένα multiseat σύστημα, είναι αρκετά παράδοξο το πως δεν υπάρχει γραφική εφαρμογή για την απλή και άμεση ρύθμιση του.
Για το στήσιμο του multiseat υπάρχουν κάποιες προϋποθέσεις:
- Χρειάζεστε KDM ως διαχειριστή συνεδρίας. Αυτό γιατί έχουν αφαιρεθεί οι δυνατότητες multiseat από τον GDM (Α ρε Linus! Μου θες την "ωριμότητα" του gnome!).
- Οι οδηγίες παρακάτω αφορούν διανομή (k)ubuntu. Μπορεί να ισχύουν και για άλλες διανομές, αλλά δεν το γνωρίζω σίγουρα αυτό.
- Χρειάζεστε μία κάρτα γραφικών για κάθε session/θέση. Έχουν ακουστεί κάποιες ιστορίες επιτυχίας για multiseat με μία VGA, άλλα δυστυχώς δεν κατάφερα να κάνω τον Xorg να ανοίξει δύο διαφορετικά sessions σε μία κάρτα.
- Χρειάζεστε, φυσικά, πληκτρολόγιο/ποντίκι και οθόνη ανά θέση :P
Αφού εκπληρωθούν τα παραπάνω, πάμε παρακάτω:
Πρώτα από όλα τοποθετούμε την δευτέρη κάρτα γραφικών. Μπορεί να είναι PCI, μπορεί (αν το υποστηρίζει η MB) να είναι PCI-Express ή ακόμα και AGP. Δεν έχει σημασία. Αρκεί ο Xorg να βλέπει μιά επιπλέον κάρτα γραφικών. O υπολογιστής έχει ήδη μία nVidia GeForce 430 και τοποθέτησα επιπλέον μία GeForce 8400GS. H MB μου έχει 2 PCI-Express slots 16x οπότε δεν ήταν πρόβλημα η τοποθέτηση μια δεύτερης PCI-Express κάρτας.
- Εντοπισμός των καρτών γραφικών
Για να βρείτε τις κάρτες γραφικών που είναι εγκατεστημένες στο σύστημά σας, ανοίξτε ένα τερματικό και δώστε:
lspci | grep VGA
Αυτό επέστρεψε στο σύστημά μου:
04:00.0 VGA compatible controller: nVidia Corporation Device 10c3 (rev a2)
05:00.0 VGA compatible controller: nVidia Corporation Device 0de1 (rev a1)
Σε εσάς θα βγάλει διαφορετικό αποτέλεσμα, αλλά αυτό που πρέπει να κρατήσετε είναι τον αριθμό στην αρχή της κάθε γραμμής (π.χ.
04:00.0 και
05:00.0).
- Εντοπισμός των συσκευών εισόδου (πληκτρολόγιο/ποντίκι)
Με το που ξεκινήσει ο υπολογιστής σας, αν έχετε συνδεδεμένες όλες τις συσκευές εισόδου θα διαπιστώσετε πως λειτουργούν ταυτόχρονα! Αποσυνδέστε το 2ο πληκτρολόγιο/ποντίκι (αν τα έχετε συνδεδεμένα) και δώστε στο τερματικό:
ls -la /dev/input/by-path/
Στο σύστημά μου επέστρεψε:
lrwxrwxrwx 1 root root 9 2011-01-04 20:22 pci-0000:00:1a.0-usb-0:1:1.3-event -> ../event2
lrwxrwxrwx 1 root root 9 2011-01-04 20:22 pci-0000:00:1a.1-usb-0:1:1.0-event-kbd -> ../event3
lrwxrwxrwx 1 root root 9 2011-01-04 20:22 pci-0000:00:1a.1-usb-0:1:1.1-event-mouse -> ../event4
lrwxrwxrwx 1 root root 9 2011-01-04 20:22 pci-0000:00:1a.1-usb-0:1:1.1-mouse -> ../mouse0
Στο σύστημά μου το "
pci-0000:00:1a.1-usb-0:1:1.0-event-kbd" είναι το πρώτο πληκτρολόγιο και το "
pci-0000:00:1a.1-usb-0:1:1.1-event-mouse" είναι το πρώτο ποντίκι. Σε εσάς πιθανώς να βγάλει διαφορετικά αποτελέσματα αλλά εντοπίστε το "
event-kbd" (πληκτρολόγιο) και το "
event-mouse" (ποντίκι) για να βρείτε τις συσκευές σας, και κρατήστε ολόκληρη την γραμμή από το "
pci" μέχρι το "
event-kbd" και "
event-mouse" (Θα είναι οι συσκευές εισόδου για την πρώτη θέση)
Αφού τα σημειώσετε, συνδέστε τις επιπλέον συσκευές εισόδου και ξαναδώστε σε ένα τερματικό:
ls -la /dev/input/by-path/
Στο σύστημά μου επέστρεψε:
lrwxrwxrwx 1 root root 9 2011-01-04 20:22 pci-0000:00:1a.0-usb-0:1:1.3-event -> ../event2
lrwxrwxrwx 1 root root 9 2011-01-04 20:22 pci-0000:00:1a.1-usb-0:1:1.0-event-kbd -> ../event3
lrwxrwxrwx 1 root root 9 2011-01-04 20:22 pci-0000:00:1a.1-usb-0:1:1.1-event-mouse -> ../event4
lrwxrwxrwx 1 root root 9 2011-01-04 20:22 pci-0000:00:1a.1-usb-0:1:1.1-mouse -> ../mouse0
lrwxrwxrwx 1 root root 9 2011-01-04 20:22 pci-0000:00:1a.2-usb-0:2:1.0-event-kbd -> ../event5
lrwxrwxrwx 1 root root 9 2011-01-04 20:22 pci-0000:00:1a.2-usb-0:2:1.1-event-mouse -> ../event6
lrwxrwxrwx 1 root root 9 2011-01-04 20:22 pci-0000:00:1a.2-usb-0:2:1.1-mouse -> ../mouse1
Με τον ίδιο τρόπο που αναφέραμε παραπάνω σημειώστε τις επιπλέον συσκευές (θα είναι οι συσκευές εισόδου για την 2η θέση).
Πάμε τώρα παρακάτω για να συνδυάσουμε ότι σημειώσαμε μέχρι στιγμής:
Παραθέτω το /etc/X11/xorg.conf αρχείο που έφτιαξα για το multiseat (μην τρομάξετε!). Προσέξτε ιδιαίτερα τα σημεία με bold. Θα τα σχολιάσω παρακάτω.
Section "InputDevice"
Identifier "Mouse0"
Driver "evdev"
Option "Protocol" "auto"
Option "Device" "/dev/input/by-path/η γραμμή που είχαμε σημειώσει πριν ως πρώτο ποντίκι"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "evdev"
Option "Device" "/dev/input/by-path/η γραμμή που είχαμε σημειώσει πριν ως πρώτο πληκτρολόγιο"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "evdev"
Option "Protocol" "auto"
Option "Device" "/dev/input/by-path/η γραμμή που είχαμε σημειώσει πριν ως δεύτερο ποντίκι"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
Identifier "Keyboard1"
Driver "evdev"
Option "Device" "/dev/input/by-path/η γραμμή που είχαμε σημειώσει πριν ως δεύτερο πληκτρολόγιο"
EndSection
#Οθόνη Πρώτης Θέσης
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "First Seat Monitor"
Option "DPMS"
EndSection
#Οθόνη Δεύτερης Θέσης
Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "Second Seat Monitor"
Option "DPMS"
EndSection
#Πρώτη Κάρτα Γραφικών
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GT 430"
BusID "PCI:5:0:0"
EndSection
#Δευτερη Κάρτα Γραφικών
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 8400GS"
BusID "PCI:4:0:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
#Πρώτη Θέση
Section "ServerLayout"
Identifier "Seat0"
Screen 0 "Screen0"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
Option "AutoEnableDevices" "false"
Option "AutoAddDevices" "false"
Option "AllowEmptyInput" "true"
EndSection
#Δευτερη Θέση
Section "ServerLayout"
Identifier "Seat1"
Screen 0 "Screen1"
InputDevice "Keyboard1" "CoreKeyboard"
InputDevice "Mouse1" "CorePointer"
Option "AutoEnableDevices" "false"
Option "AutoAddDevices" "false"
Option "AllowEmptyInput" "true"
EndSection
Κρατήστε ένα backup του προηγούμενου σας xorg.conf γράφοντας (σε ένα τερματικό πάντα):
sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
Ανοίξτε ένα άδειο αρχείο κειμένου ανοίγοντας ένα τερματικό και γράφοντας:
sudo pico /etc/X11/xorg.conf
Αντιγράψτε τα περιεχόμενα του xorg.conf που παρέθεσα παραπάνω και επικολλήστε τα μέσα στο άδειο αρχείο κειμένου. Τώρα μπορούμε να κάνουμε τις απαραίτητες αλλαγές
Στο αρχείο παραπάνω έχω κάποια σημεία που είναι αυτό-επεξηγηματικά, όπως για παράδειγμα στα
Section "InputDevice" οι επιλογές
"Option" "Device". Εκεί θα τοποθετήσετε τις συσκευές εισόδου που σημειώσατε παραπάνω.
Στο Section "Device" της πρώτης κάρτας γραφικών, στο τμήμα
Driver θα τοποθετήσετε τον driver που ενδέχεται να έχει η πρώτη κάρτα γραφικών (Για nVidia :
nvidia ή nouveau, για Ati Radeon :
fglrx ή radeon, για intel :
intel, κ.ο.κ.)
Στο
BusID τοποθετείτε τον αριθμό που σημειώσατε παραπάνω, στον εντοπισμό της κάρτας γραφικών άλλα με άλλη μορφή: Στο σύστημά μου τον 05:00.0 τον έκανα PCI:5:0:0. (Δεν πετάτε τους αριθμούς αυτούς μιας και θα χρειαστούν παρακάτω)
Ακολουθείτε την ίδια διαδικασία για την δεύτερη κάρτα γραφικών. Για να σώσετε το αρχείο πατάτε:
Ctrl+O,
Enter και ύστερα
Ctrl+X. Και πάμε τώρα να ρυθμίσουμε τον KDM:
Ο KDM είναι ο προεπιλεγμένος διαχειριστής συνεδρίας στο Kubuntu (KDE4). Στην περίπτωση που έχετε Ubuntu (gnome) τότε θα πρέπει να τον εγκαταστήσετε. Για να εγκαταστήσετε τον KDM, πληκτρολογείτε σε ένα τερματικό: sudo apt-get install kdm.
Κατά την εγκατάσταση θα σας ρωτήσει ποιόν διαχειριστή συνεδρίας προτιμάτε. Επιλέξτε kdm και πατήστε Enter.
Πριν ξεκινήσετε την ρύθμιση του KDM, κάντε ένα backup του kdmrc ως εξής:
sudo cp /etc/kde4/kdm/kdmrc /etc/kde4/kdm/kdmrc.bak
Ανοίξτε το αρχείο /etc/kde4/kdm/kdmrc δίνοντας σε μια κονσόλα:
sudo pico /etc/kde4/kdm/kdmrc.
Στο τμήμα [General] του αρχείου αντικαθιστάτε τα περιεχόμενά του με τα παρακάτω.
[General]
StaticServers=:0,:1
ReserveServers=:2,:3
ServerVTs=7,9
ConsoleTTYs=tty1,tty2,tty3,tty4,tty5,tty6
PidFile=/var/run/kdm.pid
Τέλος πηγαίνετε προς το τέλος του αρχείου και επικολλήστε τα παρακάτω (προσέξτε τα έντονα γραμμάτα).
[X-:0-Core]
AutoLoginAgain=false
AutoLoginDelay=0
AutoLoginEnable=false
AutoLoginLocked=false
AutoLoginUser=
ClientLogFile=.xsession-errors
ServerVT=7
ServerCmd=/usr/bin/X0 -sharevts -layout Seat0 -isolateDevice PCI:5:0:0 -keeptty
[X-:1-Core]
AutoLoginAgain=false
AutoLoginEnable=false
AutoLoginLocked=false
ClientLogFile=.xsession-errors
ServerVT=9
ServerCmd=/usr/bin/X1 -sharevts -novtswitch -layout Seat1 -isolateDevice PCI:4:0:0 -keeptty
Τα σημεία με τα έντονα γράμματα τα αντικαθιστάτε με τα
BusID των καρτών γραφικών που σημειώσατε παραπάνω.
Πατήστε
Ctrl+O,
Enter,
Ctrl+X.
Κρατήστε την ανάσα σας, κάντε μια επανεκκίνηση και έτοιμο το multiseat!
Σημ: Θα κάνω, κάποια στιγμή, και ένα tutorial για ξεχωριστό ήχο σε κάθε θέση εργασίας.
Θα βρείτε πολλές σημαντικές πληροφορίες για ubuntu multiseat, στο
https://help.ubuntu.com/community/MultiseatX