• 记录一次archlinux升级nvidia驱动滚挂


    大概有不到一个月没升级,使用sudo pacman -Syu 升级了一下,升级完之后重启卡在:

    failed to start Load Kernel Module 
    

    tty都切不了了,显示的字体也偏大,显示不正常。百度了一下,可能与nvidia显卡驱动有关,加载nvidia内核模块失败,升级的时候看到将nvidia 升级到了515.48.07
    由于nvidia 驱动在linux的不成熟(2022年6月),滚动升级确实有点危险,于是打算不在linux下使用nvidia显卡了,使用livecd 进去系统然后卸载显卡驱动试试。

    livecd启动时候报错BIOS error 搜索了一下可能与没有开启核心显卡有关,livecd 不能使用nvidia显卡。于是在bios 中开启核心显卡成功进入了livecd。

    在livecd中挂在系统盘,然后切换到系统根路径:

    mount /dev/nvme1p1 /mnt
    arch-chroot /mnt
    

    查询已经安装的nvidia驱动,并卸载:

    pacman -Q |grep nvidia
    pacman -Rns nvidia
    # 实际上将跟nvidia相关的都卸载了
    

    查询是否还有nvidia 内核模块:

    lsmod |grep nvidia
    # 查询结果为空,没有nvidia模块
    

    卸载完后,重启。重启卡在clean 磁盘,日志就不动了,但是现在可以切换tty了。使用ctrl+alt+f2新开一个tty可以登录进来,现在应该是卡在图形界面了,启动一下xwindows试试:

    startx
    

    报错了,给了一个日志文件/var/log/Xorg.0.log 里面大概是nvdia模块加载失败。看来虽然卸载了nvidia, x11还在用它,查看一下X的配置文件/etc/X11/xorg.conf

    # nvidia-xconfig: X configuration file generated by nvidia-xconfig
    # nvidia-xconfig:  version 510.60.02
    
    ...
    
    Section "Device"
        Identifier     "Device0"
        Driver         "nvidia"
        VendorName     "Nvidia Corporation"
        BusID          "PCI:1:0:0"
    EndSection
    

    现在这个X11的配置文件还是nvidia生成的,在Section "Device" 里面配置还是使用nvidia显卡进行渲染,这里需要修改成使用核心显卡渲染,感觉这里面的核心参数应该是DriverBusID,如何配置Driver没找到文档,先设置成"intel" , 查看Intel显卡的BusID:

    $ lspci |grep VGA
    0000:00:02.0 VGA compatible controller: Intel Corporation TigerLake-H GT1 [UHD Graphics] (rev 01)
    0000:01:00.0 VGA compatible controller: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] (rev a1)
    

    nvdia 的id是 01:00.0 对应写成 "PCI:1:0:0" ,那intel的BusID应该写成:"PCI:0:2:0" ,这部分配置修改后为:

    ...
    Section "Device"
        Identifier     "Device0"
        Driver         "intel"
        VendorName     "Intel Corporation"
        BusID          "PCI:0:2:0"
    EndSection
    ...
    

    改完之后再执行startx 图形界面可以正常启动了。

    总结:

    1. 大概率是由于升级nvidia显卡导致的挂机,暂时先不使用独显了,如果要修复显卡驱动可以尝试降级。
    2. linux 的内核模块加载失败可能会导致内核无法启动,也就是显卡驱动会影响内核加载。也可以尝试使用rmmod 删除nvidia内核模块看看能否启动内核。
    3. 进入livecd 再使用arch-chroot是可以对原系统进行运维的,就跟安装的时候一样
    4. x11是可以配置显卡的,很多Linux独显黑屏估计都跟x11 配置了使用nvidia设备但是又没有驱动好有关
    5. 再碰到黑屏或许也可以尝试在grub启动界面添加内核参数解决,通过内核参数禁用有问题的模块来进入系统。
  • 相关阅读:
    emWin模拟器Visual Studio开发时无法printf打印的问题
    双边滤波算法
    hough变换算法
    OpenCV3入门(十四)图像特效—挤压、哈哈镜、扭曲
    Canny检测算法与实现
    图像频域滤波与傅里叶变换
    OpenCV3入门(十二)角点检测
    OpenCV3入门(十一)图像直方图
    OpenCV3入门(十)图像轮廓
    一款基于SVM算法的分布式法律助手
  • 原文地址:https://www.cnblogs.com/oaks/p/16359027.html
Copyright © 2020-2023  润新知