Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/07/2012, à 17:04

ADcomp

[expérimentale] Mini système

Hello,

Petit délire de cette aprem. 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 de busybox ( idem noyau ).

Voiçi la méthode que j'ai utilsé si envie de vous amuser smile

#!/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

vidéo demo avec Qemu :  http://www.youtube.com/watch?v=1UMsO2ZyewY


1341241692.png

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

Dernière modification par ADcomp (Le 02/07/2012, à 17:08)


David [aka] ADcomp

Hors ligne

#2 Le 03/07/2012, à 04:53

ADcomp

Re : [expérimentale] Mini système

maj : config , script d'init, "installation" (symlink) busybox

1341283604.png

#!/bin/sh

##
#    Create a MIni-liNUX system
#    by ADcomp <david.madbox@gmail.com>
##

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

# live directory
mkdir -p live/boot/isolinux

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

# copy /dev nodes ..
cp -dpR /dev/console dev/
cp -dpR /dev/tty dev/
cp -dpR /dev/tty[0-6] dev/
cp -dpR /dev/null dev/
cp -dpR /dev/zero dev/
cp -dpR /dev/ram0 dev/

# busybox
echo " -- copy busybox & create symbolic link"
cp /bin/busybox bin
chmod 4755 bin/busybox
chroot ../rootfs /bin/busybox --install -s
rm linuxrc
ln -s bin/busybox init

# keyboard
/bin/busybox dumpkmap > usr/share/kmap/dump.kmap

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 """#! /bin/sh
echo "Processing /etc/init.d/rcS ... "
/bin/mount proc
/bin/mount -a
/bin/hostname -F /etc/hostname
/sbin/ifconfig lo 127.0.0.1 up
/sbin/loadkmap < /usr/share/kmap/dump.kmap
""" > etc/init.d/rcS
chmod a+x etc/init.d/rcS

echo """::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
::ctrlaltdel:/sbin/reboot
""" > etc/inittab

# config stuff ..
echo "127.0.0.1      localhost" > etc/hosts
echo "minux" > etc/hostname
echo "/bin/sh" > etc/shells
echo "Mini Linux BusyBox experiment 0.1" > etc/issue
echo "order hosts,bind" > etc/host.conf
echo "multi on" >> etc/host.conf
echo """PATH="/usr/sbin:/usr/bin:/sbin:/bin"
LD_LIBRARY_PATH="/usr/lib:/lib"

if [ "`id -u`" -eq 0 ]; then
PS1='\e[1m\u@\h:\w\#\e[m '
else
PS1='\e[1m\u@\h:\w\$\e[m '
fi

DISPLAY=:0.0

export PATH LD_LIBRARY_PATH PS1 DISPLAY ignoreeof
umask 022
""" > etc/profile

# Users, groups and passwords
echo "root:x:0:0:root:/root:/bin/sh" > etc/passwd
echo "root::13525:0:99999:7:::" > etc/shadow
echo "root:x:0:" > etc/group
echo "root:*::" > etc/gshadow
chmod 640 etc/shadow
chmod 640 etc/gshadow


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"
cp /boot/vmlinuz-3.2.0-26-generic-pae live/boot/vmlinuz
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 rw root=/dev/null quiet
implicit 0
prompt 0
""" > 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

David [aka] ADcomp

Hors ligne

#3 Le 03/07/2012, à 12:51

ADcomp

Re : [expérimentale] Mini système

Comment ca marche .. smile

1341313513.png

Dernière modification par ADcomp (Le 03/07/2012, à 13:05)


David [aka] ADcomp

Hors ligne

#4 Le 03/07/2012, à 15:38

ADcomp

Re : [expérimentale] Mini système

script : script_mini_linux

Résultat dans une console :

1341321193.png

Test avec Qemu :

1341283604.png

Dernière modification par ADcomp (Le 09/07/2012, à 20:15)


David [aka] ADcomp

Hors ligne

#5 Le 12/07/2012, à 03:10

Godestiny

Re : [expérimentale] Mini système

Merci infiniment, je vais bien prêter attention à ton post, moi qui avait du mal à comprendre comment tout cela est lié.

Hors ligne