我正在尝试将 Xorg 添加到评估板,我已经为其提供了一个可用的 Linux 内核。该评估板有一个 LCD 显示屏,我可以通过运行一个简单的 qt4 演示应用程序来确认硬件和驱动程序正在工作。
为此,我启用了“图形应用程序”下的 X11 选项。这些是相关的配置选项:
BR2_PACKAGE_XORG7=y
#
# X11R7 Servers
#
BR2_PACKAGE_XSERVER_XORG_SERVER=y
BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_24=y
BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI=24
BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_20=y
# BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_17 is not set
# BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_14 is not set
BR2_PACKAGE_XSERVER_XORG_SERVER_VERSION="1.20.5"
# BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR is not set
BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE=y
BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_EVDEV=y
BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_KBD=y
BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_MOUSE=y
编译顺利结束。该板已包含 uboot、linux 内核和闪存上的文件系统;为了测试我的修改,我更新了 linux 内核,然后在通过 nfs 挂载后,chroot 到由 buildroot 创建的新文件系统。
从那里,我期望运行xinit xterm
并在 LCD 上看到一些输出。不幸的是,服务器失败并出现以下错误:
# xinit xterm
xinit: unable to run server "X": No such file or directory
Use the -- option, or make sure that /usr/bin is in your path and
that "X" is a program or a link to the right type of server
for your display. Possible server names include:
Xorg Common X server for most displays
Xvfb Virtual frame buffer
Xfake kdrive-based virtual frame buffer
Xnest X server nested in a window on another X server
Xephyr kdrive-based nested X server
Xvnc X server accessed over VNC's RFB protocol
Xdmx Distributed Multi-head X server
现在,在 buildroot 生成的 rootfs 中有/usr/bin/X
,但它只是一个链接Xfbdev
:
$ ls usr/bin/X -l
lrwxrwxrwx 1 root root 6 Oct 1 14:44 usr/bin/X -> Xfbdev
Xfbdev
不幸的是,同一个文件夹中没有这样的东西;当通过 nfs 安装文件系统时,X
链接会消失,因为找不到其目的地。
我意识到我在这里跳过了很多步骤(假设帧缓冲区驱动程序可以工作,因为我可以看到 qt4 独立应用程序),但我无法Xfbdev
理解rootfs
.
如果我理解正确的话,Xfbdev
这将是一个微型版本X11
,在选择tinyX/kdrive作为Xorg服务器时由buildroot启用。那么为什么 中没有可执行文件/usr/bin
,而只有指向它的符号链接呢?