WeHack BBS
T440p上coreboot启动时没显示,怎样debug? - 可打印的版本

+- WeHack BBS (https://bbs.wehack.space)
+-- 版块: 计算机技术 (https://bbs.wehack.space/forum-5.html)
+--- 版块: 固件技术讨论区 (https://bbs.wehack.space/forum-8.html)
+--- 主题: T440p上coreboot启动时没显示,怎样debug? (/thread-137.html)



T440p上coreboot启动时没显示,怎样debug? - dalao - 03-16-2020

在官方邮件列表里问了,折腾了好几天试了各种方法,还是没解决。

https://mail.coreboot.org/hyperkitty/list/coreboot@coreboot.org/thread/QL65TAIQKFFYCWL2O2MGIOKG7Y3U2XUZ/

用VGABIOS+SeaBIOS启动Manjaro最开始的界面不显示,但等一会进桌面了能显示了,用Windows的话卡在转圈的地方,而用同样config的T420完全正常。刚开始用4700MQ ES(代号QDEN)的CPU,以为是ES的问题。

然后换了个2950M正式版CPU,居然连最开始的SeaBIOS的菜单都不显示然后发现这个CPU对应的不是8086,0416而是8086,0406了,然后改了这个之后SeaBIOS显示了,但之后还是和上面一样的问题。用cbmem -c 发现SeaBIOS引导之后就没log了,这个该怎么debug?

用libgfxinit+SeaBIOS也是进系统之前没显示。如果用Archlinux的安装镜像启动,能看到第一屏,按回车之后加载一些东西就没显示了。可能还是T440p的port有问题,因为在T420上都是正常的,都能显示。


我还想问下用libgfxinit是不是和添加pci8086,0406.rom这两个互斥?因为如果我选上用libgfxinit再加上pci8086,0406.rom就连SeaBIOS的启动界面都看不到。 对了,还有用libgfxinit+SeaBIOS是不是不能启动Windows?


更新:对比T440p(目前还不太正常)和T420(好像这个正常些)试了下,
用run vga rom+text mode framebuffer+vgabios+seabios T420一切正常,能看到刚开始的SeaBIOS菜单和Linux/Windows启动最前面的画面,能启动Manjaro,能启动Windows;T440p 能看到刚开始的SeaBIOS菜单,不能看到Linux/Windows启动最前面的画面,能启动Manjaro,不能启动Windows

用libgfxinit+text mode framebuffer+seabios T420能看到刚开始的SeaBIOS菜单和Linux/Windows启动最前面的画面,能启动Manjaro,不能启动Windows;T440p能看到刚开始的SeaBIOS菜单,看不到Linux/Windows启动最前面的画面,能启动Manjaro,不能启动Windows

用libgfxinit+high resolution framebuffer+seabios T420能看到刚开始的SeaBIOS菜单和Linux/Windows启动最前面的画面,能启动Manjaro,不能启动Windows;T440p能看到刚开始的SeaBIOS菜单,看不到Linux/Windows启动最前面的画面,能启动Manjaro,不能启动Windows

用libgfxinit+text mode framebuffer+vgabios+seabios T420看不到刚开始的SeaBIOS菜单和Linux/Windows启动最前面的画面,能启动Manjaro,不能启动Windows; T440p看不到刚开始的SeaBIOS菜单和Linux/Windows启动最前面的画面,能启动Manjaro,不能启动Windows

用libgfxinit+high resolution framebuffer+vgabios+seabios T420看不到刚开始的SeaBIOS菜单和Linux/Windows启动最前面的画面,能启动Manjaro,还能启动Windows!; T440p看不到刚开始的SeaBIOS菜单和Linux/Windows启动最前面的画面,能启动Manjaro,不能启动Windows

还有链接里这个人提到“add the VGA BIOS. set the PCI IDs correctly. Set coreboot display init to none, and let SeaBIOS run the VBIOS.” 这该怎样做?


还有在Matrix聊天软件上想找您看到消息是灰色的,好像没在线?还是我的消息没发出去?


RE: T440p上coreboot启动时没显示,怎样debug? - vimacs - 03-16-2020

奇怪了,我一直都是用libgfxinit+SeaBIOS默认配置,从SeaBIOS的菜单到OS都是正常显示,我的bootloader是syslinux.

SeaBIOS是可以启用log的,注意payload配置那里有个SeaBIOS debug level的config选项,默认是-1,就是没log.

"add the VGA BIOS. set the PCI IDs correctly. Set coreboot display init to none, and let SeaBIOS run the VBIOS." 它的意思就是字面上的意思,就是config的时候graphics init选None而不是VGA BIOS/libgfxinit,把VGA BIOS添加到CBFS(Kconfig里面应该就可以做),这样CBFS就有一个pci8086,xxxx.rom这样的文件,SeaBIOS会自动找它。一般来说图形的初始化选一个就行了,用两种的话就相当于用不同方式初始化两遍。

Windows我一直没试过,最近一次是试着在一个HP的独显机器(HP Sandy/Ivy那代的独显机器都屏蔽了核显,我用的是独显自带的VGA BIOS)上通过SeaBIOS启动Windows 8.1,但是刚启动就崩溃了。昨晚尝试编译一份用TianoCore的固件,在QEMU上启动出错了。

我的Matrix一直都在线上。注意一下最近 matrix.org 被墙了,你看一下连服务器有没有问题。


RE: T440p上coreboot启动时没显示,怎样debug? - dalao - 03-16-2020

多谢,Manjaro的bootloader好象是GRUB, 可能是这个问题。

VGA BIOS添加到CBFS(Kconfig里面应该就可以做),这个是在make nconfig的时候这样选吗?
这里选 Graphics initialization (None) --->
然后这里选这个?
[*] Add a VGA BIOS image
(pci8086,0406.rom) VGA BIOS path and filename
(8086,0406) VGA device PCI IDs
这样做之后编译结果还是和run vga rom+text mode framebuffer+vgabios+seabios这种情况一样