当前位置:首页>Linux>Buildroot:构建嵌入式Linux上基于Wayland的图形桌面环境

Buildroot:构建嵌入式Linux上基于Wayland的图形桌面环境

  • 2026-09-26 20:56:46
Buildroot:构建嵌入式Linux上基于Wayland的图形桌面环境

摘要

介绍通过Buildroot构建嵌入式Linux上基于Wayland架构的用户图形桌面环境。比较传统的X Window System(X11)与现代的Wayland各自的特点,涉及Android手机上的用户界面实现。

X11与Wayland之争

X11 (X Window System)于1984年提出CS架构,安全性软弱,应用间相互能窥视彼此,性能上由于输出帧率与显示刷新率不同步时,屏幕会出现画面“撕开”错位的现象。在2026年,大部分Linux发行版正将其移除,只进行日常的维护。

Wayland于2008年提出窗口复合管理器(compositor)架构。安全性高,实现了应用级别的隔离。性能上采用了“零拷贝渲染”(zero-copy),窗口刷新实现了更低的延迟。在2026年,大部分Linux发行版将完全采用现代型Wayland架构。

Android上的图形框架是运行在Java的图形栈上,而Java图形应用又是运行在Java VM虚拟机基础上。因此Android的图形性能在效率上是逊于基于嵌入式Linux和Wayland的搭配。

安装环境

在Windows 10/11平台上,通过VMware Workstation安装Ubuntu 24.04。

参考:Buildroot:构建嵌入式Linux系统

配置Buildroot

在Buildroot目录下,打开命令行,执行make menuconfig配置Buildroot。

在Toolchain下,选择Enable C++ support和Enable compiler OpenMP support。

在System configuration下,将/dev management改为Dynamic using devtmpfs + eudev。

在Target packages / Graphic libraries and applications (graphic/text)下,选择mesa3d。

将mesa3d下的如下各项选择上

  • Gallium vmware svga driver
  • Gallium swrast driver
  • Gallium virgl driver
  • Vulkan VirtIO driver
  • OpenGL ES

在Target packages / Graphic libraries and applications (graphic/text)下,选择weston。

选择weston下的各项如下

  • default compositor (drm)
  • wayland (nested) compositor
  • desktop shell
  • simple clients
  • demo clients

在Target packages / Fonts, cursors, icons, sounds and themes下,选择Liberation (Free fonts)。

在Target packages / Networking applications下,选择openssh。

在Filesystem images下,将ext2/3/4 root filesystem的exact size调整为128M。

  • 在Buildroot目录,从命令行创建目录rootfs_overlay。

$ mkdir -p board/qemu/x86_64/rootfs_overlay

  • 在Buildroot目录,从命令行创建文件weston.sh

$ touch board/qemu/x86_64/rootfs_overlay/weston.sh

  • 文件weston.sh内容如下

#!/bin/sh

mkdir -p /tmp/xdg

chmod 0700 /tmp/xdg

export XDG_RUNTIME_DIR=/tmp/xdg

weston &

在System configuration下,将Root filesystem overlay directories设置为board/qemu/x86_64/rootfs_overlay。

  • 修改文件board/qemu/x86_64/post-build.sh如下

#!/bin/sh

set -u

set -e

if [ -e "${TARGET_DIR}/etc/inittab" ]; then

    sed -i 's|^.*respawn.*|console::respawn:-/bin/sh|' "${TARGET_DIR}/etc/inittab"

fi

配置Linux

在Buildroot目录,打开命令行。执行make linux-menuconfig配置Linux。

在Device Drivers / Graphics support / Direct Rendering Manager下,配置如下各项:

  • Enable legacy fbdev support for your modesetting driver

  • DRM driver for VMware Virtual GPU

  • Virtio GPU driver
  • DRM Support for bochs dispi vga interface (qemu stdvga)
  • Virtual Box Graphics Card
  • Provide legacy /dev/fb* device
运行QEMU
参考Buildroot:构建嵌入式Linux系统安装QEMU。

qemu-system-x86_64.exe -display sdl,gl=on,show-cursor=off \

    -M q35 -m 4G -kernel bzImage \

    -drive file=rootfs.ext2,if=virtio,format=raw \

    -append "rootwait root=/dev/vda console=tty1 console=ttyS0" \

    -device virtio-net,netdev=user0 \

    -netdev user,id=user0,hostfwd=tcp::2222-:22 \

    -device virtio-vga-gl,xres=1024,yres=600 \

    -device virtio-rng-pci

打开weston-terminal,在命令行依次执行:

$ weston-flower &

$ weston-simple-dmabuf-egl &

$ weston-simple-damage &

$ weston-simple-shm &

$ weston-simple-egl &

结束语
本文完全由作者根据实际操作撰写,Buildroot的配置及相关方法均为作者探究出来,可在本平台自由转载,限制转发其它媒体。创作不易,如果你觉得文章能为你的工作带来启发和借鉴,请打赏作者,后续将持续提供有价值的分享。

最新文章

随机文章