Documentación técnica · 2026

Distro Educativa GNU/Linux
para Primaria

Escuela N° 109 "Juan Chassaing" — Rosario, Santa Fe
Año del Centenario 1926–2026

¿Qué es esto? Guía de replicación de una distribución GNU/Linux educativa personalizada para netbooks de las Aulas Digitales Móviles del Programa Primaria Digital (Positivo BGH, Intel Atom N2600), destinada a alumnos de nivel primario.

¿Qué hicimos? Desarrollamos una distribución personalizada en una máquina virtual VirtualBox 7 sobre Ubuntu MATE 20.04 LTS, con identidad visual de la escuela, aplicaciones educativas seleccionadas y scripts de configuración automática por equipo. La distribución se distribuye mediante ISO generada con Systemback 2, instalable desde pendrive en modo Legacy BIOS.

¿Para qué? Para volver a poner en uso un recurso que muchas instituciones consideran "obsoleto": estas netbooks tienen el hardware justo para correr un sistema GNU/Linux liviano con todas las herramientas que un alumno de primaria necesita. Con la distro correcta, siguen siendo una herramienta de aprendizaje válida y completamente funcional.

Hardware objetivo

ComponenteDetalle
CPUIntel Atom N2600 @ 1.60GHz (32 bits)
RAM2048 MB
HDDToshiba MQ01AB — 320GB, SATA, modo AHCI
GPUIntel GMA 3600
Pantalla10.1" — resolución nativa 1024×600 (usable: 1360×768)
BIOSPhoenix SecureCore Tiano — Legacy Boot
Base del sistemaUbuntu MATE 20.04 LTS — Systemback 2

Configuración BIOS (Positivo BGH)

OpciónValor
Boot rápidoDesactivado
Legacy BootActivado
BIOS Level USBActivado
Controlador SATA modoAHCI
Orden de boot (instalación)USB → HDD

Particionado recomendado — MBR

Tabla MBR (sin partición bios_grub, solo necesaria en GPT+Legacy). GRUB se instala en /dev/sda.

/ · 25GB
swap
/home · ~293GB
ParticiónTamañoTipoMontaje
sda125 GBext4/
sda22 GBlinux-swapswap
sda3~293 GBext4/home

Aplicaciones incluidas

Educativas

AplicaciónUso
GComprisActividades para nivel inicial y 1er ciclo
Tux PaintDibujo para nivel inicial y 1er ciclo
JClic Player + AuthorActividades interactivas — contenidos en argenclic.net.ar
Kanagram, KBruch, KHangMan, KGeography, KTouch, Kig, KLettres, Knights, KRuler, KSquaresSuite educativa KDE
Childsplay, JFractionLabJuegos educativos y fracciones

Herramientas generales

AplicaciónUso
LibreOffice (Writer, Calc, Impress, Draw)Ofimática completa
FirefoxNavegador web
VLCReproductor multimedia
ShotwellVisor y editor básico de fotos
mtPaintEditor de imágenes liviano (alternativa a GIMP)
guvcviewWebcam (más liviano que Cheese en Atom)
iptuxChat en red local sin servidor — descubrimiento automático

Aplicaciones eliminadas

AplicaciónMotivo
GIMPMuy pesado para el hardware
MarbleReemplazado por KGeography; generaba 7 entradas duplicadas en el menú
CheeseReemplazado por guvcview
BleachBitCrasheó; limpieza manual por terminal
Agente SSH, Blueman, Rygel, im-launch, Tilda, MagnusInnecesarios para alumnos de primaria
ubuntu-mate-welcome, software-boutiqueSnaps innecesarios en producción
VirtualBox Guest AdditionsSolo para desarrollo en VM, no incluir en ISO final

Aplicaciones al inicio (resultado final)

AplicaciónEstado
Bienvenida (bienvenida.sh)✔ Mantener
Gestor de energía✔ Mantener
Maximus Window Management⚠ Opcional
Sonido inicial, Resolución de pantalla, SSH, Blueman, Cola de impresión, vboxclient✘ Eliminados

