Ubuntu18.04安装CUDA10.2后分辨率异常及xrandr报错咨询
这个问题在CUDA安装后很常见——本质是CUDA安装过程可能干扰了系统的显卡驱动配置,导致Xorg无法正确加载NVIDIA显卡驱动,只能 fallback 到通用的帧缓冲驱动(所以输出显示为default),进而引发xrandr无法获取gamma参数的报错。下面是一步步的解决方法:
1. 先确认显卡驱动状态
首先检查NVIDIA驱动是否正常加载:
nvidia-smi
如果命令报错或显示"NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver",说明驱动确实没有正常工作。也可以用以下命令查看显卡硬件信息:
lshw -c display
如果输出里的configuration字段显示driver=nvidia以外的内容(比如vesa或fbdev),就坐实了驱动加载异常的问题。
2. 修复Xorg配置文件
CUDA安装可能覆盖了Xorg的默认配置,我们可以重新生成NVIDIA的Xorg配置:
- 先备份原有配置(以防万一):
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak - 生成新的NVIDIA配置文件:
sudo nvidia-xconfig - 重启X服务(或直接重启系统):
sudo systemctl restart display-manager
重启后如果驱动正常加载,xrandr应该会显示具体的输出设备名称(比如HDMI-0、DP-0),而不是default。
3. 重新安装兼容的NVIDIA驱动
如果上面的方法无效,可能需要彻底卸载冲突的驱动,重新安装与CUDA 10.2兼容的版本:
- 卸载所有NVIDIA相关包:
sudo apt purge nvidia* libnvidia* - 添加显卡驱动PPA源(如果未添加):
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update - 安装CUDA 10.2兼容的驱动版本(CUDA 10.2要求驱动版本≥440.33,这里选择稳定的440版本):
sudo apt install nvidia-driver-440 - 重启系统,再次用
nvidia-smi验证驱动是否正常工作。
4. 临时手动添加分辨率模式(驱动未正常加载时的应急方案)
如果暂时无法修复驱动,需要临时调整分辨率,可以手动创建自定义模式:
- 首先用
cvt生成1280x720的模式参数:
你会得到类似这样的输出:cvt 1280 720Modeline "1280x720_60.00" 74.50 1280 1344 1472 1664 720 723 728 748 -hsync +vsync
- 用
xrandr创建新模式:xrandr --newmode "1280x720_60.00" 74.50 1280 1344 1472 1664 720 723 728 748 -hsync +vsync - 将新模式添加到
default输出:xrandr --addmode default 1280x720_60.00 - 最后设置分辨率:
xrandr --output default --mode 1280x720_60.00
注意:这个方法只是临时解决,重启后会失效,还是要优先修复显卡驱动。
5. 检查CUDA环境变量
确保CUDA的环境变量配置没有干扰驱动加载,打开~/.bashrc或/etc/profile,检查是否有以下内容:
export PATH=/usr/local/cuda-10.2/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
如果有错误的路径或重复配置,修正后执行source ~/.bashrc生效。
内容的提问来源于stack exchange,提问作者Mohamed Gamal

