![]() |
ELKS FAQ - Français | ![]() |
| 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.
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.
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.
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.
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.
Ces processeurs ne sont que des versions hautement intégrés des 8088 et 8086, donc ELKS tournera dessus.
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.
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.
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.
Editez /usr/include/sys/vm86.h et remplacez #include <linux/vm86.h> par #include <asm/vm86.h>
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.
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.
>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.
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:
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
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.