我最近升级到了 12.10。在此过程中,我的笔记本电脑(底座上的 W520)连接到 2 个外接显示器(相同的显示器...戴尔 U2400)。我终于让 nvidia-experimental-310 驱动程序与两个显示器一起工作。几周来一切都很顺利,然后它决定升级内核,当我要求它执行 apt-get upgrade 时,我没有意识到它这样做了。
意识到自己的错误后,我回去尝试重新安装 nvidia 驱动程序,因为我认为它需要再次针对当前内核进行构建。我无法让 nvidia-current 或 nvidia-experimental-310 驱动程序正常工作(它们启动时出现黑屏,光标闪烁,或者,就 310 驱动程序而言,不允许我启用第二个屏幕)。
不过,我能够让 nvidia-experimental-304 驱动程序正常工作。因此,经过反复尝试,我更新了 xorg.conf 文件并重新启动。但是现在,我在 Xorg.0.log 文件中收到以下错误:
[ 16.023] (EE) Failed to load module "nvidia-experimental-304" (module does not exist, 0)
但是,当我进入虚拟终端并运行以下命令时:
# modprobe nvidia-experimental-304
# /etc/init.d/lightdm restart
现在一切都按预期工作,除了以下内容仍然出现在我的 Xorg.0.log 文件中,即使 X 按照我预期的方式启动:
[ 16.023] (EE) Failed to load module "nvidia-experimental-304" (module does not exist, 0)
有人能告诉我我做错了什么吗?我想让模块在启动时自动加载,这样我就可以直接启动 X,而不必手动 modprobe 模块。
我的 xorg.conf 文件如下。
编辑
如果我在 xorg.conf 文件中将驱动程序“nvidia-experimental-304”更改为“nvidia”,则系统在重新启动时将以低图形模式运行,并且 xorg.conf 文件中出现以下错误:
[ 17.147] (**) NVIDIA(0): Enabling 2D acceleration
[ 17.163] (EE) NVIDIA(0): Failed to initialize the NVIDIA kernel module. Please see the
[ 17.163] (EE) NVIDIA(0): system's kernel log for additional error messages and
[ 17.163] (EE) NVIDIA(0): consult the NVIDIA README for details.
[ 17.163] (EE) NVIDIA(0): *** Aborting ***
[ 17.163] (EE) NVIDIA(0): Failing initialization of X screen 0
syslog 现在显示:
Dec 3 12:55:03 corellia kernel: [ 33.405620] e1000e 0000:00:19.0: irq 50 for MSI/MSI-X
Dec 3 12:55:03 corellia kernel: [ 33.431116] nvidia: module license 'NVIDIA' taints kernel.
Dec 3 12:55:03 corellia kernel: [ 33.431118] Disabling lock debugging due to kernel taint
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 304.64 (buildd@papaya) Fri Nov 9 10:49:08 UTC 2012
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
Option "Xinerama" "0"
EndSection
Section "Files"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor0"
VendorName "Unknown"
ModelName "DELL U2410"
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 76.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia-experimental-304"
VendorName "NVIDIA Corporation"
BoardName "Quadro 1000M"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-5"
Option "metamodes" "DFP-5: nvidia-auto-select +1920+0, DFP-6: nvidia-auto-select +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection
答案1
你的驱动程序应该是 nvidia。
驱动程序“nvidia”
X 不加载内核模块。它加载调用设备的 X 模块。当该设备不存在时,内核会加载模块。参考这里,保护你的眼睛。
因此,通过设置驱动程序“nvidia-experimental-304”,您将加载一个不存在的 X 模块,它无法告诉它应该加载哪个内核设备,然后内核不知道要加载哪个模块。如果您先 modprobe,它就会起作用,因为模块已加载。但我怀疑“某些”nvidia 的东西不会这样工作。(即模块已加载,但 x 驱动程序未加载)
这是一个有效的设备部分,请原谅其格式。
部分“设备”
标识符“设备 1”驱动程序
“nvidia”
供应商名称“NVIDIA Corporation”
主板名称“GeForce GT 330M”
总线 ID“PCI:1:0:0”
屏幕 1
结束部分
答案2
事实证明,在完成所有重新配置后,真正需要的是重新安装 lightdm。以下命令可以解决问题(注意:我有 Linux 源代码和标头,但为了清楚起见,我在这里添加了这些步骤,以防其他人遇到同样的问题并且可能没有安装它们):
sudo apt-get remove --purge nvidia-experimental-304 nvidia-settings-experimental-304
sudo apt-get install linux-source linux-headers-($uname -r)
sudo apt-get install nvidia-experimental-304 nvidia-settings-experimental-304
sudo apt-get install --reinstall lightdm
当我启动时,这对我来说工作正常。