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驱动。
于是怀疑vesafb的质量不行,不足以运行wayland。比如gentoo wiki就没有vesafb的文档,而有uvesafb的文档。网上还提到有个项目叫vesa-tng,它的后辈就是uvesafb。于是按照gentoo wiki uvesafb搞uvesafb
[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:
于是运行
可是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