El script bienvenida.sh unifica: sonido de inicio, corrección de resolución, barra de progreso animada con identidad de la escuela y mensaje de bienvenida con compromiso de cuidado del equipo.

Personalización visual

Capturas de pantalla

El escritorio muestra el fondo de pantalla personalizado con la bandera argentina y el escudo del centenario. El menú de aplicaciones está organizado por categorías (Peques y Grandes) para facilitar la navegación de los alumnos.

Mensaje de bienvenida zenity
Bienvenida al iniciar sesión
Menú categoría Grandes
Menú · categoría Grandes
Menú categoría Peques
Menú · categoría Peques

Sonido de inicio personalizado

El sonido de inicio reemplaza al sonido por defecto del sistema. Es invocado directamente desde bienvenida.sh con paplay, eliminando la necesidad de una entrada separada en aplicaciones al inicio.

AL_sound.oga — Sonido de inicio
Reproducido al iniciar sesión · formato OGG Vorbis
⬇ Descargar

Wallpapers por netbook

30 fondos de pantalla numerados (fondo100x01.jpg a fondo100x30.jpg) ubicados en /usr/share/backgrounds/escuela/. Cada netbook tiene asignado su propio fondo mediante el script de configuración.

Nombre en login e iptux

El campo GECOS del usuario se configura por equipo ("Netbook No. 01 - Centenario") y aparece tanto en la pantalla de login de LightDM como en la lista de usuarios de iptux en red local. Nota: chfn no acepta el símbolo °, se edita /etc/passwd directamente para admitir caracteres especiales.

Resolución en pantalla de login (LightDM)

LightDM arranca antes de la sesión de usuario, por lo que requiere su propio script:

# /etc/lightdm/display-setup.sh
#!/bin/bash
SALIDA=$(xrandr | grep " connected" | awk '{print $1}')
if [ -n "$SALIDA" ]; then
    xrandr --output "$SALIDA" --mode 1360x768 --rate 60
fi

Registrar en /etc/lightdm/lightdm.conf:

[Seat:*]
display-setup-script=/etc/lightdm/display-setup.sh

Nombre del usuario en login: editar /etc/passwd directamente para admitir caracteres especiales como ° (chfn no los acepta).

Script bienvenida.sh

#!/bin/bash

# Sonido de inicio
paplay /usr/share/sounds/Yaru/stereo/desktop-login.oga &

# Resolución de pantalla (en background, termina antes del sleep 5)
SALIDA=$(xrandr | grep " connected" | awk '{print $1}')
if [ -n "$SALIDA" ]; then
    (sleep 3 && xrandr --output "$SALIDA" --mode 1360x768 --rate 60) &
fi

sleep 5
wait

hora=$(date +%H)
if [ $hora -lt 12 ]; then
  saludo="¡Buen día! 🌞"
elif [ $hora -lt 18 ]; then
  saludo="¡Buenas tardes! 😊"
else
  saludo="¡Buenas noches! 🌙"
fi

(
echo "5";  sleep 0.6
echo "# Preparando el entorno de aprendizaje..."
echo "15"; sleep 0.7
echo "# Cargando herramientas educativas..."
echo "30"; sleep 0.7
echo "# Ajustando configuraciones..."
echo "45"; sleep 0.7
echo "# Iniciando aplicaciones..."
echo "60"; sleep 0.7
echo "# Casi listo..."
echo "75"; sleep 0.7
echo "# Terminando detalles..."
echo "90"; sleep 0.7
echo "# ¡Todo listo para aprender! 🎒"
echo "100"; sleep 0.5
) | zenity --progress \
  --title="🏫 Escuela N° 109 - 100 Años" \
  --text="Iniciando la netbook del Centenario..." \
  --percentage=0 --auto-close --width=450

zenity --question \
  --title="Escuela N° 109 - 100 Años" --width=460 \
  --text="$saludo\n\nEstás usando la netbook del Centenario.\n\n¿Te comprometés a cuidarla?\n\n✔ No comer sobre el teclado\n✔ No golpear la pantalla\n✔ Cerrar los programas al terminar"

