日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

centos安装无线网卡驱动_CentOS下显卡驱动安装的相关思考

發布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 centos安装无线网卡驱动_CentOS下显卡驱动安装的相关思考 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景:最近在安裝顯卡驅動,查找了一些網上的教程,但總感覺思路不夠清晰,沒辦法弄清背后涉及的Linux原理,于是參考網上教程,并查閱了相關資料,希望能對顯卡驅動安裝作一個梳理,以做記錄。


首先,查看版本信息

# cat /etc/system-release CentOS Linux release 7.6.1810 (Core)# uname -r 3.10.0-957.21.3.el7.x86_64

一、Linux module(模塊)機制

Linux內核作用有以下作用:

1、管理內存

2、調度任務

3、驅動硬件

4、網絡功能

5、安全

6、管理文件系統

Linux內核框架龐大,隨著新硬件、文件系統和新功能的不斷發展,如果把所有需要的功能都編譯到Linux內核中,會造成內核體積龐大,每次加入新的功能都需要重新編譯內核,非常麻煩。

為解決這個問題,Linux引入了模塊機制,簡單來講,就是kernel(內核)只負責最主要的功能,當需要添加新的硬件和功能時,可以把新功能和新硬件的驅動單獨編譯為一個模塊,開機載入kernel時,系統會同時載入模塊,從而提高靈活性。當然,也可以把模塊看作kernel的一部分。

在我的機器上,驅動模塊放在以下目錄中

/lib/modules/3.10.0-957.21.3.el7.x86_64/kernel/drivers

來看看該目錄下有什么東西:

# ls /lib/modules/3.10.0-957.21.3.el7.x86_64/kernel/drivers acpi block crypto firewire hv infiniband md misc nvdimm pinctrl ptp staging usb virtio ata bluetooth dax firmware hwmon input media mmc nvme platform pwm target uwb watchdog auxdisplay cdrom dca gpio i2c iommu memstick mtd parport power rtc thermal vfio xen base char dma gpu idle isdn message net pci powercap scsi tty vhost bcma cpufreq edac hid iio leds mfd ntb pcmcia pps ssb uio video

可以看到有acpi電源管理驅動,cdrom驅動,gpu驅動,還有nvme,pci,scsi,usb等驅動。由于本文主要討論顯卡驅動,我們進入gpu目錄來看看有什么。

# cd gpu # ls drm # cd drm # ls amd bochs drm_kms_helper.ko.xz drm_panel_orientation_quirks.ko.xz i2c mgag200 qxl scheduler udl vmwgfx ast cirrus drm.ko.xz gma500 i915 nouveau radeon ttm virtio

可以看到有以.ko.xz結尾的文件,這就是Linux下模塊的文件類型。還有一個特別要注意的目錄nouveau,該目錄下有nouveau.ko.xz文件,在我們沒有安裝Nvidia官方驅動時,系統開機默認使用的就是這個驅動。(nouveau是一個開源驅動,性能很差)

由于安裝顯卡驅動模塊,要重新編譯模塊,所以需要內核模塊編譯的相關文件kernel-header和kernel-devel,通過yum安裝

# yum -y install kernel-header # yum -y install kernel-devel

二、initramfs文件(參考自鳥哥的Linux私房菜)

開機時我們需要識別硬盤并掛載/目錄,從而載入kernel,然而此時并沒有硬盤SATA接口的SCSI驅動,那么該如何掛載并載入kernel呢?

Linux提供了initramfs文件,他的目的在于提供開機過程中所需要的最重要核心模塊,以讓系統開機過程可以順利完成。initramfs 可以將/lib/modules/.... 內的“開機過程當中一定需要的模塊”包成一個文件 (文件名就是initramfs),然后在開機時通過主機的INT 13硬件功能將該文件讀出來解壓縮,并且initramfs在內存內會仿真成為根目錄,由于此虛擬文件系統 (Initial RAM Disk) 主要包含磁盤與文件系統的模塊,因此我們的核心最后就能夠認識實際的磁盤,那就能夠進行實際根目錄的掛載。

initramfs文件位于以下目錄:

# cd /boot # ls config-3.10.0-957.21.3.el7.x86_64 efi grub grub2 initramfs-0-rescue-740f2d9ceee54b1cb523569c7bf00ac8.img initramfs-3.10.0-957.21.3.el7.x86_64.img initramfs-3.10.0-957.21.3.el7.x86_64kdump.img symvers-3.10.0-957.21.3.el7.x86_64.gz System.map-3.10.0-957.21.3.el7.x86_64 vmlinuz-0-rescue-740f2d9ceee54b1cb523569c7bf00ac8 vmlinuz-3.10.0-957.21.3.el7.x86_64

就是后綴為.img的文件,系統會載入內核對應的.img文件。

所以說,initramfs 內所包含的模塊大多是與開機過程有關,而主要以文件系統及硬盤模塊 (如usb,SCSI 等) 為主。

