2

I'm trying to add Xorg to an evaluation board for which I've already been provided with a working linux kernel. The evaluation board has an LCD display and I can confirm hardware & drivers are working by running a simple qt4 demo application.

To do so I have enabled the X11 option under "Graphical applications". These are the relevant configuration options:

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

The compilation concludes without issues. The board already contains uboot, linux kernel and a file system on flash; to test my modifications I update the linux kernel and then I chroot into the new file system created by buildroot after mounting it via nfs.

From there, I'd expect to run xinit xterm and see some output on the LCD. Unfortunately the server fails with the following error:

# 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

Now, in the rootfs generated by buildroot there is /usr/bin/X, but it's just a link to Xfbdev:

$ ls usr/bin/X -l
lrwxrwxrwx 1 root root 6 Oct  1 14:44 usr/bin/X -> Xfbdev

Unfortunately there is no such thing as Xfbdev in the same folder; when mounting the file system via nfs the X link simply disappears because its destination is not found.

I realize I'm skipping a lot of steps here (assuming the framebuffer driver works because I can see an qt4 standalone application), but I can't wrap my head around the fact that Xfbdev is not present in the rootfs.

If I understand correctly Xfbdev would be a tiny version of X11, enabled by buildroot when selecting tinyX/kdrive as Xorg server. So why is there no executable in /usr/bin, but just the symbolic link to it?

  • Your qt application was running directly on the framebuffer, like /dev/fb0 and this still works with the modified system? – Philippos Oct 1 '19 at 20:23
  • I can confirm it works with the new kernel, but I haven't tried it in the chrooted file system – Maldus Oct 1 '19 at 20:26
  • Update - I have tried to use a direct framebuffer application and it works in the chrooted system as well. – Maldus Oct 3 '19 at 11:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.