Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ##
- # Author: Mikhaylov Anton aka Anion155 <anion155@gmail.com>
- ##
- ## 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 <https://github.com/beidl/amd-indicator>.\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? <r|b>:' 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</a>/!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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement