我对 Linux 还很陌生,但我花了整个周末在 Google 上寻找解决方案,但却没有任何效果。
TL;DR;
在启动过程中的初始日志之后,屏幕变黑。我尝试在 GRUB 中设置nomodeset
和,acpi=off
但没有任何效果。我还能尝试什么让 Ubuntu 启动时带显示器?
细节
我正在帮助朋友设置Ubuntu Server 16.04.3 LTS(32 位)在fit-PC2i,它有一个配备 GMA 500 的英特尔凌动 Z530(PDF 链接)。我遵循了如何创建可启动 USB进而如何安装 Ubuntu 服务器。
安装非常顺利。
但是,在启动时,POST 闪烁,GRUB 菜单闪烁,并且一些初始启动日志闪烁得太快而无法读取任何内容,然后屏幕变黑并进入省电模式。
我尝试从 GRUB 菜单进入恢复模式,但是也不起作用。
我尝试使用带有 DVI-D 输入的显示器,也尝试使用带有 HDMI 输入的另一台显示器。没有区别。
我也尝试过使用 Parted Magic,但是在选择运行模式后,看到的最后一条日志是Setting up system devices...
,然后它变黑了。
在安装过程中,我选择安装OpenSSH
,但NMap
网络扫描未显示 fit-PC 上有任何开放端口。PuTTY
端口 22 上的连接被拒绝。我猜这是因为我还没有登录,但我不知道如何在看不到任何东西的情况下做到这一点...
请注意,PC 没有死机。电源指示灯亮起,HDD-LED 还会闪烁一会儿。
现在我不知道该怎么办了……):
更新:
经过一周的故障排除,我相信问题在于 Linux 正在尝试使用首选解决方案(对于我的显示器来说为 1920x1200),但vbeinfo
不支持该模式。
我已经成功地操纵了内核参数更新 GRUB 配置。我也尝试直接从 GRUB 启动菜单进行相同的设置,结果相同。
在 /etc/default/grub 中:
GRUB_GFXMODE=1280x1024x32
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_CMDLINE_LINUX_DEFAULT="vga=0x31b"
GRUB 菜单中的 Linux 内核参数:
vga=0x31b
参数splash
和quiet
被删除了,并且我也尝试了使用和不使用nomodeset
。
这项决议在引导阶段。引导加载程序(GRUB2)运行良好,并且内核的初始日志以正确的分辨率显示。
但是,大约 4 秒钟后,显示器闪烁,然后进入省电模式。以下打印内容dmesg
似乎是唯一相关的内容:
[ 2.167156] vesafb: mode is 1280x1024x32, linelength=5120, pages=0
[ 2.167171] vesafb: scrolling: redraw
[ 2.167186] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[ 2.167221] pmd_set_huge: Cannot satisfy [mem 0x3f800000-0x3fa00000] with a huge-page mapping due to MTRR override.
[ 2.167296] vesafb: framebuffer at 0x3f800000, mapped to 0xf8600000, using 5120k, total 5120k
[ 2.187861] Console: switching to colour frame buffer device 160x64
[ 2.208045] fb0: VESA VGA frame buffer device
...
[ 4.046290] gma500 0000:00:02.0: trying to get vblank count for disabled pipe 1
[ 4.048009] gma500 0000:00:02.0: trying to get vblank count for disabled pipe 1
[ 4.097391] microsoft 0003:045E:00DB.0002: input,hidraw1: USB HID v1.11 Device [Microsoft Natural® Ergonomic Keyboard 4000] on usb-0000:00:1d.0-2/input1
[ 4.260422] gma500 0000:00:02.0: Backlight lvds set brightness 7a120000
[ 4.268990] [drm] Initialized gma500 1.0.0 20140314 for 0000:00:02.0 on minor 0
我认为[ 4.046290] gma500 0000:00:02.0: trying to get vblank count for disabled pipe 1
显示器关闭是正确的。
看来 GMA 驱动程序已加载:
$ lsmod | grep gma
gma500_gfx 217088 0
i2c_algo_bit 16384 1 gma500_gfx
drm_kms_helper 139264 1 gma500_gfx
drm 311296 3 drm_kms_helper,gma500_gfx
video 40960 1 gma500_gfx
Poulsbo 设备使用的是 GMA500:
$ lspci -nnk | grep -iA2 Graphics
00:02.0 VGA compatible controller [0300]: Intel Corporation System Controller Hub (SCH Poulsbo) Graphics Controller [8086:8108] (rev 07)
Subsystem: Intel Corporation System Controller Hub (SCH Poulsbo) Graphics Controller [8086:8119]
Kernel driver in use: gma500
Kernel modules: gma500_gfx
根据这些发现,我认为原来的问题已经发生了一些改变。
我怎样才能让 Linux 内核继续使用 GRUB 指定的相同(工作)分辨率?
答案1
我一直在尝试做同样的事情(Ubuntu Server 16.04 -> FitPC2),但遇到了同样的问题。
不幸的是,我还没有找到任何方法来修复显示分辨率,但我确实找到了......
解决方法:
找到一个较小的显示器对我来说很有效(我手边有一台 Adafruit 800x480 HDMI 显示器)。基本驱动程序和 gma500_gfx 驱动程序之间显然有一个开关,但至少要切换到支持的分辨率。您可以通过这种方式进行基本配置,稍后使用 ssh 连接...
答案2
可以尝试以下选项:
在 grub linux 行中,添加 video=XRESxYRES@REFRESHRATE
然后禁用一些额外的视频端口 (video=DP-2:d),如下所示:
https://wiki.archlinux.org/index.php/Kernel_mode_setting#Forcing_modes
我知道我的主板默认会尝试输出到 LVDS-1,据说这是板载 Intel(重新命名的非品牌)图形芯片的一个缺陷,所以我在内核中禁用了 LVDS-1。结果如下:video=LVDS-1:d
要检查这是否有效,在启动时您需要混合e (一旦进入编辑模式,请确保删除您可能添加的任何多余的“e”),这将带您进入“编辑 GRUB”模式。
然后找到该 linux
行,需要添加上面描述的参数。
你最终会得到类似这样的结果:
linux /boot/vmlinuz-4.15.0-32-generic root=UUID=abcd-ef-ghi12345-etc ro video=LVDS-1:d video=DP-2:d
这些英特尔主板并不可怕,除非它们真的很糟糕。
答案3
fitpc2 和 Debian Linux 10 存在同样的问题。解决方法:
- 在启动屏幕/ GRUB 菜单上,点击
e
- 有一行以
linux /boot/...
- 将此内容附加到以下行
mobprobe.blacklist=gma500_gfx
- 按 F10 使用此临时修复程序进行启动
这可防止加载 gma500_gfx 驱动程序并导致屏幕变黑。启动后,您还可以根据需要永久设置黑名单。
对我来说这并不重要(无头系统)。
答案4
gma_gfx500 模块使显示屏变黑
以下对我有用...
将 gma_gfx500 模块列入黑名单
将以下行添加到 /etc/modprobe.d/blacklist.conf
blacklist gma500_gfx
并运行命令来更新 initramfs
sudo update-initramfs -u
编辑 grub 默认文件 /etc/default/grub
改变线路
GRUB_CMDLINE_LINUX_DEFAULT="安静的启动"
到
GRUB_CMDLINE_LINUX_DEFAULT="安静无模式设置"
运行命令更新 GRUB
sudo update-grub
然后重启