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 usuariomitre
con 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) sinit
comoPID 1
(init minimalista de suckless)sbase
yubase
(alternativa ligera a GNU coreutils + util-linux)- OpenDoas (alternativa a
sudo
) - Usuario
mitre
con 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
WORKDIR
limpio (mini-sinit/
). - Descarga el kernel LTS de Alpine.
- Usa un contenedor
alpine:3.20
para compilar estáticos con musl:sinit
sbase
ubase
OpenDoas
- Copia los binarios a un
rootfs
mínimo. - Crea configs básicos:
/etc/rc.init
(arranca mounts + getty)/etc/doas.conf
(permite amitre
ser 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.sh
login: 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"