ELKS Logo ELKS FAQ - Français Baby Linux Logo

| Website History | Download | FAQ | History | Introduction | Mailing Lists | News | Releases | Home |


Le document présent est destiné à répondre aux questions les plus fréquentes concernant l'ELKS (Embeddable Linux Kernel Subset), aussi appelé Linux-8086. Ce nouveau noyau est en effet destiné à tourner sur les plus petits PC fonctionnels existants, les XT (principalement 8086 et 8088).

Cette FAQ (Foire Aux Questions), maintenue par Arnaud Launay, est basée sur la FAQ d'Al Riddoch, elle-même dérivée de la FAQ originale de Brian Candler. La dernière version de la Faq originale (en anglais) est accessible sur http://elks.sf.net/faq/.

Des informations complémentaires peuvent être trouvées sur l'ELKS Home Page.

Il existe par ailleurs une liste de diffusion en Anglais. Pour s'y abonner, envoyez un message (sans sujet et sans signature) à majordomo@vger.kernel.org, contenant dans le corps les mots subscribe linux-8086.

Pour se désabonner de la liste et ne plus recevoir les nombreux messages des usagers, envoyez un message (sans sujet et sans signature) à majordomo@vger.kernel.org, contenant dans le corps les mots unsubscribe linux-8086.

ELKS n'est pas Linux, et la liste de diffusion, malgré son nom, n'est pas le bon endroit pour poser des questions sur Linux. Voyez plutôt des groupes de discussion comme comp.os.linux.answers ou fr.comp.os.linux.


Section 1 - Général

Section 2 - Compilation et Installation

Section 3 - Utiliser ELKS


Q1.1. Qu'est ce que l'ELKS ?

L'ELKS est l'Embeddable Linux Kernel Subset, un projet de construction d'un petit noyau correspondant à Linux (qui aura plus ou moins les fonctionnalités d'UNIX V7 dans le noyau) qui peut tourner sur des machines dont les ressources processeur et mémoire sont limitées. Plus d'informations sur l'arrière-plan, les buts et le status actuel du projet peuvent être trouvés sur l'ELKS Home Page.

Les cibles initiales sont les Intel 8086 et éventuellement les 286 en mode 16 bits protégé. Un noyau pouvant tourner sur ce type de machine peut être utile pour les systèmes intégrés, pour le déploiement informatique du Tiers-Monde où les machines 80x86 x>0 ne sont pas facilement disponibles, et pour l'utilisation sur divers portables.

Q1.2. Comment l'ELKS peut-il être comparé au Linux Standard ?

ELKS est développé comme un sous-ensemble du vrai noyau Linux, et doit être suffisamment petit pour être compris par une seule personne, pour ainsi devenir un inévaluable moyen d'apprentissage. ELKS est récemment entré dans un stade de développement bêta et la plupart des fonctionnalités sont présentes.

Ceci étant dit, le système peut déjà être lancé, donne des consoles virtuelles, monter un système de fichiers minix, procure un support des E/S série et parallèle basique, permettant la connexion à un autre ordinateur via un lien SLIP null-modem. Enfin, ELKS supporte la pagination, permettant d'élargir virtuellement la quantité dé mémoire disponible.

Q1.3. Existe-t-il une version "prête à l'emploi" de l'ELKS ?

Pas pour le moment. Vous devrez utiliser une machine Linux standard, charger les sources, et cross-compiler pour générer le code 8086. Les images disques boot et root sont fournies avec la version actuelle de l'ELKS, mais elles sont uniquement prévues comme plateformes de tests pour le système, et leur utilisation est assez limitée.

Si vous êtes intéressés par la construction d'une distribution basé sur ELKS, vous êtes le bienvenu.

Q1.4. ELKS peut-il tourner sur un 8088 ?

Le 8088 est identique au 8086, sauf qu'il a un bus de données externe en 8 bits, au lieu de 16 bits; il est donc plus lent. Ainsi, oui, l'ELKS peut tourner sur un 8088.


Q1.5. À propos des processeurs 80188 et 80186

Ces processeurs ne sont que des versions hautement intégrés des 8088 et 8086, donc ELKS tournera dessus.

Q1.6. À propos des processeurs NEC V20 et V30

