No description
Find a file
2025-04-28 14:40:11 +02:00
README.md Update README.md to provide detailed setup instructions for Alpine Linux Weston/Chromium kiosk 2025-04-28 14:40:11 +02:00
setup-signage.sh Add setup script for Alpine Linux signage kiosk configuration 2025-04-28 14:36:02 +02:00

Alpine Linux Weston/Chromium Kiosk Setup

This script automates the setup of a minimal Alpine Linux system to function as a digital signage kiosk. It installs and configures Weston (a Wayland compositor), Chromium (web browser), and necessary supporting services to automatically display a specific webpage in fullscreen kiosk mode upon system boot.

Features

  • Automated installation and configuration on a base Alpine Linux system.
  • Uses the modern Wayland display protocol via the Weston compositor.
  • Employs elogind for session and seat management.
  • Uses greetd with agreety for lightweight, automatic user login.
  • Configurable target URL displayed in Chromium's kiosk mode.
  • Includes basic Mesa graphics drivers and essential firmware.
  • Checks for the problematic nomodeset kernel parameter.

How to Use

  1. Download/Save Script: Obtain the setup_signage.sh script and place it on your target Alpine machine (e.g., using wget, scp, or copy-paste via SSH).
  2. Configure:
    • Edit the script using a text editor (like nano): nano setup_signage.sh
    • Modify the following variables near the top of the script:
      • KIOSK_URL: Set this to the full URL of the webpage you want to display (e.g., "https://your-status-board.com").
      • SIGNAGE_USER: You can change the username if desired, but "signage" is standard for this setup.
    • Save the changes (Ctrl+O, Enter in nano) and exit (Ctrl+X).
  3. Make Executable: chmod +x setup_signage.sh
  4. Run as Root: ./setup_signage.sh
  5. Review Output: Watch the script output for any errors. Pay attention to any warnings, especially regarding nomodeset.
  6. Reboot: If the script completes successfully, reboot the system: reboot

Upon rebooting, the system should automatically log in as the signage user and launch Weston with Chromium displaying the configured KIOSK_URL.

How It Works (Technical Details)

The script performs the following main steps:

  1. Checks for root privileges.
  2. Checks /proc/cmdline for the nomodeset kernel parameter and issues a warning if found (as this prevents Weston's DRM backend from working).
  3. Updates Alpine package repositories (apk update).
  4. Runs setup-wayland-base to install and configure elogind, eudev, enable the community repository, and set up related services.
  5. Installs core packages: weston, weston-backend-drm, weston-shell-desktop, chromium, mesa-dri-gallium, mesa-va-gallium, dbus, fonts, util-linux (for dependencies), linux-firmware, greetd, greetd-agreety.
  6. Ensures the dbus service is enabled and started.
  7. Creates the non-root user (signage by default) with /bin/sh as the shell.
  8. Creates Weston configuration (~/.config/weston.ini) setting idle-time=0 (no screen blanking) and specifying Chromium as the client, ensuring the --ozone-platform=wayland flag is used.
  9. Creates greetd configuration (/etc/greetd/config.toml) to use agreety on VT1, perform autologin for the signage user, and set the session command to /usr/bin/weston.
  10. Modifies /etc/inittab to start /usr/sbin/greetd on tty1 instead of the default getty/login prompt.
  11. Attempts to add pam_elogind.so to the PAM configuration (/etc/pam.d/greetd or /etc/pam.d/system-auth) to ensure elogind handles session setup correctly (including $XDG_RUNTIME_DIR).

IMPORTANT: nomodeset Boot Parameter

Weston requires Kernel Mode Setting (KMS) graphics drivers to function with its primary (drm) backend. The kernel parameter nomodeset disables KMS drivers.

If the setup script warned you about nomodeset being present, the graphical kiosk WILL NOT WORK.

You MUST remove nomodeset from your kernel boot arguments. Edit your bootloader configuration file:

  • Syslinux/Extlinux: Edit /boot/extlinux.conf. Find the line(s) starting with APPEND and delete the word nomodeset.
  • GRUB: Edit /etc/default/grub. Find the line(s) starting with GRUB_CMDLINE_LINUX_DEFAULT= and GRUB_CMDLINE_LINUX= and delete the word nomodeset from within the quotes. After saving, run update-grub.

Reboot after modifying the bootloader configuration.

Troubleshooting

If the kiosk doesn't start correctly after rebooting:

  1. Switch TTY: Press Alt+F2 (or F3, F4, etc.) to get to another virtual console login prompt.
  2. Login as Root: Use the root username and password.
  3. Check Logs & Status:
    • Greetd: cat /var/log/messages | grep greetd (Look for errors starting or running greetd)
    • Weston: cat /home/signage/.local/share/weston/weston.log (Look for DRM errors, GL errors, client launch errors)
    • XDG Runtime Dir: ls -ld /run/user/$(id -u signage) (Should exist, owned by signage, permissions drwx------)
    • Services: rc-service elogind status && rc-service dbus status (Both should be started)
    • inittab: grep ^tty1 /etc/inittab (Should show /usr/sbin/greetd)
    • Kernel Messages: dmesg | tail -n 50 (Look for graphics/DRM driver errors, especially if you suspect nomodeset issues)
    • Greetd Config: cat /etc/greetd/config.toml (Verify syntax, command path, user)
    • Weston Config: cat /home/signage/.config/weston.ini (Verify syntax, client path, Chromium flags)