Wikiland

lfssoekris

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes ec2-54-162-134-88.compute-1.amazonaws.com

Créer un système d'exploitation de type linux pour un soekris 4501




Le Projet:


Dans le cadre de mon stage de Licence Pro NAAP à l'IUT A de l'Université Claude Bernard de LYON. Je dois créer un système d'exploitation fonctionnant sur un routeur proche de l'architecture du Soekris 4501. J'ai pris l'option de partir de rien pour deux raisons, d'une part c'est un stage dont le but est d'apprendre un max de chose donc plus c' dur et plus c' bon et deuxièmement le fait de partir "de nothing" me permet de contrôler toute la chaîne et de faire quasiement ce que je souhaite. Une troisième raison moins glorieuse est que j'ai essayé plusieurs fois de créer le même système d'exploitation avec des bouts précompilés et chaque fois le même résultat => ECHEC!!!. Donc je suis parti du script buildroot (un environnement de cross compilation spécialisé dans les systèmes embarqués) auquel j'ai rajouté les logiciels nécessaire pour créer une sonde réseau au niveau applicatif.


Le cahier des charges :




Résultats :


Voici deux images de filesystems pretes à servir, le premier est complet pas le deuxième :

=> Pour le soekris net4501 fs-soekris-net4501.dd.gz (29 Mo) (Nécessite une compact flash d'au moins 32 Mo)

=> Pour le soekris net4511 avec les outils pour le pcmcia (Nécessite une compact flash d'au moins 256 Mo) : fs-soekris-net4511.dd.gz (32 Mo)
Si vous utilisez celui la il faut penser à intégrer les bons modules dans le noyau. Et déplacer tout les fichiers de configuration sur la deuxième partition (voir le petit 8 du 3ième paragraphe).


Pré-requis :



Soekris net4501. *
Desc : Un soekris net 4501



Logiciel nécessaire :



Tous les archives doivent être décompressée dans le même répertoire.

C'est parti !!:


La création d'un système d'exploitaiton à eu lieu sur une Fedora Core 5 à l'aide du script buildroot. Ce script a été modifier pour permettre d'ajouter quelques logiciels (hping3, nmap, hping, ...). Les modifications n'ont pas été rapporté aux développeurs car elles ne permettent pas de compiler les logiciels précédament cités sur toutes les architectures supportées par Buildroot.


1) Préparation de la compact-flash


  1. Partitionner votre compact flash en deux partitions une de 22Mo et une de 10Mo à l'aide du logiciel fdisk. Activer le flag bootable sur la première partition (celle de 22Mo).
  2. Formatez les deux nouvelles partitions.
    $ mk2fs /dev/sda1
    $ mk2fs /dev/sda2
  3. Téléchargez grub et décompressez le (l'endroit importe peu), grub doit être installé sur votre pc pour pouvoir installer le secteur de boot sur la compact flash:
    $ wget ftp://alpha.gnu.org/gnu/grub/grub-0.97-i386-pc.tar.gz
    $ tar -zxf grub-0.97-i386-pc.tar.gz
    $ cd grub-0.97-i386-pc
    $ cp -r boot/ /media/disk (/media/disk correspond chez moi à /dev/sda1, la partition qui a le flag bootable)
    $ grub (on passe donc maintenant dans le shell de grub)
    device (hd4) /dev/sda1 # my usb device in linux is called /dev/ubb
    root (hd4,0)
    setup (hd4)
    quit

La compact flash est bootable, il ne manque plus que le kernel et l'initrd.


2) Configuration et compilation du noyau.


Je pars du principe que le kernel, buildroot, ainsi que l7-filtering ont été décompressés dans le même répertoire, toutes les commandes présentées ici partent de celui-ci.

  1. Decompressez le kernel dans un répertoire.
  2. Téléchargez et appliquez les patchs pour l7-filtering au kernel, pour cela placez vous dans le repertoire du kernel :
    $ patch -p1 < ../netfilter-layer7-v2.2/kernel-2.6.13-2.6.16-layer7-2.2.patch
  3. Copier le fichier config.kernel dans le répertoire du kernel sous le nom .config
    $ cp conf/config.kernel linux-2.6.17.4/.config
    3 bis) Si vous voulez rajouter un driver ou un logiciel :
    $ make menuconfig
  4. Compiler le tout :
    $ cd linux-2.6.17.4
    $ make bzImage && make modules && make modules_install
  5. Ajout du GPIO :
    $ cd ../gpio-1.3.2+trillian0.01
    $ make -C /lib/modules/2.6.17.4-6windos/build SUBDIRS=`pwd` modules
    $ mkdir -pv /lib/modules/2.6.17.4-6windos/kernel/misc
    $ cp gpio.ko /lib/modules/2.6.17.4-6windos/kernel/misc

