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