当前位置: 首页 > news >正文

基于 Alpine 定制单功能用途(kiosk)电脑

前言

故事回到 7 年前, 在网上冲浪的时候发现了一篇介绍使用 Ubuntu 打造 kiosk 单功能用途电脑的文章, 挺好玩的, 就翻译了一下并比葫芦画瓢先后用了 CentOS 7, ArchLinux 进行了实现. 历史文章:
翻译 - 使用Ubutnu14.04和Chrome打造单功能用途电脑(大屏展示电脑)
使用CentOS 7+lightdm+Openbox+Chromium打造单功能用途电脑(大屏展示电脑)
ArchLinux+lightdm+Openbox+Chromium定制单功能用途电脑

再来介绍一下什么是 kiosk, 直接看下图, 保证你在许多公共场合见到过类似这样的一体机, 当然人家还会集成摄像头扫码, NFC 刷卡等外设.
在这里插入图片描述
至于这些设备使用的底层的操作系统, 基本上都是 Windows 或者 Android. 之前使用 CentOS, ArchLinux 实现的过程其实都还比较繁琐, 也比较重. 接下来就是本次挑战所用到的主角 Alpine Linux 登场了. 它本来用的比较多的场景就是在 Docker 里面作为基础镜像, 因为足够轻量. 官网下载的最新版本系统 IOS 镜像文件仅有 200 多 MB, 对于硬件资源的要求也更不用说有多低门槛了. 好了, 下面直接进入主题.

创建虚拟机

  • 首先从清华镜像站下载 Alpine Linux 最新版本的 ISO 镜像文件:
    https://mirrors.tuna.tsinghua.edu.cn/alpine/latest-stable/releases/x86_64/alpine-standard-3.22.0-x86_64.iso

  • 在 VirtualBox 中创建一台虚拟机, 选择下载好的 ISO 镜像文件.
    在这里插入图片描述
    内存随便给个 2G, CPU *2
    在这里插入图片描述
    硬盘 8G 就够了
    在这里插入图片描述

  • 创建好虚拟机后, 我们再打开它的 Settings, 改一下网络模式用 Bridged Adapter 并选中我们物理机的本地网卡. 这样可以将虚拟机直接对接到和物理机相同的网络环境中, 方便我们后续通过 SSH 远程连接访问.
    在这里插入图片描述

安装 Alpine 系统

  • 启动虚拟机后, 会自动从 ISO 引导到命令行界面, 用 root 用户登录(没有密码)
    在这里插入图片描述
  • 运行 setup-alpine 启动安装程序, 使用下面回复:
  1. Keymap: none
  2. Hostname: 自己写
  3. Interface: eth0
  4. Manual network: n
  5. New root password: 自己写
  6. Timezone: Asia/Shanghai
  7. Proxy: none
  8. NTP client: busybox
  9. APK Mirror: 14 清华源
  10. Setup a user: 自己写 注意这里需要单独创建一个新的普通用户, 给后面浏览器运行的时候用
  11. ssh server: openssh
  12. Disk to use: sda
  13. Use it: sys 注意这个需要指定安装方式使用 sys 即当成安装到本地磁盘的系统
  14. Erase and continue: y

完整安装步骤响应截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 安装完毕后, 将 ISO 从虚拟机中移除, 然后执行 reboot 重启即可进入本地磁盘中的系统.

配置 kiosk

  • 从本地启动的系统使用普通用户 lpwm 和密码登录后, 先运行 ip a 检查当前 IP 地址
    在这里插入图片描述
  • 接下来我们就可以在物理机上通过 SSH 使用安装过程中新创建的普通用户 lpwm 进行远程登录, 这样可以方便我们复制粘贴命令
    在这里插入图片描述
  • 先在当前登录的普通用户状态下创建 X 桌面环境的配置文件
echo -e "#!/bin/sh\nopenbox-session &\nfirefox -kiosk https://www.bing.com" > ~/.xinitrc && chmod +x ~/.xinitrc

展开解释一下配置文件中执行的两条命令:
openbox-session & 在后台运行 openbox 会话进程, 用于提供基础的桌面环境支持.
firefox -kiosk https://www.bing.com 以 kiosk 模式启动 Firefox 并访问 Bing. 该模式下鼠标右键不可用. 相关介绍: Firefox for Enterprise Kiosk mode

  • 切换到 root 用户后安装桌面环境所需的最少依赖环境