一般來說,需要initramfs的時刻為:

根目錄所在磁盤為 SATA、USB 或 SCSI等接口;

根目錄所在文件系統為 LVM,RAID 等特殊格式;

根目錄所在文件系統為非傳統 Linux 認識的文件系統時;

其他必須要在核心載入時提供的模塊。


以上參考自鳥哥的Linux私房菜,然而,通過我的實踐,發現 initramfs不僅僅載入了以上模塊,同時還載入了顯卡驅動,通過lsinitrd命令可以看到initramfs文件的內容。

通過lsinitrd | grep gpu 查看 gpu相關內容

# lsinitrd | grep gpu drwxr-xr-x 3 root root 0 Jul 13 20:24 usr/lib/modules/3.10.0-957.21.3.el7.x86_64/kernel/drivers/gpu drwxr-xr-x 4 root root 0 Jul 13 20:24 usr/lib/modules/3.10.0-957.21.3.el7.x86_64/kernel/drivers/gpu/drm -rw-r--r-- 1 root root 69320 Jun 19 00:57 usr/lib/modules/3.10.0-957.21.3.el7.x86_64/kernel/drivers/gpu/drm/drm_kms_helper.ko.xz -rw-r--r-- 1 root root 145824 Jun 19 00:57 usr/lib/modules/3.10.0-957.21.3.el7.x86_64/kernel/drivers/gpu/drm/drm.ko.xz -rw-r--r-- 1 root root 2080 Jun 19 00:57 usr/lib/modules/3.10.0-957.21.3.el7.x86_64/kernel/drivers/gpu/drm/drm_panel_orientation_quirks.ko.xz drwxr-xr-x 2 root root 0 Jul 13 20:24 usr/lib/modules/3.10.0-957.21.3.el7.x86_64/kernel/drivers/gpu/drm/nouveau -rw-r--r-- 1 root root 554788 Jun 19 00:57 usr/lib/modules/3.10.0-957.21.3.el7.x86_64/kernel/drivers/gpu/drm/nouveau/nouveau.ko.xz drwxr-xr-x 2 root root 0 Jul 13 20:24 usr/lib/modules/3.10.0-957.21.3.el7.x86_64/kernel/drivers/gpu/drm/ttm -rw-r--r-- 1 root root 43728 Jun 19 00:57 usr/lib/modules/3.10.0-957.21.3.el7.x86_64/kernel/drivers/gpu/drm/ttm/ttm.ko.xz

可以看到initramfs有nouveau.ko.xz顯卡驅動載入的相關設置。


三、initramfs文件相關設置

既然我們要安裝新的顯卡驅動,首先需要屏蔽掉nouveau這個開源驅動,而這個驅動是由 initramfs載入的,所以我們需要修改initramfs文件,然而initramfs非常重要,隨意修改可能會導致系統無法正常開機。

要修改initramfs,Linux需要修改其配置文件,通過 options 選項來帶入相關參數,然后使用dracut命令重新生成 initramfs,配置文件路徑如下

/lib/modprobe.d/dist-blacklist.conf

(CentOS 6.x系統配置文件在/etc/modprobe.d/blacklist.conf下)

使用vim編輯此配置文件

# vim /lib/modprobe.d/dist-blacklist.conf# # Listing a module here prevents the hotplug scripts from loading it. # Usually that'd be so that some other driver will bind it instead, # no matter which driver happens to get probed first. Sometimes user # mode tools can also control driver binding. # # Syntax: see modprobe.conf(5). ## watchdog drivers blacklist i8xx_tco# framebuffer drivers blacklist aty128fb blacklist atyfb blacklist radeonfb blacklist i810fb blacklist cirrusfb blacklist intelfb blacklist kyrofb blacklist i2c-matroxfb blacklist hgafb #blacklist nvidiafb /* blacklist nouveau * 修改的內容 options nouveau modeset=0 */ blacklist rivafb blacklist savagefb blacklist sstfb blacklist neofb blacklist tridentfb blacklist tdfxfb blacklist virgefb blacklist vga16fb blacklist viafb# ISDN - see bugs 154799, 159068 blacklist hisax blacklist hisax_fcpcipnp# sound drivers blacklist snd-pcsp# I/O dynamic configuration support for s390x (bz #563228) blacklist chsc_sch# crypto algorithms blacklist sha1-mb# see bz #1562114 blacklist sha256-mb

找到# framebuffer drivers這一欄,我們需要解釋一下 framebuffer

幀緩沖(framebuffer)是Linux為顯示設備提供的一個接口,把顯存抽象后的一種設備,他允許上層應用程序在圖形模式下直接對顯示緩沖區進行讀寫操作。framebuffer是LCD對應的一中HAL(硬件抽象層),提供抽象的,統一的接口操作,用戶不必關心硬件層是怎么實施的。這些都是由 Framebuffer設備驅動來完成的。

