Instaladores automatizados para crear kioskos de Arch Linux orientados a YARG (Yet Another Rhythm Game).
Repositorio oficial: Xalcker/MiniArch.
MiniArch mantiene tres caminos basados en Cage:
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-cage-clonehero.sh: camino equivalente para Clone Hero. Instala Arch Linux, Cage, Wayland/XWayland, Clone Hero, audio, Samba y la carpeta de canciones en un solo flujo.install-cage-kiosk.sh: camino minimalista. Instala Arch Linux, Cage yfootsolamente, util como base de kiosko o terminal de mantenimiento.
En corto:
Recomendado: install-cage-yarg.sh
Clone Hero: install-cage-clonehero.sh
Minimal: install-cage-kiosk.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.lib/clonehero.sh: descarga de Clone Hero desde GitHub, carpeta compartida de canciones, Samba, updater y wrapper/usr/local/bin/run-clonehero.sh.
install-cage-kiosk.sh conserva el particionado, GRUB, Plymouth opcional,
red y limpieza del instalador, pero arranca directamente foot dentro de Cage.
- 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. - Enlace
/opt/YARG/Songsapuntando aYARG_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-cage-clonehero.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 Clone Hero.
- PipeWire iniciado en orden:
pipewire,wireplumber,pipewire-pulse. - Clone Hero en
/opt/CloneHero. - Perfil persistente en
CLONEHERO_DATA_DIR. - Carpeta de canciones fija en
CLONEHERO_SONGS_DIR. - Enlace
/home/kiosk/Songsapuntando a la carpeta de canciones. - Share Samba
CloneHero-Songs. - Usuario Samba para el usuario kiosko.
- Reglas HID para instrumentos
hidraw. - Updater
/usr/local/bin/update-clonehero. - Descargador
/home/kiosk/download-clonehero-songs.shusandolinks.csv. - Servicio
cage-kiosk.service.
install-cage-kiosk.sh instala:
- Cage como compositor de kiosko.
footcomo aplicacion unica.- Servicio
cage-kiosk.service. - 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.
- ImageMagick en el entorno live si vas a usar imagen personalizada de Plymouth.
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 imagemagick
git clone https://github.com/Xalcker/MiniArch.git
cd MiniArchCopia el ejemplo de configuracion si quieres una instalacion repetible:
cp .env.example .env
nano .envPara Cage/YARG, .env es opcional. Si no existe, install-cage-yarg.sh
pregunta lo necesario en modo asistido: usuario, passwords, hostname, timezone,
red, disco, NVIDIA, canal/resolucion de YARG y menu de salida.
Si usas .env, define al menos:
DISK_DEVICE=ask
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=/home/${KIOSK_USER}/Songs
YARG_PERSISTENT_DATA_DIR=/home/${KIOSK_USER}/.config/yarg-kiosk
YARG_RESOLUTION=ask
YARG_FORCE_SOFTWARE_RENDER=false
YARG_EXIT_MENU=alwaysEjecuta el camino recomendado:
chmod +x install-cage-yarg.sh
./install-cage-yarg.shClone Hero:
chmod +x install-cage-clonehero.sh
./install-cage-clonehero.shCage/foot minimal:
chmod +x install-cage-kiosk.sh
./install-cage-kiosk.shAdvertencia: ambos instaladores destruyen el disco seleccionado. Con
DISK_DEVICE=ask, el instalador muestra un selector interactivo con los discos
detectados, marca USB/removibles y pide confirmar escribiendo INSTALAR.
Tambien acepta instalar.
Tambien puedes fijar DISK_DEVICE manualmente, por ejemplo /dev/sda,
/dev/nvme0n1 o /dev/vda; aun asi el instalador mostrara el selector para
evitar errores antes de particionar.
install-cage-yarg.sh ejecuta, en orden:
- Carga
.envsi existe; si no existe, entra en modo asistido. - Pregunta valores faltantes o interactivos de la configuracion.
- Muestra el selector de disco y confirma el destino.
- Pregunta por NVIDIA si
INSTALL_NVIDIAesta vacio. - Pregunta por canal de YARG si
YARG_RELEASE_CHANNEL=ask. - Pregunta por resolucion de YARG si
YARG_RESOLUTION=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. - Al salir de YARG, abre un menu de mantenimiento en
foot. - Abre el menu de mantenimiento como fallback si no encuentra YARG.
El menu de mantenimiento permite:
- Configurar sonido con
pulsemixer. - Configurar WiFi con
nmtuionmcli. - Ver direccion IP.
- Salir a una shell temporal.
- Volver a YARG.
- Actualizar YARG Stable o YARG Nightly, segun el canal instalado.
- Reiniciar
cage-kiosk.service. - Apagar el kiosko.
YARG_EXIT_MENU controla que pasa al cerrar YARG:
always: muestra el menu de mantenimiento.restart: vuelve a lanzar YARG sin mostrar menu.never: sale del wrapper.
El perfil fijo se crea en:
/home/kiosk/.config/yarg-kiosk/settings.json
Con contenido equivalente a:
{
"SongFolders": [
"/home/kiosk/Songs"
],
"ShowAntiPiracyDialog": false,
"ShowEngineInconsistencyDialog": false,
"ShowExperimentalWarningDialog": false
}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:
/home/kiosk/Songs
Ruta de compatibilidad dentro de YARG:
/opt/YARG/Songs -> /home/kiosk/Songs
Actualizar YARG:
sudo update-yargDespues de reiniciar, systemd inicia:
cage-kiosk.service
El servicio ejecuta:
/usr/bin/dbus-run-session -- /usr/local/bin/run-clonehero.sh
El wrapper busca Clone Hero en /opt/CloneHero, lo lanza fullscreen dentro de
Cage y abre el menu de mantenimiento al salir, salvo que CLONEHERO_EXIT_MENU
este en restart o never.
Share Samba:
\\<hostname>\CloneHero-Songs
Con hostname por defecto del camino Clone Hero:
\\miniclonehero\CloneHero-Songs
Ruta local:
/home/kiosk/Songs
Actualizar Clone Hero:
sudo update-cloneheroTambien se puede actualizar desde el menu de mantenimiento con la opcion
Actualizar Clone Hero.
Descargar canciones desde CSV:
~/download-clonehero-songs.shEl instalador crea o copia ~/links.csv. Cada linea puede ser nombre,url o
solo una URL. Los ZIP pueden extraerse directamente en la carpeta Songs.
El camino minimal install-cage-kiosk.sh inicia el mismo servicio
cage-kiosk.service, pero ejecuta:
/usr/bin/dbus-run-session -- /usr/local/bin/run-cage-foot.sh
El wrapper abre foot como aplicacion unica dentro de Cage. Es util para un
kiosko base, diagnostico o para instalar tu propia aplicacion despues.
Variables comunes:
DISK_DEVICE: disco destino. Por defectoask, muestra selector interactivo.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. En Cage/YARG y Cage/Clone Hero, si se deja el valor por defecto, el instalador elige primero un asset por camino y resolucion.PLYMOUTH_TARGET_RESOLUTION: resolucion final usada para preparar la imagen de Plymouth. En Cage/YARG y Cage/Clone Hero se calcula desde la resolucion elegida.CURSOR_PATH: ruta opcional usada solo por validaciones/assets heredados.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. Por defecto/home/${KIOSK_USER}/Songs;/opt/YARG/Songsse crea como enlace hacia esta ruta para compatibilidad.YARG_PERSISTENT_DATA_DIR: perfil persistente de YARG.YARG_RESOLUTION:4k,2k,1080p,720poask.YARG_FORCE_SOFTWARE_RENDER:truefuerza llvmpipe/software render;falsepermite usar la GPU disponible, recomendado para GPU passthrough.YARG_EXIT_MENU:alwaysmuestra menu al salir de YARG;restartrelanza YARG directo;neversale del wrapper.
Variables de Cage/Clone Hero:
CLONEHERO_RELEASE_CHANNEL:latest,urloask.CLONEHERO_URL: descarga fija de Clone Hero cuando se usaurl.CLONEHERO_API_URL: endpoint del ultimo release.CLONEHERO_ASSET_REGEX: patron usado para elegir el asset Linux.CLONEHERO_SONGS_DIR: carpeta local de canciones. Por defecto/home/${KIOSK_USER}/Songs; el perfil de Clone Hero enlaza su carpetaSongshacia esta ruta.CLONEHERO_DATA_DIR: perfil persistente de Clone Hero.CLONEHERO_RESOLUTION:4k,2k,1080p,720poask.CLONEHERO_FORCE_SOFTWARE_RENDER:truefuerza llvmpipe/software render.CLONEHERO_EXIT_MENU:alwaysmuestra menu al salir de Clone Hero;restartrelanza Clone Hero directo;neversale del wrapper.
Nota: REQUIRE_ROOT_PASSWORD existe como control interno. Los caminos Cage lo
activan por defecto.
MiniArch/
|-- install-cage-kiosk.sh # Orquestador Cage/foot minimal
|-- install-cage-clonehero.sh # Orquestador Cage/Clone Hero integrado
|-- install-cage-yarg.sh # Orquestador Cage/YARG integrado
|-- scripts/
| |-- clone-miniarch.sh # Clona disco, cambia UUIDs y puede expandir /home
| `-- expand-home.sh # Expande /home despues de clonar
|-- 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
| |-- clonehero.sh # Clone Hero, Samba, updater y CSV
| |-- yarg.sh # YARG, settings, Samba, rendimiento y updater
| |-- customization.sh # Mensajes, cursor, assets y scripts extra
| `-- finalization.sh # Red, SSH opcional, limpieza y desmontaje
|-- assets/
| |-- README.md
| |-- yarg_720p.png
| |-- yarg_1080p.png
| |-- clonehero_720p.png # opcional/futuro
| |-- clonehero_1080p.png # opcional/futuro
| |-- 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. 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-cage-kiosk.sh
bash -n install-cage-yarg.sh
bash -n scripts/clone-miniarch.sh scripts/expand-home.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 /home/kiosk/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.
- foot.
- Plymouth.
- PipeWire.
- Samba.
- BATS.