如果我使用 Nvidia 驱动程序和 Nvidia 卡(这是带有两个视频卡的 Optimus 系统),我的 ThinkPad W520 将无法使用默认 Grub 菜单启动。但是,它可以在恢复模式下启动,并且继续正常工作。
罪魁祸首是
gfxmode $linux_gfx_mode
如果我删除 Grub 条目中的此行,它就可以正常启动。(恢复菜单选项中不存在此行)。
有没有一种合理的方法可以编辑 grub 菜单来删除它?我必须摆弄 /etc/default/grub.d 中的脚本吗?
答案1
gfxmode 可能不是真正的问题。有一些内核参数使体验好多了。事实证明,这台笔记本电脑无法与 Windows 10 配合使用(始终使用 Nvidia 卡),但它可以与 Linux 配合使用!
因此,在 16.04(但使用 4.8 内核)和 Nvidia 驱动程序 v 367 上,您可以通过以下方式让三个显示器工作(通过扩展坞),这只有使用 Optimus 才有可能。是的……独立模式下的 nvidia 只会驱动两个输出,而不是三个。如果您只需要一个外接显示器和笔记本电脑面板,则可以使用 optimus 或独立 Nvidia。独立 nvidia 就可以正常工作,无需任何配置。
除非您修改 grub cmd 行条目以指定 nox2apic /etc/default/grub...,否则机器将在启动时挂起。
GRUB_CMDLINE_LINUX_DEFAULT="agp=off 安静启动 nox2apic"
w520 的历史上还有其他建议,但有了这个内核,只需要进行这一更改。
- 有提示说要向 /usr/share/X11/xorg.conf.d 添加一个文件来设置 nvidia 亮度。这个建议阻止了 optimus 的工作。我不知道怎么做到的,但是当 X 启动时,它们会产生令人讨厌的影响。这个问题的症状是 xrandr --listproviders 需要同时显示 nvidia 卡和 intel 卡。对 xorg.conf 的亮度调整似乎无害,但它们实际上以某种方式阻止了 intel 卡和 nvidia 卡一起工作。xrandr --listprovider 只会列出一个提供商 Nvidia,因此 X 无法在笔记本电脑面板上呈现任何东西。令我惊讶的是,删除亮度配置解决了这个非常烦人的问题。
无论如何,亮度键在 optimus-nvidia 模式下对我来说是有效的,并且通过屏幕控制面板更改亮度也有效。
- lightdm 不允许我使用笔记本电脑面板。鼠标指针移动到那里,但我无法拖动任何窗口,也没有背景(它是黑色的)。但是,安装 xfce 但保持 lightdm 正常工作。请注意,如果您想要屏幕亮度控制,您需要从 synaptic 或任何包管理器安装 xfce 电源管理插件,然后将其添加到面板。单击电池图标可切换显示。
注意:我遵循此处的 arch wiki 说明:
https://wiki.archlinux.org/index.php/NVIDIA_Optimus#LightDM
并添加了简短的脚本,对 xrandr 进行了一些更改。我这样做主要是为了尝试了解为什么我只有一个提供商,然后我才发现 nvidia 亮度变化是问题所在。可能我不需要这个脚本,但我很高兴一切都正常,我不想改变任何东西。
但是,从 nvidia 更改为 intel 需要重新启动:仅仅注销是不起作用的。
答案2
我在一台完全不同的机器上遇到了类似的问题,一台 Supermicro X8SIL Xeon X3440 服务器。注释掉该gfxmode
行允许机器启动,但拥有更大的 grub 菜单很方便。因为它是一台服务器,所以我不在乎它在启动时打印多少,而且我从未期望运行 X、Wayland、Mir、Unity 或任何其他需要图形驱动程序的东西。我没有弄乱/etc/grub.d
(/etc/default/grub.d
为空)中的脚本,而是splash modeset
从中删除了/etc/default/grub.conf
。这是我目前正在使用的:
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""
我怀疑modeset
这是真正的问题。
答案3
我在 1U 安装架内的旧英特尔服务器主板上从 USB 闪存盘安装 Ubuntu 桌面 22.04.1 LTS 时也遇到了同样的问题,因此它除了内置 VGA 端口外没有其他显卡
我用这种方式解决了这个问题:
通过 Ctrl+Alt+F3 登录服务器
sudo nano /etc/grub.d/10_linux
按下 Ctrl 和“/”按钮,然后在输入字段中输入 219,然后按 Enter 键
将 $linux_gfx_mode 替换为 \"\",因此相应的行如下所示
echo " gfxmode \"\"" | sed "s/^/$submenu_indentation/"
保存编辑的文件
sudo 更新 grub
sudo 重启
只需等待,它就会在正常模式下正常启动
也许这不是完美的方法,因为我是 Linux 世界的完全新手,但至少这种方法让我昨晚睡得很好,今天早上醒来时很开心。