如何在我自己的Linux Buildroot系统上安装X11?

如何在我自己的Linux Buildroot系统上安装X11?

我开发了自己的小型 Linux 文件系统构建根目录忙碌盒。我根据需要使用了针对目标系统(X86)配置和交叉编译的linux-2.6.38.8内核。现在文件系统已构建,但它只有busybox shell,并且不支持GUI。它没有任何包管理器现在我想在其上启用 GUI。我检查了/ETC但没有任何x11目录或x11.conf文件。不支持启动x也。

How can I install x11(XFree86 or Xorg) on my system Explicitly.

I also want to install a package-manager for my system.

如何才能实现这一目标?

答案1

Ubuntu 16.04主机,Buildroot 2017.02

在此输入图像描述

当前的 Buildroot 有一个 X11 包,这使我们的事情变得“简单”:https://github.com/buildroot/buildroot/tree/2016.05/package/x11r7

此存储库通过单个命令为您构建整个系统:https://github.com/cirosantilli/linux-kernel-module-cheat/tree/b134f3958884ce1fce2dd9d31d19ab0c0fbe9089#x11

或者,这里是一个预先准备好的.config文件:https://github.com/cirosantilli/buildroot-configs/blob/44b45b5c7f68e44abcda360a2b980f8301901a9a/qemu_x86_64_x11_defconfig

这是我设法摆脱的最小 X11 特定配置是:

BR2_PACKAGE_XAPP_TWM=y
BR2_PACKAGE_XAPP_XCALC=y
BR2_PACKAGE_XAPP_XCLOCK=y
BR2_PACKAGE_XAPP_XEYES=y
BR2_PACKAGE_XAPP_XINIT=y
BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD=y
BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y
BR2_PACKAGE_XDRIVER_XF86_VIDEO_CIRRUS=y
BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBDEV=y
BR2_PACKAGE_XDRIVER_XF86_VIDEO_VESA=y
BR2_PACKAGE_XORG7=y
BR2_PACKAGE_XSERVER_XORG_SERVER=y
BR2_PACKAGE_XTERM=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
BR2_USE_WCHAR=y

以下是如何将这些选项添加到现有的.config是否可以将配置片段与 Buildroot 的 .config 一起使用? |堆栈溢出

我如何找到选项:make menuconfig,使用 搜索选项名称/,然后dependes从向后工作xeyes

不幸的是,您仍然需要知道您在做什么,主要是因为两个不同的包实现一个接口的情况(例如 X.Org Modular 与 KDrive 两者都实现了 X11 服务器),并且默认情况下没有选择任何一个。

这篇文章有很大帮助: 使用 Buildroot 构建小型 X.Org Linux 系统 | agentoss.wordpress.com

然后就是通常的情况:

make BR2_JLEVEL=$(nproc)
qemu-system-x86_64 \
    -enable-kvm \
    -M pc \
    -m 512 \
    -kernel output/images/bzImage \
    -drive file=output/images/rootfs.ext2,if=virtio,format=raw \
    -append root=/dev/vda \
    -net nic,model=virtio \
    -net user

从 QEMU 内部:

root
startx

图片大小:28M。

结果

古老的 X11 系统!

它的行为就像这个视频中一样:https://upload.wikimedia.org/wikipedia/commons/transcoded/5/52/TWM_without_configuration.ogv/TWM_without_configuration.ogv.480p.webm

特别是,这个古老的窗口管理器在菜单栏上没有 X 关闭按钮:您必须:

  • 点击桌面
  • 从菜单中选择“杀死”
  • 选择您想要杀死的窗口

startx然后传递/etc/X11/xinit/xinitrcxinit,它在启动 GUI 后调用它。默认xinitrc包含:

twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login

它启动我们的窗口管理器twm(尝试将其更改为 Buildroot 有软件包的其他管理器之一)以及我们在屏幕上看到的程序。 TODO 那exec xterm部分是什么?为什么exec

x11vnc

在此输入图像描述

当您从模拟器转向真实设备时,x11vnc您无需购买显示器:它将屏幕作为主机中的窗口打开,甚至可以将鼠标点击发送到设备。

在 Buildroot 上启用x11vnc包并重建。

要首先在 QEMU 上进行测试,请使用选项(另请参阅如何使用 QEMU 从主机通过 SSH 连接到来宾? | Unix 和 Linux 堆栈交换 ):

-net nic,model=virtio \
-net user,hostfwd=tcp::5901-:5900

然后在 guest 上startx运行:

x11vnc

回到主机:

sudo apt-get install vinagre
vinagre localhost::5901

结果:

  • 左边,QEMU 运行 X11、x11vnc 和 glmark2
  • 右边,主机上的 vinagre,显示完全相同的东西
  • 我可以点击其中一个并与之交互,另一个会立即更新

也可以看看:如何在没有显示器的情况下设置树莓派? | Raspberry Pi 堆栈交换

显示管理器(尝试失败)

在此输入图像描述

如果您想完全忘记终端,还可以启用:

  • 目标包
    • 图形库和应用程序
      • X.Org X Window System: 都点击y,然后enter进入
        • X11R7 Applications
          • xconsolexdm默认运行)
          • xdm

现在,当您启动 QEMU 时,您将看到一个类似于“现代”发行版的图形登录屏幕:

TODO:无法登录。用户名root/空密码在安装了所有 X11 软件包的另一项测试中对我有用。xdm将日志放在 下/var/log/xdm.log,您可以使用 TTY shell 来检查它:如何在 QEMU 会话中按 ctrl-alt-f# 访问 TTY? |询问 Ubuntu

启动显示管理器的调用链是:

  • /init(BusyBox提供)
  • /etc/inittab线::sysinit:/etc/init.d/rcS
  • /etc/init.d/rcS
  • /etc/init.d/S99xdm
  • /usr/bin/xdm

答案2

您必须自己构建 X。从阅读开始这个 X.Org 维基条目

本指南适用于希望从源代码构建 X Window 系统的开发人员。如果您感兴趣的领域仅限于单个软件包,例如驱动程序或应用程序,请首先咨询您的操作系统以获取开发设施。

至于软件包管理器,您需要选择一个,满足所有需要的依赖关系,然后为其打包内容(仅仅因为您选择了 dpkg/rpm/无论什么,并不意味着 deb/RPM/... 软件包将神奇地与你的发行版)。来自 Arch Linux 的 Pacman 看起来很容易构建。

相关内容