Wayland/Weston的fbdev后端

fedora 25发布有一段时间了,其最突出的特色就是用wayland取代了X。Wayland 依赖 libkms(Kernel ModeSetting, 内核模式设定。显示器的分辨率和色深加在一起被成为模式),而libkms是包含在DRM(Direct Rendering Manager)里面的。Intel的开源Linux显卡驱动、AMD的开源Linux显卡驱动都基于DRM,Nvidia也在自己的封闭Linux显卡驱动中提供了libkms功能,在Intel、AMD、Nvidia的显卡上都能良好的运行Wayland。上层的桌面系统,如KDE,Gnome等都支持使用wayland。
可是virutalbox没有DRM支持,其内核驱动也没有提供libkms支持。
我看到了一则新闻《An FBDEV Compositor Back-End For Wayland/Weston》,文中他们用nouveaufb启动了wayland。我便自信满满的认为可以通过fbdev,让virtualbox支持wayland。
于是开工。
1、首先干掉virtualbox的客户端内核模块和X驱动。
emerge -C app-emulation/virtualbox-guest-additions x11-drivers/xf86-video-virtualbox
2、开启内核中的vesafb驱动,重新配置编译内核。配置引导。
genkernel --menuconfig --lvm --install all
  Device Drivers --->
    Graphics support --->
      Frame buffer Device --->
        [*] VESA VGA graphics support
vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="dolvm vga=0x315"
其中vga内核参数的值参看内核文档https://www.kernel.org/doc/Documentation/fb/vesafb.txt
grub-mkconfig -o /boot/grub/grub.cfg
3、重新启动到sddm,选择会话为“Plasma(wayland)”,输入用户密码登录,黑屏了,等了,等了半天,还是黑屏。
于是怀疑vesafb的质量不行,不足以运行wayland。比如gentoo wiki就没有vesafb的文档,而有uvesafb的文档。网上还提到有个项目叫vesa-tng,它的后辈就是uvesafb。于是按照gentoo wiki uvesafb搞uvesafb
genkernel --no-clean --no-mrproper --menuconfig --lvm --install all
Device Drivers  --->
   <*> Connector - unified userspace <-> kernelspace linker  --->
   Graphics support  --->
      Frame buffer Devices  --->
         [*] Support for frame buffer devices --->
            [*] Enable firmware EDID
            <*> Userspace VESA VGA graphics support
emerge -1a dev-libs/klibc
emerge -a sys-apps/v86d
genkernel --no-clean --no-mrproper --menuconfig --lvm --install all
General setup  --->
    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
    (/usr/share/v86d/initramfs) Initramfs source file(s)
vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="dolvm video=uvesafb:800x600-32,mtrr:3,ywrap"
grub-mkconfig -o /boot/grub/grub.cfg
中间还遇到v86d不能编译的问题,提示:error: unknown type name ‘atomic_t’,参考了这篇文档解决了
[solved] sys-apps/v86d-0.1.10 fails to compile
https://forums.gentoo.org/viewtopic-t-1058238.html?sid=08a2ec4ff8567c644a1adb933663230d
重新启动到sddm,选择会话为“Plasma(wayland)”,输入用户密码登录,还是黑屏了,等了,等了半天,仍然黑屏。
我陷入困境了,重读《An FBDEV Compositor Back-End For Wayland/Weston》这则新闻,看到了一句话“This is an initial version of an fbdev backend for Weston”。原来不是wayland有了fbdev后端,而是wayland's weston有了fbdev后端。于是安装weston:
vi /etc/portage/package.use/default.use
dev-libs/weston fbdev
emerge -a weston

按照gentoo wiki编写.bash_profile文件

#!/bin/sh
if test -z "${XDG_RUNTIME_DIR}"; then
    export XDG_RUNTIME_DIR=/tmp/${UID}-runtime-dir
    if ! test -d "${XDG_RUNTIME_DIR}"; then
        mkdir "${XDG_RUNTIME_DIR}"
        chmod 0700 "${XDG_RUNTIME_DIR}"
    fi
fi
source .bash_profile

weston --help

发现可以用-B 指定后端,其中就有fbdev-backend.so
于是运行

weston -B fbdev-backend.so


猜你喜欢

转载自blog.csdn.net/lophyxp/article/details/54895891