#!/bin/bash ## # Author: Mikhaylov Anton aka Anion155 ## ## usage string USAGE="Usage: $0 [-d] [-r] [-h] \n\n Script automaticaly installs fglrx driver.\n\n -d Download new driver version.\n -i Install (for Unity DE only) indicator for hybrid graphics switching maded by beidl .\n -r Remove fglrx drivers.\n -p Purge fglrx drivers and reinstall open_source drivers.\n\n -q Quiet work.\n -h This prompt.\n" ## download new driver version DOWNLOAD_NEW=false DOWNLOAD_LAST_DRIVER_TYPE=b ## quiet QUIET=false ## install or update indicator for hybrid graphics switching INSTALL_INDICATOR=false ## temp files directory TMP_FILES='/tmp/FGLRX_INSTALLER' ## permanent files directory PERMANENT_FILES="`readlink -fn $(dirname $0)`/.fglrx" ## check root privileges if [ `whoami` != 'root' ]; then echo "E $0: Permission denied. Run $0 as the root" exit 1; fi ## cleaning procedure function clean { cd / echo 'Cleaning...' rm -rf "$TMP_FILES" } clean mkdir "$TMP_FILES" ## remove current installed fglrx drivers remove_drv() { sh /usr/share/ati/fglrx-uninstall.sh _1=$? apt-get remove --purge -y fglrx fglrx-amdcccle fglrx-dev fglrx-amdcccle-updates fglrx-updates fglrx-updates-dev _2=$? if [[ $_1 != 0 && $_2 != 0 ]]; then return 1 fi return 0 } ## purge pieces of fglrx drivers and reinstall open-source drivers purge_drv() { apt-get remove --purge -y xserver-xorg-video-ati xserver-xorg-video-radeon apt-get install -y xserver-xorg-video-all apt-get install --reinstall -y libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core if [[ $? != 0 ]]; then apt-get install --reinstall -y libgl1-mesa-glx:i386 libgl1-mesa-glx:amd64 libgl1-mesa-dri:i386 libgl1-mesa-dri:amd64 xserver-xorg-core fi mv /etc/X11/xorg.conf{,.amd_fglrx-backup} mv /etc/X11/xorg.conf{.clean_from_fglrx-backup,} rm -rf /etc/ati return 0 } ## what to do while getopts ":drpiqh" opt; do case "$opt" in "d") DOWNLOAD_NEW=true;; "r") remove_drv if [[ $? != 0 ]]; then echo "E $0: Error while removing fglrx drivers" exit 1 fi exit 0;; "p") remove_drv if [[ $? != 0 ]]; then echo "E $0: Error while removing fglrx drivers" exit 1 fi purge_drv exit 0;; "i") INSTALL_INDICATOR=true;; "q") QUIET=true;; "h") echo -e $USAGE exit 0;; "?") echo "E $0: Invalid option $OPTARG. Try $0 -h for help" exit 1;; *) echo "E $0: Unknown error while processing options" exit 1;; esac done if $INSTALL_INDICATOR; then PWD_=`pwd` cd "$TMP_FILES" IND_URL='https://github.com/beidl/amd-indicator' git clone "$IND_URL" 'indicator/' cd 'indicator' if [[ `lsb_release -is` == 'Ubuntu' ]]; then wget 'https://www.dropbox.com/s/q8huhz4h9i3g4o6/amd-indicator_scripts.patch' patch -i 'scripts.patch' fi bash 'setup.sh' cd $PWD_ fi if [ ! -f "$PERMANENT_FILES/fglrx.run" ]; then DOWNLOAD_NEW=true fi if $DOWNLOAD_NEW; then ! $QUIET && read -p 'What type of driver do you want to use release or beta? :' DOWNLOAD_LAST_DRIVER_TYPE sed "/^DOWNLOAD_LAST_DRIVER_TYPE=/cDOWNLOAD_LAST_DRIVER_TYPE=$DOWNLOAD_LAST_DRIVER_TYPE" PWD_=`pwd` cd "$TMP_FILES" wget -O page "http://support.amd.com/us/gpudownload/linux/Pages/radeon_linux.aspx" sed -e '/Download/!d' page --in-place LINK_RELEASE=`sed -e '2d' -e 's/.*a href="\(.*\)$/\1/' page | cut -d\" -f1` LINK_BETA=`sed -e '1d' -e 's/.*a href="\(.*\)$/\1/' page | cut -d\" -f1` if [[ $DOWNLOAD_LAST_DRIVER_TYPE == 'r' ]]; then LINK=$LINK_RELEASE elif [[ $DOWNLOAD_LAST_DRIVER_TYPE == 'b' ]]; then LINK=$LINK_BETA fi mkdir "$PERMANENT_FILES" cd "$PERMANENT_FILES" wget -O "`basename $LINK`" "$LINK" unzip "`basename $LINK`" mv "`basename $LINK | sed -e 's/zip$/run/'`" 'fglrx.run' cd "$PWD_" fi remove_drv PWD_=`pwd` cd "$PERMANENT_FILES" apt-get install build-essential cdbs dh-make dkms execstack dh-modaliases linux-headers-generic if [ `uname -m` == 'x86_64' ]; then apt-get install lib32gcc1 fi fglrx.run --buildpkg "`lsb_release -is`/`lsb_release -cs`" if [[ $? == 0 ]]; then dpkg -i fglrx*.deb apt-get install -f else echo 'Do not reboot computer, until this script ask you!' fglrx.run fi cd /etc/X11/ mv xorg.conf{,.clean_from_fglrx-backup} amdconfig --initial -f cp xorg.conf{,.amd_fglrx-backup} cd "$PWD_" exit 0