2023是个奇数年份,所以Debian发布了一个新的主要版本,而我们现在也相应地发布了Raspberry Pi OS的新版本。这次的Debian版本被命名为Bookworm。(你可能知道,Debian的版本都是以迪士尼/皮克斯的《玩具总动员》系列中的角色来命名的,但现在版本太多了,那些你可能听说过的角色都已经被用过了。Bookworm是《玩具总动员3》中的一个小角色——不,其实我也不记得他了……)
那么,Bookworm有什么新特性呢?嗯,其实没有太多……但又可以说几乎什么都是新的。让我来解释一下。Debian Bookworm本身主要是由上一个版本Debian Bullseye中的软件的增量更新组成的。虽然有一些小变化——你可以在这里查看列表——但它们大多不会影响Raspberry Pi用户。所以,Bookworm本身并没有带来太多变化。然而,在过去一年左右的时间里,我们一直在对Raspberry Pi Desktop进行一些重大的架构调整,这些调整首次在Bookworm版本中推出。所以,你可能会在这里注意到一些不同。
Wayland
最重要的是,我们已将显示系统从X11更换为Wayland。在过去大约35年的时间里,包括Raspberry Pi Desktop在内的大多数Unix桌面环境都是基于X11窗口系统的。但毫不奇怪的是,作为一款已有几十年历史的软件,X11在现代计算机上的使用存在诸多限制。为了解决这些问题,大多数Linux发行版都在转向使用Wayland;那些尚未完成转换的发行版也计划在未来这样做。
:在X11下,所有应用程序都与显示服务器进行双向通信,因此它们之间可以相互交换信息。而在Wayland下,应用程序在合成器级别上都是相互隔离的,因此一个应用程序无法看到另一个应用程序正在执行的操作,从而增强了安全性。
Wayland本身仅是一个协议。要使用它,你需要一个支持Wayland的合成器。在之前的Raspberry Pi OS版本中,我们使用了Mutter窗口管理器,它可以作为Wayland合成器工作。但事实证明,这是一个不佳的选择;它相对缓慢且笨重,而且有点过时,这就是为什么我们在Bullseye版本下仅提供实验性的Wayland支持。对于Bookworm版本,我们使用了一个名为Wayfire的合成器。它使用了一个名为wlroots的标准Wayland库,该库被多个现代Wayland合成器所采用。由于Wayfire在Raspberry Pi上作为Wayland合成器的表现远胜于Mutter,因此Wayland现在已成为桌面的默认操作模式。(但有一点需要注意——目前,Wayland仅默认在Raspberry Pi 4和5上启用。Wayfire在较早平台上的性能仍在优化中,因此它们将继续运行旧的X11显示服务器和Openbox窗口管理器,但未来这些平台也将切换到Wayfire。)如果你在Pi 4或5上启动Raspberry Pi OS,你现在将获得一个Wayfire桌面。它看起来应该与你熟悉的Bullseye桌面几乎一模一样,但外表可能会欺骗你——我们付出了很多努力才使这两个桌面环境看起来相同!
屏幕顶部仍然有一个任务栏,允许你启动应用程序并查看各种系统的状态,但这是一个全新的应用程序。在Bullseye版本下,这个任务栏应用程序是lxpanel,但现在它已被wf-panel-pi(即“Raspberry Pi的Wayfire面板”的简称)所取代。wf-panel-pi基于Wayfire开发者的示例面板应用程序wf-shell,但我们对其进行了大量修改,使其外观和功能都与lxpanel相似。这项工作的最大部分是将所有现有的lxpanel插件(如控制音量、网络、蓝牙等的图标)移植到wf-panel-pi上,使它们都能与wf-panel-pi配合使用。
桌面背景本身仍然由Bullseye版本下使用的旧版pcmanfm文件管理器绘制,但已对其进行了修改,使其使用Wayland作为显示协议而非X11.因此它现在是一个原生的Wayland应用程序。单个应用程序在Wayland环境中的工作方式取决于其编写方式。标准的图形工具包,如GTK和Qt,现在都已兼容Wayland——它们可以检测到使用它们的应用程序正在Wayland环境中运行,然后将所有图形调用通过Wayland协议进行路由,作为原生的Wayland应用程序运行。Raspberry Pi Desktop预安装的大多数应用程序都使用了这些工具包之一,因此现在它们都作为Wayland应用程序运行。
有些应用程序使用的是不兼容Wayland的工具包,或者完全绕过工具包直接调用X11.虽然这些应用程序看似无法在Wayland上运行,但我们有解决办法。我们的Wayland实现中包含了一个名为XWayland的软件——这是一个基于Wayland的X11显示服务器。它负责处理X的所有非图形部分,并将任何图形部分传递给底层的Wayland实现。XWayland设计为在应用程序请求X的任何内容时自动启动,因此这一切应该都能无缝工作。
……
我们所做的这些更改都是为了让Raspberry Pi OS更加符合其他Linux发行版的做法——许多发行版正在或已经完成向Wayland、PipeWire和NetworkManager的过渡。这样,我们就为未来开发奠定了一个良好的基础,同时确保我们的桌面系统与其他大部分Linux桌面生态系统基于相同的底层组件。
虽然我们内部已经使用Wayland和PipeWire近一年时间,但由于更改规模庞大,在某些特定使用场景下,其中一个或另一个可能会引发问题。因此,raspi-config中的高级设置菜单提供了重新启用旧版X11/Openbox显示系统和PulseAudio的选项。你通常不需要使用这些选项,但以防万一,我们还是提供了!
如何获取
我们一直建议,在进行主要版本升级时,应该重新制作SD卡镜像,并从干净的镜像开始。过去,我们曾建议过将现有镜像更新到新版本的步骤,但总是提醒用户这不被推荐,并且用户需自行承担风险。
这一次,由于底层架构的更改非常重大,我们不建议任何将Bullseye镜像升级到Bookworm的步骤;任何此类尝试几乎都会导致桌面无法启动和数据丢失。获取Bookworm的唯一方法是通过Raspberry Pi Imager制作SD卡,或从此处下载并使用你选择的工具烧录Bookworm镜像。