背景
在 ARM 嵌入式开发板(EasyEAI-PI2)上实现开机直接显示浏览器打开指定网页,无需桌面环境和登录窗口。系统配置如下:
硬件: ARM64 四核处理器,1GB 内存
系统盘: 3.3GB(空间非常紧张)
外挂盘: 60GB 挂载在 /home
操作系统: Ubuntu 22.04 + Xfce 桌面
需求
开机直接显示浏览器全屏打开百度
无登录窗口
无桌面环境
无浏览器地址栏和按钮
尝试过程
方案一:systemd 直接启动 X11 + 浏览器
思路: 绕过显示管理器,直接用 systemd 启动 X server 和浏览器。
配置文件:
# /etc/systemd/system/kiosk.service
[Unit]
Description=Kiosk Browser
After=systemd-user-sessions.service network-online.target
[Service]
Type=simple
User=lq
Environment=DISPLAY=:0
ExecStart=/usr/bin/startx /usr/local/bin/kiosk.sh -- :0 vt7
Restart=always
[Install]
WantedBy=multi-user.target
问题:
Fatal server error: xf86OpenConsole: Cannot open virtual console 7 (Permission denied)
原因: 非特权用户无法访问 /dev/tty7,即使添加用户组也无法解决。
结论: 此方案在嵌入式设备上权限管理复杂,不适合。
方案二:LightDM 自动登录 + Xfce 自动启动
思路: 使用 LightDM 显示管理器,配置自动登录,然后在 Xfce 中设置应用程序自动启动。
配置:
# /etc/lightdm/lightdm.conf.d/50-autologin.conf
[Seat:*]
autologin-user=lq
autologin-user-timeout=0
autologin-session=xfce
# ~/.config/autostart/browser.desktop
[Desktop Entry]
Type=Application
Exec=epiphany --kiosk-mode https://www.baidu.com
问题:
LightDM 配置语法问题(
[SeatDefaults]已弃用,需用[Seat:*])用户需加入
nopasswdlogin组才能免密登录启动后仍然显示桌面环境
结论: 可以实现自动登录,但无法跳过桌面直接显示浏览器。
方案三:LightDM + 自定义 Kiosk Session
思路: 创建自定义 X session,只启动窗口管理器和浏览器,不启动桌面环境。
配置:
# /usr/share/xsessions/kiosk.desktop
[Desktop Entry]
Name=Kiosk
Exec=/usr/local/bin/kiosk-session.sh
Type=Application
# /usr/local/bin/kiosk-session.sh
#!/bin/bash
xset s off
xset -dpms
matchbox-window-manager &
epiphany --kiosk-mode https://www.baidu.com
问题:
Epiphany 浏览器的
--kiosk-mode参数无效浏览器仍然显示地址栏和窗口按钮
尝试用 xdotool 移动窗口位置隐藏地址栏,但效果不理想
结论: Epiphany 不支持真正的 kiosk 模式。
方案四:安装 Chromium 浏览器
思路: Chromium 支持 --kiosk 参数,可以实现真正的全屏 kiosk 模式。
问题:
E: 您在 /var/cache/apt/archives/ 上没有足够的可用空间。
Ubuntu 22.04 的 chromium-browser 包实际上是一个 snap 包装器:
=> Installing the chromium snap
error: cannot communicate with server: timeout exceeded while waiting for response
原因:
系统盘只有 3.3GB,频繁空间不足
Snap 需要连接 snap store,嵌入式设备网络受限
Snap 安装路径无法更改到 /home 分区
结论: Snap 机制在嵌入式离线/受限环境下不适用。
最终方案:Firefox 便携版 + LightDM Kiosk Session
思路: 下载 Firefox 便携版到 /home 分区,配合 LightDM 的自定义 session。
步骤 1:下载 Firefox 便携版
cd /home/lq
wget "https://download.mozilla.org/?product=firefox-latest&os=linux64-aarch64&lang=zh-CN" -O firefox.tar.bz2
tar -xjf firefox.tar.bz2
Firefox 便携版解压即用,不需要安装到系统目录。
步骤 2:创建 Kiosk 启动脚本
#!/bin/bash
# /home/lq/firefox/kiosk.sh
# 禁用屏保和电源管理
xset s off
xset -dpms
xset s noblank
# 隐藏鼠标光标
unclutter -idle 0 &
# 启动轻量级窗口管理器(无标题栏)
matchbox-window-manager -use_titlebar no -use_cursor no &
sleep 2
# 启动 Firefox kiosk 模式
/home/lq/firefox/firefox --kiosk https://www.baidu.com
步骤 3:创建 Kiosk Session
# /usr/share/xsessions/kiosk.desktop
[Desktop Entry]
Name=Kiosk
Comment=Firefox Kiosk Mode
Exec=/home/lq/firefox/kiosk.sh
Type=Application
DesktopNames=Kiosk
步骤 4:配置 LightDM 自动登录
# /etc/lightdm/lightdm.conf.d/50-autologin.conf
[Seat:*]
autologin-user=lq
autologin-user-timeout=0
autologin-session=kiosk
步骤 5:配置用户权限
sudo groupadd -r autologin
sudo groupadd -r nopasswdlogin
sudo usermod -aG autologin,nopasswdlogin lq
最终效果
✅ 开机自动登录(无需输入密码)
✅ 直接显示 Firefox 全屏打开百度
✅ 无桌面环境
✅ 无浏览器地址栏和按钮
✅ 无鼠标光标
经验总结
1. 空间管理
嵌入式设备系统盘通常很小,需要注意:
清理 apt 缓存:
rm -rf /var/cache/apt/archives/*.deb清理日志:
journalctl --vacuum-size=5M删除不需要的语言包和字体
大型软件安装到外挂盘
2. Snap 的坑
Ubuntu 22.04 很多软件(chromium、firefox)转向 snap:
Snap 需要网络连接 snap store
Snap 安装路径固定,无法更改
嵌入式/离线环境建议使用便携版或 deb 包
3. LightDM 自动登录
关键配置点:
使用
[Seat:*]而非[SeatDefaults]用户需加入
autologin和nopasswdlogin组autologin-session必须对应/usr/share/xsessions/中的 .desktop 文件
4. 浏览器 Kiosk 模式
浏览器 | Kiosk 支持 | 说明 |
|---|---|---|
Chromium | ✅ | 完美支持,但 snap 安装困难 |
Firefox | ✅ | 支持,推荐便携版 |
Epiphany | ❌ |
|
参考命令
# 查看可用 session
ls /usr/share/xsessions/
# 查看显示管理器状态
systemctl status lightdm
# 查看 LightDM 配置
lightdm --show-config
# 查看磁盘空间
df -h
# 手动测试 kiosk 脚本
DISPLAY=:0 /home/lq/firefox/firefox --kiosk https://www.baidu.com
开机情况参考视频
