archlinux安装NVIDIA驱动

文章初发于简书,转载请注明来源。
@earth_xmx @ 简书
linux下安装NVIDIA驱动两年半,时而成功,时而失败。晕晕乎乎的,这次准备一下把原理搞清楚。
本文章分为三个部分

    1. 基础知识。
    1. 定位过程。
    • 2.1 首先先让系统正常启动起来
    • 2.2 查看xorg启动
    • 2.3 查看xorg能否正常使用NVIDIA的驱动
    1. 总结安装驱动步骤。
    • 3.1 安装驱动
    • 3.2 检查 nouveau 是否被禁用了

1. 基础知识

本节参考鸟哥的私房菜 基础学习篇 第四版,第二十三章:Xwindow设置介绍。
在linux中的显示服务中,分为 server 和 client

  • server: 控制键盘、鼠标、显示器等硬件。
  • client:为一系列的应用程序,比如LibreOffice,chrome,等。
    client通过本地通讯UNIX-domain socket或者TCP/IP与server 通讯,具体说明可以通过命令man Xorg查看。

借用书上的图


Screenshot_20221015_141912.png

所以,我们的显示服务是Xorg来控制的。
这里关于Xorg只是简单的介绍。具体内容请阅读鸟哥的私房菜或者其他资料。

2. 定位过程

参考 https://zhuanlan.zhihu.com/p/433920079安装好archlinux系统后。

参考 archwiki https://wiki.archlinux.org/title/Xorg 安装NVIDIA驱动

sudo pacman -S nvidia nvidia-utils lib32-nvidia-utils nvidia-settings  

安装完后,使用 nvidia-xconfig 创建xorg的配置文件。

[vicking@archlinux ~]$ sudo nvidia-xconfig 
[sudo] vicking 的密码:
WARNING: Unable to locate/open X configuration file.

New X configuration file written to '/etc/X11/xorg.conf'

使用命令systemctl reboot重启。重启后发现,系统启动不起来了。
至此。NVIDIA私有驱动安装失败。
定位原因:

2.1 首先先让系统正常启动起来。

这一步先别管为什么要这样做,后面会有说明。
alt+ctrl+f3切换到tty3,然后登录

  1. 修改下列文件,不让NVIDIA模块把 nouveau 模块拉黑。
/usr/lib/modprobe.d/nvidia-utils.conf 
------------------
#blacklist nouveau

如果没有上面的文件,那么请检查如下文件
/etc/modprobe.d/nouveau_blacklist.conf, /usr/lib/modprobe.d/nvidia.conf, or /usr/lib/modprobe.d/nvidia-dkms.conf

  1. 删除 刚刚使用nvidia-xconfig生成的 /etc/X11/xorg.conf
    重启,这样应该系统能正常启动了。

2.2 查看xorg启动

通过2.1 我们的系统现在又能正常启动了。
查看系统的进程树