susetup-xorg-base && apk add openbox font-noto-cjk firefox

注:
setup-xorg-base 是 Alpine Linux 中的一个脚本,用于安装 X Window System(Xorg)的基础组件。它提供了一个简单的安装方式,适用于需要图形界面的环境。
openbox 是一款轻量级、高度可定制的开源窗口管理器,适用于 Linux 和其他类 Unix 系统。
font-noto-cjk 是一个开源的字体家族,由 Google 的 Noto 字体项目开发,专门设计用于覆盖中文(简体与繁体)、日文和韩文(CJK)的字符。
firefox 不用说了吧

  • [可选] 为 Firefox 创建策略配置, 禁止用户访问开发者工具(F12)
echo '{"policies": {"DisableDeveloperTools": true}}' | tee /usr/lib/firefox/distribution/policies.json
  • 再返回 Virtualbox 的虚拟机中, 运行 startx 启动桌面环境, 直接打开了 kiosk 模式下的 Firefox 并访问了指定的 URL.
    在这里插入图片描述

配置开机自动登录

至此, 我们已经实现了主要的功能, 但是系统每次启动后还需要手动登录用户并且运行 startx 才可以进入全屏的 kiosk 界面. 下面继续修改 Alpine 配置实现开机自动以 lpwm 用户登录并启动 xorg (startx)

# 注意以 root 身份下执行# 添加 agetty 包
apk add agetty# 编辑配置文件
vi /etc/inittab

tty1 开头的行注释掉, 插入下面内容:

tty1::respawn:/sbin/agetty --autologin lpwm --noclear tty1 linux

参考文档: TTY Autologin
在这里插入图片描述
继续为普通用户创建登录自动运行的脚本

su - lpwm
vi ~/.profile

粘贴下面内容保存退出:

if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; thenstartx
fi

reboot 重启

最终效果

在这里插入图片描述

后记

相较于之前使用 CentOS/ArchLinux 作为基础系统的方式, Alpine Linux 在完全配置后的磁盘占用空间仅有 1.1GB, 可以说是相当迷你了:
在这里插入图片描述
经过测试, 在 kiosk 模式下的 Firefox 中还可以正常播放视频以及声音, 完美~
如果需要临时切换到命令行中进行系统调试, 还可以通过快捷键 Ctrl + Alt + F2 切换到 tty2 会话 (最多到 F6, inittab 中预先定义的) 进行 CLI 操作.

在这里插入图片描述

相关文章:

  • 苹果电脑深度清理,让老旧Mac重焕新生
  • ios tableview吸顶
  • 【机器学习基础】机器学习入门核心算法:多分类与多标签分类算法
  • 深入探讨redis:缓存
  • 【Part 3 Unity VR眼镜端播放器开发与优化】第二节|VR眼镜端的开发适配与交互设计
  • World of Warcraft Hunter [Grandel] [Ancient Petrified Leaf]
  • C++ 标准输入输出 -- <iostream>
  • 开源的JT1078转GB28181服务器
  • API 版本控制:使用 ABP vNext 实现版本化 API 系统
  • Arch安装megaton
  • 湖北理元理律所:企业债务重组中的“法律缓冲带”设计
  • 服务器间文件传输
  • 好用的C/C++/嵌入式 IDE: CLion的下载安装教程(保姆级教程)
  • Python----目标检测(《YOLOv3:AnIncrementalImprovement》和YOLO-V3的原理与网络结构)
  • 5.RV1126-OPENCV 图形计算面积
  • Python----目标检测(《YOLO9000: Better, Faster, Stronger》和YOLO-V2的原理与网络结构)
  • Node.js 项目调试指南
  • 「Java教案」算术运算符与表达式
  • 机器人自动火焰切割H型钢的系统设计与应用
  • 云计算数据治理
  • 公司有域名的怎么建设网站/常用的seo工具的是有哪些
  • 科技词语/深圳seo优化电话
  • 武汉网站制作 费用/外贸推广有哪些好的方式
  • 网站建设地址北京昌平/常州网站制作维护
  • 娄底建设网站公司/今日热点新闻素材
  • 珠海手机微信网站建设小程序开发/网推团队