Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # @author Bram van Oploo
- # @date 2012-10-06
- # @version 2.5.0
- #
- THIS_FILE=$0
- SCRIPT_VERSION="2.5.0"
- VIDEO_DRIVER=""
- HOME_DIRECTORY="/home/xbmc/"
- TEMP_DIRECTORY=$HOME_DIRECTORY"temp/"
- ENVIRONMENT_FILE="/etc/environment"
- CRONTAB_FILE="/etc/crontab"
- DIST_UPGRADE_FILE="/etc/cron.d/dist_upgrade.sh"
- DIST_UPGRADE_LOG_FILE="/var/log/updates.log"
- XBMC_INIT_FILE="/etc/init.d/xbmc"
- XBMC_ADDONS_DIR=$HOME_DIRECTORY".xbmc/addons/"
- XBMC_USERDATA_DIR=$HOME_DIRECTORY".xbmc/userdata/"
- XBMC_KEYMAPS_DIR=$XBMC_USERDATA_DIR"keymaps/"
- XBMC_ADVANCEDSETTINGS_FILE=$XBMC_USERDATA_DIR"advancedsettings.xml"
- XBMC_INIT_CONF_FILE="/etc/init/xbmc.conf"
- XBMC_CUSTOM_EXEC="/usr/bin/runXBMC"
- UPSTART_JOB_FILE="/lib/init/upstart-job"
- XWRAPPER_FILE="/etc/X11/Xwrapper.config"
- GRUB_CONFIG_FILE="/etc/default/grub"
- GRUB_HEADER_FILE="/etc/grub.d/00_header"
- SYSTEM_LIMITS_FILE="/etc/security/limits.conf"
- INITRAMFS_SPLASH_FILE="/etc/initramfs-tools/conf.d/splash"
- INITRAMFS_MODULES_FILE="/etc/initramfs-tools/modules"
- XWRAPPER_CONFIG_FILE="/etc/X11/Xwrapper.config"
- REMOTE_WAKEUP_RULS_FILE="/etc/udev/rules.d/90-enable-remote-wakeup.rules"
- SYSCTL_CONF_FILE="/etc/sysctl.conf"
- POWERMANAGEMENT_DIR="/var/lib/polkit-1/localauthority/50-local.d/"
- DOWNLOAD_URL="https://github.com/Bram77/xbmc-ubuntu-minimal/raw/master/12.10/download/"
- XBMC_PPA="ppa:wsnipex/xbmc-xvba"
- HTS_TVHEADEND_PPA="ppa:jabbors/hts-stable"
- OSCAM_PPA="ppa:oscam/ppa"
- LOG_FILE=$HOME_DIRECTORY"xbmc_installation.log"
- DIALOG_WIDTH=70
- SCRIPT_TITLE="XBMC installation script v$SCRIPT_VERSION for Ubuntu 12.10 by Bram van Oploo :: bram@sudo-systems.com :: www.sudo-systems.com"
- GFX_CARD=$(lspci |grep VGA |awk -F: {' print $3 '} |awk {'print $1'})
- ## ------ START functions ---------
- function showInfo()
- {
- CUR_DATE=$(date +%Y-%m-%d" "%H:%M)
- echo "$CUR_DATE - INFO :: $@" >> $LOG_FILE
- dialog --title "Installing & configuring..." --backtitle "$SCRIPT_TITLE" --infobox "\n$@" 5 $DIALOG_WIDTH
- }
- function showError()
- {
- CUR_DATE=$(date +%Y-%m-%d" "%H:%M)
- echo "$CUR_DATE - ERROR :: $@" >> $LOG_FILE
- dialog --title "Error" --backtitle "$SCRIPT_TITLE" --msgbox "$@" 8 $DIALOG_WIDTH
- }
- function showDialog()
- {
- dialog --title "XBMC installation script" \
- --backtitle "$SCRIPT_TITLE" \
- --msgbox "\n$@" 12 $DIALOG_WIDTH
- }
- function update()
- {
- sudo apt-get update > /dev/null 2>&1
- }
- function createFile()
- {
- FILE="$1"
- IS_ROOT="$2"
- REMOVE_IF_EXISTS="$3"
- if [ -e "$FILE" ] && [ "$REMOVE_IF_EXISTS" == "1" ]; then
- sudo rm "$FILE" > /dev/null
- else
- if [ "$IS_ROOT" == "0" ]; then
- touch "$FILE" > /dev/null
- else
- sudo touch "$FILE" > /dev/null
- fi
- fi
- }
- function createDirectory()
- {
- DIRECTORY="$1"
- GOTO_DIRECTORY="$2"
- IS_ROOT="$3"
- if [ ! -d "$DIRECTORY" ];
- then
- if [ "$IS_ROOT" == "0" ]; then
- mkdir -p "$DIRECTORY" > /dev/null 2>&1
- else
- sudo mkdir -p "$DIRECTORY" > /dev/null 2>&1
- fi
- fi
- if [ "$GOTO_DIRECTORY" == "1" ];
- then
- cd $DIRECTORY
- fi
- }
- function handleFileBackup()
- {
- FILE="$1"
- BACKUP="$1.bak"
- IS_ROOT="$2"
- DELETE_ORIGINAL="$3"
- if [ -e "$BACKUP" ];
- then
- if [ "$IS_ROOT" == "1" ]; then
- sudo rm "$FILE" > /dev/null 2>&1
- sudo cp "$BACKUP" "$FILE" > /dev/null 2>&1
- else
- rm "$FILE" > /dev/null 2>&1
- cp "$BACKUP" "$FILE" > /dev/null 2>&1
- fi
- else
- if [ "$IS_ROOT" == "1" ]; then
- sudo cp "$FILE" "$BACKUP" > /dev/null 2>&1
- else
- cp "$FILE" "$BACKUP" > /dev/null 2>&1
- fi
- fi
- if [ "$DELETE_ORIGINAL" == "1" ]; then
- sudo rm "$FILE" > /dev/null 2>&1
- fi
- }
- function appendToFile()
- {
- FILE="$1"
- CONTENT="$2"
- IS_ROOT="$3"
- if [ "$IS_ROOT" == "0" ]; then
- echo "$CONTENT" | tee -a "$FILE" > /dev/null 2>&1
- else
- echo "$CONTENT" | sudo tee -a "$FILE" > /dev/null 2>&1
- fi
- }
- function addRepository()
- {
- REPOSITORY=$@
- KEYSTORE_DIR=$HOME_DIRECTORY".gnupg/"
- createDirectory "$KEYSTORE_DIR" 0 0
- sudo add-apt-repository -y $REPOSITORY > /dev/null 2>&1
- if [ "$?" == "0" ]; then
- update
- showInfo "$REPOSITORY repository successfully added"
- echo 1
- else
- showError "Repository $REPOSITORY could not be added (error code $?)"
- echo 0
- fi
- }
- function isPackageInstalled()
- {
- PACKAGE=$@
- sudo dpkg-query -l $PACKAGE > /dev/null 2>&1
- if [ "$?" == "0" ]; then
- echo 1
- else
- echo 0
- fi
- }
- function aptInstall()
- {
- PACKAGE=$@
- IS_INSTALLED=$(isPackageInstalled $PACKAGE)
- if [ "$IS_INSTALLED" == "1" ]; then
- showInfo "Skipping installation of $PACKAGE. Already installed."
- echo 1
- else
- sudo apt-get -f install > /dev/null 2>&1
- sudo apt-get -y install $PACKAGE > /dev/null 2>&1
- if [ "$?" == "0" ]; then
- showInfo "$PACKAGE successfully installed"
- echo 1
- else
- showError "$PACKAGE could not be installed (error code: $?)"
- echo 0
- fi
- fi
- }
- function download()
- {
- URL="$@"
- wget -q "$URL" > /dev/null 2>&1
- }
- function move()
- {
- SOURCE="$1"
- DESTINATION="$2"
- IS_ROOT="$3"
- if [ -e "$SOURCE" ];
- then
- if [ "$IS_ROOT" == "0" ]; then
- mv "$SOURCE" "$DESTINATION" > /dev/null 2>&1
- else
- sudo mv "$SOURCE" "$DESTINATION" > /dev/null 2>&1
- fi
- if [ "$?" == "0" ]; then
- echo 1
- else
- showError "$SOURCE could not be moved to $DESTINATION (error code: $?)"
- echo 0
- fi
- else
- showError "$SOURCE could not be moved to $DESTINATION because the file does not exist"
- echo 0
- fi
- }
- ------------------------------
- function installDependencies()
- {
- echo "-- Installing installation dependencies..."
- echo ""
- sudo apt-get -y install dialog software-properties-common > /dev/null 2>&1
- }
- function fixLocaleBug()
- {
- createFile $ENVIRONMENT_FILE
- handleFileBackup $ENVIRONMENT_FILE 1
- appendToFile $ENVIRONMENT_FILE "LC_MESSAGES=\"C\""
- appendToFile $ENVIRONMENT_FILE "LC_ALL=\"en_US.UTF-8\""
- showInfo "Locale environment bug fixed"
- }
- function applyXbmcNiceLevelPermissions()
- {
- createFile $SYSTEM_LIMITS_FILE
- appendToFile $SYSTEM_LIMITS_FILE "xbmc - nice -1"
- showInfo "Allowed XBMC to prioritize threads"
- }
- function addUserToRequiredGroups()
- {
- sudo adduser xbmc video > /dev/null 2>&1
- sudo adduser xbmc audio > /dev/null 2>&1
- sudo adduser xbmc users > /dev/null 2>&1
- showInfo "XBMC user added to required groups"
- }
- function addXbmcPpa()
- {
- showInfo "Adding Wsnipex xbmc-xvba PPA..."
- IS_ADDED=$(addRepository "$XBMC_PPA")
- }
- function distUpgrade()
- {
- showInfo "Updating Ubuntu with latest packages (may take a while)..."
- update
- sudo apt-get -y dist-upgrade > /dev/null 2>&1
- showInfo "Ubuntu installation updated"
- }
- function installXinit()
- {
- showInfo "Installing xinit..."
- IS_INSTALLED=$(aptInstall xinit)
- }
- function installPowerManagement()
- {
- showInfo "Installing power management packages..."
- createDirectory "$TEMP_DIRECTORY" 1 0
- IS_INSTALLED=$(aptInstall policykit-1)
- IS_INSTALLED=$(aptInstall upower)
- IS_INSTALLED=$(aptInstall udisks)
- IS_INSTALLED=$(aptInstall acpi-support)
- download $DOWNLOAD_URL"custom-actions.pkla"
- createDirectory "$POWERMANAGEMENT_DIR"
- IS_MOVED=$(move $TEMP_DIRECTORY"custom-actions.pkla" "$POWERMANAGEMENT_DIR")
- }
- function installAudio()
- {
- showInfo "Installing audio packages....\n!! Please make sure no used channels are muted !!"
- IS_INSTALLED=$(aptInstall linux-sound-base)
- IS_INSTALLED=$(aptInstall alsa-base)
- IS_INSTALLED=$(aptInstall alsa-utils)
- IS_INSTALLED=$(aptInstall libasound2)
- sudo alsamixer
- }
- function installLirc()
- {
- clear
- echo ""
- echo "Installing lirc..."
- echo ""
- echo "------------------"
- echo ""
- sudo apt-get -y install lirc
- if [ "$?" == "0" ]; then
- showInfo "Lirc successfully installed"
- else
- showError "Lirc could not be installed (error code: $?)"
- fi
- }
- function allowRemoteWakeup()
- {
- showInfo "Allowing for remote wakeup (won't work for all remotes)..."
- createDirectory "$TEMP_DIRECTORY" 1 0
- handleFileBackup "$REMOTE_WAKEUP_RULS_FILE" 1 1
- download $DOWNLOAD_URL"remote_wakeup_rules"
- if [ -e $TEMP_DIRECTORY"remote_wakeup_rules" ]; then
- sudo mv $TEMP_DIRECTORY"remote_wakeup_rules" "$REMOTE_WAKEUP_RULS_FILE" > /dev/null 2>&1
- showInfo "Remote wakeup rules successfully applied"
- else
- showError "Remote wakeup rules could not be downloaded"
- fi
- }
- function installTvHeadend()
- {
- showInfo "Adding jabbors hts-stable PPA..."
- addRepository "$HTS_TVHEADEND_PPA"
- clear
- echo ""
- echo "Installing tvheadend..."
- echo ""
- echo "------------------"
- echo ""
- sudo apt-get -y install tvheadend
- if [ "$?" == "0" ]; then
- showInfo "TvHeadend successfully installed"
- else
- showError "TvHeadend could not be installed (error code: $?)"
- fi
- }
- function installOscam()
- {
- showInfo "Adding oscam PPA..."
- addRepository "$OSCAM_PPA"
- showInfo "Installing oscam..."
- IS_INSTALLED=$(aptInstall oscam-svn)
- }
- function installXbmc()
- {
- showInfo "Installing XBMC..."
- IS_INSTALLED=$(aptInstall xbmc)
- }
- function enableDirtyRegionRendering()
- {
- showInfo "Enabling XBMC dirty region rendering..."
- createDirectory "$TEMP_DIRECTORY" 1 0
- handleFileBackup $XBMC_ADVANCEDSETTINGS_FILE 0 1
- download $DOWNLOAD_URL"dirty_region_rendering.xml"
- createDirectory "$XBMC_USERDATA_DIR" 0 0
- IS_MOVED=$(move $TEMP_DIRECTORY"dirty_region_rendering.xml" "$XBMC_ADVANCEDSETTINGS_FILE")
- if [ "$IS_MOVED" == "1" ]; then
- showInfo "XBMC dirty region rendering enabled"
- else
- showError "XBMC dirty region rendering could not be enabled"
- fi
- }
- function installXbmcAddonRepositoriesInstaller()
- {
- showInfo "Installing Addon Repositories Installer addon..."
- createDirectory "$TEMP_DIRECTORY" 1 0
- download $DOWNLOAD_URL"plugin.program.repo.installer-1.0.5.tar.gz"
- createDirectory "$XBMC_ADDONS_DIR" 0 0
- if [ -e $TEMP_DIRECTORY"plugin.program.repo.installer-1.0.5.tar.gz" ]; then
- tar -xvzf $TEMP_DIRECTORY"plugin.program.repo.installer-1.0.5.tar.gz" -C "$XBMC_ADDONS_DIR" > /dev/null 2>&1
- if [ "$?" == "0" ]; then
- showInfo "Addon Repositories Installer addon successfully installed"
- else
- showError "Addon Repositories Installer addon could not be installed (error code: $?)"
- fi
- else
- showError "Addon Repositories Installer addon could not be downloaded"
- fi
- }
- function configureAtiDriver()
- {
- sudo aticonfig --initial -f > /dev/null 2>&1
- sudo aticonfig --sync-vsync=on > /dev/null 2>&1
- sudo aticonfig --set-pcs-u32=MCIL,HWUVD_H264Level51Support,1 > /dev/null 2>&1
- }
- function disbaleAtiUnderscan()
- {
- sudo kill $(pidof X) > /dev/null 2>&1
- sudo aticonfig --set-pcs-val=MCIL,DigitalHDTVDefaultUnderscan,0 > /dev/null 2>&1
- showInfo "Underscan successfully disabled"
- }
- function enableAtiUnderscan()
- {
- sudo kill $(pidof X) > /dev/null 2>&1
- sudo aticonfig --set-pcs-val=MCIL,DigitalHDTVDefaultUnderscan,1 > /dev/null 2>&1
- showInfo "Underscan successfully enabled"
- }
- function installVideoDriver()
- {
- showInfo "Installing $GFX_CARD video drivers (may take a while)..."
- if [[ $GFX_CARD == NVIDIA ]]; then
- VIDEO_DRIVER="nvidia-current"
- elif [[ $GFX_CARD == ATI ]] || [[ $GFX_CARD == AMD ]]; then
- VIDEO_DRIVER="fglrx"
- elif [[ $GFX_CARD == INTEL ]]; then
- VIDEO_DRIVER="i965-va-driver"
- else
- cleanUp
- clear
- echo ""
- echo "$(tput setaf 1)$(tput bold)Installation aborted...$(tput sgr0)"
- echo "$(tput setaf 1)Only NVIDIA, ATI/AMD or INTEL videocards are supported. Please install a compatible videocard and run the script again.$(tput sgr0)"
- echo ""
- echo "$(tput setaf 1)You have a $GFX_CARD videocard.$(tput sgr0)"
- echo ""
- exit
- fi
- IS_INSTALLED=$(aptInstall $VIDEO_DRIVER)
- if [ "$IS_INSTALLED" == "1"]; then
- if [ "$GFX_CARD" == "ATI" ] || [ "$GFX_CARD" == "AMD" ]; then
- configureAtiDriver
- dialog --title "Disable underscan" \
- --backtitle "$SCRIPT_TITLE" \
- --yesno "Do you want to disable underscan (removes black borders)? Do this only if you're sure you need it!" 7 $DIALOG_WIDTH
- RESPONSE=$?
- case ${RESPONSE//\"/} in
- 0)
- disableAtiUnderscan
- ;;
- 1)
- enableAtiUnderscan
- ;;
- 255)
- showInfo "ATI underscan configuration skipped"
- ;;
- esac
- fi
- showInfo "$GFX_CARD video drivers successfully installed and configured"
- fi
- }
- function installAutomaticDistUpgrade()
- {
- showInfo "Enabling automatic system upgrade..."
- createDirectory "$TEMP_DIRECTORY" 1 0
- download $DOWNLOAD_URL"dist_upgrade.sh"
- IS_MOVED=$(move $TEMP_DIRECTORY"dist_upgrade.sh" "$DIST_UPGRADE_FILE" 1)
- if [ "$IS_MOVED" == "1" ]; then
- IS_INSTALLED=$(aptInstall cron)
- sudo chmod +x "$DIST_UPGRADE_FILE" > /dev/null 2>&1
- handleFileBackup "$CRONTAB_FILE" 1
- appendToFile "$CRONTAB_FILE" "0 */4 * * * root $DIST_UPGRADE_FILE >> $DIST_UPGRADE_LOG_FILE"
- else
- showError "Automatic system upgrade interval could not be enabled"
- fi
- }
- function removeAutorunFiles()
- {
- if [ -e "$XBMC_INIT_FILE" ]; then
- showInfo "Removing existing autorun script..."
- sudo update-rc.d xbmc remove > /dev/null 2>&1
- sudo rm "$XBMC_INIT_FILE" > /dev/null 2>&1
- if [ -e "$XBMC_INIT_CONF_FILE" ]; then
- sudo rm "$XBMC_INIT_CONF_FILE" > /dev/null 2>&1
- fi
- if [ -e "$XBMC_CUSTOM_EXEC" ]; then
- sudo rm "$XBMC_CUSTOM_EXEC" > /dev/null 2>&1
- fi
- showInfo "Old autorun script successfully removed"
- fi
- }
- function installXbmcInitScript()
- {
- removeAutorunFiles
- showInfo "Installing XBMC init.d autorun support..."
- createDirectory "$TEMP_DIRECTORY" 1 0
- download $DOWNLOAD_URL"xbmc_init_script"
- if [ -e $TEMP_DIRECTORY"xbmc_init_script" ]; then
- if [ -e $XBMC_INIT_FILE ]; then
- sudo rm $XBMC_INIT_FILE > /dev/null 2>&1
- fi
- IS_MOVED=$(move $TEMP_DIRECTORY"xbmc_init_script" "$XBMC_INIT_FILE")
- if [ "$IS_MOVED" == "1" ]; then
- sudo chmod a+x "$XBMC_INIT_FILE" > /dev/null 2>&1
- sudo update-rc.d xbmc defaults > /dev/null 2>&1
- if [ "$?" == "0" ]; then
- showInfo "XBMC autorun succesfully configured"
- else
- showError "XBMC autorun script could not be activated (error code: $?)"
- fi
- else
- showError "XBMC autorun script could not be installed"
- fi
- else
- showError "Download of XBMC autorun script failed"
- fi
- }
- function installXbmcRunFile()
- {
- showInfo "Installing custom XBMC startup executable..."
- createDirectory "$TEMP_DIRECTORY" 1 0
- download $DOWNLOAD_URL"xbmc_run_script"
- if [ -e $TEMP_DIRECTORY"xbmc_run_script" ]; then
- IS_MOVED=$(move $TEMP_DIRECTORY"xbmc_run_script" "$XBMC_CUSTOM_EXEC")
- if [ "$IS_MOVED" == "1" ]; then
- sudo chmod a+x "$XBMC_CUSTOM_EXEC" > /dev/null 2>&1
- showInfo "Installation of custom XBMC startup executable successfull"
- else
- showError "Installation of custom XBMC startup executable failed"
- fi
- else
- showError "Download of custom XBMC startup executable failed"
- fi
- }
- function installXbmcUpstartScript()
- {
- removeAutorunFiles
- showInfo "Installing XBMC upstart autorun support..."
- createDirectory "$TEMP_DIRECTORY" 1 0
- download $DOWNLOAD_URL"xbmc_upstart_script"
- if [ -e $TEMP_DIRECTORY"xbmc_upstart_script" ]; then
- if [ -e "$XBMC_INIT_CONF_FILE" ]; then
- sudo rm "$XBMC_INIT_CONF_FILE" > /dev/null &2>1
- fi
- IS_MOVED=$(move $TEMP_DIRECTORY"xbmc_upstart_script" "$XBMC_INIT_CONF_FILE")
- if [ "$IS_MOVED" == "1" ]; then
- sudo ln -s "$UPSTART_JOB_FILE" "$XBMC_INIT_FILE" > /dev/null 2>&1
- installXbmcRunFile
- else
- showError "XBMC upstart configuration failed"
- fi
- else
- showError "Download of XBMC upstart configuration file failed"
- fi
- }
- function installNyxBoardKeymap()
- {
- showInfo "Applying Pulse-Eight Motorola NYXboard advanced keymap..."
- createDirectory "$TEMP_DIRECTORY" 1 0
- download $DOWNLOAD_URL"nyxboard.tar.gz"
- createDirectory "$XBMC_KEYMAPS_DIR" 0 0
- if [ -e $XBMC_KEYMAPS_DIR"keyboard.xml" ]; then
- handleFileBackup $XBMC_KEYMAPS_DIR"keyboard.xml" 0 1
- fi
- if [ -e $TEMP_DIRECTORY"nyxboard.tar.gz" ]; then
- tar -xvzf $TEMP_DIRECTORY"nyxboard.tar.gz" -C "$XBMC_KEYMAPS_DIR" > /dev/null 2>&1
- if [ "$?" == "0" ]; then
- showInfo "Pulse-Eight Motorola NYXboard advanced keymap successfully applied"
- else
- showError "Pulse-Eight Motorola NYXboard advanced keymap could not be applied (error code: $?)"
- fi
- else
- showError "Pulse-Eight Motorola NYXboard advanced keymap could not be downloaded"
- fi
- }
- function installXbmcBootScreen()
- {
- showInfo "Installing XBMC boot screen (please be patient)..."
- #IS_INSTALLED=$(aptInstall v86d)
- #IS_INSTALLED=$(aptInstall plymouth-label)
- sudo apt-get install plymouth-label v86d > /dev/null
- createDirectory "$TEMP_DIRECTORY" 1 0
- download $DOWNLOAD_URL"plymouth-theme-xbmc-logo.deb"
- if [ -e $TEMP_DIRECTORY"plymouth-theme-xbmc-logo.deb" ]; then
- sudo dpkg -i $TEMP_DIRECTORY"plymouth-theme-xbmc-logo.deb" > /dev/null
- handleFileBackup "$INITRAMFS_SPLASH_FILE" 1 1
- createFile "$INITRAMFS_SPLASH_FILE" 1 1
- appendToFile "$INITRAMFS_SPLASH_FILE" "FRAMEBUFFER=y"
- showInfo "XBMC boot screen successfully installed"
- else
- showError "Download of XBMC boot screen package failed"
- fi
- }
- function applyScreenResolution()
- {
- RESOLUTION="$1"
- showInfo "Applying bootscreen resolution (will take a minute or so)..."
- handleFileBackup "$GRUB_HEADER_FILE" 1 0
- sudo sed -i '/gfxmode=/ a\ set gfxpayload=keep' "$GRUB_HEADER_FILE" > /dev/null 2>&1
- handleFileBackup "$GRUB_CONFIG_FILE" 1 0
- appendToFile "$GRUB_CONFIG_FILE" "GRUB_CMDLINE_LINUX_DEFAULT=\"quiet splash nomodeset video=uvesafb:mode_option=$RESOLUTION-24,mtrr=3,scroll=ywrap\""
- appendToFile "$GRUB_CONFIG_FILE" "GRUB_GFXMODE=$RESOLUTION"
- handleFileBackup "$INITRAMFS_MODULES_FILE" 1 0
- appendToFile "$INITRAMFS_MODULES_FILE" "uvesafb mode_option=$RESOLUTION-24 mtrr=3 scroll=ywrap"
- sudo update-grub > /dev/null 2>&1
- sudo update-initramfs -u > /dev/null
- if [ "$?" == "0" ]; then
- showInfo "Bootscreen resolution successfully applied"
- else
- showError "Bootscreen resolution could not be applied"
- fi
- }
- function installLmSensors()
- {
- showInfo "Installing temperature monitoring package (apply all defaults)..."
- aptInstall lm-sensors
- clear
- echo ""
- echo "$(tput setaf 2)$(tput bold)INSTALLATION INFO: Please confirm all questions with ENTER (applying the suggested option)."
- echo "$(tput setaf 2)The XBMC installation will continue automatically when finished.$(tput sgr0)"
- echo ""
- echo ""
- sudo sensors-detect
- if [ ! -e "$XBMC_ADVANCEDSETTINGS_FILE" ]; then
- createDirectory "$TEMP_DIRECTORY" 1 0
- download $DOWNLOAD_URL"temperature_monitoring.xml"
- createDirectory "$XBMC_USERDATA_DIR" 0 0
- IS_MOVED=$(move $TEMP_DIRECTORY"temperature_monitoring.xml" "$XBMC_ADVANCEDSETTINGS_FILE")
- if [ "$IS_MOVED" == "1" ]; then
- showInfo "Temperature monitoring successfully enabled in XBMC"
- else
- showError "Temperature monitoring could not be enabled in XBMC"
- fi
- fi
- showInfo "Temperature monitoring successfully configured"
- }
- function reconfigureXServer()
- {
- showInfo "Configuring X-server..."
- handleFileBackup "$XWRAPPER_FILE" 1
- createFile "$XWRAPPER_FILE" 1 1
- appendToFile "$XWRAPPER_FILE" "allowed_users=anybody"
- showInfo "X-server successfully configured"
- }
- function selectXbmcStartupMethod()
- {
- cmd=(dialog --backtitle "XBMC autorun method"
- --radiolist "Please select the method used to start XBMC (default recommended):"
- 15 $DIALOG_WIDTH 3)
- options=(1 "init.d" on
- 2 "upstart (experimental)" off)
- choice=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
- case ${choice//\"/} in
- 1)
- installXbmcInitScript
- ;;
- 2)
- installXbmcUpstartScript
- ;;
- *)
- selectStartupMethod
- ;;
- esac
- }
- function selectXbmcTweaks()
- {
- cmd=(dialog --title "Optional XBMC tweaks and additions"
- --backtitle "$SCRIPT_TITLE"
- --checklist "Plese select to install or apply:"
- 15 $DIALOG_WIDTH 6)
- options=(1 "Enable dirty region rendering (improved performance)" on
- 2 "Enable temperature monitoring (confirm with ENTER)" on
- 3 "Install Addon Repositories Installer addon" on
- 4 "Apply improved Pulse-Eight Motorola NYXboard keymap" off)
- choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
- for choice in $choices
- do
- case ${choice//\"/} in
- 1)
- enableDirtyRegionRendering
- ;;
- 2)
- installLmSensors
- ;;
- 3)
- installXbmcAddonRepositoriesInstaller
- ;;
- 4)
- installNyxBoardKeymap
- ;;
- esac
- done
- }
- function selectScreenResolution()
- {
- cmd=(dialog --backtitle "Select bootscreen resolution (required)"
- --radiolist "Please select your screen resolution, or the one sligtly lower then it can handle if an exact match isn't availabel:"
- 15 $DIALOG_WIDTH 6)
- options=(1 "720 x 480 (NTSC)" off
- 2 "720 x 576 (PAL)" off
- 3 "1280 x 720 (HD Ready)" off
- 4 "1366 x 768 (HD Ready)" on
- 5 "1920 x 1080 (Full HD)" off)
- choice=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
- case ${choice//\"/} in
- 1)
- applyScreenResolution "720x480"
- ;;
- 2)
- applyScreenResolution "720x576"
- ;;
- 3)
- applyScreenResolution "1280x720"
- ;;
- 4)
- applyScreenResolution "1366x768"
- ;;
- 5)
- applyScreenResolution "1920x1080"
- ;;
- *)
- selectScreenResolution
- ;;
- esac
- }
- function selectAdditionalPackages()
- {
- cmd=(dialog --title "Other optional packages and features"
- --backtitle "$SCRIPT_TITLE"
- --checklist "Plese select to install:"
- 15 $DIALOG_WIDTH 6)
- options=(1 "Lirc (IR remote support)" off
- 2 "Hts tvheadend (live TV backend)" off
- 3 "Oscam (live HDTV decryption tool)" off
- 4 "Automatic upgrades (every 4 hours)" off)
- choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
- for choice in $choices
- do
- case ${choice//\"/} in
- 1)
- installLirc
- ;;
- 2)
- installTvHeadend
- ;;
- 3)
- installOscam
- ;;
- 4)
- installAutomaticDistUpgrade
- ;;
- esac
- done
- }
- function optimizeInstallation()
- {
- showInfo "Optimizing installation..."
- sudo service apparmor stop > /dev/null &2>1
- sudo service apparmor teardown > /dev/null &2>1
- sudo apt-get -y remove apparmor > /dev/null &2>1
- handleFileBackup "$SYSCTL_CONF_FILE" 1 0
- createFile "$SYSCTL_CONF_FILE" 1 0
- appendToFile "$SYSCTL_CONF_FILE" "dev.cdrom.lock=0"
- appendToFile "$SYSCTL_CONF_FILE" "vm.swappiness=10"
- }
- function cleanUp()
- {
- showInfo "Cleaning up..."
- sudo apt-get -y autoremove > /dev/null 2>&1
- sudo apt-get -y autoclean > /dev/null 2>&1
- sudo apt-get -y clean > /dev/null 2>&1
- if [ -e "$TEMP_DIRECTORY" ]; then
- sudo rm -R "$TEMP_DIRECTORY" > /dev/null 2>&1
- fi
- if [ -e "$HOME_DIRECTORY$THIS_FILE" ]; then
- rm "$HOME_DIRECTORY$THIS_FILE" > /dev/null 2>&1
- fi
- }
- function rebootMachine()
- {
- showInfo "Reboot system..."
- dialog --title "Installation complete" \
- --backtitle "$SCRIPT_TITLE" \
- --yesno "Do you want to reboot now?" 7 $DIALOG_WIDTH
- case $? in
- 0)
- showInfo "Installation complete. Rebooting..."
- clear
- echo ""
- echo "Installation complete. Rebooting..."
- echo ""
- sudo reboot now > /dev/null 2>&1
- ;;
- 1)
- showInfo "Installation complete. Not rebooting."
- quit
- ;;
- 255)
- showInfo "Installation complete. Not rebooting."
- quit
- ;;
- esac
- }
- function quit()
- {
- clear
- exit
- }
- control_c()
- {
- cleanUp
- echo "Installation aborted..."
- quit
- }
- ## ------- END functions -------
- clear
- createFile "$LOG_FILE" 0 1
- echo ""
- installDependencies
- echo "Loading installer..."
- showDialog "Welcome to the XBMC minimal installation script. Some parts may take a while to install depending on your internet connection speed.\n\nPlease be patient..."
- trap control_c SIGINT
- fixLocaleBug
- applyXbmcNiceLevelPermissions
- addUserToRequiredGroups
- addXbmcPpa
- distUpgrade
- installVideoDriver
- installXinit
- installXbmc
- selectXbmcStartupMethod
- installXbmcBootScreen
- selectScreenResolution
- reconfigureXServer
- installPowerManagement
- installAudio
- selectXbmcTweaks
- selectAdditionalPackages
- allowRemoteWakeup
- optimizeInstallation
- cleanUp
- rebootMachine
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement