ScarShow

< IS >

Ubuntu 13.10 install AMD Catalyst 13.12

2014-01-19  /  IT  /  Linux Note Ubuntu

不解

不知道為什麼,只要碰到顯示卡驅動程式的安裝,我就很容易讓我的機器爆炸,這一定有問題,所以還是趕快把這次成功安裝的過程記錄下來,避免之後又爆了。

安裝驅動有這麼難嗎?很難,因為每次都爆炸XD

平常我也不想去更新的我的顯示卡驅動,但是Chrome告訴我ATI/AMD cards with older or third-party drivers,我只是想開啟WebGL而已,為了能夠用WebGL還是更新吧。

安裝套件

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install cdbs dh-make dkms execstack dh-modaliases linux-headers-generic libqtgui4

# for x86_64 (64bit)
sudo apt-get install lib32gcc1

下載 AMD Catalyst

mkdir amd-catalyst && cd amd-catalyst
wget --referer='http://support.amd.com/en-us/download/desktop?os=Linux+x86' http://www2.ati.com/drivers/linux/amd-catalyst-13.12-linux-x86.x86_64.zip
unzip amd-catalyst-13.12-linux-x86.x86_64.zip
chmod +x amd-catalyst-13.12-linux-x86.x86_64.run

編譯套件

Patch kcl_acpi.c

./amd-catalyst-13.12-linux-x86.x86_64.run --extract catalyst

cd catalyst
vim common/lib/modules/fglrx/build_mod/kcl_acpi.c

kcl_acpi.c第990行以後的

#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,3)
    if (!ACPI_SUCCESS(acpi_get_table_with_size(id, 0, &hdr, &tbl_size)))
#else
    tbl_size = 0x7fffffff;
    if (!ACPI_SUCCESS(acpi_get_table(id, 0, &hdr)))
#endif
    {
        return KCL_ACPI_ERROR;
    }
    ((acpi_table_handler)handler)(hdr);
    return KCL_ACPI_OK;
}

換成這個

#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,3)
    if (!ACPI_SUCCESS(acpi_get_table_with_size(id, 0, &hdr, &tbl_size)))
#else
    tbl_size = 0x7fffffff;
    if (!ACPI_SUCCESS(acpi_get_table(id, 0, &hdr)))
#endif
    {
        return KCL_ACPI_ERROR;
    }
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,1)
    ((acpi_tbl_table_handler)handler)(hdr);
#else
    ((acpi_table_handler)handler)(hdr);
#endif
    return KCL_ACPI_OK;
}

開始編譯

sudo ./ati-installer.sh 13.251 --buildpkg Ubuntu/saucy

安裝 .deb 檔

cd ..
sudo dpkg -i fglrx*.deb

設定環境

產生新的 xorg.conf

sudo amdconfig --initial -f

選擇系統驅動程式

# choice /usr/lib/fglrx/ld.so.conf
sudo update-alternatives --config x86_64-linux-gnu_gl_conf
sudo ldconfig

接下來就開心重新開機吧!

sudo reboot

確認是否安裝成功可以用下面的指令做檢查

fglrxinfo
fgl_glxgears

更新失敗

人生中難免會有風險,如果你重新開機後,發現螢幕上有國防布的話,那只好用以下方式修復

sudo cp /etx/X11/xorg.conf.original /etc/X11/xorg.conf

# choice /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf
sudo update-alternatives --config x86_64-linux-gnu_gl_conf
sudo ldconfig

sudo reboot

最後

更新驅動就花了我兩個早上,終於更新成功了,但是ChromeWebGL還是不給開...

這一定有誤會。

Reference