Linux FrameBuffer 本質上只是提供了對圖形設備的硬件抽象,在開發者看來,FrameBuffer 是一塊顯示緩存,往顯示緩存中寫入特定格式的數據就意味著向屏幕輸出內容。

簡單來講, framebuffer就是kernel與顯卡驅動的一個中間層(framebuffer也是驅動),然而,由于各顯卡廠商(AMD/Nvidia)的硬件架構,寄存器有差異,所以需要使用相對應的framebuffer驅動。

我們可以在# framebuffer drivers 看到 radeonfb 對應AMD顯卡,nvidiafb對應 Nvidia顯卡,不過默認都是被屏蔽掉的(因為系統默認使用nouveau驅動)。

我們要安裝Nvidia顯卡驅動,所以在blacklist nvidiafb前面加#號,取消nvidiafb的屏蔽。

那么又該如何屏蔽nouveau驅動呢?在 # framebuffer drivers下寫入以下配置:

blacklist nouveau //屏蔽 nouveau

options nouveau modeset=0 //關于這一行,網上的教程沒有給出這么寫的原因,通過搜索網絡,我找到這么如下解釋:

linux內核的modeset=0 或者 nomodeset參數的作用是什么啊??zhidao.baidu.com

字符界面也可以打開 framebuffer 來提供 2D 加速,圖形顯示的功能。不過有的時候如果有問題,內核還會繼續設置顯示模式而導致顯示不正常。這個時候這個命令就讓內核不再去設置顯示模式而保證系統還可以進入字符界面。不過當然就是標準的顯示狀態了,至少能用的顯示狀態。

`nomodeset` 做什么_ubuntu_幫酷?www.helplib.com

最新的內核已經將視頻模式設置移到內核中。 所以在X 服務器啟動時,所有的硬件特定時鐘速率和寄存器上的寄存器都會發生。 這使得得到高分辨率的( 引導) 顯示屏和閃爍的自由轉換從啟動屏幕到登錄屏幕是可以能的。 不幸的是,有些卡不能正常工作,你最終會得到一個 black 屏幕。 添加nomodeset參數指示內核不加載視頻驅動程序,而是使用BIOS模式,直到加載了X。

也就是說,如果不加這一行,字符界面下,可能導致顯示器黑屏,無法安裝驅動。

通過以上設置,我們完成了/lib/modprobe.d/dist-blacklist.conf的配置,接下來需要使用dracut命令根據我們的設置重新生成initramfs文件,從而完成顯卡驅動安裝前的準備工作。


四、安裝顯卡驅動

1.安裝內核模塊編譯的相關文件kernel-header和kernel-devel

# yum -y install kernel-header # yum -y install kernel-devel

2.下載顯卡相對應的顯卡驅動(AMD/Nvidia官網),我的驅動放在了根目錄下, 文件以.run結尾

# cd / # ls bin dev home lib64 mnt opt root sbin sys usr boot etc lib media NVIDIA-Linux-x86_64-430.34.run proc run srv tmp var

3. 屏蔽默認的開源驅動nouveau

vim 編輯配置文件

# vim /lib/modprobe.d/dist-blacklist.conf

找到 # framebuffer drivers一欄

將nvidiafb注釋掉

# blacklist nvidiafb

然后添加以下語句:

blacklist nouveau options nouveau modeset=0

4. 重新生成 initramfs image 文件

mv /boot/initramfs-3.10.0-957.21.3.el7.x86_64.img /boot/initramfs-3.10.0-957.21.3.el7.x86_64.img.bak

上面這一行的作用是把舊的initramfs文件名進行修改,在文件名末尾加入.bak代表這是棄用的initramfs文件,這樣做是為了保險,當然,你也可以把這個文件刪除掉,因為我們要生成新的initramfs文件。

使用 dracut 命令重新生成 initramfs image 文件

dracut /boot/initramfs-3.10.0-957.21.3.el7.x86_64.img 3.10.0-957.21.3.el7.x86_64

5. 重啟計算機

# reboot

由于我們禁用了nouvenv驅動,所以重啟后顯示效果很差

6.進入字符界面

# init 3

7.賦予Nvidia驅動執行權限

# chmod 777 NVIDIA-Linux-x86_64-430.34.run

8. 執行Nvidia驅動

# ./NVIDIA-Linux-x86_64-430.34.run

安裝過程全部選擇Yes

9.返回圖形界面

# init 5

10.重啟計算機

# reboot

到此安裝完成

重啟后我們可以使用 nvidia-smi 命令查看顯卡狀態

# nvidia-smi Sat Jul 20 23:06:28 2019 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 430.34 Driver Version: 430.34 CUDA Version: 10.1 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GTX 770 Off | 00000000:01:00.0 N/A | N/A | | 31% 56C P0 N/A / N/A | 283MiB / 1996MiB | N/A Default | +-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 Not Supported | +-----------------------------------------------------------------------------+

總結

以上是生活随笔為你收集整理的centos安装无线网卡驱动_CentOS下显卡驱动安装的相关思考的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。