从 12.04 升级到 14.04 后显示无人认领

从 12.04 升级到 14.04 后显示无人认领

我刚刚从 12.04 进行了到 14.04 的脏升级,在加载 GUI 时遇到了各种麻烦。

最初,nouveau驱动程序只能在640x480分辨率下运行,因此我尝试安装一些专有的 Nvidia 驱动程序以及来自 xorg edgers 的驱动程序。它们中的大多数不仅会导致黑屏,而且 CTRL-ALT-F1 甚至无法让我进入控制台登录。我尝试的驱动程序是nvidia-340(应该是正确的,但会导致黑屏且没有控制台)和nvidia-346(可以从控制台登录,但 GUI 卡在启动循环中)。

经过一番努力,我终于成功nouveau启动了系统,并允许我登录。但是,分辨率仍然停留在640x480。我在 12.04 中没有遇到显示问题,是不是 nouveau 驱动程序发生了变化,导致它不再支持我的硬件?

~$ sudo lshw -C display *-display UNCLAIMED
description: VGA compatible controller product: C77 [nForce 780a/980a SLI] vendor: NVIDIA Corporation physical id: 0 bus info: pci@0000:02:00.0 version: a2 width: 64 bits clock: 33MHz capabilities: pm msi vga_controller bus_master cap_list configuration: latency=0 resources: memory:fb000000-fbffffff memory:d8000000-dfffffff memory:e6000000-e7ffffff ioport:dc00(size=128) memory:e0000000-e001ffff

~$ lspci | grep VGA 02:00.0 VGA compatible controller: NVIDIA Corporation C77 [nForce 780a/980a SLI] (rev a2)

  • 这是一个板载显卡
  • 系统中没有其他显卡
  • 只连接了一台显示器
  • 显示器已连接到 VGA

14.04 下有没有更好的适用于此芯片组的驱动程序?是否只需要重新配置?

更新 #1 我以为我已经修好了。我没有做任何特别的事情,只是一直在日志等中寻找。我尝试了不同的驱动程序存储库,但没有成功,所以我重新安装了唯一有效的驱动程序(nouveau,尽管卡在 640x480)。

重启后,显示屏宽度正确,但高度错误。登录后,我启动了显示属性,查看我的分辨率选项,我有正常的选择,正确的选择是我以前使用的(1600x1200),虽然它看起来很怪异(所有东西都垂直拉伸了)。

当我选择不同的分辨率进行调查时,屏幕慢慢地变成了正确的分辨率。我打开终端并运行sudo xrandr -qsudo lshw -C display它们都报告了正确的分辨率!

我很满意,但也很累,所以我关机睡觉了。第二天,我打开电脑,它又回到了 640x480,没有其他选择,xrandr并且lshw再次报告错误的事情,系统设置应用程序表现得很奇怪(一些应用程序,如用户管理器无法启动)。看起来肮脏的升级搞砸了一些事情。

我找到了 12.04 安装 CD 并将其放入,LiveCD 以适当的分辨率启动桌面,所以这不是刚刚发生的硬件问题。我的 14.04 安装 CD 在朋友那里(试图让他放弃 Windows),本周晚些时候我会尝试一下(14.04 全新安装,不是 Windows,哈哈)。

更新 #2:我从头开始重新安装了 14.04,最终通过创建 xorg.conf 文件(没有)我能够使用 nouveau 驱动程序使我的系统正确显示。我的显示器仍然被报告为“未认领”,因此我开始尝试 nvidia 驱动程序,但没有成功。这次返回 nouveau 驱动程序并没有恢复我的系统,因此我重新安装了 12.04,只是为了看看它使用的是哪些驱动程序。

lspci以下是12.04 版的 VGA 部分:

02:00.0 VGA compatible controller: NVIDIA Corporation C77 [nForce 780a/980a SLI] (rev a2) (prog-if 00 [VGA controller])
Subsystem: ASUSTeK Computer Inc. Device 82e7
Flags: bus master, fast devsel, latency 0, IRQ 7
Memory at fb000000 (32-bit, non-prefetchable) [size=16M]
Memory at d8000000 (64-bit, prefetchable) [size=128M]
Memory at e6000000 (64-bit, prefetchable) [size=32M]
I/O ports at dc00 [size=128]
[virtual] Expansion ROM at e0000000 [disabled] [size=128K]
Capabilities: <access denied>
Kernel modules: nouveau, nvidiafb

正在使用的内核模块是nouveaunvidiafb。这些模块的版本如下:

$ dpkg -l | grep -i nouveau ii libdrm-nouveau1a 2.4.52-1~precise2 Userspace interface to nouveau-specific kernel DRM services -- runtime ii libdrm-nouveau2 2.4.52-1~precise2 Userspace interface to nouveau-specific kernel DRM services -- runtime ii xserver-xorg-video-nouveau-lts-saucy 1:1.0.9-2ubuntu1~precise2 X.Org X server -- Nouveau display driver

并且“设置详细信息”表明图形正在使用VESA驱动程序VESA: MCP77 Board - mcp72xeo

我将重新安装 14.04,尝试昨晚有效的相同方法(创建xorg.conf),并比较命令输出。是否可以在 14.04 中使用 saucy nouveau 驱动程序?

答案1

简单地创建一个通用xorg.conf文件并没有帮助。关键部分是在相关位置包含depthdefaultdepth条目。重新启动后,正常分辨率可用。当今大多数驱动程序和芯片组似乎不需要文件xorg.conf,但这种硬件和驱动程序的组合需要。

这是xorg.conf我制作的文件:

Section "Device"
    Identifier      "Onboard"
    Driver          "vesa"
EndSection
Section "Monitor"
    Identifier      "CRT"
EndSection
Section "Screen"
    Identifier      "ThisScreen"
    Monitor         "CRT"
    Device          "Onboard"
    DefaultDepth    24
    SubSection "Display"
       Depth   24
    EndSubSection
EndSection

答案2

nvidia NVIDIA-Linux-x86_64-340.107.run 脚本使用 cc 进行编译。使用命令 cc --version 检查 cc 的版本,它应该与用于编译 Linux 内核的版本处于同一级别。

通常,linux 内核是用 gcc 编译的。cc 是 gcc 的链接目标。使用命令 sudo update-alternatives --config gcc 为 gcc 选择正确的版本。cc 可以指向 clang,在这种情况下需要用命令替换 cc 链接目标:sudo update-alternatives --config cc

使用命令安装 nvidia 内核驱动程序:sudo apt-get install nvidia-340 或以 root 用户身份手动运行 NVIDIA-Linux-x86_64-340.107.run 脚本。

安装后,使用命令 sudo nvidia-xconfig 生成正确的 xorg.conf 文件。通常 nvidia-xconfig 会为您的显示器设置正确的 DPI 值。

要为您的显示器采用适当的 DPI 设置,请通过将所需值放入 /etc/X11/xorg.conf 的“监视器”部分来指定所需的 DPI。例如:选项“DPI”“96 x 96”

注销登录以应用 X 服务器的新设置。

相关内容