2018年12月5日 星期三

CentOS 6 下,安裝 Intel I219-V 網卡及 Nvidia 顯卡的 driver

CentOS 6 EOL (End of Life) 

2020年之後,CentOS 6 已完全死亡,以下的說明可能完全不再適用,留著當紀念,必要時可以回來參考。


-----------------------------------------------

應友人求助,幫忙在 CentOS 6 下,安裝 Intel I219-V 網卡的 driver。

硬體購買於 2018年 11月,規格太新,OS 要跑的軟體,只支援舊的 CentOS 6,無法驅動網卡。

硬體資訊

硬體的主要資訊如下
Motherboard
       型號: PRIME Z390-A
       供應商: ASUSTeK COMPUTER INC.

M.2 SSD,Non-Volatile memory controller
       型號: SSD Pro 7600p/760p/E 6100p Series
       供應商: Intel Corporation

網卡
       型號: Ethernet Connection (7) I219-V
       供應商: Intel Corporation

顯卡
       型號: GP108 [GeForce GT 1030] (rev a1)
       供應商: NVIDIA Corporation

因為無法啟動網路,使用 Gentoo 的安裝系統,再用 chroot 來安裝驅動程式。自從改用 docker 後,有一陣子沒碰 CentOS 了,安裝過程還真有點不順。

原先裝 CentOS 6.9,升級後,變成 6.10,就無法登入。只好重裝 6.10,但別人的電腦都可以用 USB DISK 安裝,這一台竟然就是無法用 USB DISK 安裝,甚至外接光碟機都不行。只好搬出古董 USB 燒錄器,燒一片 DVD RW 才能正常安裝。好在手邊還有燒錄器和 DVD RW,而且還有粗粗的迴紋針,因為它的光碟機竟然無法退出。

裝好後,用 Gentoo 的安裝 USB 開機,再 mount 裝好的 CentOS 系統
livecd ~ # /etc/init.d/lvm start
 * /run/lvm: creating directory
 * Starting lvmetad ...                                         [ ok ]
livecd ~ # vgchange -ay
  3 logical volume(s) in volume group "vg_ntu" now active
livecd ~ # mkdir /mnt/sysimage
livecd ~ # ls /dev/vg_ntu*
lv_home  lv_root  lv_swap
livecd ~ # mount /dev/vg_ntu/lv_root  /mnt/sysimage
livecd ~ # mount /dev/nvme0n1p1 /mnt/sysimage/boot
livecd ~ # mount --bind /proc /mnt/sysimage/proc
livecd ~ # mount --bind /dev /mnt/sysimage/dev
livecd ~ # mount --bind /sys /mnt/sysimage/sys
livecd ~ # chroot /mnt/sysimage
[root@livecd /]# source /etc/profile
[root@livecd /]# export PS1="(chroot) ${PS1}"
(chroot) [root@livecd /]# 

要記後修改 /etc/resolv.conf,才能順利上網。

試了幾次,可能因為使用的 kernel 版本不同,透過 chroot 執行 yum update,好像會讓系統怪怪的。
所以,為了安裝 driver,不要執行 update,只要安裝 gcc 就好,再裝和使用的 kernel 相同版本的 kernel header,指令如下
(chroot) [root@livecd /]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
(chroot) [root@livecd /]# yum install gcc
(chroot) [root@livecd /]# yum install "kernel-devel-uname-r == 2.6.32-754.el6.x86_64"

假若是運作的 OS,可以直接用 yum install "kernel-devel-uname-r == $(uname -r)"

可以列出 /boot 下的檔案,確認 kernel 的版。如 kernel-devel-2.6.32-696.el6.x86_64,就無法直接安裝了。要先下載再安裝,參考後面的顯卡安裝步驟。

到 Intel 官網下載最新的完整驅動程式,抓出 Linux 的部分, e1000e-3.4.2.1.tar.gz。解壓縮後,到 e1000e-3.4.2.1/src/ 目錄下。重新開機後,執行
make install

因為它的 Makefile 會透過 uname -r 取後 kernel 的版本,但在 chroot 下,會取得錯誤資訊,所以要修改 Makefile,直接寫死 kernel 的版本。

網卡的 driver 是 e1000e,裝好後,應該就能啟動網路了。設好網路後,可以安心做其他的事,如 yum update。假如有更新 kernel,要記後重新安裝網卡的 driver。

安裝 Nvidia 的 driver

安裝所需的 gcc 及 kernel-devel
yum install gcc
yum install "kernel-devel-uname-r == $(uname -r)"


有可能版本太舊,無法直接用 yum安裝,只好用 google 搜尋下載 kernel-devel-2.6.32-696.el6.x86_64.rpm,再用 yum 安裝。
wget http://ftp.scientificlinux.org/linux/scientific/6.6/x86_64/updates/security/kernel-devel-2.6.32-696.el6.x86_64.rpm
yum install kernel-devel-2.6.32-696.el6.x86_64.rpm

修改 /etc/inittab,讓 boot 進入 text mode。

預設會載入 open source 的 nouveau 驅動程式,必須修改 /etc/modprobe.d/blacklist.conf,加入
blacklist nouveau

先用指令 uname -r 確定 kernel 的版本。
然後執行下列指令,重新產生沒有包含 nouveau 的 initramfs,然後開機
mv initramfs-2.6.32-696.el6.x86_64.img initramfs-2.6.32-696.el6.x86_64.img.bak
dracut -v /boot/initramfs-2.6.32-696.el6.x86_64.img
開機後,下指令 init 3,關掉 X window。
然後下載 nvidia 的安裝程式,如 NVIDIA-Linux-x86_64-410.78.run,再執行下列指令安裝。
** 記住,要執行 nvidia-xconfig utility,產生設定檔,圖形界面才能開得起來。
chmod +x NVIDIA-Linux-x86_64-410.78.run
./NVIDIA-Linux-x86_64-410.78.run
執行後的訊息
Installation of the NVIDIA Accelerated Graphics Driver for Linux-x86_64      
  (version: 410.78) is now complete.  Please update your XF86Config or         
  xorg.conf file as appropriate; see the file
  /usr/share/doc/NVIDIA_GLX-1.0/README.txt for details.


shutdown時,會出現錯誤的修復
[root@livecd ~]# shutdown -r now
shutdown: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory
[root@livecd ~]# yum install libgcc_s.so.1


安裝 TeamViewer

另外,在其上安裝 TeamViewer。目前最新的 v14 不能裝,下載 v12 ,可以順利安裝。安裝指令如下,會自動安裝相關的套件
yum install teamviewer_v12.0.90041.i686.rpm

嗯,要是我自己使用的系統,我會裝較新的 OS,然後用 VM 跑舊的 OS。不過,這不干我的事了,我只是好玩,藉此練功一下。還不錯,花了一天的功夫搞定,學會怎麼在 kernel 加上 driver。

** 註記 **
TeamViewer 13 linux builds with recent QT version
Actually, TeamViewer is linked against Qt 5.2 currently.
選擇 v12,應該是要安裝 Qt 太麻煩,會把系統搞得一團亂,還是不要自找麻煩為宜吧。


沒有留言:

張貼留言

網誌存檔