D'un point de vue logiciel, ce sont simplement des processeurs 8088 et 8086, à la seule exception que l'instruction AAD ne peut pas être utilisée avec des bases autres que décimales sur le V20 et le V30, alors qu'elle peut être utilisée avec d'autres bases sur les 8088 et 8086. Cette différence n'empêchera pas ELKS de tourner sur ces processeurs, et l'on peut présumer que le noyau ne sera pas affecté par cette différence; néanmoins, des rapports d'utilisateurs seraient appréciés.

Section 2 - Compilation et Installation

Q2.1. Où puis-je trouver les sources ?

Le site de base du développement se trouve sur http://elks.sf.net/.

L'environnement de développement Dev86 se trouve sur la page de Robert de Bath.

Si vous connaissez d'autres sites, ou désirez en créer un, contactez le responsable.

Q2.2. Comment créer un noyau ELKS ?

Les mises à jour récentes contiennent un noyau binaire compilé que la plupart des gens peuvent utiliser pour commencer à tester. Vous devriez seulement avoir besoin de le compiler si vous désirez modifier le noyau, ou changer les options de configuration. Le fichier boot, contenu dans images.zip, peut être écrit sur une disquette via la commande dd ou RAWRITE.EXE pour créer une disquette noyau.

Si vous voulez compiler votre propre noyau, récupérezdev86/Dev86src-0.16.3.tar.gz et elks-0.1.0.tar.gz (ou les dernières versions) sur les sites de SourceForge et celui de Robert de Bath. Décompressez les, par exemple, dans /usr/src :

    tar -xvzf Dev86src-0.16.3.tar.gz -C /usr/src
    tar -xvzf elks-0.1.0.tar.gz -C /usr/src

L'environnement de développement sera décompressé dans /usr/src/linux-86, et les sources du noyau dans /usr/src/elks. Vous devrez ensuite compiler les outils de développement, incluant le compilateur spécifique bcc :

    cd /usr/src/linux-86
    make; make install

Ceci fait, attaquez vous à la compilation du noyau:

    cd /usr/src/elks
    make dep
    make config
    make

make config fonctionne de la même manière que sur le noyau Linux standard. La configuration par défaut fonctionnera sur la majorité des systèmes. Ne changez aucune des options si vous ne savez pas ce que vous faîtes.

(Si vous êtes habitués à compiler des noyaux Linux par gcc, vous serez amusés par la rapidité à laquelle celle-ci se fait !) Le résultat en est une image nommée Image, que vous pouvez copier sur une disquette formatée, ce qui vous permettra de lancer le noyau:

    dd if=Image of=/dev/fd0

ou bien

    make disk

Vous devriez maintenant pouvoir lancer le système par la disquette, mais vous n'obtiendrez pas beaucoup plus sans disquette root à mounter. Pour celà, vous avez sur le site ftp de l'ELKS un fichier nommé images.zip; il contient un noyau (boot), une disquette principale (root) et une disquette 720k complète (comb) permettant de booter avec une seule disquette.

Vous pouvez également créer votre propre disquette principale; ceci sera développé en question 2.5.

Q2.3. J'obtiens une erreur m'affirmant que /usr/include/linux/vm86.h n'existe pas ?

Editez /usr/include/sys/vm86.h et remplacez #include <linux/vm86.h> par #include <asm/vm86.h>

Q2.4. Comment créer un 'init' pour ELKS ?

Une fois le noyau ELKS booté, il lance /bin/init. Une vraie version d'init est en préparation pour inclusion dans le paquetage des tiny-utils, que l'on peut trouver sur linux.mit.edu. Un init et un login très basiques peuvent être trouvées dans la partie sysutils du paquetage elkscmd, distribué avec chaque mise à jour. Le code du noyau a changé récemment, et celui-ci lance dorénavant /bin/init à la place de /bin/sh.

Pour installer init et login, il faut les compiler tous les deux avec...

  bcc -0 -O -ansi -s init.c -o init
bcc -0 -O -ansi -s login.c -o login

-0 selects 8086 code generation,
-O enables optimisation,
-ansi enables ansi-style function prototypes (only), and
-s strips symbols out of the binary.

