[gdm-list] Chroot X Server



Background: running diskless clients in schools with various video chipsets 
connected to a centralized Debian Etch diskless server.  Having some problems 
getting 3d acceleration working for all chipsets.

Problem1: debian etch does not support parallel installs of nvidia, ati, via 
via chipsets on one system.  If I install nvidia drivers it overwrites some 
of the xorg binaries thus breaking 3d drivers for other chipsets.

Solution1: create a chroot for the Xorg server, and install xorg + closed 
source drivers in the chroot.  From the command line I can run the xserver in 
the chroot.

Problem2: How do get GDM to use the chroot Xserver?

So far I've tried the following:
* bind mount /tmp and /var/lib/gdm to the chroot.
* ensure /proc and /dev is also setup in the chroot.
* create a wrapper script called nvidiaX that is used in the server "command" 
string in gdm.conf.  This script does the chroot and runs X.


The nvidiaX script works great from the command line but when run from gdm it 
starts X then gdm complains:
"There already appears to be an X server running on display :0..."
... and the gdm login does not appear.

Gdm also seems a bit detached from the X server in that when i stop gdm the X 
server continues to run.

How does gdm communicate with the X server?  How can I make this work?

Does anyone have any ideas how to use a single software repository, (gdm login 
+ userland apps) but have multiple 3d accelerated chipset drivers?  Terminal 
server is not an option, the solution has to work for fat diskless clients.  
I would prefer to use a debian chroot to keep things up to date instead of 
compiling xorg from source.

===============================
Here is the latter part of my gdm.conf
===
[servers]
0=nvidia

[server-nvidia]
name=Nvidia server
command=/usr/local/bin/nvidiaX -br -audit 0
fexible=true
===

Here is nvidiaX - this works great from command line and gdm does start the 
chroot X:
===
#!/bin/sh
echo "$*" > /tmp/xopt
/usr/bin/schroot -c nvidia /usr/local/bin/nvidiaX2
===

Here is nvidiaX2:
===
#!/bin/sh
XOPT=`cat /tmp/xopt`
/usr/bin/X $XOPT
===

`ps auxwww | grep X` shows:
/usr/bin/X :0 -br -audit 0 -auth /var/lib/gdm/:0.Xauth vt7

`cat /tmp/xopt` after X has started and :
:0 -br -audit 0 -auth /var/lib/gdm:/:0.Xauth vt8


Thanks.
-- 
Dean Montgomery
Network Support Tech./Programmer
School District #73



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]