基于 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 操作.

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82549.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82549.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82549.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【機器學習及深度學習】機器學習模型的誤差:偏差、方差及噪聲

機器學習模型的誤差分析 V1.0機器學習模型的衡量準則概念引入機器學習模型誤差分析誤差出現的原因及消除 V1.0 機器學習模型的衡量準則 衡量機器學習模型的好壞可以考慮以下幾個方面: 偏差(Bias): 在充分訓練的情況下&#xff0…

混沌映射(Chaotic Map)

一.定義 混沌映射是指一類具有混沌行為的離散時間非線性動力系統,通常由遞推公式定義。其數學形式為 ,其中 f 是非線性函數,θ 為參數。它們以簡單的數學規則生成復雜的、看似隨機的軌跡,是非線性動力學和混沌理論的重要研究對象…

多群組部署

相關概念 星形拓撲和并行多組 如下圖,星形組網拓撲和并行多組組網拓撲是區塊鏈應用中使用較廣泛的兩種組網方式。 星形拓撲:中心機構節點同時屬于多個群組,運行多家機構應用,其他每家機構屬于不同群組,運行各自應用…

基于vue3-elemenyui的動態列案例

本案例主要是實現數據模型的解析以及實現el-table的動態列加載。 1.數據結構 公司A\B\C\測試1,是列,功能-url,是行數據,其中功能x是行頭。 this.rawData [{companyName: "公司A",rpWebShows: [{ "功能1": &…

Kerberos面試內容整理-Kerberos 與 LDAP/Active Directory 的集成

Kerberos 通常不會單獨存在于企業環境中,而是與目錄服務相結合以提供完整的身份管理方案。其中,Active Directory (AD) 是 Kerberos 集成應用的典型代表。Active Directory 是微軟的目錄服務,實現了 LDAP(輕量級目錄訪問協議)目錄和 Kerberos 認證的融合。在 AD 域控制器上…

Oracle DG庫控制文件IO錯誤導致宕機的應急處理

Oracle DG庫控制文件IO錯誤導致宕機的應急處理 事故現場偷天換日棋差一招事故現場 一套Oracle 19c DG環境的備庫宕機。 根據告警時間檢查實例宕機時間點附近的alert日志有如下重要信息: 2025-05-25T23:34:10.705385+08:00 KCF: read, write or open error, block=0x3377ee …

《前端面試題:前端盒模型》

前端盒模型完全指南:從原理到面試實戰 🎁 端午快樂! 各位前端小伙伴,端午節快樂!🥮 在這個粽葉飄香的時節,愿你的代碼如龍舟般一往無前,bug 如咸蛋黃般被完美包裹!今天我…

BERT:讓AI真正“讀懂”語言的革命

BERT:讓AI真正“讀懂”語言的革命 ——圖解谷歌神作《BERT: Pre-training of Deep Bidirectional Transformers》 2018年,谷歌AI團隊扔出一篇核彈級論文,引爆了整個NLP領域。這個叫BERT的模型在11項任務中屠榜,甚至超越人類表現…

爬蟲入門:從基礎到實戰全攻略

🧠 一、爬蟲基礎概念 1.1 爬蟲定義 爬蟲(Web Crawler)是模擬瀏覽器行為,自動向服務器發送請求并獲取響應數據的一種程序。主要用于從網頁中提取結構化數據,供后續分析、展示或存儲使用。 1.2 爬蟲特點 數據碎片化&…

uni-app學習筆記二十一--pages.json中tabBar設置底部菜單項和圖標

如果應用是一個多 tab 應用,可以通過 tabBar 配置項指定一級導航欄,以及 tab 切換時顯示的對應頁。 在 pages.json 中提供 tabBar 配置,不僅僅是為了方便快速開發導航,更重要的是在App和小程序端提升性能。在這兩個平臺&#xff…

行業分析---小米汽車2025第一季度財報

1 背景 最近幾年是新能源汽車的淘汰賽,前短時間比亞迪再次開始了降價,導致一片上市車企的股價大跌,足見車圈現在的敏感度。因此筆者會一直跟蹤新勢力車企的財報狀況,對之前財報分析感興趣的讀者朋友可以參考以下博客:…

Python 解釋器安裝全攻略(適用于 Linux / Windows / macOS)

目錄 一、Windows安裝Python解釋器1.1 下載并安裝Python解釋1.2 測試安裝是否成功1.3 設置pip的國內鏡像------永久配置 二、macOS安裝Python解釋器三、Linux下安裝Python解釋器3.1 Rocky8.10/Rocky9.5安裝Python解釋器3.2 Ubuntu2204/Ubuntu2404安裝Python解釋器3.3 設置pip的…

考研系列—操作系統:沖刺筆記(1-3章)

目錄 第一章 計算機系統概述 1.基本概念 2.內核態和用戶態 3.中斷(外中斷)、異常(內中斷-與當前執行的) 4.系統調用 5.操作系統引導程序 2021年真題: 6.操作系統結構 大綱新增 (1)分層結構 (2)模塊化 (3)外核 7.虛擬機 第二章 進程管理 1.畫作業運行的順序和甘…

監控 100 臺服務器磁盤內存CPU利用率

監控 100 臺服務器磁盤,內存,CPU利用率腳本 以下是一個優化后的監控腳本,用于同時監控100臺服務器的磁盤、內存和CPU利用率,并支持并發執行以提高效率: #!/bin/bash # 服務器監控腳本 - 支持并發獲取100臺服務器系統指標 # 功能…

[5-02-04].第01節:Jmeter環境搭建:

JMeter筆記大綱 Jmeter依賴于JDK,所以必須確保當前計算機上已經安裝了JDK,并且配置了環境變量 一、JMeter概述: 1.1.JMeter是什么: JMeter是Appache組織使用java開發的一款測試工具 可以用于對服務器、網絡或對象模擬巨大的負載…

【獸醫處方專用軟件】佳易王獸醫電子處方軟件:高效智能的寵物診療管理方案

一、軟件概述與核心優勢 (一)試用版獲取方式 資源下載路徑:進入博主頭像主頁第一篇文章末尾,點擊卡片按鈕;或訪問左上角博客主頁,通過右側按鈕獲取詳細資料。 說明:下載文件為壓縮包&#xff…

MapReduce(期末速成版)

起初在B站看3分鐘的速成視頻,感覺很多細節沒聽懂。 具體例子解析(文件內容去重) 對于兩個輸入文件,即文件A 和文件B,請編寫MapReduce 程序,對兩個文件進行合并,并剔除 其中重復的內容,得到一個新的輸出文件…

Java高級 | 【實驗四】Springboot 獲取前端數據與返回Json數據

隸屬文章: Java高級 | (二十二)Java常用類庫-CSDN博客 系列文章: Java高級 | 【實驗一】Spring Boot安裝及測試 最新-CSDN博客 Java高級 | 【實驗二】Springboot 控制器類相關注解知識-CSDN博客 Java高級 | 【實驗三】Springboot …

從零打造AI面試系統全棧開發

🤖 AI面試系統開發完整教程 📋 項目概述 本教程將帶你從零開始構建一個完整的AI面試系統,包含前端、后端、AI集成和部署的全流程。 源碼地址 技術棧 前端: React TypeScript Vite Vaadin Components后端: Spring Boot Spring Securi…

【硬件】PCIe協議 | 電腦的高速公路

文章目錄 PCIe | 外圍設備高速互聯通道(peripheral component interconnect express)的核心概念和應用 基礎概念 1.1 電腦內的”高速“,連接CPU、顯卡、SSD(固態硬盤)等核心組件;數據傳輸速度極快&#xff…