Instaladores automatizados para crear kioskos de Arch Linux orientados a YARG (Yet Another Rhythm Game).
Repositorio oficial: Xalcker/MiniArch.
MiniArch mantiene dos caminos:
install-cage-yarg.sh: camino recomendado para YARG. Instala Arch Linux, Cage, Wayland/XWayland, YARG, audio, Samba y la carpeta de canciones en un solo flujo.install-arch-kiosk.sh+setup-yarg.sh: camino original OpenBox/X11. Sirve como fallback si algun hardware o version de YARG se comporta mejor fuera de Cage.
En corto:
Recomendado: install-cage-yarg.sh
Fallback: install-arch-kiosk.sh y luego setup-yarg.sh
Cage es ideal para un equipo dedicado: ejecuta una sola aplicacion fullscreen y reduce la superficie de escritorio. El instalador tambien habilita XWayland para compatibilidad con builds de YARG que lo necesiten.
install-cage-yarg.sh es un orquestador modular. Reutiliza los modulos
compartidos de lib/ y mueve lo especifico a:
lib/cage.sh: sistema base Cage, usuario, servicio systemd y wrapper/usr/local/bin/run-yarg.sh.lib/yarg.sh: descarga de YARG stable, stable-latest o nightly, settings iniciales, Samba, rendimiento y updater.
install-arch-kiosk.sh sigue usando el flujo original OpenBox/X11 y copia
setup-yarg.sh para instalar YARG despues del primer arranque.
- Instalacion automatizada desde el live ISO de Arch Linux.
- Validacion de entorno, red, disco y passwords.
- Confirmacion antes de destruir particiones existentes.
- Particionado GPT/UEFI:
- ESP FAT32 en
/boot. - Root ext4 en
/. - Swap.
- Home ext4 en
/home.
- ESP FAT32 en
- GRUB UEFI con arranque silencioso.
- Plymouth opcional.
- PipeWire, WirePlumber, PipeWire Pulse, PipeWire ALSA, codecs y Bluetooth.
/etc/asound.confapuntando ALSA default a PipeWire.- Limpieza automatica de montajes y swap si la instalacion falla.
install-cage-yarg.sh instala y configura:
- Cage como compositor de kiosko.
- Wayland y XWayland.
- Mesa, Vulkan Intel/AMD y NVIDIA opcional.
- DBus de sesion para el wrapper de YARG.
- PipeWire iniciado en orden:
pipewire,wireplumber,pipewire-pulse. - YARG en
/opt/YARG. - Perfil persistente en
YARG_PERSISTENT_DATA_DIR. - Carpeta de canciones fija en
YARG_SONGS_DIR. - Share Samba
YARG-Songs. - Usuario Samba para el usuario kiosko.
- Reglas HID para instrumentos
hidraw. - Dependencias multilib de YARG.
- Limites de tiempo real,
vm.swappiness=10ycpupoweren performance. - Updater
/usr/local/bin/update-yarg. - Servicio
cage-kiosk.service.
install-arch-kiosk.sh instala:
- OpenBox/X11.
- Autologin del usuario kiosko.
- Autostart que prioriza YARG y usa xterm como fallback.
- Cursor personalizado opcional.
- Copia de
setup-yarg.shal home del usuario. - SSH opcional.
- Arch Linux ISO actual.
- Maquina fisica o VM con UEFI habilitado.
- Disco de al menos 16 GB.
- 2 GB de RAM o mas.
- Conexion a internet durante la instalacion.
En VM, habilita EFI/UEFI. En VirtualBox:
Sistema -> Placa base -> Habilitar EFI
En Proxmox, SPICE puede servir para probar audio virtual. En hardware real, PipeWire deberia usar la salida detectada por ALSA/WirePlumber.
Arranca desde el ISO de Arch Linux y verifica red:
ping -c 3 archlinux.orgClona el repositorio:
pacman -Sy git
git clone https://github.com/Xalcker/MiniArch.git
cd MiniArchCopia el ejemplo de configuracion:
cp .env.example .env
nano .envPara Cage/YARG, .env es obligatorio. Define al menos:
DISK_DEVICE=/dev/sda
KIOSK_USER=kiosk
KIOSK_PASSWORD=una-contrasena-real
ROOT_PASSWORD=otra-contrasena-real
KIOSK_HOSTNAME=minikiosk
TIMEZONE=America/Phoenix
ENABLE_SSH=false
INSTALL_NVIDIA=false
ALLOW_INSECURE_DEFAULT_PASSWORD=false
ENABLE_PLYMOUTH=true
YARG_RELEASE_CHANNEL=ask
YARG_SONGS_DIR=/opt/YARG/Songs
YARG_PERSISTENT_DATA_DIR=/home/${KIOSK_USER}/.config/yarg-kioskEjecuta el camino recomendado:
chmod +x install-cage-yarg.sh
./install-cage-yarg.shFallback OpenBox/X11:
chmod +x install-arch-kiosk.sh
./install-arch-kiosk.shAdvertencia: ambos instaladores destruyen el disco configurado en
DISK_DEVICE. Si el disco contiene particiones, el script pedira confirmacion.
install-cage-yarg.sh ejecuta, en orden:
- Exige y carga
.env. - Pregunta por NVIDIA si
INSTALL_NVIDIAesta vacio. - Pregunta por canal de YARG si
YARG_RELEASE_CHANNEL=ask. - Valida entorno live, passwords, assets opcionales, red y disco.
- Resuelve el release mas reciente si se eligio
stable-latestonightly. - Particiona, formatea y monta el disco.
- Instala Arch base, Cage, Wayland/XWayland, Samba, dbus y stack grafico.
- Genera
fstab. - Configura hostname, locale, root, GRUB, Plymouth y NVIDIA si aplica.
- Instala audio, codecs y Bluetooth desde
lib/drivers.sh. - Crea usuario kiosko y sudoers.
- Habilita multilib y dependencias 32-bit de YARG.
- Configura HID.
- Descarga e instala YARG.
- Crea
settings.jsoncon la carpeta fija de canciones. - Configura Samba.
- Aplica optimizaciones de rendimiento.
- Crea
update-yarg,run-yarg.shycage-kiosk.service. - Configura red, target grafico y limpieza visual.
- Desmonta particiones y desactiva swap.
YARG_RELEASE_CHANNEL acepta:
stable: usa exactamenteYARG_URL.stable-latest: consulta el ultimo release estable deYARC-Official/YARG.nightly: consulta el ultimo release deYARC-Official/YARG-BleedingEdge.ask: pregunta durante la instalacion.
El prompt actual es:
Canal de YARG: stable fijo, stable-latest o nightly? [stable/stable-latest/nightly] (stable):
sudo update-yarg respeta el canal instalado. En stable usa YARG_URL; en
stable-latest consulta el latest estable; en nightly consulta el latest de
YARG-BleedingEdge antes de descargar.
Despues de reiniciar, systemd inicia:
cage-kiosk.service
El servicio ejecuta:
/usr/bin/dbus-run-session -- /usr/local/bin/run-yarg.sh
El wrapper:
- Aplica ajustes de render software si detecta VM.
- Valida DBus de sesion; normalmente ya viene creado por systemd mediante
dbus-run-session. - Exporta variables Wayland/Cage.
- Arranca PipeWire, WirePlumber y PipeWire Pulse en orden.
- Espera unos segundos a que exista un sink Pulse/PipeWire; si no aparece, lanza YARG de todos modos y deja el aviso en journal.
- Busca un binario ejecutable
YARG*en/opt/YARG. - Lanza YARG con
-persistent-data-path. - Abre
footcomo fallback si no encuentra YARG.
El perfil fijo se crea en:
/home/kiosk/.config/yarg-kiosk/settings.json
Con contenido equivalente a:
{
"SongFolders": [
"/opt/YARG/Songs"
]
}Esto evita depender del selector de archivos para la operacion normal del kiosko. El boton Browse puede funcionar en builds nightly recientes, pero el flujo recomendado sigue siendo subir canciones por Samba y escanear desde YARG.
Share Samba:
\\<hostname>\YARG-Songs
Con hostname por defecto:
\\minikiosk\YARG-Songs
Ruta local:
/opt/YARG/Songs
Actualizar YARG:
sudo update-yargEl camino OpenBox/X11 deja setup-yarg.sh en el home del usuario. En el sistema
instalado:
./setup-yarg.shEse script instala YARG en el home del usuario, crea Songs, configura Samba y
aplica optimizaciones de rendimiento. No usa lib/cage.sh ni lib/yarg.sh.
Variables comunes:
DISK_DEVICE: disco destino. Por defecto/dev/sda.KIOSK_USER: usuario kiosko.KIOSK_PASSWORD: password del usuario kiosko.TIMEZONE: zona horaria.ENABLE_SSH: habilita OpenSSH si esta entrue.ALLOW_INSECURE_DEFAULT_PASSWORD: permite passwords de ejemplo solo para laboratorio.ENABLE_PLYMOUTH: habilita/deshabilita Plymouth.PLYMOUTH_THEME_NAME: nombre del tema Plymouth.PLYMOUTH_IMAGE_PATH: imagen PNG opcional para Plymouth.CURSOR_PATH: cursor opcional para el camino OpenBox.LOG_FILE: archivo donde se guarda la salida detallada de la instalacion.VERBOSE_INSTALL: si estrue, muestra en consola la salida completa depacman,pacstrap,unzip,grub-mkconfig, etc. Por defecto esfalse.
Variables de Cage/YARG:
ROOT_PASSWORD: password de root. Cage lo exige con valor real.KIOSK_HOSTNAME: hostname. Por defectominikiosk.INSTALL_NVIDIA:true,falseo vacio para preguntar.YARG_RELEASE_CHANNEL:stable,stable-latest,nightlyoask.YARG_URL: ZIP estable de YARG.YARG_STABLE_API_URL: endpoint del ultimo release estable.YARG_STABLE_ASSET_REGEX: patron usado para elegir el ZIP Linux estable.YARG_NIGHTLY_API_URL: endpoint del ultimo nightly.YARG_NIGHTLY_ASSET_REGEX: patron para elegir el ZIP Linux del nightly.YARG_SONGS_DIR: carpeta local de canciones.YARG_PERSISTENT_DATA_DIR: perfil persistente de YARG.
Nota: REQUIRE_ROOT_PASSWORD existe como control interno. Cage lo activa por
defecto; el camino OpenBox no lo requiere.
MiniArch/
|-- install-arch-kiosk.sh # Orquestador OpenBox/X11 original
|-- install-cage-yarg.sh # Orquestador Cage/YARG integrado
|-- setup-yarg.sh # Post-install YARG standalone
|-- lib/
| |-- validation.sh # Validacion de entorno, seguridad, red y disco
| |-- partitioning.sh # GPT/UEFI, formateo, montaje y swap
| |-- base_install.sh # Pacstrap base y fstab
| |-- bootloader.sh # GRUB UEFI y arranque silencioso
| |-- plymouth.sh # Plymouth compartido
| |-- drivers.sh # Drivers, PipeWire, codecs y Bluetooth
| |-- cage.sh # Cage, usuario, servicio y wrapper
| |-- yarg.sh # YARG, settings, Samba, rendimiento y updater
| |-- gui.sh # OpenBox/X11 y autostart
| |-- customization.sh # Mensajes, cursor, assets y scripts extra
| `-- finalization.sh # Red, SSH opcional, limpieza y desmontaje
|-- assets/
| |-- README.md
| |-- plymouth-image.png.example
| `-- cursor/
|-- tests/
| |-- test_validation.bats
| |-- test_partitioning.bats
| |-- test_base_install.bats
| |-- test_bootloader.bats
| |-- test_plymouth.bats
| |-- test_drivers.bats
| |-- test_gui.bats
| |-- test_customization.bats
| |-- test_finalization.bats
| `-- test_integration.bats
La suite BATS cubre principalmente modulos compartidos y el flujo OpenBox. Los
modulos lib/cage.sh y lib/yarg.sh todavia no tienen suite dedicada.
Instala BATS en Linux/WSL:
sudo apt-get update
sudo apt-get install batsEjecuta pruebas:
bats tests/*.batsValida sintaxis:
bash -n install-arch-kiosk.sh
bash -n install-cage-yarg.sh
for file in lib/*.sh; do bash -n "$file"; doneEjecuta los instaladores desde el live ISO de Arch Linux. Deben existir
/etc/arch-release y pacstrap.
ip link
ping -c 3 archlinux.orgLevanta la interfaz si hace falta:
ip link set <interfaz> up
dhcpcdlsblkConfigura DISK_DEVICE en .env, por ejemplo:
DISK_DEVICE=/dev/vdaPlymouth es opcional en el camino Cage. Si el paquete, tema o asset falla, el instalador debe continuar sin pantalla personalizada.
Si ImageMagick no esta disponible, el instalador intenta copiar el PNG sin redimensionarlo en vez de fallar por el escalado.
systemctl status cage-kiosk.service
journalctl -u cage-kiosk.service -b
ls -la /opt/YARGPor defecto, MiniArch oculta la salida ruidosa de pacman, pacstrap,
mkfs, grub-mkconfig, mkinitcpio, curl y unzip, pero la conserva en
LOG_FILE.
Para modo detallado:
VERBOSE_INSTALL=true ./install-cage-yarg.shO define en .env:
VERBOSE_INSTALL=trueSi el binario no existe, el wrapper abre foot. Puedes reinstalar con:
sudo update-yargRevisa hardware ALSA:
aplay -l
aplay -L | grep -i pipewireRevisa PipeWire/Pulse:
pactl info
pactl list short sinks
journalctl -u cage-kiosk.service -b | grep -Ei 'pipewire|wireplumber|dbus|alsa|bass'Si pactl info falla, revisa que el wrapper este arrancando con DBus de sesion
y que no haya procesos PipeWire stale del usuario.
sudo systemctl status smb nmb
testparm
grep -A10 "\[YARG-Songs\]" /etc/samba/smb.conf
ls -la /opt/YARG/Songsls -l /etc/udev/rules.d/69-hid.rulesReconecta el dispositivo despues de instalar para que udev aplique la regla.
- No versiones
.env. - Cambia
KIOSK_PASSWORDyROOT_PASSWORD. - El usuario kiosko tiene sudo sin password para mantenimiento.
- Samba permite guest en
YARG-Songs; no lo expongas a redes no confiables. ENABLE_SSH=falsees el valor recomendado para Cage.
Consulta SECURITY.md para mas detalles.
Si clonas una instalacion a un disco mas grande, revisa CLONING.md
para expandir /home.
Lee CONTRIBUTING.md, ejecuta las pruebas disponibles y abre un pull request con cambios acotados.
Este proyecto esta bajo licencia MIT. Consulta LICENSE.
- Arch Linux.
- YARG.
- Cage.
- OpenBox.
- Plymouth.
- PipeWire.
- Samba.
- BATS.