Linux Kiosk Mode với Openbox: Biến máy tính cũ thành trạm tra cứu ‘bất tử’

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

Đừng để Desktop Environment làm hỏng trải nghiệm người dùng

Chắc hẳn bạn đã từng thấy những màn hình quảng cáo tại sân bay hay máy lấy số thứ tự ở bệnh viện bất ngờ hiện ra… cửa sổ cập nhật Windows hoặc thanh Taskbar của Ubuntu. Cảnh tượng này không chỉ thiếu chuyên nghiệp mà còn tạo cơ hội cho những người “nghịch tay” thoát trình duyệt để vào Terminal hoặc đổi hình nền. Đây chính là lúc bạn cần đến Kiosk Mode.

Thực tế, việc cài đặt một bản phối đầy đủ như Ubuntu Desktop với GNOME chỉ để chạy một trang web là sự lãng phí tài nguyên khủng khiếp. Sau nhiều năm triển khai hệ thống nhúng, mình nhận thấy rằng càng lược bỏ thành phần thừa, máy càng ít lỗi vặt. Openbox – một Window Manager chỉ nặng vài MB – là lựa chọn hàng đầu để tạo ra môi trường tối giản, ép máy tính chỉ chạy đúng một ứng dụng duy nhất.

So sánh các phương pháp thiết lập Kiosk Mode

Để khóa một chiếc máy tính vào một ứng dụng, chúng ta có vài con đường khác nhau. Mỗi phương án sẽ phù hợp với một mức cấu hình phần cứng cụ thể.

1. Tận dụng Desktop Environment có sẵn (GNOME/KDE)

Cách này dễ nhất nhưng cũng nặng nhất. Một bản Ubuntu Desktop tiêu chuẩn tiêu tốn khoảng 800MB – 1GB RAM ngay khi khởi động. Máy phải gánh hàng tá dịch vụ ngầm như cập nhật phần mềm, quản lý Bluetooth hay trình quản lý file – những thứ hoàn toàn vô dụng với một trạm tra cứu thông tin.

2. Chạy ứng dụng trực tiếp trên X11 (No Window Manager)

Đây là phương án cực đoan nhất: khởi động X Server và gọi thẳng trình duyệt. Nó nhẹ tuyệt đối nhưng lại phát sinh vấn đề với các cửa sổ con (pop-up) hoặc thông báo lỗi. Nếu không có trình quản lý cửa sổ, ứng dụng thường không thể tự căn giữa hoặc full màn hình một cách ổn định.

3. Giải pháp cân bằng: Openbox Window Manager

Openbox chỉ tiêu tốn khoảng 15-20MB RAM nhưng cung cấp đủ khả năng quản lý cửa sổ cơ bản. Nó cho phép bạn xử lý phím tắt, tự động mở ứng dụng toàn màn hình và kiểm soát hành vi chuột cực kỳ linh hoạt. Đây là tiêu chuẩn vàng cho các máy Kiosk chạy Raspberry Pi hoặc PC văn phòng đời cũ.

Tại sao nên chọn Openbox?

  • Hiệu suất ấn tượng: Chạy mượt trên cả những con chip Pentium 4 hoặc Raspberry Pi Zero đời đầu.
  • Cấu hình bằng file text: Mọi thiết lập nằm gọn trong các file XML và script Bash, cực dễ để sao chép hàng loạt sang máy khác.
  • Độ ổn định cao: Gần như không bao giờ crash. Một khi đã cấu hình xong, hệ thống có thể chạy liên tục vài năm mà không cần khởi động lại.

Các bước triển khai thực tế

Để đạt hiệu quả cao nhất, bạn nên bắt đầu với một bản Linux tối giản như Ubuntu Server hoặc Debian Netinstall (không cài giao diện).

Bước 1: Cài đặt các gói cốt lõi

Chúng ta cần Xorg để hiển thị, Openbox để quản lý cửa sổ và Chromium làm trình duyệt chính.

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

Đừng quên gói unclutter. Công cụ nhỏ này sẽ tự động ẩn con trỏ chuột sau vài giây không hoạt động, giúp giao diện tra cứu sạch sẽ hơn.

Bước 2: Cấu hình kịch bản tự khởi động

Openbox sử dụng file autostart để quyết định những gì sẽ chạy khi máy bật lên. Hãy tạo thư mục cấu hình:

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

Dán nội dung sau vào file để tối ưu màn hình và chạy trình duyệt:

# Tắt chế độ ngủ và tiết kiệm điện màn hình
xset s off
xset s noblank
xset -dpms

# Ẩn chuột sau 5 giây
unclutter -idle 5 &

# Chạy Chromium chế độ Kiosk, tự bỏ qua lỗi và thanh công cụ
chromium-browser --kiosk --noerrdialogs --disable-infobars https://itfromzero.com &

Bước 3: Tự động đăng nhập không cần mật khẩu

Một trạm Kiosk không thể bắt nhân viên nhập mật khẩu mỗi khi mất điện. Với các hệ thống dùng systemd, bạn hãy chạy lệnh:

sudo systemctl edit getty@tty1

Thêm đoạn mã sau (thay user_cua_ban bằng tên user thực tế):

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin user_cua_ban --noclear %I $TERM

Cuối cùng, để giao diện tự bật ngay khi login vào console, hãy thêm dòng này vào cuối file ~/.bashrc:

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

Mẹo xử lý lỗi phổ biến trên máy Kiosk

Lỗi gây khó chịu nhất là thông báo “Chromium didn’t shut down correctly” sau khi rút điện đột ngột. Để xóa bỏ nó, hãy thêm hai dòng lệnh này vào đầu file autostart trước khi gọi Chromium:

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

Ngoài ra, nếu muốn khóa hoàn toàn máy, bạn hãy mở file ~/.config/openbox/rc.xml và xóa toàn bộ các thẻ <keybind>. Lúc này, người dùng sẽ không thể dùng Alt+Tab hay Alt+F4 để thoát ra ngoài.

Lời kết

Xây dựng trạm tra cứu không khó, cái khó là làm sao để nó chạy ổn định qua nhiều năm. Sự kết hợp giữa Linux tối giản và Openbox là giải pháp chuyên nghiệp, giúp bạn tiết kiệm chi phí phần cứng mà vẫn đảm bảo tính bảo mật. Hãy thử nghiệm trên máy ảo trước khi triển khai cho khách hàng để kiểm tra độ tương thích của driver đồ họa nhé!

Share: