大概有不到一個月沒升級,使用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顯卡進行渲染,這裏需要修改成使用核心顯卡渲染,感覺這裏面的核心參數應該是Driver
和BusID
,如何配置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
圖形界面可以正常啓動了。
總結:
- 大概率是由於升級nvidia顯卡導致的掛機,暫時先不使用獨顯了,如果要修復顯卡驅動可以嘗試降級。
- linux 的內核模塊加載失敗可能會導致內核無法啓動,也就是顯卡驅動會影響內核加載。也可以嘗試使用
rmmod
刪除nvidia內核模塊看看能否啓動內核。 - 進入livecd 再使用
arch-chroot
是可以對原系統進行運維的,就跟安裝的時候一樣 - x11是可以配置顯卡的,很多Linux獨顯黑屏估計都跟x11 配置了使用nvidia設備但是又沒有驅動好有關
- 再碰到黑屏或許也可以嘗試在grub啓動界面添加內核參數解決,通過內核參數禁用有問題的模塊來進入系統。