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;那些尚未完成转换的发行版也计划在未来这样做。
Wayland的主要优势如下
性能提升
:在X11下,绘制窗口需要涉及两个独立的应用程序。显示服务器用于在屏幕上创建窗口,并为应用程序提供绘制内容的位置;而窗口管理器则用于定位窗口之间的相对位置,并为窗口添加标题栏和边框。而在Wayland系统下,这两个功能被合并到一个名为合成器(compositor)的单一应用程序中,因此应用程序只需与一个实体通信即可完成窗口绘制,从而提高了性能。
安全性增强
:在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的任何内容时自动启动,因此这一切应该都能无缝工作。
我们还添加了一些新插件。默认启用了“电源”插件,用于监测电源供应问题,如电源电压过低或USB电流过大。如果发生任何问题,将显示通知让你了解情况,并在任务栏上显示一个图标——点击该图标将带你进入一个网页,该网页提供了有关问题的更多信息和可能的解决方法。
另一个新插件是“GPU”,它显示Raspberry Pi的GPU负载图表,类似于现有CPU插件为CPU显示的图表。这个插件默认不启用,但可以通过右键点击任务栏并选择“添加/删除插件”来添加。
正如上文所述,Wayland/Wayfire的工作仍在进行中——我们仍在为Raspberry Pi早期型号的硬件进行优化,并希望能够在适当的时候为所有型号的Raspberry Pi推出Wayland桌面体验。
PipeWire
我们更改了绘制所有图形的方式。与此同时,我们也更改了控制声音的方式。
最初,桌面使用Linux ALSA声音接口与音频硬件进行通信。这种方式虽然可行,但相当原始且存在诸多限制。几年前,我们改用PulseAudio接口,它建立在低级别的ALSA层之上。这增加了更多的灵活性:使得管理蓝牙音频设备等变得更加容易,允许来自多个应用程序的音频混合在一起,并允许在播放时轻松地在不同输出之间切换音频。
在此次发布中,PulseAudio已被更新的PipeWire音频系统所取代。PipeWire在PulseAudio提供的功能基础上进行了拓展,最重要的是为伴随视频的音频提供了更好的支持。它降低了延迟,这对许多应用程序来说至关重要。它更好地管理蓝牙音频设备,能够记住关机时正在使用的设备,并在启动时自动重新连接它们。最后,PipeWire旨在在更安全的Wayland环境中更好地运行,在该环境中,应用程序是相互隔离的。
从用户的角度来看,可以使用任何控制PulseAudio的应用程序来控制PipeWire,因此任务栏上的音量和麦克风控制与在PulseAudio下一样正常工作,但在Bookworm中,它们是与PipeWire而不是PulseAudio进行通信。
网络
图形和声音都是新特性,那么还有什么呢?
在Bullseye版本中,我们推出了NetworkManager网络控制器作为一个可选项,可以在raspi-config中选择。现在,这已成为大多数Linux发行版中标准的网络控制机制,并且也是Bookworm的默认网络控制器,取代了之前的系统dhcpcd。NetworkManager不仅具备dhcpcd的所有功能,还增加了一系列额外功能,包括连接到隐藏的无线网络、连接到虚拟专用网络(VPN)以及将Raspberry Pi用作无线热点。同时,它还为那些希望深入调整网络连接细节的用户提供了更多的自定义选项。
任务栏上的网络插件看起来几乎与Bullseye中控制dhcpcd的插件相同,但现在底部增加了一个“高级选项”项——这允许您访问NetworkManager提供的新功能。
Firefox浏览器
还有一个重大变化是,我们现在提供了第二种浏览器选项,即推出了针对Raspberry Pi优化的Mozilla Firefox版本。
这是我们首次正式支持Firefox——之前,唯一可用的版本是Debian的一个旧版本,而现在我们做了大量工作,以确保在Raspberry Pi上运行最新版本的Firefox时能够获得最佳体验。我们与Mozilla和Firefox社区紧密合作,并将我们的工作成果贡献给上游,以让所有平台的Firefox用户都能受益。
一个关键功能是启用了V4L2编解码器支持,这样Firefox就可以利用Raspberry Pi上的硬件h.264解码器了。在Raspberry Pi的旧型号上,这显著提高了高清视频播放的性能并降低了CPU负载。我们还启用了Widevine DRM支持,这是许多视频流服务所使用的,并且我们还贡献了图形优化,提高了低功耗设备上一系列网站的性能。对于视频通话,我们确保了Raspberry Pi OS上的Firefox可以与CSI摄像头(使用libcamera)和Wayland上的桌面共享即开即用。
技术文档
正如你所期待的,如此大规模的更改对我们的文档产生了巨大的连锁反应,文档团队一直在幕后努力,确保文档能够反映出新的世界状态。这尤其适用于一些我甚至没有空间在这里提到的事情,比如Python模块安装方式的变化。这是一项艰巨的任务,整个
文档栈都发生了很多变化,所以如果你偶然发现一个地方,Bookworm的文档还没有更新,请在论坛里提出问题!
还错过了什么?
在如此重大的变更中,确保旧版本中的所有功能在新版本下仍能正常工作是一项艰巨的任务。尽管我们已竭尽全力将此类问题降至最少,但仍有一些功能未能在此次发布中实现。
过扫描补偿
:在Wayland下,对使用过扫描的显示器进行补偿很复杂,我们目前还未完全解决,因此暂时移除了这一功能。如今,大多数显示器已不再需要此功能,但一旦我们找到最佳解决方案,将会重新加入‌。
系统托盘
:系统托盘(任务栏上应用程序可以放置自己图标的区域)必须使用全新的机制来适应Wayland的安全模型。这意味着,一些应用程序可能需要更新,才能使其图标在系统托盘中显示‌。
远程桌面访问
:Wayland的安全模型阻止了传统的远程桌面访问,因此我们正在使用名为wayvnc的新VNC服务器来替代RealVNC。这在可连接的客户端应用程序方面有一定的限制——我们使用TigerVNC客户端取得了良好的效果‌。
我们移除了一些程序
在推荐软件和完整镜像中:
SenseHAT模拟器目前与Bookworm不兼容——我们正在解决这个问题,并希望能在几周内将其恢复。
Magnifier无障碍工具与Wayfire不兼容,但Wayfire已经内置了(更好的)放大镜功能——只需按ctrl-alt-M即可开启或关闭。
BlueJ和Greenfoot这两款Java集成开发环境与Wayland不兼容,而Sonic Pi与PipeWire不兼容——这些都是第三方程序,因此在其开发者更新之前,我们已将其移除。
以防万一
……
我们所做的这些更改都是为了让Raspberry Pi OS更加符合其他Linux发行版的做法——许多发行版正在或已经完成向Wayland、PipeWire和NetworkManager的过渡。这样,我们就为未来开发奠定了一个良好的基础,同时确保我们的桌面系统与其他大部分Linux桌面生态系统基于相同的底层组件。
虽然我们内部已经使用Wayland和PipeWire近一年时间,但由于更改规模庞大,在某些特定使用场景下,其中一个或另一个可能会引发问题。因此,raspi-config中的高级设置菜单提供了重新启用旧版X11/Openbox显示系统和PulseAudio的选项。你通常不需要使用这些选项,但以防万一,我们还是提供了!
如何获取
我们一直建议,在进行主要版本升级时,应该重新制作SD卡镜像,并从干净的镜像开始。过去,我们曾建议过将现有镜像更新到新版本的步骤,但总是提醒用户这不被推荐,并且用户需自行承担风险。
这一次,由于底层架构的更改非常重大,我们不建议任何将Bullseye镜像升级到Bookworm的步骤;任何此类尝试几乎都会导致桌面无法启动和数据丢失。获取Bookworm的唯一方法是通过
Raspberry Pi Imager制作SD卡,或从
此处下载并使用你选择的工具烧录Bookworm镜像。