[root@archlinux vicking]# pstree 
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─4*[agetty]
        ├─bluetoothd
        ├─dbus-daemon
        ├─kwalletd5───3*[{kwalletd5}]
        ├─login───bash
        ├─polkitd───2*[{polkitd}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─sddm─┬─Xorg───2*[{Xorg}]
        │      ├─sddm-helper───startplasma-x11───{startplasma-x11}
        │      └─{sddm}
        ├─systemd─┬─(sd-pam)
        │         ├─DiscoverNotifie───4*[{DiscoverNotifie}]
        │         ├─aria2c
        │         ├─at-spi-bus-laun─┬─dbus-daemon
...

我们可以观察到xorg的服务通过sddm启动的。(我这里使用的是sddm+plasmakde桌面环境,其他的桌面环境比如gdm+gnome可能是不一样的。这个知识可以查看鸟哥的私房菜)
进一步验证sddm和xorg的关系

[vicking@archlinux ~]$ systemctl status sddm.service 
● sddm.service - Simple Desktop Display Manager
     Loaded: loaded (/usr/lib/systemd/system/sddm.service; enabled; preset: disabled)
     Active: active (running) since Sat 2022-10-15 13:49:41 CST; 1h 5min ago
       Docs: man:sddm(1)
             man:sddm.conf(5)
   Main PID: 471 (sddm)
      Tasks: 4 (limit: 9464)
     Memory: 106.7M
        CPU: 1min 42.564s
     CGroup: /system.slice/sddm.service
             ├─471 /usr/bin/sddm
             └─485 /usr/lib/Xorg -nolisten tcp -background none -seat seat0 vt1 -auth /var/run/sddm/{c1fd0e95-be49->

10月 15 13:49:47 archlinux sddm-helper[534]: [PAM] returning.
10月 15 13:49:47 archlinux sddm[471]: Authenticated successfully
10月 15 13:49:47 archlinux sddm-helper[534]: pam_kwallet5(sddm:setcred): pam_kwallet5: pam_sm_setcred
10月 15 13:49:47 archlinux sddm-helper[534]: pam_unix(sddm:session): session opened for user vicking(uid=1000) by (>
10月 15 13:49:47 archlinux sddm[471]: Auth: sddm-helper exited successfully
10月 15 13:49:47 archlinux sddm[471]: Greeter stopped.
10月 15 13:49:47 archlinux sddm-helper[534]: pam_env(sddm:session): deprecated reading of user environment enabled
10月 15 13:49:47 archlinux sddm-helper[534]: pam_kwallet5(sddm:session): pam_kwallet5: pam_sm_open_session
10月 15 13:49:47 archlinux sddm-helper[534]: Starting: "/usr/share/sddm/scripts/Xsession \"/usr/bin/startplasma-x11>
10月 15 13:49:47 archlinux sddm[471]: Session started

可以看到xorg服务是由sddm启动。那么Xorg服务能不能正常启动是系统能不能进入到桌面的关键。

2.3 查看xorg能否正常使用NVIDIA的驱动。

我们使用命令sudo pacman -S nvidia nvidia-utils lib32-nvidia-utils nvidia-settingssudo nvidia-xconfig安装完NVIDIA驱动并配置xorg所需的配置文件后。
查看/usr/lib/modprobe.d/nvidia-utils.conf文件,发现其中确实把 nouveau 驱动给拉黑了。这样系统只能加载 nvidia的驱动。
但是我们执行 lsmod | grep nv 后发现nvidia的驱动并没有加载。
正常情况下,应该是按照如下显示。

[vicking@archlinux ~]$ lsmod  | grep nv
nvidia_drm             73728  19
nvidia_uvm           2850816  0
nvidia_modeset       1466368  43 nvidia_drm
nvidia              60055552  2405 nvidia_uvm,nvidia_modeset

另外我们执行 nvidia-smi 命令也会失败。

[vicking@archlinux ~]$ nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

可见NVIDIA驱动在系统启动的时候,并没有正确加载。
参考文章: https://bbs.archlinux.org/viewtopic.php?id=263618
发现在安装NVIDIA驱动的时候,blablalba, 没有看懂。反正意思就是NVIDIA驱动没有正常加载。
所以这里安装下nvidia-dkms

sudo pacman -S nvidia-dkms # 会提示删除nvidia的包。选择 y 删除即可。

3. 总结安装驱动步骤

通过以上的分析,我们应该知道如下。

  • NVIDIA显卡的驱动要么是开源驱动 nouveau, 要么是闭源的NVIDIA驱动。我们这里选择使用闭源的显卡驱动。
  • Xorg 服务启动的时候,如果显卡驱动没有安装正确,则Xorg不能正常启动,导致无法显示桌面。

3.1 安装驱动

sudo pacman -S nvidia-utils lib32-nvidia-utils nvidia-settings 
# 配置xorg, 会生成 /etc/X11/xorg.conf
sudo nvidia-xconfig  
# 安装驱动,此步会让kernel正确加载nvidia驱动
sudo pacman -S nvidia-dkms 

3.2 检查 nouveau 是否被禁用了。

/usr/lib/modprobe.d/nvidia-utils.conf,/etc/modprobe.d/nouveau_blacklist.conf, /usr/lib/modprobe.d/nvidia.conf, or /usr/lib/modprobe.d/nvidia-dkms.conf
检查以上文件中是否有 blacklist nouveau 这句话(只要一个文件中包含这句话就行。)

另外关于使用intel集显还是使用NVIDIA独显的问题,本文不涉及(应该是使用optimus,以后再研究)。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354

推荐阅读更多精彩内容