| Win3x.Org http://www.win3x.org/win3board/ |
|
| Un 386 recyclé en terminal http://www.win3x.org/win3board/viewtopic.php?f=2&t=1683 |
Page 1 sur 1 |
| Auteur : | kdntl [ 08 avr. 2005 22:16 ] |
| Sujet du message : | Un 386 recyclé en terminal |
| Un 386 recyclé en terminal Peut-être avez-vous un vieil ordinateur qui traîne dans la cave et dont le disque dur ne marche plus. Vous pouvez lui redonner une seconde vie en l'utilisant comme terminal, en le connectant à votre ordinateur et en construisant la disquette de boot nécessaire. Voici quelques explications. Le matériel que j'ai utilisé est un vieil ordinateur dont le processeur est un 386 SX, avec 4 Mo de mémoire vive, ainsi qu'un lecteur de disquette, un clavier français (azerty) et un port série. Je pense que c'est le strict minimum pour pouvoir lancer un Linux. En fait, ça devrait marcher avec 2 Mo de RAM, en modifiant un peu la procédure. Je précise que le port série est géré par un UART 16450 qui ne peut monter qu'à 38400 bps et ce, théoriquement (disons utopiquement Je vais présenter deux solutions. La première est basée sur un OS du type DOS (on pourra utiliser MSDOS ou l'équivalent libre FreeDOS) et Telix, un programme shareware d'émulation de terminal. L'autre possibilité ne met en jeu que des logiciels libres et utilise un noyau Linux ainsi que le programme minicom. Les deux configurations proposées ont le même fonctionnement schématique. Seule la méthode de fabrication de la disquette de boot change. En gros, le vieux 386 va démarrer la disquette bootable et exécuter ce qui se trouve dans le secteur de boot. Ce petit quelque chose va lancer le système d'exploitation puis ce dernier va finalement lancer le programme d'émulation de terminal choisi. Pour tester rapidement vos disquettes de boot, vous pourrez utiliser l'émulateur de PC qemu qui fonctionne sous Linux. Par exemple, avec la disquette dans votre lecteur, vous pouvez lancer qemu par la commande
Configuration de votre système Pour que votre système Linux (ou n'importe quel UNIX) puisse gérer le terminal, il faut faire un petit changement de configuration très simple. Par défaut, au démarrage, votre système Linux lance un certain nombre de consoles à partir desquelles vous pouvez vous logguer. Le lancement de ces consoles se fait grâce au fichier /etc/inittab. Il vous suffit de rajouter dans ce fichier une ligne du type
Première solution : DOS + Telix L'avantage de cette solution est la facilité de mise en oeuvre mais aussi les meilleures performances. En effet, les performances du port série controllé par un UART 8250 ou 16450 dépendent fortement de la vitesse à laquelle le processeur gère les caractères arrivant ou partant. Un OS léger comme DOS permettra alors un gain de performance qui reste cependant minime. D'un autre côté, cette solution présente l'inconvénient majeur de faire tourner un shareware qu'il faut en toute légitimité payer au bout de quelques semaines. De plus, DOS utilise un encodage différent du très courant iso8859-1. En conséquence, les caractères accentués ne passent pas du tout correctement, et c'est assez embêtant pour les personnes qui, comme moi, ont un mot de passe contenant des "à" ou des "é". Pour construire la disquette de boot, c'est très simple. Prenez un système DOS, mettez une disquette vierge dans votre lecteur (A: dans l'exemple) et tapez la commande
Pour finir, installer Telix sur un système DOS, dans C:\TELIX par exemple. Puis copier ce répertoire sur la disquette en ayant pris soin d'enlever les fichiers inutiles pour que le tout tiennent sur la disquette. Par exemple, les fichiers de documentation (les fichiers *.DOC) ne sont pas nécessaires et prennent beaucoup de place inutilement. Rajoutez enfin à la fin du fichier AUTOEXEC.BAT de votre disquette les lignes suivantes :
Deuxième solution : Linux + minicom Même si cette solution est très légèrement moins performante que la première et plus difficile à mettre en place, elle présente l'avantage indéniable de n'utiliser que des logiciels libres. Je suppose que dans toute la suite vous travaillez sous root (c'est nécessaire pour créer et monter les systèmes de fichier). Le répertoire de travail sera le $HOME de root, abrégé par ~. Mise en place du chargeur : syslinux Le chargeur utilisé sera syslinux pour sa facilité de configuration. Pour cela, formatez au format VFAT une disquette avec
Mise en place du noyau Décompressez les sources du noyau et entrez dans la racine de l'arborescence des sources :
Et puis, si comme moi vous avez un clavier azerty (ou tout autre clavier non américain), il faudra faire une manipulation supplémentaire pour que le clavier par défaut du noyau soit le votre. Pour celà, il faut remplacer le fichier drivers/char/defkeymap.map présent dans l'arborescence des fichiers sources du noyau par le fichier .map qui est celui de votre clavier. Par exemple, j'y ai mis le contenu du fichier /usr/share/keymaps/i386/azerty/fr-latin1.map.gz, après l'avoir décompressé bien sûr. Il faut aussi remplacer les include de ce fichier fr-latin1.map par les fichiers qu'ils appellent. Voilà, vous pouvez maintenant compiler votre noyau avec
Maintenant, votre disquette est prête à démarrer votre noyau au clavier francisé, mais il manque le principal : minicom. Ce dernier a besoin d'un certain environnement pour fonctionner : un ficher /etc/minird.dfl ou encore un /dev/ttyS0 par exemple. Créons donc le fichier ramdisk qui contiendra l'arborescence. Ce fichier devra faire exactement 1024 Ko comme spécifié dans les options du noyau :
Je vous donne quand même un aperçu de ce qu'il faut faire. Tout d'abord créer les répertoires :
Compilation de minicom Décompressez les sources de minicom et entrez dans la racine de l'arborescence des fichiers sources :
Il faut aussi supprimer ou plutôt remplacer tous les appels aux fonctions getpwuid() à partir de la ligne 1189 de src/minicom.c, sinon minicom refuse de se lancer et affiche l'humoristique message d'erreur You don't exist. Go away. (encore heureux qu'il y ait eu ce messaye d'erreur, sans quoi je pense que je n'aurai jamais réussi à compiler un minicom qui marche !). Il faut alors remplacer en dur les appels de ces fonctions par ce qu'elles retournent dans le cas de l'utilisateur root. Je me retrouve ainsi, par exemple, à la ligne 1199 avec :
Maintenant, il faut savoir que ça marche si vous avez vos librairie de la libc compilées pour un processeur 386. Si ce n'est pas le cas, comme moi, vous devez installer un environnement de cross-compilation pour i386. Comme c'est assez compliqué, j'ai choisi de télécharger un environnement de développement pour i386 tout fait, et livré avec la µlibc (qui est un remplaçant de la libc mais en plus petit et donc spécialement adaptée aux manipulations comme la nôtre) Retour sur notre initrd Maintenant que minicom est compilé, il faut copier le binaire statique obtenu dans le /bin de votre initrd. Créer ensuite dans votre initrd un lien symbolique nommé init (que le noyau cherchera et lancera) pointant sur minicom :
Voilà, si vous n'avez eu aucun problème, alors vous êtes soit très fort (auquel cas je me demande pourquoi vous êtes en train de lire ce document), soit très chanceux. Sinon, je suis certain que vous aurez beaucoup appris en essayant de construire votre disquette, comme ça a été le cas pour moi. Au niveau des problèmes, je constate que la vitesse de mon terminal est en pratique aux alentours des 9600 bps. Je ne sais pas si c'est un problème de configuration ou si c'est parce que le 386 est trop lent pour les "haut-débits". Quoi qu'il en soit, bon courage et bon bidouillage ! Liens Sont regroupés ici quelques liens vers des resources qui vous seront utiles pour la confection de votre disquette. Les programmes
|
| Auteur : | BENARIAC [ 09 avr. 2005 19:50 ] |
| Sujet du message : |
| Ça tiens sur une disquette 720 ko? Mon T1100 + n'a que cela (à l'époque de sa sortie, deux lecteurs de disquettes, c'était du luxe, alors imaginez le prix de l'option HDD !!!) Edit : Rien à signaler |
| Page 1 sur 1 | Fuseau horaire sur UTC+02:00 |
| Développé par phpBB® Forum Software © phpBB Limited Traduction française officielle © Qiaeru |
|