一、现象:
arch安装linux-lts和nvidia-lts后,若再次更新linux-lts则操作系统无法引导,启动引导在硬盘自检后卡住,只能进救援模式。卸载nvidia-lts驱动后,才能正常进入图形界面。
二、报错:
tail -f /var/log/Xorg.0.log
(EE) nvidia: failed to initialize the nvidia kernel module.
(EE) no devices detected
(EE) no screens foune(EE)
三、解决办法1:grub内核启动参数在KERNEL那一行的末尾加ibt=off。关闭CPU的安全特性Indirect Branch Tracking。
查看当前linux内核的启动参数:
cat /proc/cmdline
vi /etc/default/grub
# 将内核选项添加至 GRUB_CMDLINE_LINUX_DEFAULT 行
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash ibt=off”
然后重新生成 grub.cfg 文件:
grub-mkconfig -o /boot/grub/grub.cfg
四、解决办法2:安装nvidia-dkms驱动配合linux-lts更新,解决NV显卡驱动的问题。
为了避免更新 NVIDIA 驱动之后忘了更新 initramfs,你可以使用 Pacman Hooks:
/etc/pacman.d/hooks/nvidia.hook
[Trigger]
Operation=Install
Operation=Upgrade
Operation=Remove
Type=Package
Target=nvidia
Target=linux
# Change the linux part above and in the Exec line if a different kernel is used
# 如果使用不同的内核,请更改上面的 linux 部分和 Exec 行中的内容
[Action]
Description=Update Nvidia module in initcpio
Depends=mkinitcpio
When=PostTransaction
NeedsTargets
Exec=/bin/sh -c ‘while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -P’
讚讚