|
Block devices ---> <*> Loop device support (CONFIG_BLK_DEV_LOOP) |
Il faut avoir également le périphérique de boucle (/dev/loop0 ou /dev/loop1). Si ce n'est pas le cas, il faut les créer :
# mknod /dev/loop0 b 7 0 # |
# ./creatux.sh low-mem/ACOPIER trouve Disquette..................... /dev/fd0 (1440 Ko) Noyau......................... 2.2.16/bzImage-disk-net-modules-ppp 2.2.16 Fichiers systeme.............. low-mem Point de montage temporaire... /mnt Taille du ramdisk............. 4096 Fichier lance par init........ /etc/init.d/rcS Sur une seule disquette Creation du systeme de fichiers. Copie des fichiers systeme.......... Liste des fichiers copies dans ./rootfs.fic Creation de l'image. Taille du noyau : 534953 Taille du systeme de fichier : 854229 Il reste 939607 pour le systeme de fichiers -> OK. 85378 octets de libre Mettre une disquette... Attention ! Toute les donnees seront effacees Appuyer sur [Entree] pour continuer. # |
On voit ici que tous les fichiers contenus dans le répertoire low-mem vont être copiés sur la disquette, avec comme noyau l'image 2.2.16/bzImage-disk-net-modules-ppp. Le fichier low-mem/ACOPIER peut être édité pour spécifier les fichiers système à copier :
# # Fichiers # ListeFichiers="etc/protocols etc/host.conf etc/services etc/resolv.conf \ etc/nsswitch.conf usr/share/terminfo/l/linux etc/terminfo/l/linux" # # Peripheriques # # Au minimun il faut des peripheriques : # ListePeriph="/dev/console /dev/kmem /dev/mem /dev/null /dev/ram0 /dev/tty1 \ # /dev/tty2 /dev/tty3 /dev/tty4 /dev/tty0" # dev/ptys* et /dev/ppp pour pppd ListePeriph="dev/fd* dev/hd* dev/mem dev/ppp dev/rtc dev/full dev/kmem \ dev/null dev/ram* dev/tty* dev/zero dev/console dev/audio \ dev/cdrom dev/ippp0 dev/mixer dev/modem dev/urandom dev/ptys*" # # Librairies qui ne sont pas affichees par un ldd # # * libresolv.so.2 et libnss_dns.so.2 pour que les programmes comme ping # ou telnet resolvent un nom (ie. ping tarsier execute ping sur l'adresse # IP de tarsier) # * libnss_files.so.2 pour ftp # * libm.so.6, libnsl.so.1 et libncurses.so.4 pour w3m # * libpam.so.0, libdl.so.2 et libutil.so.1 pour pppd # * libnss_files.so.2, libnss_compat.so.2 et libnsl.so pour voir afficher les # noms d'utilisateurs # et de groupe au lieu du numero par un ls -l ou id # * ... (liste a completer) # ListeLibrairies="libresolv.so.2 libnss_dns.so.2 libnss_files.so.2 \ libnss_compat.so.2 libnsl.so" # # Repertoires (avec ou sans le '/' au debut, c'est pareil) # ListeRepertoires="mnt root proc tmp var/log var/run floppy cdrom home \ pub/incoming" # # Modules pour le noyau (en chemin relatif par rapport au repertoire # /lib/modules/ |
$ make-addon.sh fh-rad.tar ppp-2.2.16.tar ppp.tar w3m.tar install-archive.sh Mettre une disquette... $ |
Par défaut, toutes les archives .tar seront utilisées, mais on peut specifier en argument quelles archives on veut inclure :
$ make-addon.sh ppp-2.2.16.tar w3m.tar ppp-2.2.16.tar w3m.tar install-archive.sh Mettre une disquette... 935+1 enregistrements lus. 935+1 enregistrements écrits. $ |
L'archive génerée s'appelle addon.tar.bz2. On peut l'utiliser à partir de la disquette génerée en tapant à partir de la disquette d'installation :
# encore.sh Inserer la disquette Decompression des fichiers... ppp-2. w3m. # |
Sinon on peut récuperer l'archive via NFS. Pour cela, il faut configurer le serveur NFS en mettant dans le fichier /etc/exports une ligne comme :
/public 192.168.1.0/255.255.255.0(rw,no_root_squash) |
si notre mini distribution se voit attribuer une adresse IP commencant par 192.168.1. Relancer le serveur NFS (/sbin/init.d/nfsserver restart pour la SuSE), copier le fichier addon.tar.bz2 dans le repertoire /public/creatux du serveur NFS, et lancer de la mini distribution :
# encore.sh -net tarsier:/public/creatux & # |
où tarsier est le nom du serveur NFS.
# ./creatux.sh -h Usage : creatux.sh [ -i <fic sys> ] [ -f <periph> ] [ -k <kernel> ] [ -r <point de montage> ] [ -d ] [ -c <count> ] [ -s <fic init> ] [ -t <font> ] [ -a <taille disquette> ] [ -l ] Exemple : ./creatux.sh -f /dev/fd1 -k /usr/src/linux/arch/i386/boot/bzImage -i ~mdecore/parted/ -r /tmp/sys -d -s /etc/init.d/rcS -t /usr/lib/kbd/consolefonts/m.fnt -d 1722 # |
Le système minimum ne comporte qu'un shell (/bin/sh). Ce shell peut être un shell compact comme ash.
Il faut rajouter une librairie, la librairie C et son chargeur (libc.so.6 et ld-linux.so.2) :
$ ldd /mnt/bin/sh libc.so.6 => /lib/libc.so.6 (0x4001a000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) $ ls -R .: bin etc lib sbin ./bin: sh ./etc: ./lib: ld-2.1.3.so ld-linux.so.2 libc.so.6 # ld-linux.so.2 -> ld-2.1.3.so ./sbin: $ mkdir /mnt/dev $ cp -a /dev/console /dev/kmem /dev/mem /dev/null /dev/ram0 /dev/tty1 /mnt/dev $ mkdir /mnt/etc $ echo "/lib" > /mnt/etc/ld.so.conf $ |
Pour l'utiliser :
# chroot /mnt/ /bin/sh # echo * # * = |
Taille du systeme de fichier : 453140 octets.
Editer Config.h, compiler.
$ cp /public/busybox-0.60.0/busybox bin/ $ mkdir proc $ echo "proc /proc proc defaults" > etc/fstab $ mkdir -p usr/bin usr/sbin |
Sur la machine exécutant notre mini distribution ('-' <-> ')', car clavier US) :
# /bin/busybox mount -a # /bin/busybox --install # |
$ ./liens $ cd sbin/ $ ln -s ../bin/busybox init $ mkdir etc/init.d $ cat > etc/init.d/rcS # script lu par defaut par la version busybox de init #!/bin/sh /bin/mount -a $ chmod +x etc/init.d/rcS |
Rajouter /dev/tty2 /dev/tty3 /dev/tty4 (au moins 4 consoles demandées par init).
$ ldd bin/loadkeys libcfont.so.0 => not found libctutils.so.0 => not found libconsole.so.0 => not found libc.so.6 => /lib/libc.so.6 (0x4001a000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) $ cp -a /lib/libcfont.so.0* lib/ $ cp -a /lib/libconsole.so.0* lib/ $ cp -a /lib/libctutils.so.0* lib/ $ echo "loadkeys /etc/fr.kmap" >> etc/init.d/rcS |
$ bin/busybox dumpkmap > etc/keymap $ echo "loadkmap < /etc/keymap" >> etc/init.d/rcS |
$ cp /public/tinylogin-0.80/tinylogin bin/ $ ./liens $ cat > etc/inittab ::sysinit:/etc/init.d/rcS tty1::respawn:/sbin/getty 38400 tty1 tty2::respawn:/sbin/getty 38400 tty2 tty3::respawn:/sbin/getty 38400 tty3 tty4::respawn:/sbin/getty 38400 tty4 ::ctrlaltdel:umount -a -r & reboot $ ldd bin/tinylogin libcrypt.so.1 => /lib/libcrypt.so.1 (0x4001a000) libc.so.6 => /lib/libc.so.6 (0x40047000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) $ cp -a /lib/libcrypt.so.1 lib/ $ echo "root::0:0:root:/root:/bin/sh" > etc/passwd # root sans mot de passe $ echo "root:x:0:" > etc/group $ mkdir root |
Taille du système de fichier : 683122 octets.
$ cat >> etc/init.d/rcS ifconfig lo 127.0.0.1 up ifconfig eth0 192.168.1.3 up hostname demo-disk $ |
$ cat /etc/resolv.conf search chez.moi nameserver 192.168.1.4 $ |
et rajouter les librairies :