OpenboxによるLinuxキオスクモード:古いPCを「不死身」の検索端末に変える

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

デスクトップ環境がユーザー体験を台無しにしないために

空港の広告ディスプレイや病院の番号札発行機などで、突然Windowsの更新プログラムの通知やUbuntuのタスクバーが表示されているのを目にしたことがあるでしょう。こうした光景はプロフェッショナルさに欠けるだけでなく、「いたずら好き」なユーザーがブラウザを閉じてターミナルにアクセスしたり、壁紙を変更したりする隙を与えてしまいます。そこで必要になるのが「キオスクモード(Kiosk Mode)」です。

実際、ウェブサイトを1つ表示させるためだけに、GNOMEを搭載したUbuntu Desktopのようなフル機能のディストリビューションをインストールするのは、リソースの大きな無駄です。長年の組み込みシステム構築の経験から、不要なコンポーネントを削ぎ落とすほど、システムの不具合は少なくなると実感しています。わずか数MBのウィンドウマネージャーであるOpenboxは、不要なものを最小限に抑え、特定のアプリケーションのみを実行させる環境を作るための最適な選択肢です。

キオスクモード設定手法の比較

PCを特定のアプリケーションに固定してロックする方法はいくつかあります。ハードウェアのスペックに応じて適切な方法を選びましょう。

1. 既存のデスクトップ環境(GNOME/KDE)の活用

この方法は最も簡単ですが、最もリソースを消費します。標準的なUbuntu Desktopは、起動直後に約800MB〜1GBのRAMを消費します。システムはソフトウェアアップデート、Bluetooth管理、ファイルマネージャーなど、検索端末には全く不要なバックグラウンドサービスを多数抱え込むことになります。

2. X11上でアプリケーションを直接実行(ウィンドウマネージャーなし)

これは最も極端な方法で、X Serverを起動してブラウザを直接呼び出します。究極に軽量ですが、ポップアップウィンドウやエラーメッセージの表示で問題が発生することがあります。ウィンドウマネージャーがないと、アプリケーションを安定して中央に配置したり全画面表示したりするのが難しくなります。

3. バランスの取れた解決策:Openboxウィンドウマネージャー

OpenboxのRAM消費量はわずか15〜20MB程度ですが、基本的なウィンドウ管理機能は十分に備えています。ショートカットキーの処理、アプリケーションの自動全画面表示、マウスの動作制御などを非常に柔軟に行えます。これはRaspberry Piや古い事務用PCを使用したキオスク端末の「黄金標準」と言える解決策です。

なぜOpenboxを選ぶのか?

  • 圧倒的なパフォーマンス: 初期のPentium 4やRaspberry Pi Zeroでもスムーズに動作します。
  • テキストファイルによる設定: 全ての設定がXMLファイルとBashスクリプトに集約されているため、他のマシンへの大量コピーが非常に簡単です。
  • 高い安定性: クラッシュすることはほとんどありません。一度設定してしまえば、再起動なしで数年間稼働し続けることも可能です。

具体的な構築手順

最高の効率を得るために、Ubuntu ServerやDebian Netinstallのような(GUIのない)最小構成のLinuxから始めることをお勧めします。

ステップ1:コアパッケージのインストール

表示のためのXorg、ウィンドウ管理のためのOpenbox、そしてメインブラウザとしてChromiumが必要です。

sudo apt update
sudo apt install --no-install-recommends xserver-xorg x11-xserver-utils xinit openbox chromium-browser unclutter

unclutterパッケージを忘れないでください。この小さなツールは、一定時間操作がない場合にマウスカーソルを自動的に隠してくれるため、検索画面がよりスッキリと見えます。

ステップ2:自動起動スクリプトの設定

Openboxは、起動時に実行する内容をautostartファイルで決定します。まず設定ディレクトリを作成しましょう。

mkdir -p ~/.config/openbox
nano ~/.config/openbox/autostart

画面表示を最適化し、ブラウザを実行するために以下の内容をファイルに貼り付けます。

# スリープモードと画面の省電力設定を無効化
xset s off
xset s noblank
xset -dpms

# 5秒後にマウスカーソルを隠す
unclutter -idle 5 &

# Chromiumをキオスクモードで起動(エラーダイアログとインフォバーを表示しない)
chromium-browser --kiosk --noerrdialogs --disable-infobars https://itfromzero.com &

ステップ3:パスワードなしの自動ログイン

キオスク端末で、停電からの復旧のたびに従業員にパスワードを入力させるわけにはいきません。systemdを使用しているシステムでは、以下のコマンドを実行します。

sudo systemctl edit getty@tty1

以下のコードを追加します(ユーザー名の部分を実際のユーザー名に書き換えてください)。

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin ユーザー名 --noclear %I $TERM

最後に、コンソールにログインした瞬間にGUIが立ち上がるよう、~/.bashrcファイルの末尾に以下の行を追加します。

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

キオスク端末でよくあるトラブルの解決策

最も厄介なのは、突然の停電後に表示される「Chromiumが正しく終了しませんでした」という通知です。これを消去するには、autostartファイル内のChromium呼び出しの前に、以下の2行を追加してください。

sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/Default/Preferences
sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' ~/.config/chromium/Default/Preferences

また、端末を完全にロックしたい場合は、~/.config/openbox/rc.xmlを開いて全ての<keybind>タグを削除してください。これにより、ユーザーがAlt+TabやAlt+F4を使用してアプリケーションを終了させることができなくなります。

おわりに

検索端末を作ることは難しくありませんが、何年も安定して稼働させることが真の課題です。最小限のLinuxとOpenboxの組み合わせは、ハードウェアコストを抑えつつセキュリティを確保できるプロフェッショナルな解決策です。グラフィックドライバーの互換性を確認するため、クライアントに納品する前にまずは仮想マシンでテストしてみてください。

Share: