From 3a08d2069ec2a8ba5ead679fc1def601196f8e0a Mon Sep 17 00:00:00 2001 From: gferg <> Date: Tue, 11 Nov 2003 14:53:09 +0000 Subject: [PATCH] updated --- LDP/howto/docbook/HOWTO-INDEX/appsSect.sgml | 2 +- LDP/howto/docbook/HOWTO-INDEX/howtoChap.sgml | 2 +- .../docbook/XFree-Local-multi-user-HOWTO.xml | 587 ++++++++++++------ 3 files changed, 399 insertions(+), 192 deletions(-) diff --git a/LDP/howto/docbook/HOWTO-INDEX/appsSect.sgml b/LDP/howto/docbook/HOWTO-INDEX/appsSect.sgml index 5eea908e..d4f5b140 100644 --- a/LDP/howto/docbook/HOWTO-INDEX/appsSect.sgml +++ b/LDP/howto/docbook/HOWTO-INDEX/appsSect.sgml @@ -1402,7 +1402,7 @@ How to convert an XFree86 modeline into an XInside/XiGraphics one. XFree-Local-multi-user-HOWTO, XFree local multi-user HOWTO -Updated: Sep 2003. +Updated: Nov 2003. Explains the shortest way to get a working multiple local X user-capable PC system. diff --git a/LDP/howto/docbook/HOWTO-INDEX/howtoChap.sgml b/LDP/howto/docbook/HOWTO-INDEX/howtoChap.sgml index ced4feee..1409fd96 100644 --- a/LDP/howto/docbook/HOWTO-INDEX/howtoChap.sgml +++ b/LDP/howto/docbook/HOWTO-INDEX/howtoChap.sgml @@ -5251,7 +5251,7 @@ version of the X Window System (X11R6) for Linux systems. XFree-Local-multi-user-HOWTO, XFree local multi-user HOWTO -Updated: Sep 2003. +Updated: Nov 2003. Explains the shortest way to get a working multiple local X user-capable PC system. diff --git a/LDP/howto/docbook/XFree-Local-multi-user-HOWTO.xml b/LDP/howto/docbook/XFree-Local-multi-user-HOWTO.xml index ea47903a..d745e816 100644 --- a/LDP/howto/docbook/XFree-Local-multi-user-HOWTO.xml +++ b/LDP/howto/docbook/XFree-Local-multi-user-HOWTO.xml @@ -1,5 +1,7 @@ - + + @@ -12,15 +14,47 @@
svetoslav (at) users.sourcefourge.net
- Sep 2003 + Nov 2003 + + 1.3 + 2003-11-11 + SS + Ruby-2.6 is working :) , sync to new BRuby, add config file paths for Gentoo + + 1.2 2003-09-17 @@ -103,23 +137,22 @@ Hope no last minutes BUGS slipped in -This HOWTO explains one of the ways to get a working, -multiple, local X user-capable PC system. It is not intended to be -a replacement of the existing documentation on the Backstreet Ruby -home page, which you'll probably need to consult for more detailed -information in case of problems. The second way is not covered here, -but on the web page of it's author Miguel Freitas. +This HOWTO explains one of the ways to get a working, multiple, local X user-capable PC system for up to 16 users. It is based on using a modified Linux kernel with support for multiple independent users . The second way is not covered here, +but on the web page of it's author, the pioneer Miguel Freitas.
Introduction - About Backstreet Ruby - Backstreet Ruby is a kernel patch for the Linux kernel. It is a back port to linux-2.4 of the Ruby kernel tree, which is developed by the Linux Console Project. The aim of the Linux Console developers is to enhance and reorganise the input, the console and the framebuffer subsystems in the Linux kernel, so they can work independent from each other and to allow multi-desktop operation. All this is done in the Ruby kernel tree which is based on the development linux-2.5 kernel. The new Input subsystem and the new Framebuffer layer are already integrated in linux-2.5 kernel, but as the main developer of the Linux Console Project, James Simmons, is too busy with completing the rewrite of the framebuffer layer in linux-2.5, the multi-desktop operation will not be integrated in the next stable Linux kernel (linux-2.6). - So Backstreet Ruby brings to the current stable Linux kernel (linux-2.4) the enhanced input subsystem and the ability to use multiple graphic cards and multiple keyboards independently, in order to make multiple local XFree users on a single PC system possible. - You can have multiple independent graphic cards and multiple independent mouses, but in order for multiple users to interact with the system, they do need independent keyboards as well. Multiple independent keyboards is the feature that linux-2.4 (and in the future linux-2.6) lacks, and this is what Backstreet Ruby adds to the stable Linux kernel linux-2.4. - The entire work on back porting Ruby to linux-2.4 is done by Aivils Stoss. Aivils.Stoss (at) unibanka.lv + About Backstreet Ruby/ Ruby + Backstreet Ruby is a kernel patch for the Linux kernel. It is a back port to Linux-2.4 of the Ruby kernel tree, which is developed by the Linux Console Project. The aim of the Linux Console developers is to enhance and reorganize the input, the console and the framebuffer subsystems in the Linux kernel, so they can work independent from each other and to allow multi-desktop operation. All this is done in the Ruby kernel tree which is based on the development Linux-2.5 kernel. The new Input subsystem and the new Framebuffer layer are already integrated in Linux-2.5 kernel, but as the main developer of the Linux Console Project, James Simmons, is too busy with completing the rewrite of the framebuffer layer in Linux-2.5, the multi-desktop operation will not be integrated in the next stable Linux kernel (Linux-2.6). + So Backstreet Ruby brings to the current stable Linux kernel (Linux-2.4) the enhanced input subsystem and the ability to use multiple graphic cards and multiple keyboards independently, in order to make multiple local XFree users on a single PC system possible. + You can have multiple independent graphic cards and multiple independent mice, but in order for multiple users to interact with the system, they do need independent keyboards as well. Multiple independent keyboards is the feature that Linux-2.4 (and in the future Linux-2.6) lacks, and this is what Backstreet Ruby adds to the stable Linux kernel Linux-2.4. + The entire work on back porting Ruby to Linux-2.4 is done by Aivils Stoss. Aivils.Stoss (at) unibanka.lv + Aivils got recently his hands on Ruby, and now Ruby is fully functional + All the features in Backstreet Ruby are included ( "/proc " interface & hot-plugging, video hack, ...), support for Framebuffer devices, support for single Framebuffer console which takes over the VGA console (support for multiple independent Framebuffer consoles is not yet implemented) + too, so if you prefer the Linux-2.6 kernel you might use Ruby instead of Linux-2.4 + Backstreet Ruby. Visit his web site for more information on the patch itself, on the current status, how to build a kernel using his patch or how to build modified XFree86 server. You can find it here: http://startx.times.lv There are also several mirrors @@ -138,17 +171,18 @@ but on the web page of it's author Miguel Freitas. The address of the Linux Console Project is: http://linuxconsole.sf.net - Why not just use ruby instead? Well as I already mentioned, the main developer James Simmons is pretty busy with the framebuffer layer and drivers, so currently there is not much done in the ruby kernel tree(in the last 4 months there was no a single commit to cvs or bk, and the original ruby is currently against linux-2.5.59 -- acording to www.kernel.org current linus kernel is 2.5.73-bk1). But Aivils releases from time to time an updated ruby snapshot, so if you feel experimental you might want to check his site for a 2.5 patch. - What are the advantages/disadvantages of the 2.4 against the 2.5 patch + What are the advantages/disadvantages of the 2.4 patch/ kernel against the 2.5 one - Well the 2.4 linux kernel is really stable and most of the distributions are build on it, the 2.5 kernel is still in development and to my knowledge there is no distribution which supports 2.5 "out of the box". + Well the 2.4 Linux kernel is really stable and most of the distributions are build on it, the 2.6 kernel is still in development and to my knowledge there is no distribution which supports 2.6 "out of the box". - The 2.4 patch is more tested/used so there should be less bugs(AFAIK there are no bugs added by the patch itself), but the 2.4 patch do not support framebuffers. + The 2.4 patch is more tested/used so there should be less bugs(AFAIK there are no bugs added by the patch itself), but the 2.4 patch do not support framebuffer devices. - The 2.5 patch supports framebuffers(thougth framebuffer console is not yet implemented) so you could use a single dual-headed card which registers 2 framebuffers for 2 users/ X sessions, but the 2.5 patch is not really tested and may have a lot of bugs, the 2.5 kernel itself is not very stable. + The 2.6 patch supports framebuffer devices + The Ruby patch doesn't modify framebuffer device related code so if your video card is supported from vanilla Linux-2.6 it will work equally well under Ruby, but there are still a number of incomplete framebuffer drivers in Linux-2.6. + , framebuffer console support is included (for a single video card -- no multi-user console support yet), so you could use a single dual-headed card which registers 2 framebuffers for 2 users/ X sessions, but the 2.6 patch is not really tested and may have a lot of bugs, the 2.6 kernel itself is not very stable. And if you use the framebuffer driver of XFree with such a card (for example Matrox G550 DH) two get 2 X sessions on a single graphic card, you loose a lot of features as the XFree framebuffer driver do not support acceleration, DRI, XVideo extentions .... @@ -157,8 +191,18 @@ but on the web page of it's author Miguel Freitas. About this document - This document explains how to configure your system for multiple local XFree users using the enchanted console/input subsystem in the Backstreet Ruby kernel . + This document explains how to configure your system for multiple local XFree users using the enchanted console/input subsystem in the Backstreet Ruby/ Ruby-2.6 kernel . + I will use : + + "Backstreet Ruby" or "BRuby" to refer to the back port to Linux 2.4 + + + "Ruby" or "Ruby-2.6" to refer to the original Ruby kernel tree for Linux 2.6 + + + Every mention of Backstreet Ruby should be replaceable by Ruby/ Ruby-2.6 unless else mentioned. + Note Currently it is not possible to set up systems for multiple console users. There are two ways of setting up multiple local XFree users: @@ -173,7 +217,8 @@ but on the web page of it's author Miguel Freitas. I'll concentrate on configuring a system for multiple local XFree users using the Backstreet Ruby kernel, but there are parts which can be used also on a system using the solution from Miguel Freitas. - This document is not intended to be a replacement of the existing documentation on the Backstreet Ruby home page (http://startx.times.lv), but rather, this is a smaller HOWTO, explaining the way to a working X multi-user PC system. If you encounter any problems you'll probably need to consult the more detailed information there. + Note + This document is not intended to be a replacement of the existing documentation on the Backstreet Ruby home page (http://startx.times.lv), but rather, this is a HOWTO, explaining the way to a working X multi-user PC system. If you encounter any problems you'll probably need to consult the more detailed information there. The document is based on the file system layout of the Mandrake-Linux distribution, but I tried to make it distribution-independent by including information about the differences to other mainstream distributions like Debian, Red Hat and SuSE Linux. @@ -221,7 +266,7 @@ but on the web page of it's author Miguel Freitas. Copyright and License - This document, XFree_local_multi-user-HOWTO, + This document, XFree-Local-multi-user-HOWTO, is copyrighted (c) 2003 by Svetoslav Slavtchev. @@ -328,24 +373,24 @@ but on the web page of it's author Miguel Freitas. --> Known Limitations - XFree do not support DRI acceleration on multiple graphic cards, the only way to use accelrated XFree is to use Nvidia's closed source driver and GLlibrary or a single card using DRI and multiple cards useing Nvidia's closed source drivers. XFree extensions not dependand on DRI should work. - Most of the multiheaded graphic cards can be used only for a single user/display. In order to start independant X servers the heads have to be explicit addressable (which can not be done with most of the cards). It should be possible to use cards with explicit addressable heads for independent displays, but this is not yet tested. - In the following cases it might be possible to use a single multiheaded card for mupliple independant displays : + XFree does not support DRI acceleration on multiple graphic cards. The only way to get multiple accelerated X sessions is to use Nvidia's closed source driver and GL library or a single card using DRI and multiple cards using Nvidia's closed source drivers. XFree extensions not dependent on DRI should work. + Most of the multiheaded graphic cards can be used only for a single user/display. In order to start independent X servers the heads have to be explicitly addressable (which can not be done with most of the cards). It should be possible to use cards with explicitly addressable heads for independent displays, but this has not yet been tested. + In the following cases it might be possible to use a single multiheaded card for multiple independent displays : The card(s) have different PCI Bus ID's for the different heads (for example Matrox MMS G200/G450) - The card(s) register frame buffer device for each head (only with the linux-2.5/2.6 patch) - Have in mind that the XFree frame buffer driver does not support acceleration and most of the XFree extentions. + The card(s) register frame buffer device for each head (only with the Linux-2.5/2.6 patch) + Have in mind that the XFree frame buffer driver does not support acceleration and most of the XFree extensions. (for example Matrox G400DH, G450DH, G550DH) - Using/configuring independent devices for the independent screens/users is pretty hard or not explored, exceptions are the input devices, graphic cards and sound thanks artsd. Some examples of such unexplored areas: + Using/configuring independent devices for the independent screens/users is pretty hard or not explored. Exceptions are the input devices, graphic cards and sound thanks artsd. Some examples of such unexplored areas: - External storage device (USB/Firewire harddisks, CD/DVD drives, ZIP/Floppy drives, memmory stics, .... + External storage device (USB/Firewire hard disks, CD/DVD drives, ZIP/Floppy drives, memory sticks, .... USB/Firewire printers, scanners, cameras ... @@ -353,17 +398,17 @@ but on the web page of it's author Miguel Freitas. In case you succeed in configuring such devices for independent usage by multiple users, please share with us how you did it. - This doesn't mean that the devices wont work, but that every user will have access to all devices. + Note + This doesn't mean that the devices won't work, but that every user will have access to all devices. - Currently under Backstreet Ruby you can have a maximum of 8 Virtual Terminals (16 for Ruby-2.6). This means that without hotplug configured if you are using USB keyboards with fancy keys you are limited to maximum of 4 independent users ( for Ruby-2.6 - 8 users). So do use hotplug if you are going to setup a system for more then 4 users ( even systems with 2 attached USB keyboards benefit from using hotplug). - If you are using hotplug the maximal number of independent users is 8 for Backstreet Ruby and 16 for Ruby-2.6. - The problem is being reviewed by the developers and hopefully soon the limitation will be lifted to bigger numbers. -(Theoreticaly it should be possible to lift it up to 20, 30 independent users.) + Currently under Backstreet Ruby/ Ruby you can have a maximum of 16 Virtual Terminals (8 for Backstreet Ruby released before 7 Oct 2003). This means that without hotplug configured if you are using USB keyboards with fancy keys you are limited to maximum of 8 independent users ( for older versions Backstreet Ruby - 4 users). So do use hotplug if you are going to setup a system for more then 4 users ( even systems with 2 attached USB keyboards benefit from using hotplug). + If you are using hotplug the maximal number of independent users is 16 for Backstreet Ruby / Ruby-2.6 and 8 for older versions Backstreet Ruby. + XFree configuration files @@ -403,32 +448,42 @@ but on the web page of it's author Miguel Freitas. Binary packages - Binary rpms of modified XFree servers are currently available for Mandrake 8.2/ 9/ 9.1, Red Hat 8/ 9, SuSE 8.1 and Debian Sid. If you're running other rpm-based distributions please help me to prepare and rebuild packages, so other users can get pre-compiled binaries. + Binary rpms of modified XFree servers are currently available for Mandrake 8.2/ 9/ 9.1/ 9.2, Red Hat 8/ 9, SuSE 8.1. If you're running other rpm-based distributions please help me to prepare and rebuild packages, so other users can get pre-compiled binaries. Currently the binary rpm packages are not mirrored and are only available from http://varna.demon.co.uk/~svetlio/ruby-contrib. - Debian packages are also available thanks to Andreas Schuldei at http://www.schuldei.org/debian/bruby, or as apt repository "deb http://www.schuldei.org/debian/bruby ./ ". + Binary packages for Debian Sid are also available thanks to Andreas Schuldei at http://www.schuldei.org/debian/bruby, or as apt repository "deb http://www.schuldei.org/debian/bruby ./ ". Installing the kernel + + The installation of Ruby-2.6 is not fully covered, partly because there are almost no differences compared to the installation of Linux-2.6 kernel, partly because I have not gathered enough experience with Ruby-2.6 yet, so any comments and questions are welcomed. + If you are going to use Ruby-2.6, please do install Linux-2.6 without the Ruby-2.6 patch first and configure your system for it, in order to avoid tracking "Ruby-2.6 Bugs" which are actually due to a not properly configured system because of the Linux-2.4 -> Linux-2.6 changes. A good starting point is probably http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt" . + - Installing the Backstreet Ruby kernel + Installing the Backstreet Ruby/ Ruby-2.6 kernel Now it's time to install the kernel. The easiest way would be to pull an already prepared binary kernel; there are packages for some distributions (currently only Mandrake and Debian) or a source package, and rebuild it on your system. - If for some reason you cannot use them or have problems using them you can also build your own kernel with the bruby patch, for more information how to do this visit the Backstreet Ruby page on building and installing the kernel: http://startx.times.lv (or some of the mirrors) -> Documentation -> Quick Kernel. + If for some reason you cannot use them or have problems using them you can also build your own kernel with the Backstreet Ruby/ Ruby-2.6 patch. For more information how to do this visit the Backstreet Ruby page on building and installing the kernel: http://startx.times.lv (or some of the mirrors) -> Documentation -> Quick Kernel. (If you are new to Linux, reading The Linux Kernel HOWTO, http://tldp.org/HOWTO/Kernel-HOWTO.html, could be very helpful.) You can find binary kernel package for Mandrake-9.1 at http://varna.demon.co.uk/~svetlio/ruby-contrib/kernel.html. Debian binary kernel packages are available at http://www.schuldei.org/debian/bruby, or as apt repository "deb http://www.schuldei.org/debian/bruby ./ " + Currently there are no binary packages of Ruby-2.6 as Linux-2.6 is still moving too fast and is not completely stable, so you will have to compile from source. - If you are going to use USB input devices, it's recommended to use the hid driver instead of usbkbd/ usbmouse. - - - Upon loading the hid driver, you might get the following error message: - [root@svetljo RPM]# modprobe hid + Note + + + If you are going to use USB input devices, it's recommended to use the hid driver instead of usbkbd/ usbmouse. + + + Upon loading the hid driver, you might get the following error message: + [root@svetljo RPM]# modprobe hid modprobe: Can't locate module keybdev which is needed for hid [root@svetljo RPM]# - The reason is that in some version of the module-utils package this dependancy is hardcoded, but overrideable, so you should override it by adding above hid usbcore to your /etc/modules.conf + The reason is that in some version of the module-utils package this dependency is hardcoded, but overrideable, so you should override it by adding above hid usbcore to your /etc/modules.conf + + @@ -448,7 +503,7 @@ Console drivers You have to use built in input support: -Input device support --> Input core support +Input device support --> Input devices (needed for keyboard, mouse,..) Input device support --> Mouse support @@ -465,7 +520,7 @@ Input device support --> AT keyboard support Input device support --> Keyboards USB support --> support for USB -USB support --> USB driver (probably usb-uhci.o) +USB support --> USB Host Controller Drivers USB support --> USB Human Interface Device (full HID) support USB support --> HID input layer support @@ -476,14 +531,19 @@ USB support --> HID input layer support - Support for frame buffer devices is not back-ported, and is disabled. + Note + In Backstreet Ruby (the patch for a 2.4 Linux kernel) does not support frame buffer devices , and for that reason is disabled. + In Ruby (the patch for 2.6 Linux kernel) if you want to disable/ change to modules support for PS2 input devices, you have to first activate/enable "General setup --> Remove kernel features (for embedded systems)" Creating needed device files - If you are not using the devfs file system, you'll have to create several device files needed for the new input sub-system in the Backstreet Ruby kernel: - -cd /dev + If you are not using the devfs file system, you might need to create several device files needed for the new input sub-system in the Backstreet Ruby kernel: + + Note + Most current distributions should already provide the necessary device files, so try booting Backstreet Ruby without creating the device files and in case you don't miss input devices omit this section. Any distribution that came with XFree-4.3.0 and linux-2.4.20 should provide these device files. + + cd /dev mkdir input.old mv mouse js? input.old mkdir input @@ -533,14 +593,24 @@ none on /dev type devfs (rw) Notes on using multiple VT's & VGA console - As the frame buffer layer is not back-ported to linux-2.4, only the primary graphic card is initialised during the boot process. Secondary graphic cards can only be initialised by an X server, so you will have a single VGA text console on the primary graphic card. - Feature versions of Backstreet Ruby/ Ruby for linux-2.6 (and hopefully linux-2.8) will support multiple VT's trough framebuffer consoles. + As the frame buffer layer is not back-ported to Linux-2.4, only the primary graphic card is initialized during the boot process. Secondary graphic cards can only be initialized by an X server, so under Backstreet Ruby you will have a single VGA text console on the primary graphic card. + Ruby for Linux-2.6 supports framebuffer devices and single framebuffer console (which takes over the VGA console), but support for multiple VT's through framebuffer consoles is not yet ready. To keep VGA console properly working it is important first to be started the XFree instance which will drive the graphic card which is used for VGA console(the graphic card defined as primary in BIOS). + Keyboard numbering(order of detection) In the following chapters you will read about 1st keyboard, 2nd keyboard and so on, so here I will explain what is meant by n-th keyboard. - When a keyboard device is found, it is bound to a free VT (given that there are free VT's). The first keyboard found will be bound to VT0 (tty0-tty7), the second to VT1 (tty8-tty15), the third to VT2 (tty16-tty23). + When a keyboard device is found, it is bound to a free VT (given that there are free VT's). The first keyboard found will be bound to VT0 (tty1-tty16), the second to VT1 (tty17), the third to VT2 (tty18). + + Note + Older versions of the bruby patch (released before Oct 7 2003) use : + first keyboard found => VT0 (tty0-tty7) + second => VT1 (tty8-tty15) + third => VT2 (tty16-tty23) + The order of detecting the keyboards depends on the configuration of your kernel : @@ -555,8 +625,8 @@ none on /dev type devfs (rw) But there are some caveats: Most USB keyboards represent themselves as more than one keyboard; it is common that the multimedia keys or the number-pad identify themselves as a different keyboard device. So if you are running a kernel with integrated USB input and have one USB keyboard with multimedia keys and one PS2 keyboard, the USB keyboard will be bound to VT0(real keyboard) and VT1(multimedia keys), the PS2 keyboard will be bound to VT2 (in case you have enough DUMB consoles). - There are several ways to work around these issues. Here I'll explain the easiest way to follow. It's definitely not the best one, but the shortest explanation, and I just want to make it clear to you that the problem is not that big. The Better solutions will follow later in their own section. - All you need to do is to start the Backstreet Ruby kernel with dumbcon=n , where n is the sum of your AT/PS2 keyboards plus the sum of your USB keyboards multiplied by 2 (I suppose this is the maximum number of interfaces a USB keyboard registers), so all keyboards will be bound to a VT. Now you should find out which VT's the real keyboards are bound to (the keyboards excluding the multimedia keys) and start X using the appropriate tty ranges. Thanks to the proc interface integrated in Backstreet Ruby, you can easily find the assignment of keyboards to VT's. Each VT creates a file /proc/bus/console/[n]/keyboard (n is the number of the VT, for VT0 n will be 00, for VT1 - 01, ... , for VT11 - 11); reading this file will give you the assigned keyboard. + There are several ways to work around these issues. Here I'll explain the easiest way to follow. It's definitely not the best one, but the shortest explanation, and I just want to make it clear to you that the problem is not that big. The better solutions will follow later in their own section. + All you need to do is to start the Backstreet Ruby/ Ruby kernel with dumbcon=n , where n is the sum of your AT/PS2 keyboards plus the sum of your USB keyboards multiplied by 2 (I suppose this is the maximum number of interfaces a USB keyboard registers), so all keyboards will be bound to a VT. Now you should find out which VT's the real keyboards are bound to (the keyboards excluding the multimedia keys) and start X using the appropriate tty ranges. Thanks to the proc interface integrated in Backstreet Ruby, you can easily find the assignment of keyboards to VT's. Each VT creates a file /proc/bus/console/[n]/keyboard (n is the number of the VT, for VT0 n will be 00, for VT1 - 01, ... , for VT11 - 11); reading this file will give you the assigned keyboard. [root@svetljo root]# cat /proc/bus/console/*/* usb-00:10.1-1.1/input0 @@ -584,6 +654,7 @@ isa0060/serio0/input0tells us that: Do I need a modified X server? + Note For some video cards you can skip this part. Before installing the modified X server check the Video Compatibility list to determine whether you need one. Currently there are reports for working configurations without using a modified X server for Voodoo Graphics as primary and Voodoo3 or Nvidia TNT2 as secondary. Why should a modified X server be used? - The reason is that XFree is designed to serve a single user and this design requires a single X server to drive all available graphic cards. So when an unmodified X server starts, it disables access to graphic cards for other X servers. Hence we have to modify XFree to make it possible more then one X server to run at the same time. @@ -592,7 +663,7 @@ isa0060/serio0/input0tells us that: "The experimental way": you can use the "hackvideo"(ignoring pci_disable XFree commands) feature of the Backstreet Ruby kernel. This will allow you to use the XFree server that came with your distribution (no need for installing modified XFree server). Q: "Why experimental?" - A: Well, you have to find out whether it works with your combination of graphic cards. There are some combination that works flowlessly, but the majority of tested combination have problems with this setup. + A: Well, you have to find out whether it works with your combination of graphic cards. There are some combination that works flawlessly, but the majority of tested combinations have problems with this setup. @@ -634,8 +705,9 @@ fi - This functionality exists in the Backstreet Ruby kernel since 15. May 2003, but will never be added to the official Ruby kernel tree or linux-2.8(and later versions) as it is a small hack to spare you installing modified X server. - It is still advised to installed modified X server. + Note + This functionality exists in the Backstreet Ruby kernel since 15. May 2003 and in Ruby-2.6 since 29. Sep 2003 , but will never be added to the official linux kernel as it is a small hack to spare you installing modified X server. + It is still recommended to install modified X server. @@ -650,16 +722,17 @@ fi Install an already built, but not packaged, modified X server and create the necessary symbolic links. You can get such binaries from the Backstreet Ruby home page, at http://startx.times.lv. - Help us (as well other people using your distribution) in building an rpm for your distribution (we lack systems installed with all available distributions, so we are not able to build packages for every distribution). + Help us (as well other people using your distribution) in building an rpm or binary for your distribution (we lack systems installed with all available distributions, so we are not able to build packages for every distribution). - To patch and rebuild XFree from source using the instructions at the Backstreet Ruby page go to the Documentation section, at http://startx.times.lv (or some of the mirrors) -> Documentation -> Quick XFree. + To patch and rebuild XFree from source using the instructions on the Backstreet Ruby page. Go to the Documentation section, at http://startx.times.lv (or some of the mirrors) -> Documentation -> Quick XFree. Find the BusID of your graphic cards + Note For AGP cards, something similar to "1:0:0" For PCI cards, something similar to "0:xx:0" @@ -670,7 +743,7 @@ fi If it is missing you can use lspci, XFree86 -scanpci -verbose or other similar tools that came with your distribution. - With lspci loock for "VGA compatible controller" or other similar tools that came with your distribution.root@svetljo mnt]# lspci | grep "VGA compatible controller" + With lspci look for "VGA compatible controller" or other similar tools that came with your distribution.root@svetljo mnt]# lspci | grep "VGA compatible controller" 00:0d.0 VGA compatible controller: nVidia Corporation NV17 [GeForce4 MX 420] (rev a3) 01:00.0 VGA compatible controller: ATI Technologies Inc Radeon RV200 QW [Radeon 7500] [root@svetljo mnt]# @@ -699,6 +772,19 @@ fi + + Note + + + For Mandrake and Debian users: + the XFree configuration files are normally /etc/X11/XF86Config-4 + + + For Red Hat, Gentoo, SuSE users: + the XFree configuration files are normally /etc/X11/XF86Config + + + Some examples: @@ -718,6 +804,7 @@ Section "ServerLayout" Option "SingleCard" "true" EndSection + Note The BusID have to be specified in the Device Section of the XFree configuration file. Section "Device" @@ -758,9 +845,10 @@ EndSection using the -prefbusid option at XFree start-up (requires as argument a valid BusID) + Caution For the older(version 1) Preferred Bus ID XFree Server only this choice is valid. - For example on command line [root@svetljo mnt]# startx -- /usr/X11R6/bin/X0 :0 -prefbusid 1:0:0 vt7 , or from a display manager (gdm): .............................. + For example on command line [root@svetljo mnt]# startx -- /usr/X11R6/bin/X0 :0 -prefbusid 1:0:0 vt7 , or from a display manager (gdm): .............................. # Definition of the standard X server. [server-Standard] name=Standard server @@ -769,10 +857,10 @@ flexible=true [server-Second] name=Second server -command=/usr/X11R6/bin/X1 :1 -layout second-Xserver -deferglyphs 16 -prefbusid 0:13:0 vt9 +command=/usr/X11R6/bin/X1 :1 -layout second-Xserver -deferglyphs 16 -prefbusid 0:13:0 vt17 flexible=true .............................. and for xdm/kdm :0 local /bin/nice -n -10 /usr/X11R6/bin/X0 :0 -deferglyphs 16 -prefbusid 1:0:0 vt7 -:1 local /bin/nice -n -10 /usr/X11R6/bin/X1 :1 -xf86config /etc/X11/XF86Config-4.TNT2 -prefbusid 0:13:0 vt9 +:1 local /bin/nice -n -10 /usr/X11R6/bin/X1 :1 -xf86config /etc/X11/XF86Config-4.TNT2 -prefbusid 0:13:0 vt17 @@ -781,7 +869,7 @@ flexible=true Creating symbolic links The symbolic links are needed for properly starting several XFree instances, as well for properly exiting an X session. This applies for both starting X from console and the automatic starting of X by the display manager (kdm, gdm, xdm). - You need to create as many symbolic links to the modified X server binary (or the original X server in case you do not need a modified one), as the number of your video cards/X sessions. + You need to create as many symbolic links to the modified X server binary (or to the original X server in case you do not need a modified one), as the number of your video cards/X sessions. I assume that you will have to use a modified X server, but in case you do not need it, use the following commands to create the links to your original X server: cd /usr/X11R6/bin/ @@ -794,51 +882,73 @@ ln -s XFree[modified] X2 Using independent keyboards with XFree - Once you install the Backstreet Ruby kernel and start it with , you get n +1 independent consoles (1VGA + n DUMB). If you have enough keyboards connected to your PC, each of these consoles are associated with a given keyboard. This enables you to start multiple X servers on each of the consoles, using the keyboard associated with the corresponding console for input. Hence you get multiple independent X servers with independent keyboards, which in turn make it possible for one single PC to be used by several local X users simultaneously. + Once you install the Backstreet Ruby/ Ruby-2.6 kernel and start it with , you get n +1 independent consoles [1 VGA(or Framebuffer under Ruby-2.6) + n DUMB] . If you have enough keyboards connected to your PC, each of these consoles are associated with a given keyboard. This enables you to start multiple X servers on each of the consoles, using the keyboard associated with the corresponding console for input. Hence you get multiple independent X servers with independent keyboards, which in turn make it possible for one single PC to be used by several local X users simultaneously. To start X on a given console (using a given independent keyboard) you pass it the argument vt[N], where N is a number from a given tty range. - Under Backstreet Ruby, each console is represented by 8 tty's: + Under Backstreet Ruby/ Ruby-2.6, each real console (VGA or Framebuffer) is represented by 16 tty's and each DUMB console by a single tty, as currently only a single real console (VGA or Framebuffer) is supported the resulting tty ranges are: - VGA: tty0 to tty7 + VGA(or Framebuffer for Ruby-2.6): tty1 to tty16 - DUMB1: tty8 to tty15 + DUMB1: tty17 - DUMB2: tty16 to tty23 + DUMB2: tty18 - - Have in mind that for the older Preferred Bus ID XFree Server (version 1) you have to specify the desired graphic card with parameter -prefbusid x:x:x where x:x:x is the Bus ID of the desired graphic card. Just append "-prefbusid x:x:x" with the correct Bus ID of the card you want to start right before the last argument vt[x]. - If you have 3 video cards, 3 keyboards, and you have started the Backstreet Ruby kernel with dumbcon=2, you can start 3 independent X servers for 3 simultaneous users with the following commands: + + Note + + + For Mandrake and Debian users: + the XFree configuration files are normally /etc/X11/XF86Config-4 + + + For Red Hat, Gentoo, SuSE users: + the XFree configuration files are normally /etc/X11/XF86Config + + + + + Caution + Have in mind that for the older Preferred Bus ID XFree Server (version 1) you have to specify the desired graphic card with parameter -prefbusid x:x:x where x:x:x is the Bus ID of the desired graphic card. Just append "-prefbusid x:x:x" with the correct Bus ID of the card you want to start right before the last argument vt[x]. If you omit this option the modified X server will act as a not modified/ standard XFree server and you wont be able to run multiple XFree instances at the same time. + For the 1st X server with the 1st keyboard: $ startx -- /usr/X11R6/bin/X0 :0 -xf86config /etc/X11/XF86Config-4[for your 1st video card] vt7 For the 2nd X server with the 2nd keyboard: - $ startx -- /usr/X11R6/bin/X1 :1 -xf86config /etc/X11/XF86Config-4[for your 2nd video card] vt8 + $ startx -- /usr/X11R6/bin/X1 :1 -xf86config /etc/X11/XF86Config-4[for your 2nd video card] vt17 For the 3rd X server with the 3rd keyboard: - $ startx -- /usr/X11R6/bin/X2 :2 -xf86config /etc/X11/XF86Config-4[for your 3rd video card] vt16 + $ startx -- /usr/X11R6/bin/X2 :2 -xf86config /etc/X11/XF86Config-4[for your 3rd video card] vt18 For the 1st X server you can skip the argument. In this case, the default configuration file, /etc/X11/XF86Config-4, will be used. + Note + Under older versions of Backstreet Ruby each console is represented by 8 tty's: - For SuSE users: - the XFree configuration files are normally /etc/X11/XF86Config + VGA: tty0 to tty7 - The same applies for Red Hat users: - the XFree configuration files are normally /etc/X11/XF86Config + DUMB1: tty8 to tty15 + + + DUMB2: tty16 to tty23 + This means that you have to use different vt parameter for the additional X servers. + For the 2nd X server with the 2nd keyboard: + $ startx -- /usr/X11R6/bin/X1 :1 -xf86config /etc/X11/XF86Config-4[for your 2nd video card] vt8 + For the 3rd X server with the 3rd keyboard: + $ startx -- /usr/X11R6/bin/X2 :2 -xf86config /etc/X11/XF86Config-4[for your 3rd video card] vt16 You can also setup your display manager to start the independent X servers, once everything is properly configured. But don't rush to setup your display manager before the configuration is finished, because this could give you serious problems. When you are ready with the required configurations, you'll reach the section on configuring the display manager. Using independent mice with XFree - To use an independent mouse for each of your independent X servers/sessions, you just have to modify the input section of the XFree configuration files to adjust the proper device files. + To use an independent mouse for each of your independent X servers/sessions, you just have to modify the input section of the XFree configuration files to point to the proper device files. Use /dev/input/mouse[n], where n is the number of your mouse starting from 0: @@ -991,21 +1101,30 @@ Section "ServerLayout" EndSection Now you can start a single X server with option and enjoy the Xinerama desktop, or You can start 2 independent X servers using for the first, and for the second. - - Since you will use a single XFree configuration file for all X servers, - - - in order to use independent keyboards you have to use following command: + Since you will use a single XFree configuration file for all X servers, + + + in order to use independent keyboards you have to use following command: + For 1st X server with the 1st keyboard: + $ startx -- /usr/X11R6/bin/X0 :0 -layout first-Xserver vt7 + For 2nd X server with the 2nd keyboard: + $ startx -- /usr/X11R6/bin/X1 :1 -layout second-Xserver vt17 + and if you want to use Xinerama: + $ startx -- /usr/X11R6/bin/X -layout Xinerama vt7 + + + + Note + For older versions of Backstreet Ruby you have to use: For 1st X server with the 1st keyboard: - $ startx -- /usr/X11R6/bin/X0 :0 -layout first-Xserver vt7 + $ startx -- /usr/X11R6/bin/X0 :0 -layout first-Xserver vt7 For 2nd X server with the 2nd keyboard: - $ startx -- /usr/X11R6/bin/X1 :1 -layout second-Xserver vt8 - and if you want to use Xinerama: - $ startx -- /usr/X11R6/bin/X -layout Xinerama vt7 - - - also the mice must have different identifiers: - ------------------------------------------------------------------------------------------------ + $ startx -- /usr/X11R6/bin/X1 :1 -layout second-Xserver vt8 + + + + also the mice must have different identifiers: + ------------------------------------------------------------------------------------------------ # ********************************************************************** # Pointer section @@ -1039,13 +1158,13 @@ Section "InputDevice" EndSection ----------------------------------------------------------------------------------------------- - - - + + Nvidia GLX & DRI + Note Here you will learn how to configure your system for parallel use of Nvidia's GLX and XFree's DRI. If you do not have Nvidia cards, or you have only Nvidia cards, you do not need to read this section. In the first case you do not need the Nvidia GLX at all, and in the second, you can use the standard procedure for installing GLX. Why Nvidia? Why closed source drivers? @@ -1075,6 +1194,7 @@ I tried to use DRI on 2 parallel X servers, but it didn't work. I posted emails If you find a simpler way, please email it me and I'll include it. + Caution This can not be used as-is on SuSE Linux. In order to make it easy for the user to switch between Mesa, XFree and Nvidia GL libraries, SuSE uses a very complicated setup for the GL libraries. To use this setup you have to switch your configuration to XFree86's GL libraries. @@ -1202,6 +1322,7 @@ tar xvfp libGL-backup.tar && ldconfig If you feel comfortable under Linux, please review and test the experimental service ruby_init. The service, the configuration file and the README can be found in Appendix D. Any kind of feedback is highly appreciated. (Please, please drop a line with comments. :-) ) + Note If you are configuring a system with two displays( 2 keyboards, 2 mice) you probably can skip to Configuring display managers, but if you want to use a single system for more users you will find really useful information in this chapter. @@ -1249,6 +1370,7 @@ B: EV=7 B: KEY=1f0000 0 0 0 0 0 0 0 0 B: REL=103 + Note /proc/bus/input/devices will provide the needed information for all devices except USB multimedia/office keyboards. @@ -1256,6 +1378,9 @@ B: REL=103 For such USB multimedia/office keyboards you will have to gather additional information, for example with the help of lsusb. + + Under Ruby-2.6 for usb devices it will look like "usb-0000:00:10.x" not "usb-00:10.x" + @@ -1312,7 +1437,7 @@ H: Handlers=kbd Bus type: usb - PCI function of the USB controller: 00:10.1 + PCI function of the USB controller: 00:10.1 ( for Ruby-2.6 "0000:00:10.1") USB device id: 1.1 @@ -1345,6 +1470,10 @@ H: Handlers=kbd + + Note + The explanations here are using Backstreet Ruby ( usb devices have PHYS_ID "usb-00:xx.x-..."), if you are running Ruby-2.6 for usb devices you should have PHYS_ID "usb-0000:00:xx.x-...." , but you should be able to use the same configuration files both under Backstreet Ruby and Ruby-2.6 by specifying "usb-0*:xx.x-..." . + To configure the keyboards you have to adjust /etc/hotplug/kbd.conf If I wanted to use the PS2 keyboard for the primary Display and for the VGA console, I would have: @@ -1437,13 +1566,19 @@ event2br usb-*.*-3/input0 If you are using input drivers built into the kernel please ensure that the input.rc script is started/executed at system start. In case the script is not executed you will find that hotplug could not configure these input devices. + Note This area requires user feedback. Currently I have information only about Mandrake, where hotplug is not run as service. If your distribution runs hotplug as service this will be done automatically. If your distribution does not run hotplug as service you will have to modify your init scripts to run input.rc for you before XFree is started. You may add this at the end of your /etc/rc.d/rc.sysinitif [[ -f /proc/bus/console -o -n tmp=`uname -r | sed -n 's:ruby::p'` ]]; then if [ -x /etc/hotplug/input.rc ]; then - action "Configuring cold plugged input devices" /etc/hotplug/input.rc start + /etc/hotplug/input.rc start + if [ $? = 0 ]; then + action "Configuring cold plugged input devices" /bin/true + else + action "Configuring cold plugged input devices" /bin/false + fi else if [ -f /etc/hotplug/input.rc ]; then action "Input: input.rc installed, but not executable. Please check the file permissions." /bin/false else @@ -1468,8 +1603,13 @@ fi + Caution Currently hot-plugging doesn't seems to work properly. I have reports that it works when using the Dev Name option, but my primary purpose was to get it working with Dev Phys and this does not currently seem to work. Why "Dev Phys"? - because if one wants to setup a single system for 4,5 or more users it would be easier to get 4,5 or more pieces of the same keyboard/ mouse then to find the same number keyboards or mice but from different manufacturer or with different names, and i find configuring XFree for such number users is simpler when Dev Phys is used. + + Warning + This section is somewhat abandoned and is not tested under Ruby-2.6 as it didn't work reliably for me. + For this to work you will have to use XFree with the patches for event interface support, developed by Zephaniah Hull. You can find them at the following url: http://people.debian.org/~warp/evdev/. To build from source you will need the following patches : @@ -1516,6 +1656,7 @@ EndSection Using the Phys descriptor of input devices simplifies a lot the configuration of input devices in XFree, especially when a bigger number of displays are used. As USB devices are connecting in a tree form, you can really easy specify the way keyboard and mice devices are bound to a specified X display. You have to use one USB hub with number of ports equal(or bigger) to the number of the X displays, to this hub are connected smaller (2-4 port) hubs (or keyboards with integrated hub). To the first port of the smaller (integrated) hub are connected the keyboards, to the second the mice (in case there are free ports you can connect usb-audio devices to them :) ). This results in the following layout of the usb-id's in case the primary USB hub is the first USB device : + Note In the following explanations and examples I use for first device on the secondary(integrated) hub keyboard device because my keyboard is internally connected to the 1st port of the integrated hub. I assume this will apply for most of the keyboards with integrated hub, but in case the one you own uses different port you will have to make small adjustments. @@ -1592,6 +1733,12 @@ EndSection ... with Input Agent An example for a 4-user system using the Phys descriptor with Input Agent and USB input devices. + + Note + Here the PCI function of the USB controller is masked by *.* so it should work both under Backstreet Ruby and Ruby-2.6 . If you use more then one USB controller you'll have to use different mask ( for example "usb-0*:xx.x-...") or specify the full PHYS_ID's : . + For Backstreet Ruby you should have PHYS_ID "usb-00:xx.x-..." + For Ruby-2.6 you should have PHYS_ID "usb-0000:00:xx.x-...." + We'll use the vt[n] parameter when starting X and the following configuration file for the keyboards(/etc/hotplug/kbd.conf ): # @@ -1702,6 +1849,7 @@ EndSection ... with XFree with event interface support Using the Dev Phys option of XFree with event device support and USB input devices enables us to use almost identical configuration of the input devices for all X servers. The only difference will be in the part of the usb-id, which reflects the port of the primary USB hub. + Note The examples below are for multiple XFree configuration files, if you use a single XFree configuration file you have to adjust the identifiers. The configuration for the input devices for the 1st display would look something like this: @@ -1788,7 +1936,7 @@ EndSection Configuring display managers If you have successfully finished the installation and configuration of the kernel and XFree, it's time to configure your display manager(s). - Beside the grafical differences, xdm/kdm and gdm handle differently the X servers. gdm will start the X servers in the order specified in it's configuration file (and stop them in the reverse order). xdm/kdm will start and stop all the X servers at the same time(in case there are no opened X sessions). Also restarting the gdm demon means end for all X sessions, but if you restart xdm/kdm when you are under X your session won't be closed. + Beside the graphical differences, xdm/kdm and gdm handle the X servers differently. Gdm will start the X servers in the order specified in it's configuration file (and stop them in the reverse order). Xdm/kdm will start and stop all the X servers at the same time(in case there are no opened X sessions). Also, restarting the gdm daemon means end for all X sessions, but if you restart xdm/kdm when you are under X, your session won't be closed. Using gdm could help you to retain the VGA console and prevents lock-ups with some graphic cards (check the compatibility list). @@ -1798,40 +1946,46 @@ EndSection + Note Have in mind that for the older Preferred Bus ID XFree Server (version 1) you have to specify the desired graphic card with parameter -prefbusid x:x:x where x:x:x is the Bus ID of the desired graphic card. Just append "-prefbusid x:x:x" with the correct Bus ID of the card you want to start right before the last argument vt[x]. Configuring xdm and kdm If everything is working now, it's time to setup the automatic starting of X on all displays. For xdm and kdm you have to modify one single file. For a Red Hat-like system this would be /etc/X11/xdm/Xservers; for other distributions check whether this file exists. If not, find your XFree86 configuration directory, and in it you'll find xdm/Xservers. - SuSE uses: + Note - /etc/X11/XF86Config + SuSE uses: + + + /etc/X11/XF86Config + + + /etc/X11/xdm/Xservers for xdm + + + /etc/opt/kde3/share/config/kdm/Xservers for kdm + + + you can make a backup copy of /etc/opt/.../kdm/Xservers and make a symbolic link from /etc/X11/xdm/Xservers to /etc/opt/../kdm/Xservers, in order to use the same configuration file for xdm and kdm. - /etc/X11/xdm/Xservers for xdm + Debian uses: + + + /etc/kde3/kdm/Xservers for kdm + + + you can make a backup copy of /etc/kde3/kdm/Xservers and make a symbolic link from /etc/X11/xdm/Xservers to /etc/kde3/kdm/Xservers, in order to use the same configuration file for xdm and kdm. - /etc/opt/kde3/share/config/kdm/Xservers for kdm - - - you can make a backup copy of /etc/opt/.../kdm/Xservers and make a symbolic link from /etc/X11/xdm/Xservers to /etc/opt/../kdm/Xservers, in order to use the same configuration file for xdm and kdm. - - - Debian uses: - - - /etc/kde3/kdm/Xservers for kdm - - - you can make a backup copy of /etc/kde3/kdm/Xservers and make a symbolic link from /etc/X11/xdm/Xservers to /etc/kde3/kdm/Xservers, in order to use the same configuration file for xdm and kdm. - - - Red Hat uses: - - - /etc/X11/XF86Config + Red Hat and Gentoo use: + + + /etc/X11/XF86Config + + @@ -1880,18 +2034,18 @@ EndSection # :0 local /bin/nice -n -10 /usr/X11R6/bin/X0 :0 -deferglyphs 16 vt7 -:1 local /bin/nice -n -10 /usr/X11R6/bin/X1 :1 -xf86config /etc/X11/XF86Config-4.TNT2 vt9 +:1 local /bin/nice -n -10 /usr/X11R6/bin/X1 :1 -xf86config /etc/X11/XF86Config-4.TNT2 vt17 ####################################################################### If you have more video cards just add more lines: -:2 local /bin/nice -n -10 /usr/X11R6/bin/X2 :2 -xf86config /etc/X11/XF86Config-4.[your 3rd card] vt16 +:2 local /bin/nice -n -10 /usr/X11R6/bin/X2 :2 -xf86config /etc/X11/XF86Config-4.[your 3rd card] vt18 :3 local ..... If you use a single XFree configuration file : -###################################################################### +###################################################################### # $XConsortium: Xserv.ws.cpp,v 1.3 93/09/28 14:30:30 gildea Exp $ # @@ -1910,40 +2064,65 @@ EndSection # :0 local /bin/nice -n -10 /usr/X11R6/bin/X0 :0 -layout first-Xserver -deferglyphs 16 vt7 -:1 local /bin/nice -n -10 /usr/X11R6/bin/X1 :1 -layout second-Xserver vt9 +:1 local /bin/nice -n -10 /usr/X11R6/bin/X1 :1 -layout second-Xserver vt17 ####################################################################### + + Note + Under older versions of Backstreet Ruby (released before 7. Oct 2003) each console is represented by 8 tty's, so you should use: + ..... +:0 local /bin/nice -n -10 /usr/X11R6/bin/X0 :0 -deferglyphs 16 vt7 +:1 local /bin/nice -n -10 /usr/X11R6/bin/X1 :1 -xf86config /etc/X11/XF86Config-4.TNT2 vt9 +..... + Or if you have more video cards just add more lines: + +:2 local /bin/nice -n -10 /usr/X11R6/bin/X2 :2 -xf86config /etc/X11/XF86Config-4.[your 3rd card] vt16 +:3 local ..... + + If you use a single XFree configuration file :................ +:0 local /bin/nice -n -10 /usr/X11R6/bin/X0 :0 -layout first-Xserver -deferglyphs 16 vt7 +:1 local /bin/nice -n -10 /usr/X11R6/bin/X1 :1 -layout second-Xserver vt9 +................ + + Configuring gdm - gdm, as a complete rewrite of xdm, uses its own configuration file, /etc/X11/gdm/gdm.conf. You should locate the definitions of the local X servers and add additional X servers for the number of cards you have. + Gdm, as a complete rewrite of xdm, uses its own configuration file, /etc/X11/gdm/gdm.conf. You should locate the definitions of the local X servers and add additional X servers for the number of cards you have. - SuSE uses: + Note - /etc/X11/XF86Config + SuSE uses: + + + /etc/X11/XF86Config + + + /etc/opt/gnome2/gdm/gdm.conf for gdm2 + + + - /etc/opt/gnome2/gdm/gdm.conf for gdm2 + Debian uses: + + + /etc/gdm/gdm.conf for gdm + /etc/X11/gdm/ is a symbolic link to /etc/gdm/, so you can use both paths. + + + - - - - Debian uses: - - /etc/gdm/gdm.conf for gdm - /etc/X11/gdm/ is a symbolic link to /etc/gdm/, so you can use both paths. - - - - - Red Hat uses: - - - /etc/X11/XF86Config + Red Hat and Gentoo use: + + + /etc/X11/XF86Config + + @@ -1968,9 +2147,7 @@ you should add a definition, like here, for 1=Second. Changes, Part 2 - - -.............................. + .............................. # Definition of the standard X server. [server-Standard] name=Standard server @@ -1979,7 +2156,7 @@ flexible=true [server-Second] name=Second server -command=/usr/X11R6/bin/X1 :1 -deferglyphs 16 -xf86config /etc/X11/XF86Config-4.[your card] vt9 +command=/usr/X11R6/bin/X1 :1 -deferglyphs 16 -xf86config /etc/X11/XF86Config-4.[your card] vt17 flexible=true .............................. @@ -1996,10 +2173,28 @@ flexible=true [server-Second] name=Second server -command=/usr/X11R6/bin/X1 :1 -layout second-Xserver -deferglyphs 16 vt9 +command=/usr/X11R6/bin/X1 :1 -layout second-Xserver -deferglyphs 16 vt17 flexible=true .............................. + + Note + Under older versions of Backstreet Ruby (released before 7. Oct 2003) each console is represented by 8 tty's, so you should use: + .............................. +name=Standard server +command=/usr/X11R6/bin/X0 :0 -deferglyphs 16 -ac vt7 +.............................. +name=Second server +command=/usr/X11R6/bin/X1 :1 -deferglyphs 16 -xf86config /etc/X11/XF86Config-4.[your card] vt9 +.............................. + If you use a single XFree configuration file:.............................. +name=Standard server +command=/usr/X11R6/bin/X0 :0 -layout first-Xserver -deferglyphs 16 -ac vt7 +...... +name=Second server +command=/usr/X11R6/bin/X1 :1 -layout second-Xserver -deferglyphs 16 vt9 +.............................. + @@ -2009,11 +2204,12 @@ flexible=true Using independent sound cards + Note In case you do not use devfs, you may need to create additional device files. Take a look at The Linux Sound HOWTO, for information on how to setup additional sound cards. - Using arts demon (artsd) - We have to specify different sound devices for the different Xsessions/Displays. This is done by using the following options of artsd: + Using aRts daemon + We have to specify different sound devices for the different Xsessions/Displays. This is done by using the following options of aRts daemon (http://www.arts-project.org/): By OSS-free sound driver: @@ -2065,16 +2261,16 @@ esac /usr/X11R6/bin/enlightenment artsshell -q terminate - This will start 3 arts demons for 3 X servers. + This will start 3 aRts daemons for 3 X servers. - Demon will use the first OSS sound device for the 1st X server. + Daemon will use the first OSS sound device for the 1st X server. - Demon will use the second OSS sound device for the 2nd X server. + Daemon will use the second OSS sound device for the 2nd X server. - Demon will use the Alsa sound device for the 3rd X server (requires feedback). + Daemon will use the Alsa sound device for the 3rd X server (requires feedback). @@ -2405,7 +2601,7 @@ your display manager will start a single X server with the corresponding XF86Con Switching the secondary graphic card to primary, starting the system (to initialize the card as primary), and reverting the card to secondary. - In case this is the only secondary card, you may try switching the order of the graphic cards permanently. + In case this is the only secondary card, you can try switching the order of the graphic cards permanently. @@ -2427,6 +2623,10 @@ your display manager will start a single X server with the corresponding XF86Con SuSE 8.1 - /etc/init.d/hwscan: Recommended: disable. If you have to install new hardware and want to use this service, boot with standard kernel and start it manually. + + Programs writing directly to tty's, like vcstime, cannot be used. + + @@ -2575,8 +2775,8 @@ if [ $MACHINE = ppc -o $MACHINE = ppc64 ]; then Final words Have some comments? Send them to Svetoslav Slavtchev, svetoslav (at) users.sourcefourge.net. Difficulty understanding the HOWTO? Some parts are not clear? Drop a line to the above address. - In case you experiance troubles in configuring the system, feel free to contact me or the linuxcosnole mailing list. - Please send as much details as possible, the most important information would be (from a running Backstreet Ruby kernel): + In case you experience troubles in configuring the system, feel free to contact me or the linuxconsole mailing list. + Please send as many details as possible, the most important information would be (from a running Backstreet Ruby kernel): output from dmesg @@ -2623,6 +2823,7 @@ if [ $MACHINE = ppc -o $MACHINE = ppc64 ]; then Nvidia cards Riva TNT (PCI+PCI+AGP) Riva TNT2 M64 (pci)(nvidia) + Riva TNT2 M64 (pci)(nvidia) + Riva TNT2 M64 (agp)(nvidia) + GeForce4MX(PCI) Nvidia GeForce2MX(PCI) + GeForce2MX(PCI) + GeForce2MX(PCI) + GeForce2MX(PCI) Works fine. DRI + Nvidia GLX works too. @@ -3224,7 +3425,7 @@ EndSection # look like: # XTerminalName:0 foreign # -:0 local /bin/nice -n -10 /usr/X11R6/bin/X -deferglyphs 16 +:0 local /bin/nice -n -10 /usr/X11R6/bin/X -deferglyphs 16 vt7 /etc/X11/xdm/Xservers.1 @@ -3244,7 +3445,7 @@ EndSection # XTerminalName:0 foreign # :0 local /bin/nice -n -10 /usr/X11R6/bin/X0 :0 -deferglyphs 16 vt7 -:1 local /bin/nice -n -10 /usr/X11R6/bin/X1 :1 -xf86config /etc/X11/XF86Config-4.X1 -deferglyphs 16 vt9 +:1 local /bin/nice -n -10 /usr/X11R6/bin/X1 :1 -xf86config /etc/X11/XF86Config-4.X1 -deferglyphs 16 vt17 (Not really used by me.) /etc/X11/xdm/Xservers.2 @@ -3265,8 +3466,8 @@ EndSection # XTerminalName:0 foreign # :0 local /bin/nice -n -10 /usr/X11R6/bin/X0 :0 -deferglyphs 16 vt7 -:1 local /bin/nice -n -10 /usr/X11R6/bin/X1 :1 -xf86config /etc/X11/XF86Config-4.X1 -deferglyphs 16 vt9 -:2 local /bin/nice -n -10 /usr/X11R6/bin/X2 :2 -xf86config /etc/X11/XF86Config-4.X2 -deferglyphs 16 vt17 +:1 local /bin/nice -n -10 /usr/X11R6/bin/X1 :1 -xf86config /etc/X11/XF86Config-4.X1 -deferglyphs 16 vt17 +:2 local /bin/nice -n -10 /usr/X11R6/bin/X2 :2 -xf86config /etc/X11/XF86Config-4.X2 -deferglyphs 16 vt18 @@ -3368,7 +3569,7 @@ Xnest=/usr/X11R6/bin/Xnest -name Xnest # we force X to use specific vts. turn VTAllocation to false if this # is causing problems. FirstVT=7 -VTAllocation=true +VTAllocation=false [security] # If any distributions ship with this one off, they should be shot @@ -3864,7 +4065,7 @@ flexible=true # Definition of the second X server. [server-2nd] name=2nd server -command=/usr/X11R6/bin/X1 :1 -xf86config /etc/X11/XF86Config-4.X1 -deferglyphs 16 vt9 +command=/usr/X11R6/bin/X1 :1 -xf86config /etc/X11/XF86Config-4.X1 -deferglyphs 16 vt17 flexible=true # To use this server type you should add -query host or -indirect host @@ -3960,9 +4161,13 @@ setup_kbd () fi if [ `echo "$PHYS" | grep $PHYS_PATTERN 2>/dev/null` ]; then VT=`echo "$VT_NUM" | sed 's/VT//' | awk '{printf "%02d", $0}'` - echo "$PHYS" > "/proc/bus/console/$VT/keyboard" - debug_mesg "Input device $NAME on $PHYS mapping to VT$VT" - return; + if [ -d /proc/bus/console/$VT ]; then + echo "$PHYS" > "/proc/bus/console/$VT/keyboard" + debug_mesg "Input device $NAME on $PHYS mapping as secondary to VT$VT" + return; + else + debug_mesg "Trying to configure keyboard for VT$VT , but not enough VT's available" + fi fi done debug_mesg "Found no fitting VT" @@ -4521,6 +4726,9 @@ mouse1br usb-00:10.1-1.2/input0 # and exit ) # # $Id$ +# - don't exit silently if hackvideo or modules loading is deactivated, +# run the script to the end +# $Id$ # - show keyboard status per VT ,use sed instead of head(head is in /usr) # - *? status/ ext-status # - (mice & evdev links)? @@ -4599,7 +4807,7 @@ function run_hackvideo () { if [ "$1" = status ]; then echo "XFree hackvideo not configured." fi - exit 0; + return ; fi if [ -f /proc/bus/pci/hackvideo ]; then if [ -f /etc/X11/XF86Config-4 ]; then @@ -4649,7 +4857,7 @@ function run_hackvideo () { function load_modules () { eval "doit=\"\$LOAD_MODULES\"" if [ "$doit" != yes -a "$1" != status ]; then - exit 0; + return ; fi action "bruby: loading additional modules." /bin/true cat $RUBY_CONF | sed -n "/input modules /,/config/p" | while read module args @@ -4665,7 +4873,7 @@ function load_modules () { function run_auto_xfree () { eval "doit=\"\$AUTO_XFree\"" if [ "$doit" != yes -a "$1" != status ]; then - exit 0; + return ; fi # (pixel) a kind of profile for XF86Config # if no XFree=XXX given on kernel command-line, restore XF86Config.standard @@ -4682,7 +4890,7 @@ function run_auto_xfree () { function run_auto_dm () { eval "doit=\"\$AUTO_DM\"" if [ "$doit" != yes -a "$1" != status ]; then - exit 0; + return ; fi # #the same like XF86Config but for gdm.conf & Xservers @@ -4809,10 +5017,6 @@ DEBUG=yes export DEBUG RUBY_CONF="/etc/sysconfig/ruby.conf" -KBD_CONFIG="./kbd.conf" -EVENT_CONFIG="./event.conf" -MOUSE_CONFIG="./mouse.conf" - setup_kbd () { while read VT_NUM PHYS_PATTERN NAME_PATTERN @@ -4822,9 +5026,13 @@ setup_kbd () fi if [ `echo "$PHYS" | grep $PHYS_PATTERN 2>/dev/null` ]; then VT=`echo "$VT_NUM" | sed 's/VT//' | awk '{printf "%02d", $0}'` - echo "$PHYS" > "/proc/bus/console/$VT/keyboard" - debug_mesg "Input device $NAME on $PHYS mapping to VT$VT" - return; + if [ -d /proc/bus/console/$VT ]; then + echo "$PHYS" > "/proc/bus/console/$VT/keyboard" + debug_mesg "Input device $NAME on $PHYS mapping as secondary to VT$VT" + return; + else + debug_mesg "Trying to configure keyboard for VT$VT , but not enough VT's available" + fi fi done debug_mesg "Found no fitting VT" @@ -4840,9 +5048,13 @@ setup_mm_keys () fi if [ `echo "$PHYS" | grep $PHYS_PATTERN 2>/dev/null` ]; then VT=`echo "$VT_NUM" | sed 's/VT//' | awk '{printf "%02d", $0}'` - echo "+$PHYS" > "/proc/bus/console/$VT/keyboard" - debug_mesg "Input device $NAME on $PHYS mapping as secondary to VT$VT" - return; + if [ -d /proc/bus/console/$VT ]; then + echo "+$PHYS" > "/proc/bus/console/$VT/keyboard" + debug_mesg "Input device $NAME on $PHYS mapping as secondary to VT$VT" + return; + else + debug_mesg "Trying to configure keyboard for VT$VT , but not enough VT's available" + fi fi done debug_mesg "Found no fitting VT" @@ -4923,11 +5135,6 @@ DEV_HANDLERS=`grep -E 'Phys|Handlers' /proc/bus/input/devices | \ awk '{ if(count == 0) { printf("%s\t",$0); count++; } else { print $0; count=0; } }' | \ grep $PHYS | awk -F\t '{print $2}' | sed 's/^.*=//'` -# older grep do not support -o :-( -#DEV_EVENT=`echo $MATCHED | grep -oE event[0-9]+` -#DEV_MOUSE=`echo $MATCHED | grep -oE mouse[0-9]+` -#DEV_KBD=`echo $MATCHED | grep -o kbd` - DEV_EVENT=`echo $DEV_HANDLERS | \ awk -F" " '{for(n=1;$n;n=n+1) if($n ~ /event/) print $n}'` DEV_MOUSE=`echo $DEV_HANDLERS | \