Slashdot Mirror


Multiple Desktop Users on a Single Machine?

_Sharp'r_ asks: "I'm trying to design the least expensive way to make OpenOffice, email, and a web browser available to students in a new charter elementary school. In my past experience working with charitable computer donations, I can usually get three to four working computers out of five donated 'broken' computer systems, usually with plenty of monitors, keyboards and mice left over. I'd like to use one computer for multiple students by attaching multiple monitors, USB keyboards and mice. What drivers/OS versions support multiple local input devices and monitors that can be attached to a specific login session? Will this require virtualization? Is there a config I haven't found that you can use to assign these devices to specific ttys? Have you done this before?"

20 of 106 comments (clear)

  1. XFree-Local-multi-user-HOWTO by Cocoronixx · · Score: 5, Informative

    http://tldp.org/HOWTO/XFree-Local-multi-user-HOWTO /index.html

    The HOWTO is a bit dated, but it is probably relevant enough to get you on the right track.

    --
    "Obscenity is the crutch of the inarticulate motherfucker." - cloak42
  2. A few links... by stevo3232 · · Score: 5, Informative
    --
    s.clementmonkey@sympatico.ca, remove the 'monkey'.
    1. Re:A few links... by Anonymous Coward · · Score: 1, Informative
    2. Re:A few links... by Anonymous Coward · · Score: 3, Informative

      Here are a couple other tutorials...

      http://en.wikibooks.org/wiki/Multiterminal_with_ev dev
      http://gentoo-wiki.com/HOWTO_Multiseat_X
      http://netpatia.blogspot.com/2006/09/multiseat-com puter-with-ubuntu.html

      I did a multiseat setup using Ubuntu for Software Freedom Day last year and it worked quite well. The only way I was able to achieve hardware-accelerated 3D on _every_ head was to only use NVIDIA video adapters with the proprietary driver. (yes, I'm aware of the irony!) Unfortunately, none of the free (libre) drivers supported accelerated 3D on multiple heads at that time but perhaps things have changed with the latest release of Xorg.

      Setups like this are quite fascinating to me as they reveal how much more efficiently a computer of moderate specs is capable of being used--desktop users don't even notice that they are sharing a machine. Some aspects are a little complicated (like mapping different sound cards to the correct seats) but IMO there is a _lot_ of potential in this area due to ease of administration, energy savings, and a decrease in noise (less computers means less fans whirling).

  3. Here's one guy who built a six seat computer. by Anonymous Coward · · Score: 3, Informative

    http://linuxgazette.net/124/smith.html

    Not all good news though, seems it was a bit unstable. Still, it's a start. :)

  4. One computer, many users by Anonymous Coward · · Score: 4, Informative
  5. Re:Hardware solution? by Daemonik · · Score: 3, Informative

    You're thinking of nComputing and they're still around: http://www.ncomputing.com/ They have a nice hardware setup that allows up to 30 users on a single PC, and it runs on Windows 2000, XP, Server 2003, and Linux. You can also find them on TigerDirect http://www.tigerdirect.com/applications/SearchTool s/search.asp?keywords=ncomputing&image1.x=0&image1 .y=0

  6. this doesn't answer your question by Clover_Kicker · · Score: 3, Informative

    but is a different way to stretch junk hardware.

    Have you looked at Linux Terminal Server Project? Any old junk makes an adequate client, memory requirements are something like 64MB.

    There's an there's an active LTSP community, including guys use it in schools: www.k12ltsp.org.

  7. Edubuntu... by EvilGrin666 · · Score: 4, Informative

    Edubuntu will do this out of the box for you. It's designed specifically for this sort of situation.

  8. Linux Terminal Server Project (LTSP) by ptelligence · · Score: 4, Informative

    Get one server quality computer and load it up with Ram. The rest of the machines will be thin clients and can be just about anything down to a Pentium I. You can even run the machines diskless. You'll want a good 10/100 switch and at least a 100Mb NIC in the server. There will be a lot of information traveling across your network. I've done setups like this for kids in similar situations with donated hardware. One cool thing about this is that the students have the same experiences no matter what machine they sit down and log into. They don't have to be at one particular machine because that is where they saved their work. Definitely check it out. There is also a K-12 version for kids. Good luck. http://www.ltsp.org/ http://www.k12ltsp.org/

  9. Userful by rob1980 · · Score: 3, Informative

    http://userful.com/

    I used this to set up 8 workstations (virtual art galleries, actually) out of two machines for a tattoo shop across town. I've followed some of the resources already linked on this topic and was never able to get such a setup working, but this software did it just fine. All you need are some dual-head video cards and USB hubs.

  10. Re:Yes, but is it worth it? by prefect42 · · Score: 3, Informative

    You're right on the money with this, and you can do it roughly based on the port (effectively) as often pairs of ports represent separately enumerated buses. I use:

    KERNEL="event*",BUS="usb",SYSFS{bInterfaceClass}=" 03",SYSFS{bInterfaceProtocol}="02",NAME="input/%k" ,SYMLINK="input/evmouse-%b"
    KERNEL="event*",BUS="usb",SYSFS{bInterfaceClass}=" 03",SYSFS{bInterfaceProtocol}="01",NAME="input/%k" ,SYMLINK="input/evkbd-%b"

    To persistently name the devices attached.

    --

    jh

  11. I don't think so... by swillden · · Score: 4, Informative

    Edubuntu will do this out of the box for you. It's designed specifically for this sort of situation.

    Are you sure about that? AFAIK, what Edubuntu provides is LTSP, which allows you to run one machine with a bunch of thin clients attached to it, but each of the thin clients requires another PC. That's not the same as attaching multiple monitors and keyboards directly to one computer.

    --
    Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  12. This should be exactly what you're looking for. by screevo · · Score: 2, Informative
  13. Re:Here's a HOWTO by prefect42 · · Score: 2, Informative

    You certainly don't need to patch anything. evdev support should be in current Xorg releases, and it works just nicely.

    --

    jh

  14. How I did it by whatnotever · · Score: 2, Informative

    There are a lot of different ways to do this under Linux; someone has already posted several links to some resources. The easiest way I found, and the way I've been running my two-seat, single-machine setup at home for about a year, is simply using the capabilities of newer versions of X Windows as described on Chris Tyler's blog (included in those links earlier).

    All of the other methods I've seen require non-standard kernel modules or non-standard X servers, etc. This way uses standard software, and I think it should work for most modern distributions (I'm using Gentoo).

    What you need hardware-wise:

    1. One graphics card per seat. I have an old AGP Radeon 9000 and a super-old PCI Matrox Mystique.
    2. A monitor extension cable if you want the seats far apart. I first bought a 15ft brand-name one from Buy.com that was absolutely worthless (thin cable, ridiculous ghosting even at low resolutions) - then I bought this "generic" one which works perfectly.
    3. One keyboard/mouse pair per seat. One of my seats has a PS2 keyboard and a USB trackball, and the other has a PS2 mouse and a PS2 keyboard on a PS2 to USB converter that works perfectly hanging off the end of a 10ft USB extension cable.

    The software setup is described fairly well in Chris Tyler's blogs (don't skip the comments - there are useful tips from others in there, and on this followup page), but here's the basic idea: You run two separate X instances, each with a different ServerLayout section in the config file. They obviously need to point to different video cards (and I found that using the "SingleCard" option was necessary to get both to work), and you also need to separate the input devices between the two. The best way to do this that I know of (again, avoiding odd kernel modules or other software) is evdev. It's somewhat complicated, but it lets you specify input devices based on where they are plugged in or their specific model numbers, etc. It's fairly flexible.

    Once you have two separate X instances up and running, it's a fairly simple matter to get gdm (and I assume most other *dm applications) to launch both automatically with independent login screens.

    Good luck!

  15. Re:Hardware solution? by Kauppila · · Score: 2, Informative

    The NComputing solution works and works well. They have 2 different soltions. One does up to 30, they have another that is a PCI card that adds 3 computers to a computer (giving you 4 stations) And for $250 for 3 additional seats (and can run a total of 7 w/ one physical CPU) its pretty reasonable. We are evaluating it for our school district now.

  16. Re:You have to wonder why this is so rare by Short+Circuit · · Score: 2, Informative

    If I'm understanding what you're advocating correctly, then it's a very problematic solution. For one thing, you'd somehow have to make two mouse cursors each controlled by two independant mice, you'd need to keep each cursor within it's own screen (it'd be a bit kooky to see someone elses' mouse keep popping into your side of the screen). Same deal with keyboards - you'd need to make sure anything typed would stay on the screen it was delegated to. There are solutions to this - but they are rare BECAUSE not many people would use this I believe it's supported by X and the Kernel. Under /dev/input, you have a separate mouse device file for each mouse attached to the system. /dev/input/event* uniquely identify each HID device, meaning mouse, keyboard or joystick.

    In your /etc/X11/xorg.conf file, you can create entries for each DEVICE (mouse) you want attached to the PC, and you can create entries for eachy DISPLAY (screen) you want. All you need are a few $30 PCIe video cards, and you can attach multiple monitors to the PC, each with their own GUI login session.

    I'm not sure whether X supports multiple keyboard yet. I seem to recall reading about a patch for XFree86 3.3.6, but that gives you an idea how long its been since I looked into it.

    If I were the OP and had a computer powerful enough to even consider this... Are you kidding? X was designed from the get-go with exactly this kind of use in mind. One powerful 66MHz [sic] machine would serve as the application and GUI server, while thin clients were essentially network-attached monitors. It was intended as a GUI analog to the then-extensive use of text-only dumb terminals.

    Yes, operating systems and applications have become more resource-intensive over the past 20 years, but do you really believe someone needs even a 3GHz P4 for educational purposes? I've been using Linux on a 1.8 GHz Athlon XP laptop for the past two years for notetaking, programming and web browsing. Until six months ago, I had it underclocked to a mere 1.06GHz, and had no issues with anything that might be considered educational use.

    For similar purposes, an Athlon64 X2 4800+ desktop machine with a gig of RAM should be able to support five or six users, as long as you watched out for applications prone to excessive memory usage. And that's a machine you can throw together for only $700. Divide that by six users, and you're talking about a mere $116 per user. That's cheaper than the OLPC. Hell, that's cheaper than I've seen 500MHz desktops sell for at mom-and-pop shops in my area.
  17. I have set this up and it works great by killerkalamari · · Score: 2, Informative

    Here is the link you need:

    http://research.edm.uhasselt.be/~jori/page/index.p hp?n=Misc.DualSeatX

    I recommend the Xgl method for the following reasons:
    * free (GPL)
    * lets you use both heads of dual-head cards (that's what I'm doing.. I have just one video card)
    * allows you to use graphics acceleration (I've played opengl games on one screen while my wife was surfing on the other)
    * seems stable
    * works with your existing xorg / xgl binaries and kernel (no recompiling of these apps)

    The instructions on the page are pretty good, but if you need help setting it up, I'd be happy to assist. See my website for my e-mail address.

    It works good for us. I'm running Kubuntu AMD64.
    Good luck.

  18. Recently done this too by onetwofour · · Score: 2, Informative

    I've just recenetly been trying to multiseat X, the linuxtoys.org and http://gentoo-wiki.com/HOWTO_Multiseat_X are good references on this, even though the gentoo one is a little outdated now. Anyway, I recommend either Ubuntu or gentoo for this and I used Xorg 7.1 with Gnome 2.16. I plugged an ATI Rage 128 with two matrox mga pci cards into the machine and started playing about, your core files that are going to allow you to do this is /etc/X11/xorg.conf & /etc/X11/gdm/custom.conf (or whatever flavour of xdm you are using) Firstly in xorg.conf you will need to define your devices & seats as in the tutorial, a *WARNING* at this point. There currently exists a bug with multiseating within xorg, that if you don't have an active monitor and keyboard for each seat (excluding your primary device) then it will crash the entire system. (This bug has been reported) Once you've done this it's the gdm configuration and I used the following: 0=Standard 1=Extra [server-Standard] name=Standard server command=/usr/X11R6/bin/X0 :0 -deferglyphs 16 -novtswitch -isolateDevice PCI:1:0:0 -layout seat0 flexible=false [server-Extra] name=Extra Server command=/usr/X11R6/bin/X1 :1 -sharevts -deferglyphs 16 -isolateDevice PCI:0:9:0 -novtswitch -isolateDevice PCI:0:9:0 -layout seat1 flexible=false This works for my system, the sharevts is a tricky option and it only served to give a display bug on my rage 128 (and wasn't required for the first video device). I would also suggest you turn off any vtcontrol in xorg.conf, this can be done with: Section "Serverflags" Option "DontVTSwitch" "yes" Option "DontZap" "yes" EndSection My conclusions? Multiseating can work very well, it's certainly on it's way to being more stable and certainly is viable for your situation.