1#!/bin/sh
2#
3### BEGIN INIT INFO
4# Provides: xserver
5# Required-Start: $local_fs $remote_fs dbus
6# Required-Stop: $local_fs $remote_fs
7# Default-Start:     5
8# Default-Stop:      0 1 2 3 6
9### END INIT INFO
10
11killproc() {            # kill the named process(es)
12        pid=`/bin/pidof $1`
13        [ "$pid" != "" ] && kill $pid
14}
15
16read CMDLINE < /proc/cmdline
17for x in $CMDLINE; do
18        case $x in
19        x11=false)
20		echo "X Server disabled"
21		exit 0;
22                ;;
23        esac
24done
25
26case "$1" in
27  start)
28       . /etc/profile
29
30       #default for USER
31       . /etc/default/xserver-nodm
32       echo "Starting Xserver"
33       if [ "$USER" != "root" ]; then
34           # setting for rootless X
35           chmod o+w /var/log
36           chmod g+r /dev/tty[0-3]
37           # hidraw device is probably needed
38           if [ -e /dev/hidraw0 ]; then
39               chmod o+rw /dev/hidraw*
40           fi
41           # Make sure that the Xorg has the cap_sys_admin capability which is
42           # needed for setting the drm master
43           if ! grep -q "^auth.*pam_cap\.so" /etc/pam.d/su; then
44               echo "auth	optional	pam_cap.so" >>/etc/pam.d/su
45           fi
46           if ! /usr/sbin/getcap $XSERVER |  grep -q cap_sys_admin; then
47               /usr/sbin/setcap cap_sys_admin+eip $XSERVER
48           fi
49       fi
50
51       # Using su rather than sudo as latest 1.8.1 cause failure [YOCTO #1211]
52       su -l -c '/etc/xserver-nodm/Xserver &' $USER
53       # Wait for the desktop to say its finished loading
54       # before loading the rest of the system
55       # dbus-wait org.matchbox_project.desktop Loaded
56  ;;
57
58  stop)
59        echo "Stopping XServer"
60        killproc xinit
61        sleep 1
62        chvt 1 &
63  ;;
64
65  restart)
66	$0 stop
67        $0 start
68  ;;
69
70  *)
71        echo "usage: $0 { start | stop | restart }"
72  ;;
73esac
74
75exit 0
76