if [ $? -eq 0 ]; then
  zenity --info --title="¡Gracias!" --width=420 --timeout=6 \
    --text="💙 ¡Gracias por cuidarla!\n\nEsta netbook es de todos.\nCuidarla es cuidarnos entre todos."
else
  zenity --warning --title="Recordatorio" --width=420 --timeout=6 \
    --text="Esta netbook es una herramienta para aprender.\n\n¡Cuidémosla entre todos! 🙌"
fi

Script de configuración por netbook

Un único script instalado en /usr/local/bin/configurar-netbook.sh. Se ejecuta una sola vez por equipo tras la instalación, pasando el número como parámetro:

sudo configurar-netbook.sh 01   # netbook 01
sudo configurar-netbook.sh 15   # netbook 15

El script configura automáticamente: hostname, nombre visible en login e iptux (GECOS) y fondo de pantalla correspondiente a ese número.

#!/bin/bash
NUMERO=$(printf "%02d" $1)
if [ -z "$1" ]; then echo "Uso: $0 <numero>"; exit 1; fi

echo "netbook-$NUMERO" | tee /etc/hostname
sed -i "s/127.0.1.1.*/127.0.1.1\tnetbook-$NUMERO/" /etc/hosts
chfn -f "Netbook No. $NUMERO - Centenario" alumno

FONDO="/usr/share/backgrounds/escuela/fondo100x$NUMERO.jpg"
if [ -f "$FONDO" ]; then
    sudo -u alumno gsettings set org.mate.background picture-filename "$FONDO"
fi
echo "✅ Netbook $NUMERO configurada. Reiniciá para aplicar los cambios."

Limpieza antes de compilar la ISO

# APT
sudo apt clean && sudo apt autoremove --purge
sudo rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/*

# Logs
sudo journalctl --vacuum-size=50M
sudo rm -rf /var/log/*.log /var/log/*.gz /var/log/*old

# Temporales y caché
sudo rm -rf /tmp/* /var/tmp/*
rm -rf ~/.cache/* ~/.thumbnails/*

# Historial
history -c && cat /dev/null > ~/.bash_history
sudo bash -c 'cat /dev/null > /root/.bash_history'

# Snaps
sudo rm -rf /var/lib/snapd/snapshots/* /var/lib/snapd/cache/*

# Desmontar carpeta compartida de VM antes de compilar
sudo umount /home/alumno/compartida

Tips y consideraciones

chfn y caracteres especialesNo acepta . Usar No. o editar /etc/passwd directamente.
Systemback 2 y tamaño de ISOPuede superar los 4GB (a diferencia de la versión 1.x con límite estricto).
Carpeta compartida de VirtualBoxDesmontar antes de compilar la ISO o será incluida en el cálculo de tamaño.
Guest Additions durante desarrolloNo desinstalar: se pierden portapapeles y carpetas compartidas. Hacer snapshot antes de la limpieza final.
Script bienvenida.sh duplicadoAl editar con nano, verificar que no queden dos versiones concatenadas. Causa que el último zenity no se muestre.
xrandr y zenitySi xrandr cambia la resolución mientras zenity está abierto, puede cerrarlo. Usar wait para sincronizar ambos procesos.
iptux e identificaciónUsa el campo GECOS del usuario para identificar el equipo en la red. Configurarlo correctamente antes de usar en aula.
Headers del kernel viejosPueden ocupar ~100MB. Eliminar versiones antiguas con sudo apt remove --purge linux-hwe-X.X-headers-*.
Marble y entradas duplicadasGenera hasta 7 entradas en el menú por dependencias KDE. Eliminar el paquete y borrar .desktop huérfanos manualmente.
Listar programas del menúgrep -rh "^Name\[es\]=" /usr/share/applications/*.desktop | sed 's/Name\[es\]=//' | sort

Contenidos educativos

Los contenidos de JClic incluidos fueron desarrollados como parte del proyecto ArgenClic, una recopilación de actividades JClic en español para el contexto educativo argentino.

📦 Disponibles en: argenclic.net.ar