HOW-TO:Autostart Kodi for Linux: Difference between revisions
(→Add a new init script: Updated to Kodi) |
|||
Line 113: | Line 113: | ||
== Add a new init script == | == Add a new init script == | ||
This method works well under Debian. The current configuration is a HTPC running Debian Squeeze, with no window manager installed. The main goal here is to start an Xserver only for | This method works well under Debian. The current configuration is a HTPC running Debian Squeeze, with no window manager installed. The main goal here is to start an Xserver only for Kodi. It allows also to specify which user will start / own the Kodi process. This method will '''not work''' if you have a window manager installed (however, it should not be hard to modify the script to suit your needs) | ||
* Create a new script under '''/etc/init.d/'''. Call it '''kodi''' | * Create a new script under '''/etc/init.d/'''. Call it '''kodi''' |
Revision as of 10:52, 29 March 2015
Linux | HOW-TO:Autostart Kodi for Linux |
How to automatically start up in Kodi using various Linux distributions.
Upstart init script
Create a /etc/init/kodi.conf
with following contents.
# kodi-upstart # starts Kodi on startup by using xinit. # by default runs as kodi, to change edit below. env USER=kodi description "Kodi-barebones-upstart-script" author "Matt Filetto" start on (filesystem and stopped udevtrigger) stop on runlevel [016] # tell upstart to respawn the process if abnormal exit respawn script exec su -c "xinit /usr/bin/kodi-standalone -- -nocursor :0" $USER end script
Note: -- -nocursor
option kills all X cursor on Kodi startup and does not interfere with mouse use/operation
You may have to edit /etc/X11/Xwrapper.config
and replace the last line that says:
allowed_users=console
to
allowed_users=anybody
Kodi will now auto-start on boot and restart/respawn if killed or crashed.
Modify the inittab
This was tested on Arch Linux.
To automatically start xbmc on your system, do the following:
First you need to make some changes to /etc/inittab
. Comment out (add a #) to this line:
id:3:initdefault
to
#id:3:initdefault
and uncomment
id:5:initdefault
Then add this line to the bottom:
x:5:wait:login -f <YOUR_XBMC_USERNAME> </dev/tty7 &>/dev/tty7
Using wait instead of respawn means that you can exit out of xbmc into the console.
- NOTE*: This is a security hole as it autologins a dedicated xbmc user without asking for a password!
Now that we have the user logged in we need it to auto start XBMC.
In ~/.xinitrc
add the following to the end of the file
(after removing/commenting any other exec lines that start a windowmanager):
exec ck-launch-session xbmc
Add this line to your ~/.bash_profile
[[ $(tty) = "/dev/tty7" ]] && exec startx </dev/null &>/dev/null
And create a hushlogin file to suppress login messages.
touch ~/.hushlogin
Lastly, for the magic sauce that makes this work, add dbus to your daemons in /etc/rc.conf
.
DAEMONS=(... dbus ...)
You're finished. Next time you reboot you should be greeted with XBMC.
Add a new init script
This method works well under Debian. The current configuration is a HTPC running Debian Squeeze, with no window manager installed. The main goal here is to start an Xserver only for Kodi. It allows also to specify which user will start / own the Kodi process. This method will not work if you have a window manager installed (however, it should not be hard to modify the script to suit your needs)
- Create a new script under /etc/init.d/. Call it kodi
- Change the rights, in order to allow it to be executable.
# chmod a+x /etc/init.d/kodi
- copy the code under in the file. Modify the variables to suit your configuration:
#! /bin/sh ### BEGIN INIT INFO # Provides: kodi # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts instance of Kodi # Description: starts instance of Kodi using start-stop-daemon and xinit ### END INIT INFO ############### EDIT ME ################## # path to xinit exec DAEMON=/usr/bin/xinit # startup args DAEMON_OPTS=" /usr/local/bin/kodi-standalone -- :0" # script name NAME=kodi # app name DESC=Kodi # user RUN_AS=kodi # Path of the PID file PID_FILE=/var/run/kodi.pid ############### END EDIT ME ################## test -x $DAEMON || exit 0 set -e case "$1" in start) echo "Starting $DESC" start-stop-daemon --start -c $RUN_AS --background --pidfile $PID_FILE --make-pidfile --exec $DAEMON -- $DAEMON_OPTS ;; stop) echo "Stopping $DESC" start-stop-daemon --stop --pidfile $PID_FILE ;; restart|force-reload) echo "Restarting $DESC" start-stop-daemon --stop --pidfile $PID_FILE sleep 5 start-stop-daemon --start -c $RUN_AS --background --pidfile $PID_FILE --make-pidfile --exec $DAEMON -- $DAEMON_OPTS ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0
- Test the script by trying to start / stop Kodi with it.
# /etc/init.d/kodi start ........ # /etc/init.d/kodi stop
- If all is ok, you can add the script to your configuration, by issuing a "update-rc.d"
# update-rc.d kodi defaults
- If Kodi does not start, you may need to allow X to start from non-consoles. Under Debian/Ubuntu, run:
# dpkg-reconfigure x11-common
and choose "Anyone".
- You can now reboot the server, Kodi should be started just after the boot sequence.