Este proyecto es el resultado de una charla con ChatGPT donde planteé lo siguiente:
Prompt original:
"dame un script que arme una distro con sbase y con sinit. muslc si es necesario para glibc. estaría piola tener doas y un usuariomitrecon acceso a root, dale? la idea es correrlo con qemu en mi mac"
La propuesta es armar un sistema Linux ultra-minimalista que bootea solo con:
- Kernel Alpine LTS (
vmlinuz-lts, x86_64 o aarch64) sinitcomoPID 1(init minimalista de suckless)sbaseyubase(alternativa ligera a GNU coreutils + util-linux)- OpenDoas (alternativa a
sudo) - Usuario
mitrecon acceso a root víadoas
Todo se empaqueta en un initramfs estático con musl, sin rootfs persistente. El sistema arranca, levanta proc, sysfs, devtmpfs y un getty en la consola serie (ttyS0) y en tty1.
Ideal para probar en QEMU desde macOS, sin instalar nada en disco.
- El script crea un
WORKDIRlimpio (mini-sinit/). - Descarga el kernel LTS de Alpine.
- Usa un contenedor
alpine:3.20para compilar estáticos con musl:sinitsbaseubaseOpenDoas
- Copia los binarios a un
rootfsmínimo. - Crea configs básicos:
/etc/rc.init(arranca mounts + getty)/etc/doas.conf(permite amitreser root sin password)/etc/passwd,/etc/group,/etc/shadow- MOTD con credenciales
- Empaqueta todo en
initramfs.img. - Lanza QEMU con kernel + initramfs.
El script build-minidistro.sh está pensado para correr de una.
chmod +x build-minidistro.sh
./build-minidistro.shlogin: mitre
password: mitre
# Ejemplos de uso
```bash
# Identidad actual
id
# Elevar a root con doas
doas id
doas sh
# Ver qué binarios tenés
ls /bin🖥️ QEMU en macOS
El script ya invoca QEMU con:
qemu-system-x86_64 \
-nodefaults -no-reboot -serial mon:stdio -nographic \
-machine accel=tcg,type=pc \
-cpu max -smp 2 -m 512M \
-kernel vmlinuz-lts \
-initrd initramfs.img \
-append "console=ttyS0,115200 earlyprintk init=/sbin/sinit"ARCH="aarch64"
QEMU="qemu-system-aarch64"