From Gentoo Wiki
(Redirected from XBMC)
Jump to: navigation, search

Kodi (formerly XBMC) is a media center application.


USE flags

USE flags for media-tv/kodi Kodi is a free and open source media-player and entertainment hub

airplay enable AirPlay support local
bluray Enable playback of Blu-ray filesystems local
cec Enable support for HDMI-CEC devices via libcec local
css Enable reading of encrypted DVDs global
dvd Enable optical (CD/DVD drive) support local
gbm Use the Graphics Buffer Manager for EGL on KMS. local
gles Enable support for GLES local
lcms Add lcms support (color management engine) global
libusb Use virtual/libusb for usb device hotplug support. This flag should only be enabled if you're running a non-Linux kernel or you don't want to use sys-fs/udev. local
lirc Enable support for controlling Totem with a remote control using app-misc/lirc local
nfs Enable NFS client support local
opengl Add support for OpenGL (3D graphics) global
sftp Support browsing files over SFTP local
system-ffmpeg Use system ffmpeg instead of the bundled one local
udev Use sys-fs/udev rules to handle devices' permissions and hotplug support. Unless you know what you're doing do not disable this flag on Linux kernels. This is provided as an option for completeness. local
udisks Enable storage management support (automounting, volume monitoring, etc) global
upower Enable power management support global
vaapi Enable Video Acceleration API for hardware decoding global
vdpau Enable the Video Decode and Presentation API for Unix acceleration interface global
wayland Enable dev-libs/wayland backend global
webserver Enable internal webserver local
xslt Enable XSLT support using dev-libs/libxslt local


root #emerge --ask media-tv/kodi


Create user

First create the kodi user:

root #useradd -m -G audio,cdrom,video,cdrw,usb,users kodi



Then define the Kodi init.d file with the following contents:

FILE /etc/init.d/kodi
# Released under the 2-clause BSD license.

description="Start and stop Kodi"

	need net

        ebegin "Starting Kodi"
        start-stop-daemon --start -u ${KODI_USER:-kodi} --background --pidfile /var/run/kodi.pid --make-pidfile --exec /usr/bin/xinit -- /usr/bin/kodi-standalone ${KODI_OPTS} -- :0
        eend $?

        ebegin "Stopping Kodi"
        start-stop-daemon --stop --pidfile /var/run/kodi.pid
        eend $?

Set the appropriate permissions:

root #chmod +x /etc/init.d/kodi

And tell OpenRC to start it on boot:

root #rc-update add kodi default

Using inittab

First create the kodi user (see above). This is based on the way the mythtv ebuilds enable the autostart of the mythtv frontend.

Define an .xinitrc file in kodi's home:

FILE /home/kodi/.xinitrc
[ -x /usr/bin/nvidia-settings ] && /usr/bin/nvidia-settings -l
/usr/bin/xset s noblank
/usr/bin/xset s off
/usr/bin/xset -dpms
/usr/bin/evilwm &
exec /usr/bin/kodi

Then create the login scripts:

FILE /home/kodi/.bash_profile
case "`tty`" in
        *tty9) startx; logout ;;

Finally append an inittab entry which does the autologin:

FILE /etc/inittab
# Start Kodi
c9:2345:respawn:/sbin/mingetty --autologin kodi tty9

Running on Gentoo Hardened

Running Kodi on a Hardened Gentoo installation is possible. To avoid grsecurity interfering with network connectivity, the CONFIG_GRKERNSEC_PROC_USER kernel option must not be enabled.

Should you require a restricted /proc filesystem, use CONFIG_GRKERNSEC_PROC_USERGROUP and set GRKERNSEC_PROC_GID to the ID of a group that the user running Kodi is a member of.



Allow the kodi user to issue an shutdown via polkit, resulting in a shutdown option in the Kodi menu:

FILE /etc/polkit-1/rules.d/60-kodi.rules
polkit.addRule(function(action, subject) {
        if (( (action.id.indexOf("org.freedesktop.udisks.") == 0) || (action.id.indexOf("org.freedesktop.upower.")== 0) || (action.id.indexOf("org.freedesktop.consolekit.")== 0) ) &&
        subject.user=="kodi") {
        return polkit.Result.YES;

Note: Ensure the udev USE flag set for shutdown to work.

External resources