KIOSK - 在 Ubuntu-Frame 中的 Ubuntu Core 20 上运行 Firefox Snap

KIOSK - 在 Ubuntu-Frame 中的 Ubuntu Core 20 上运行 Firefox Snap

如果可以运行 snap 版本,请回答火狐Ubuntu Core 32 位物联网之内Ubuntu 框架

我目前正在使用 Raspberry Pi 4 (4GB),但计划将 SD 卡移至 Raspberry Pi Zero 2W(因此使用32 位 armhf架构的兼容性,尽管Pi Zero 2 是 64 位?)依据本文 (欣赏表演可能会让人无法忍受)

我有成功地关注本指南使用wpe-webkit-mir-kiosk但是,如果我导航到某些页面,浏览器似乎会崩溃,并且对于我的使用情况来说似乎不太稳定。此外,我希望使用的 Web 应用程序仅正式支持 Linux 上的 Firefox、Windows 上的 Edge 和 Android 上的 Chrome(来自开发者)

  • 看起来Ubuntu 框架支持本地显示韦兰。我不知道这是否会取代米尔亭 (我也尝试过通过 Wayland 提供显示输出)
  • 火狐在最新版本中支持 Wayland。Firefox MOZ_ENABLE_WAYLAND=1无法设置为守护进程,因此不会像其他 snap 包一样在启动时启动。
  • 这些是所有支持的 snap 包Ubuntu 核心 snap install ubuntu-frame | snap install firefox

我在 Pi 4 上运行了 Ubuntu Core 20(32 位),并成功安装了所有 snap 包,但我只是不知道如何操作,或者是否可以让 Firefox 连接 Wayland 显示输出?

目前,我在启动 Firefox 时收到以下信息:Error: no DISPLAY environment variable specified

我曾尝试过本指南但是由于我之前没有使用过 snap 包,这确实超出了我的理解范围,尽管我相信从我的专业经验来看,我对这些概念有很好的理解。

我不知道下面的内容是否有帮助,我需要以 root 用户身份运行 Firefox 吗?

Ubuntu 核心:ubuntu-frame 在 Core 上以 root 身份运行,因此 Wayland 套接字位于/运行/用户/0/wayland-0

强制使用$DISPLAY环境变量显然不会成功。

我觉得这应该是可行的,非常感谢任何关于前进方向的建议。一旦完成,将非常乐意分享/博客整个构建。实际上,它应该是一个不错的轻量级客户端浏览器信息亭。

答案1

要实现这一目标,需要采取许多步骤。

1/ 测试 Firefox 是否启动:

在 shell 中,以 root 身份运行(使用sudo -i以成为 root ):

WAYLAND_DISPLAY=wayland-0 MOZ_ENABLE_WAYLAND=1 firefox http://www.askubuntu.com

2/ 启动时自动运行 ubuntu-frame

如果您不是使用 Ubuntu,您可能需要运行一次:

snap set ubuntu-frame daemon=true

您还应该删除 mir 包(否则会占用内存):

snap remove wpe-webkit-mir-kiosk

3/ 启动时自动启用 Firefox

您需要配置 systemd 服务。为此,您需要创建一个文件/etc/systemd/system/firefox-frame.service内容如下:

[Unit]
Description=Firefox Display
After=snap.ubuntu-frame.daemon.service
After=getty.target
Conflicts=display-manager.service

[Service]
Type=simple
Environment=HOME=/root
Environment=WAYLAND_DISPLAY=wayland-0
Environment=MOZ_ENABLE_WAYLAND=1
Environment=XDG_RUNTIME_DIR=/run/user/0
Environment=XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus
ExecStart=/usr/bin/firefox --kiosk http://www.askubuntu.com
Nice=15

[Install]
WantedBy=default.target

用以下方法测试一下(“firefox-frame”是上面文件的名称)

systemctl daemon-reload
systemctl start firefox-frame

如果一切正常,你可以使用以下命令启用它

systemctl enable firefox-frame

PS:我目前正在使用 Debian,带有原生的 Firefox-esr。

答案2

在传统桌面会话中开发的 snap 与为 IoT 设备开发的 snap 之间存在差异。

Firefox snap 由 Mozilla 维护(从https://snapcraft.io/firefox) 并针对传统桌面会话 (仅)。据我所知,目前还不指望它能在 Ubuntu Core 上运行。

要让 Firefox 在 Ubuntu Core 上作为守护进程运行,需要对 snap 打包进行一些(重新)工作。我怀疑 Mozilla 团队是否有兴趣做这项工作,但我没有问过他们。

如果您有兴趣尝试重新打包,我在此 Wiki 上记录了该过程和一些潜在问题:使用 Ubuntu Frame 嵌入 IoT GUI

祝你好运!

相关内容