... et copiez les dans le répertoire /bin de votre disque principal. Le programme login nécessite un /etc/passwd et un /etc/group, et un /bin/sh (ou autre, dépendant de l'entrée dans /etc/passwd).

A partir du noyau 0.0.56, sash fonctionne et est utilisé comme /bin/sh par la plupart des gens. Il peut être trouvé dans le paquetage elkscmd. Pour de meilleurs résultats, copiez /etc/passwd et /etc/group d'une distribution Linux standard sur la disquette root; ainsi, ls -l fonctionnera proprement, et /usr/lib/liberror.txt pour que sash puisse reporter les erreurs.

Q2.5. Comment créer un 'root filesystem disk' ?

Vous devrez créer une disquette minix contenant les fichiers et octets appropriés. Pour l'instant, 2 fichiers seulement sont nécessaires - /dev/tty (4,0) et /bin/init, qui lancera le getty, qui a son tour lancera un shell. Vous pourrez egalement trouver les commandes classiques - mount, cp, cat, rm, ... Mais n'attendez pas beaucoup plus de l'elks pour l'instant... Il y a beaucoup de travail à faire.

Note: /dev/tty est différent de celui que le Linux normal utilise (5,0).

Alternativement, si vous avez un noyau >= 2.0.x et mount >= 2.5k, vous pouvez utiliser le système de fichiers loopback pour créer une image disque sur votre disque dur, et ensuite la basculer sur la disquette.

    dd if=/dev/zero of=root.image bs=1k count=80
    mkfs -t minix root.image
    mount -o loop root.image -t minix /mnt  # /mnt est le mount point
    ...
    umount /disk
    dd if=root.image of=/dev/fd0

Surtout ne pas compresser l'image de la disquette root ! cette fonction n'est pas encore implémentée dans l'elks.

Q2.6. Que faire si mon XT a un lecteur 360k ?

>Préparer les images boot et root devant tourner sur une autre machine requiert un peu d'attention, spécialement si la machine a un lecteur 360k. Les lecteurs 5'1/4 360k comportent des têtes à 40 tracks, alors que les lecteur 1,2 Mo ont 80 tracks. Ainsi, un lecteur 1,2 Mo peut lire des disquettes 360k mais pas forcément les écrire, car le lecteur 1,2Mo écrira des tracks de taille moitié moindre que celle attendue par le lecteur 360ko.

Une solution peut être de placer le lecteur 360ko comme 2nd lecteur de votre PC - ce qui vous permettra de formater les disquettes 360ko avec fdformat /dev/fd1d360 et créer un système tel celui décrit ci-dessus.

Une autre solution consiste à créer une image de la disquette, puis à la transférer sur le PC contenant le lecteur 360ko (avec un câble série), et utiliser ensuite "rawrite" pour construire la disquette à partir de l'image.

Q2.7. Le programme rawrite

Rawrite est un programme permettant d'écrire une image sur une disquette. Il permet de transcrire les images du noyau ELKS et de sa root image associée sur 2 disquettes 360ko. Programmes nécessaires:


Section 3 - Utiliser ELKS

Q3.1. Puis-je utiliser des binaires bcc sous Linux ?

Oui - en chargeant un module dans le noyau vous pourrez directement exécuter des binaires ELKS. Celà rend le développement de programmes destinés à tourner sous ELKS bien moins pénible, puisque vous pouvez directement les tester sur un système Linux normal (avec cependant comme réserve le fait qu'ils peuvent ne pas fonctionner sous ELKS, si le programme utilise des implants du noyau qui n'existeraient pas encore dans ELKS).

    cd /usr/src/linux-86/elksemu
    make module
    insmod binfmt_elks.o

A noter, vous devrez relancer 'insmod' à chaque lancement.
Si, lors de la compilation du module, vous obtenez une erreur indiquant "modversions.h: no such file or directory", alors vous devrez éditer le Makefile pour retirer la référence à ce fichier, c'est-à-dire:

    MODCFLAGS=-D__KERNEL__ -Wall -Wstrict-prototypes -O2 \
        -fomit-frame-pointer -fno-strength-reduce -pipe \
        -m486 -DCPU=486 -DMODULE -DMODVERSIONS

Q3.2. Puis-je booter l'ELKS sous DOSEMU ?

Oui. ELKS peut se lancer avec dosemu > 0.63 et linux ^gt; 2.0.7. Vérifiez que votre lecteur de disquette est configuré correctement dans /etc/dosemu.conf, et utilisez l'option -A pour forcer le lancement sur la disquette.


This document is released under the terms of the GNU General Public Licence, version 2 only.