Archives du blog

Mini système – Linux & BusyBox

Je cherchais un moyen simple d’expliquer le fonctionnement d’un système minimale « live ».
J’ai simplement utilisé le noyau installé ( pas de compil, mais cela serait mieux, bien entendu ) et busybox ( idem noyau ).

Voilà la méthode que j’ai utilisée (sous Ubuntu 12.04) si envie de vous amuser

#!/bin/sh

# base directory
echo " -- create base directory - mini_linux"
mkdir mini_linux && cd mini_linux

# live directory
mkdir -p live/boot/isolinux

# minimal root filesystem
echo " -- create minimal root filesystem"
mkdir rootfs && cd rootfs
mkdir bin dev etc lib proc root sbin sys tmp usr var
mkdir -p usr/lib usr/local usr/share
mkdir -p var/cache var/lib var/lock var/log var/run var/spool
mkdir -p dev/pts dev/shm
chmod 1777 tmp

# busybox
echo " -- copy busybox & create symbolic link"
cd bin
cp /bin/busybox .
ln -s busybox sh
cd ..
ln -s bin/busybox init

echo " -- create /etc/fstab"
echo """
# /etc/fstab: information about static file system.
#
proc            /proc        proc    defaults          0       0
sysfs           /sys         sysfs   defaults          0       0
devpts          /dev/pts     devpts  defaults          0       0
tmpfs           /dev/shm     tmpfs   defaults          0       0
""" > etc/fstab

echo " -- compress rootfs --> live/boot/rootfs.gz"
find . -print | cpio -o -H newc | gzip -9 > ../live/boot/rootfs.gz

cd ..
echo " -- copy kernel -->  live/boot/vmlinuz"
echo "    need sudo .."
sudo cp /boot/vmlinuz-3.2.0-26-generic-pae live/boot/vmlinuz
sudo chmod a+rw live/boot/vmlinuz
echo " -- copy isolinux.bin --> live/boot/isolinux"
cp /usr/lib/syslinux/isolinux.bin live/boot/isolinux

echo " -- create config for isolinux"
echo """
default live
label live
    kernel /boot/vmlinuz
    append initrd=/boot/rootfs.gz
implicit 0
prompt 0
timeout 50
""" > live/boot/isolinux/isolinux.cfg

# create iso image
echo " -- create iso Image"
genisoimage -R -o cd.iso -b boot/isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -V "Live" -input-charset iso8859-1 -boot-info-table live

# test with Qemu
# qemu-system-i386 -cdrom cd.iso

Envie d’aller plus loin ?

– BusyBox : http://www.busybox.net/
– Linux From Scratch : http://www.linuxfromscratch.org/
– Free Electrons : http://free-electrons.com/
– Pierre FICHEUX : http://pficheux.free.fr/
– SliTaz Doc Scratchbook : http://doc.slitaz.org/en:scratchbook:start