Le kernel est compilé il se trouve dans arch/i386/boot/bzImage et les modules dans /lib/modules/2.6.17.4-6windos


3) Configuration et compilation du filesysteme.


  1. Decompressez l'archive fournit et éditez la variable KERNEL_FINAL dans le fichier buildroot/Makefile qui point vers le répertoire où le kernel a été décompressé et compilé.$ vi buildroot/Makefile
  2. Dans le répertoire, exécutez :
    $ make menuconfig
  3. Inpectez la configuration, puis sauvegardez la.
  4. Compilation :
    $ make
    $ make quagga
    $ make hping3
    $ make
  5. Vous devriez voir apparaître un fichier rootfs.i386.ext2 à la racine. Copiez le :
    $ cp rootfs.i386.ext2 ../
  6. Montez le dans un répertoire temporaire:
    $ mkdir -v tmp/
    $ mount -o loop rootfs.i386.ext2 tmp/
  7. Allez dans le répertoire conf et modifiez les trois variables du script custom.sh (CONF_DIR, MOUNT_DIR et KERNEL_VER qui représentent respectivement le répertoire où se trouve les fichiers de configuration, l'endroit où rootfs a été monté et la version du kernel)puis exécutez le :
    $ ./custom.sh
    Si vous ne vous servez pas du relay/server DHCP, allez dans le répertoire tmp/etc/init.d/ et renomez les fichiers S80dhcp-relay et S80dhcp-server en TS80dhcp-relay et TS80dhcp-server.
    Profitez en pour modifier les fichiers qui doivent être modifier (par exemple si vous avez crée plus de partition, ou si vous avez qu'une seule partition).
  8. Pour faciliter la configuration des différents logiciels présents, les fichiers présents dans le répertoire etc/ (sauf quelques uns) sont écrits sur la deuxième partition de la CF. Toujours dans le répertoire conf, éditez le fichier liensymboliques.sh et modifier les variables MOUNT_INITRD et MOUNT_PART2 qui représentent le chemin où le fichier rootfs a été monté et le point de montage de la deuxième partition. Puis exécutez le :
    $ ./liensymboliques.sh
    Tout fichier de configurations non nécessaire au démmarrage est déplacé sur la compact flash et lié via un lien symbolique. C'est à ce moment la que vous pouvez personnaliser le plus facilement (rajouter des partitions montées au démmarrage, démarrer des logiciels, ...).
  9. Rendez vous à la racine de votre futur filesystem et créez l'initrd qui sera chargé en mémoire lors du demmarrage :
    $ cd tmp/
    $ find . -print | cpio -o -Hnewc | gzip -f > ../initrd.gz

Votre filesystem est ready. Par défaut le mot de passe pour l'accès root est "toortoor", la partition n°2 est monté dans le répertoire /scripts, le serveur web (lighttpd) à comme racine web /www et les serveur web et ssh sont lancés.


4) Installation sur la compact flash du soekris.


  1. Rendez vous à l'endroit à la racine du projet et copiez le kernel et l'initrd sur la premiere partition dans le repertoire boot/ :
    $ cp linux-2.6.17.4/arch/i386/boot/bzImage /media/disk/boot/vmlinuz
    $ cp initrd.gz /media/disk/boot/initrd.gz
  2. Configuration de grub :
    $ cp grub.conf /media/disk/boot/grub
    $ cd /media/disk/boot/
    $ ln -s grub.conf menu.lst
  3. Par défaut grub est configuré pour afficher ces informations sur le port série n°1 à 9600 bauds et il boote automatiquement sur l'entrée 6windos. Bien sur vous pouvez modifier ces paramatres dans les fichiers grub.conf.


Ajout de logiciel/Modification de version d'un logiciel:


Si vous voulez :


Contact/Suggestions/Critiques:


Par mail ou en laissant un commentaire sur cette page, merci d'avance.


Liens:



Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]