Aru*_*ngh 11 linux x11 package-management linux-kernel buildroot
我已经使用buildroot和busybox开发了我自己的小型 linux 文件系统。我使用linux-2.6.38.8内核根据需要为目标系统(X86)配置和交叉编译。现在文件系统已经构建,但它只有busybox shell,不支持GUI。它没有任何包管理器也是。现在我想在它上面启用 GUI。我检查了/etc但没有任何x11目录或x11.conf文件。它也不支持startx。
How can I install x11(XFree86 or Xorg) on my system Explicitly.
I also want to install a package-manager for my system.
Run Code Online (Sandbox Code Playgroud)
如何做到这一点?
Ubuntu 16.04 主机,Buildroot 2017.02
当前的 Buildroot 有一个 X11 包,它让我们的事情变得“容易”:https : //github.com/buildroot/buildroot/tree/2016.05/package/x11r7
这个 repo 用一个命令为你构建整个系统: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
Run Code Online (Sandbox Code Playgroud)
以下是将这些选项添加到现有配置的方法.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
Run Code Online (Sandbox Code Playgroud)
从 QEMU 内部:
root
startx
Run Code Online (Sandbox Code Playgroud)
图片大小: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/xinitrc到xinit,它在启动 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
Run Code Online (Sandbox Code Playgroud)
这将启动我们的窗口管理器twm(尝试为 Buildroot 具有包的其他管理器之一更改它),以及我们在屏幕上看到的程序。TODO 那exec xterm部分是什么?为什么exec?
x11vnc
当您从模拟器转向真实设备时,x11vnc您无需购买显示器:它会在您的主机中将屏幕作为窗口打开,甚至可以向设备发送鼠标点击。
x11vnc在 Buildroot 上启用包并重建。
要首先在 QEMU 上进行测试,请使用选项(另请参阅如何使用 QEMU 从主机到来宾通过 SSH 进行 SSH?| Unix & Linux Stack Exchange ):
-net nic,model=virtio \
-net user,hostfwd=tcp::5901-:5900
Run Code Online (Sandbox Code Playgroud)
然后在来宾上startx运行:
x11vnc
Run Code Online (Sandbox Code Playgroud)
然后回到主机上:
sudo apt-get install vinagre
vinagre localhost::5901
Run Code Online (Sandbox Code Playgroud)
结果:
另请参阅:如何在没有显示器的情况下设置 Raspberry Pi?| 树莓派堆栈交换
显示管理器(尝试失败)
如果您想完全忘记终端,还可以启用:
X.Org X Window System: 都点击y然后enter进入
X11R7 Applications
xconsole(xdm默认运行)xdm现在,当您启动 QEMU 时,您会看到一个类似于“现代”发行版的图形登录屏幕:
待办事项:无法登录。用户名root/空密码在另一个安装了所有 X11 软件包的测试中对我有用。xdm将日志放在 下/var/log/xdm.log,您可以获得一个 TTY shell 来检查它:How can I ctrl-alt-f# to get to a TTY in a QEMU session? | 询问 Ubuntu
启动显示管理器的调用链是:
/init (由 BusyBox 提供)/etc/inittab 线 ::sysinit:/etc/init.d/rcS/etc/init.d/rcS/etc/init.d/S99xdm/usr/bin/xdm您必须自己构建 X。首先阅读这个 X.Org wiki 条目。
本指南适用于希望从源代码构建 X Window 系统的开发人员。如果您感兴趣的领域仅限于单个包,例如驱动程序或应用程序,请首先与您的操作系统联系以了解开发工具。
至于包管理器,您需要选择一个,满足所有需要的依赖项,然后为其打包(仅仅因为您选择了 dpkg/rpm/whatever,并不意味着 deb/RPM/... 包将神奇地与你的发行版)。来自 Arch Linux 的 Pacman 看起来很容易构建。
| 归档时间: |
|
| 查看次数: |
13583 次 |
| 最近记录: |