Dear Rusty and all,

I don't know if anybody had noticed, but there are some issues with the 
event.d scripts that are supposed to start the X on UME.

The problem is that unless you change the /etc/X11/Xwrapper.config there is no 
way the X is going to start on the machine. This is because the way it comes 
configured is with allowed_users=console. If you check with the 
xserver-wrapper.c you will find out that the upstart starts processes in 
the /dev/console which is not ok from the xserver-wrapper.c point of view. I 
include also here mytest.c file that basically emulates the behavior of the 
Xwrapper test so you can see that I am right. Here is how you can test it:
1. Place the mytest file in /etc/event.d
$ sudo cp mytest /etc/event.d

2. Compile the mytest.c
$ sudo cc -o /mytest mytest.c

3. Re-read the event.d?
$ sudo init q

4. Check if it is there:
$ sudo initctl list|grep mytest
mytest (stop) waiting

5. Now you can see what I am talking about by running in console (login in 
text mode):
$ sudo initctl start mytest

and compare the result with:
$ /mytest

The explanation is that the test is looking for /dev/tty[n] as a process start 
fd/0. Since console is minor 5 and not 4 it is therefore rejected (unless you 
allow any process to start the X, which poses some security problems later).

Long explanation for a short resolution to our problem:

We need to change the /etc/event.d/session as follows:
-exec su -l ume "/usr/bin/starx -- -config xorg-crownbeach.conf"
+console output
+exec openvt -w -f -c 1 -- su -l ume "/usr/bin/starx -- -config \ 
xorg-crownbeach.conf"

I added the console output so that there is some feedback to the user if 
things goes wrong...

Hope it helps other people having the same problem...

Cheers,
Peter
-- 
 Peter Antoniac, PhD
 https://launchpad.net/~theseinfeld
 GIT/CS a C+++ UL+++$ w--- PGP++ e++++
/* $Author: Peter Antoniac */
#include <stdio.h>
#include <sys/stat.h>

int main (void)
{
  struct stat s;

  if (fstat (0, &s) != 0)
//  if (stat ("/dev/tty1", &s) != 0)
    {
      (void) fprintf (stderr, "X: cannot stat stdin\n");
      (void) fprintf (stdout, "X: cannot stat stdin\n");
    }
  if (S_ISCHR(s.st_mode) &&
          ((s.st_rdev >> 8) & 0xff) == 4 &&
                  (s.st_rdev & 0xff) < 64) {
      (void) fprintf (stderr, "X: is ok\n");
      (void) fprintf (stdout, "X: is ok\n");
    }
  else {
      (void) fprintf (stderr, "X: is NOT ok\n");
      (void) fprintf (stdout, "X: is NOT ok\n");
  }
  return 0;
}
# My test for Xwrapper behaviour in upstart
#

description     "testing x behaviour in upstart"
author          "Peter Antoniac <[EMAIL PROTECTED]>"

stop on runlevel [!2]
start on runlevel 2

console output

exec /mytest
-- 
Ubuntu-mobile mailing list
Ubuntu-mobile@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-mobile

Reply via email to