作者:陸向陽

用樹莓派電腦來打造Kiosk資訊亭(圖片來源:樹莓派官網)
所謂Kiosk資訊亭、資訊服務亭可能太學名,但各位多少使用過便利店的ibon、FamiPort吧?那就是服務亭,或者現在在麥當勞、漢堡王的點餐機也算是。
資訊亭的背後其實就是嵌入式電腦,有的也是用樹莓派,現在公眾場合常用到的數位看板(Digital Signage)也是。想把樹莓派變成資訊亭的背後電腦,好像就是把樹莓派的HDMI輸出接到顯示器,然後把樹莓派放到顯示器後面即可,這確實沒錯,但軟體設定上卻有許多細節步驟,以下簡單說明。
首先,假定各位已經把一些基礎搞定了,包含樹莓派硬體(以第四代樹莓派為主)安裝、格式化記憶卡(建議最少16GB)、把Raspberry Pi OS(要選擇有桌面環境的版本)放入等。然後要設定主機名稱,例如kioskpi.local,接著是設定一組帳號密碼(假定使用者為pi,密碼為123),若要使用無線的話則設定一個SSID。
之後在本機端進入終端機(terminal)模式,或者是用有線無線方式遠端登入也可以,先將剛安裝好的Raspberry Pi OS進行一次相關更新,更新後重新開機:
$ sudo apt full-upgrade
$ sudo reboot
接著要安裝兩個應用程式:xdotool、unclutter,前者用來模擬鍵盤滑鼠等操作,後者用來消除螢幕上的滑鼠指標:
$ sudo apt install xdotool unclutter
安裝後,為了讓往後樹莓派一開機就進入桌面環境,而且是不用再輸入帳號密碼就進入,需要對樹莓派進行組態配置設定:
$ sudo raspi-config
編輯往後要執行的Script檔案
進入畫面選單後,選擇1. System Options,然後選S5 Boot/Auto Login,再選B4 Desktop Autologin — Desktop GUI。

樹莓派的組態設定畫面1(圖片來源:樹莓派官網)

樹莓派的組態設定畫面2 (圖片來源:樹莓派官網)
完成上述後再一次重新開機。然後要設定往後開機就進入的Kiosk畫面,假設是用網頁瀏覽器交替顯示兩個頁面,每10秒交替,對此要編輯一個往後要執行的Script檔案:
$ sudo nano /home/pi/kiosk.sh
#!/bin/bash
xset s noblank
xset s off
xset -dpms
unclutter -idle 0.5 -root &
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /home/pi/.config/chromium/Default/Preferences
sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /home/pi/.config/chromium/Default/Preferences
/usr/bin/chromium-browser --noerrdialogs --disable-infobars --kiosk https://www.raspberrypi.com/ https://time.is/London &
while true; do
xdotool keydown ctrl+Tab; xdotool keyup ctrl+Tab;
sleep 10
done
以下簡單說明這個檔案內的命令,#!/bin/bash是告知作業系統,以下我們要用bash來解析與執行命令。
而三行命令xset s noblank、xset s off、xset -dpms是用來關閉螢幕保護程式,Kiosk模式下不需要用。至於unclutter -idle 0.5 -root &這行就是用來關閉滑鼠游標的,畢竟Kiosk多是以觸控螢幕的方式互動操作,不需要游標。
接下來兩行sed開頭的命令是用來阻止各種彈出視窗的,以免影響Kiosk互動操作的觀感。而/usr/bin/chromium-browser…這一行是要求Chromium全螢幕交替顯示兩個網址畫面,一是顯示樹莓派官網,另一是顯示倫敦時間。
建立服務檔案
再來用一個while指令是讓兩個網頁每10秒交替顯示,不然一直在同一個畫面也挺無聊的。接著,為了讓樹莓派每次開機就自動執行上述指令,即我們再建立一個服務檔案,建立命令與檔案內容如下:
$ sudo nano /lib/systemd/system/kiosk.service
[Unit]
Description=Chromium Kiosk
Wants=graphical.target
After=graphical.target
[Service]
Environment=DISPLAY=:0.0
Environment=XAUTHORITY=/home/pi/.Xauthority
Type=simple
ExecStart=/bin/bash /home/pi/kiosk.sh
Restart=on-abort
User=pi
Group=pi
[Install]
WantedBy=graphical.target
服務檔案內就會自動去執行更之前建立的kiosk.sh檔了。至於這個服務功能要開啟、要開始服務、要停止服務等,則可以分別使用以下三個命令:
服務開啟➝$ sudo systemctl enable kiosk.service
開始服務➝$ sudo systemctl start kiosk.service
停止服務➝$ sudo systemctl stop kiosk.service
上述可以說是做了許多自動化設定、防呆設定(例如讓游標消失),但Kiosk還需要些防駭設定,避免被駭客入侵,首先是關閉、開啟所有USB埠的命令列:
關閉➝$ echo ‘1-1’ | sudo tee /sys/bus/usb/drivers/usb/unbind
開啟➝$ echo ‘1-1’ | sudo tee /sys/bus/usb/drivers/usb/bind
有線乙太網路的關閉與開啟則為:
關閉➝$ sudo ifconfig eth0 down
開啟➝$ sudo ifconfig eth0 up
除了親手下指令外,最好一開機就自動關閉這些,這樣就需要設定一下rc.local檔案:
$ sudo nano /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
echo '1-1' | sudo tee /sys/bus/usb/drivers/usb/unbind
sudo ifconfig eth0 down
exit 0
小結
透過以上設定,每次開機就會自動停用USB與乙太網路。另外,較新款的樹莓派有藍牙功能,關閉方式則是編輯config.txt檔案:
$ sudo nano /boot/config.txt
在檔案的最底下再增加一行,內容為:dtoverlay=disable-bt
另外,我們是用帳號密碼登入到樹莓派,如果帳密外流就麻煩了,因此也可以用ssh-keygen方式產生公私鑰對,以核對私鑰的方式來登入。最後,還可以設定記憶卡為唯讀方式運作,避免被駭客、惡意程式入侵,也避免其他的誤寫入。
(責任編輯:謝嘉洵)
延伸閱讀
- Ollama官方模型分類觀察 - 2025/06/13
- COMPUTEX Taipei 2025量子技術展示觀察 - 2025/05/29
- Arduino Cloud Editor加入大語言模型幫手功能 - 2025/05/28
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!