InicioLinuxComo crear un mini sistema linux con busybox

Como crear un mini sistema linux con busybox

Linux1/8/2016

Hola Compañeros,


En este post les mostraré como hacer un mini sistema con linux y busybox parecido al de mi ultimo post pero en este caso será mas mínimalista y lo haremos mas artesanalmente, sin la ayuda de buildroot.
La idea es crear un livecd de no mas de 8 mb. mas con la intención de aprender como se arma un sistema basico, que la utilidad que el mismo tenga.

Necesitaremos tener cdrkit y syslinux instalados (en la mayoría de las distros ya vienen instalados)

Aviso que no habrá muchas imágenes puesto que no tiene sentido tomar capturas de los comandos escritos en la terminal.
Las versiones del kernel y busibox son las ultimas al momento de publicar este post, Uds. deberán modificarlas según lo crean conveniente.

Empezamos:

Nos logueamos como root.
Creamos la estructura de directorios que contendran nuestro proyecto y entramos en el segundo nivel de la misma:

mkdir -p midistro/{fuentes/kernel,fuentes/busybox} && cd midistro/fuentes

Descargamos y descomprimos el kernel:

wget -c https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.3.3.tar.xz
tar -xvf linux* -C ../fuentes/kernel


Descargamos y descomprimimos busybox:

wget -c https://www.busybox.net/downloads/busybox-1.24.1.tar.bz2
tar -xvf busybox-* -C ../fuentes/busybox


Creamos una instalación limpia, una configuración por defecto y lo compilamos (cambien el valor j9 por el que les corresponda núcleos +1, si tienen HT, nucleos * 2 +1):

cd ../fuentes/kernel/linux-4.3.3 && make mrproper && make defconfig && make -j9 bzImage && cd ../../../

Si quieren darle un nombre al kernel, antes de compilarlo abran el .config y modifiquen la linea

CONFIG_DEFAULT_HOSTNAME=""

Y pónganle el nombre que quieran.



Creamos una instalación limpia y una configuración por defecto para busybox:

cd fuentes/busybox/busybox-1.24.1 && make clean && make defconfig

Abrimos el .config y modificamos lo necesarios antes de compilar

nano .config

Aquí modificamos las siguientes lineas:


CONFIG_STATIC=y
CONFIG_FEATURE_HAVE_RPC=n
CONFIG_FEATURE_INETD_RPC=n

deben quedarles asi; estatico y sin redes RPC, sino no iniciará el sistema.



Compilamos busybox:

make -j9 && make install

Copiamos la instalación de busybox a una carpeta que contendrá el sistema de archivos root:

cp -R _install ../../fstemp && cd ../../fstemp && rm -f linuxrc


Creamos la estructura de archivos y damos permisos a /tmp

mkdir {dev,etc,proc,root,src,sys,tmp} && chmod 1777 tmp && cd etc

Creamos los initscripts que montaran nuestro sistema:

cat > bootscript.sh << EOF
#!/bin/sh

dmesg -n 1
mount -t devtmpfs none /dev
mount -t proc none /proc
mount -t sysfs none /sys

for DEVICE in /sys/class/net/* ; do
  ip link set ${DEVICE##*/} up
  [ ${DEVICE##*/} != lo ] && udhcpc -b -i ${DEVICE##*/} -s /etc/rc.dhcp
done

EOF

cat > rc.dhcp << EOF
#!/bin/sh

ip addr add $ip/$mask dev $interface

if [ "$router" ]; then
  ip route add default via $router dev $interface
fi

EOF

chmod +x rc.dhcp && chmod +x bootscript.sh


Creamos un inittab basico:

cat > inittab << EOF
::sysinit:/etc/bootscript.sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::once:cat /etc/bienvenido.txt
::respawn:/bin/cttyhack /bin/sh
tty2::once:cat /etc/bienvenido.txt
tty2::respawn:/bin/sh
tty3::once:cat /etc/bienvenido.txt
tty3::respawn:/bin/sh
tty4::once:cat /etc/bienvenido.txt
tty4::respawn:/bin/sh

EOF


Ponemos un mensaje de bienvenida al iniciar el sistema:

cat > bienvenido.txt << EOF

Bienvenido!!!

EOF
cd ..


Creamos el script que lanzará el init de busybox:

cat > init << EOF
#!/bin/sh
exec /sbin/init
EOF
chmod +x init

Creamos y comprimimos el initramfs:

find . | cpio -H newc -o | gzip > ../fstemp.cpio.gz && cd ../../fuentes/kernel/linux-4.3.3


Ahora creamos la ISO, pero debemos cambiar algunas cosas de Makefile:

nano arch/x86/boot/Makefile


Agregan la siguiente linea (justo como se ve en la imagen)




cp /usr/share/syslinux/ldlinux.c32 $(obj)/isoimage/

Y comentan esta otra:

# isohybrid $(obj)/image.iso 2>/dev/null || true

Ahora si, creamos la ISO y la copiamos al directorio principal con el nombre de midistro.iso:

make -j9 isoimage FDINITRD=../../fstemp.cpio.gz && mv arch/x86/boot/image.iso ../../../midistro.iso && cd ../../../

Hasta aca ya podran iniciar la ISO desde una máquina virtual o un CD, si quiren que inicie desde un USB, ubiquense donde esta la ISO y ejecuten:




isohybrid midistro.iso

Y listo!


Hasta la próxima!
Datos archivados del Taringa! original
87puntos
395visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

m
mabas011🇦🇷
Usuario
Puntos0
Posts8
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.