Avant de débuter, nous allons présenter le matériel requis pour installer Gentoo avec succès sur votre système.
| Processeur (Big Endian port) | MIPS3, MIPS4, MIPS5 ou MIPS64-class CPU |
| Processeur (Little Endian port) | MIPS4, MIPS5 ou MIPS64-class CPU |
| Mémoire | 64 Mo |
| Espace disque | 1.5 Go (mémoire virtuelle non comprise) |
| Mémoire virtuelle | Au moins 256 Mo |
Vous devriez consulter le document Matériels supportés par Linux Gentoo/MIPS.
Quelques mots sur les processeurs
Sur de nombreuses architectures, on peut trouver plusieurs générations de processeurs et chaque génération est construite sur les bases de la génération précédente. Les architectures MIPS ne font pas exception. Il existe plusieurs générations de processeurs pour l'architecture MIPS. Pour pouvoir choisir l'archive de stage utilisée lors du démarrage en réseau et pour bien configurer la variable CFLAGS, vous devez savoir à quelle famille le processeur de votre système appartient. Ces familles sont regroupées sous la dénomination ISA (pour Instruction Set Architecture).
| ISA MIPS | 32/64 bits | Processeurs concernés |
| MIPS 1 | 32 bits | R2000, R3000 |
| MIPS 2 | 32 bits | R6000 |
| MIPS 3 | 64 bits | R4000, R4400, R4600, R4700 |
| MIPS 4 | 64 bits | R5000, RM5000, RM7000, R8000, R9000, R10000, R12000, R14000, R16000 |
| MIPS 5 | 64 bits | N'existe pas encore. |
| MIPS32 | 32 bits | Série AMD Alchemy, 4kc, 4km, beaucoup d'autres... |
| MIPS64 | 64 bits | Broadcom SiByte SB1, 5kc etc. |
Note : La couche ISA du MIPS5 a été conçue par Silicon Graphics en 1994, mais n'a jamais été utilisée dans un processeur. Elle continue à survivre en tant que partie de l'ISA du MIPS64. |
Note : Les couches ISA du MIPS32 et du MIPS64 sont une source commune de confusion. La couche ISA du MIPS64 est en fait une surcouche de celle du MIPS5, elle inclut donc toutes les instructions ISA du MIPS5 et précédents. Le MIPS32 est la version 32 bits du MIPS64, il n'existe que parce que la plupart des applications ne nécessitent que du calcul 32 bits. |
Un autre concept important à prendre en compte est la représentation des nombres dans le système. Elle se réfère à la manière avec laquelle le processeur lit les mots dans la mémoire principale. Un mot peut être lu comme étant big endian (l'octet de poids fort en premier) ou little endian (l'octet de poids faible en premier). Les machines Intel x86 sont en général en little endian, alors que les machines Apple et SPARC sont en big endian. Sur les MIPS, on peut rencontrer les deux. Pour séparer les deux cas, nous ajoutons el au nom de l'architecture lorsqu'elle est en little endian.
| Architecture | 32/64 bits | Big/little endian | Machines concernées |
| mips | 32 bits | Big Endian | Silicon Graphics |
| mipsel | 32 bits | Little Endian | DECStations, Cobalt Servers, PlayStation 2 |
| mips64 | 64 bits | Big Endian | Silicon Graphics |
| mips64el | 64 bits | Little Endian | Cobalt Servers, PlayStation 2 |
Pour ceux qui veulent en savoir plus sur les ISA, vous pouvez vous référer aux liens ci-dessous :
Une archive stage3 contient un environnement minimal d'utilisation à partir duquel vous pouvez installer Gentoo sur votre système en suivant les instructions de ce manuel. Des archives stage1 et stage2 ont été disponibles et documentées, mais ne sont plus documentées dans ce manuel bien que ces archives soient encore disponibles. Si vous tenez absolument à réaliser une installation à partir d'une de ces archives, veuillez consulter notre FAQ à ce sujet.
Dans ce chapitre, nous allons traiter de l'ensemble des points nécessaires pour réussir un démarrage réseau sur une machine Silicon Graphics ou un serveur Cobalt. Ce n'est qu'un condensé et n'a pas pour vocation d'être complet. Pour plus d'informations, il est conseillé de lire le Guide Gentoo sans disque dur.
Ce dont vous avez besoin : Selon la machine, il vous faudra réunir un certain nombre de critères pour démarrer en réseau et installer Linux avec succès.
Note : Les machines SGI utilisent un connecteur MiniDIN 8 pour les ports en série. Apparemment les câbles modem de chez Apple peuvent servir de câbles séries, mais maintenant que les machines Apple sont équipées de modems internes et de ports USB, ils commencent à être difficiles à trouver. Un schéma de câblage est disponible sur le Wiki Linux/MIPS et tout bon magasin d'électronique devrait avoir les connectiques nécessaires en stock. |
Note : Pour le terminal vous pouvez utiliser un vrai terminal VT100/ANSI ou un logiciel d'émulation de terminal exécuté sur PC (comme HyperTerminal, Minicom, seyon, Telex, xc, screen, comme vous voulez). Peu importe la plate-forme utilisée, du moment qu'elle dispose d'un port série RS-232 utilisable et des logiciels nécessaires. |
Note : Ce guide NE traite PAS des Qube originels. Ces serveurs ne disposent pas de port série sur la configuration par défaut et il n'est donc pas possible d'installer Gentoo dessus sans l'aide d'un tournevis et d'une machine hôte sur laquelle se fera l'installation. Le site suivant dispose d'un guide pour installer Gentoo sur ces machines : http://www.metzner.org/projects/qube/. |
Mise en place des serveurs TFTP et DHCP : rappels rapides
Bon, maintenant que vous disposez des pièces nécessaires on va pouvoir commencer les choses sérieuses. Comme mentionné auparavant, ce n'est pas un guide complet, seulement un ensemble de configurations minimales pour que tout puisse fonctionner. Vous pouvez au choix utiliser ce chapitre pour réaliser une configuration à partir de zéro ou utiliser les suggestions pour modifier votre configuration actuelle pour qu'elle supporte le démarrage réseau.
Notons que les serveurs utilisés ne sont pas obligatoirement sous Gentoo Linux,
vous pouvez bien sûr disposer d'un FreeBSD ou de toute autre plate-forme de
type UNIX. Cependant ce guide supposera que vous utilisez Gentoo Linux.
Vous pouvez également mettre le serveur TFTP/NFS sur une autre machine que celle
utilisée pour le serveur DHCP.
Attention : L'équipe Gentoo/MIPS n'est pas en mesure de vous aider à configurer d'autres systèmes d'exploitation en tant que serveurs de démarrage réseau. Si vous choisissez un autre système, cela suppose que vous savez ce que vous faites. |
Première étape, la configuration du DHCP. Afin que le démon ISC DHCP réponde aux requêtes de type BOOTP (obligatoire pour la BOOTROM des SGI et Cobalt), vous devez tout d'abord permettre le BOOTP dynamique sur le sous-réseau utilisé. Puis vous devez configurer une entrée sur chaque client qui pointe sur l'image de démarrage.
Exemple de code 1.1 : Installer le service DHCP |
# emerge dhcp
|
Une fois installé vous devez créer le fichier /etc/dhcp/dhcpd.conf. Voici une configuration de base que vous pouvez modifier pour vos besoins.
Exemple de code 1.1 : Configuration de dhcpd.conf |
# Indiquer à dhcpd de désactiver les DNS dynamiques. # dhcpd refusera de démarrer sans cela.. ddns-update-style none; # Créer un sous-réseau : subnet 192.168.10.0 netmask 255.255.255.0 { # Ensemble des adresses disponibles pour vos clients. N'oubliez pas le mot-clef 'dynamic-bootp' ! pool { range dynamic-bootp 192.168.10.1 192.168.10.254; } # Serveurs DNS et passerelle par défaut (à modifier selon votre convenance). option domain-name-servers 203.1.72.96, 202.47.56.17; option routers 192.168.10.1; # Indiquez au serveur DHCP qu'il a autorité sur le sous-réseau. authoritative; # Permet l'utilisation de BOOTP sur ce sous-réseau. allow bootp; } |
Avec cette configuration vous pouvez ajouter les clients que vous voulez dans la configuration du sous-réseau. Nous indiquerons plus tard ce que vous devez mettre.
Seconde étape, installer un serveur TFTP. Il est recommandé d'utiliser tftp-hpa, car c'est le seul démon TFTP à notre connaissance qui fonctionne correctement. Pour l'installer, il suffit de faire ceci :
Exemple de code 1.1 : Installer tftp-hpa |
# emerge net-ftp/tftp-hpa
|
Cela créera le répertoire /tftproot où vous devrez entreposer vos images de démarrage réseau. Vous pouvez les placer ailleurs si vous voulez. Dans ce guide, on supposera que vous les avez laissées dans le répertoire par défaut.
1. Démarrer une station SGI sur le réseau
Téléchargement d'une image Netboot
Selon le système que vous installez, plusieurs images sont disponibles au téléchargement. Elles sont toutes nommées selon le type de système et le processeur pour lesquels elles ont été compilées. Les types de machines sont les suivants :
| Nom de code | Machine |
| IP22 | Indy, *Indigo 2, **Challenge S |
| IP26 | *Indigo 2 Power |
| IP27 | Origin 200, Origin 2000 |
| IP28 | *Indigo 2 Impact |
| IP30 | Octane |
| IP32 | O2 |
Note : (*) Une erreur fréquente : se tromper entre les IRIS Indigo (IP12 avec un processeur R3000 ou IP20 avec un processeur R4000, aucun des deux ne fonctionne sous Linux), les Indigo 2 (IP22, qui fonctionne bien sous Linux), les Indigo 2 Power basés sur un processeur R8000 (qui ne fonctionne absolument pas sous Linux) et les Indigo 2 Impact basés sur un processeur R10000 (IP28, qui est à un stade très expérimental). Faites bien attention car ce sont des machines très différentes. |
Note : (**) Sur les machines Challenge S, le port réseau UTP est supporté par une carte SCSI WD33C95 qui n'est actuellement pas supportée sous Linux. À cause de cette limitation, vous devrez utiliser un « transceiver » AUI-->UTP connecté sur le port AUI. |
Enfin, dans le nom du fichier, r4k se réfère à la série des processeurs R4000, r5k aux R5000, rm5k aux RM5000 et r10k aux R10000. Vous trouverez les images disponibles sur ~kumba/mips/netboot.
Configuration DHCP pour un client SGI
Une fois que vous avez téléchargé ce fichier, placez le fichier décompressé dans le répertoire /tftproot. (Utilisez bzip2 -d pour la décompression). Puis, éditez le fichier /etc/dhcp/dhcpd.conf et ajoutez-y une entrée pour votre client SGI.
Exemple de code 1.1 : Modification de dhcpd.conf pour un station SGI |
subnet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx {
# ... éléments classiques...
# Station SGI... changer 'sgi' par le nom de votre machine SGI.
host sgi {
# Adresse MAC de votre machine SGI. Elle est normalement écrite derrière la
# machine ou en dessous.
hardware ethernet 08:00:69:08:db:77;
# Serveur TFTP où télécharger l'image de démarrage (par défaut, la même machine
# que le serveur DHCP).
next-server 192.168.10.1;
# Adresse IP à donner à la machine SGI.
fixed-address 192.168.10.3;
# Fichier que la PROM doit télécharger pour démarrer.
filename "/gentoo-r4k.img";
}
}
|
C'est presque fini mais il reste à faire quelques petites modifications pour que tout soit parfait. Ouvrez une console avec les privilèges administrateurs et entrez les commandes suivantes :
Exemple de code 1.1 : Quelques corrections pour les machines SGI pour que le TFTP fonctionne correctement |
(Désactiver « Path Maximum Transfer Unit », sinon la PROM SGI ne trouvera pas le noyau) # echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc (Indiquer l'intervalle des ports utilisables par la PROM SGI.) # echo "2048 32767" > /proc/sys/net/ipv4/ip_local_port_range |
Cela devrait être suffisant pour permettre au serveur Linux de bien fonctionner avec la PROM de votre machine SGI.
Vous êtes désormais prêt à démarrer vos démons. Entrez les lignes suivantes :
Exemple de code 1.1 : Démarrage des serveurs DHCP et TFTP |
# /etc/init.d/dhcp start # /etc/init.d/in.tftpd start |
Si tout se passe bien, vous devriez pouvoir maintenant démarrer votre station SGI et continuer à suivre le guide. Si le serveur DHCP ne démarre pas pour une raison ou pour une autre, essayez de lancer dhcpd en ligne de commande pour voir ce qu'il vous donne comme indications. Si tout va bien il devrait simplement se dupliquer en tâche de fond. Sinon, il vous retournera « exiting. » juste après vous avoir donné les raisons de ce problème.
une bonne méthode pour vérifier si le serveur TFTP fonctionne effectivement est de taper la commande suivante (si vous obtenez un résultat proche de celui mentionné ci-dessous c'est que tout va bien) :
Exemple de code 1.1 : Vérifiez que TFTPd fonctionne correctement |
# netstat -al | grep ^udp udp 0 0 *:bootpc *:* udp 0 0 *:631 *:* udp 0 0 *:xdmcp *:* udp 0 0 *:tftp *:* <-- (Cherchez cette ligne.) |
Démarrer depuis le réseau sur une machine SGI
Maintenant que tout est en place, le DHCP et le TFTP, vous pouvez démarrer votre machine SGI. Quand vous voyez à l'écran « Running power-on diagnostics », cliquez soit sur « Stop For Maintenance » ou tapez Échap. Vous obtiendrez alors à l'écran un menu comme celui présenté plus bas. Tapez la commande indiquée ci-dessous :
Exemple de code 1.1 : Menu de maintenance de la PROM SGI |
Running power-on diagnostics
System Maintenance Menu
1) Start System
2) Install System Software
3) Run Diagnostics
4) Recover System
5) Enter Command Monitor
Option? 5
Command Monitor. Type "exit" to return to the menu.
>> bootp(): root=/dev/ram0
|
À partir de là, la machine devrait commencer à télécharger l'image, puis, quelque chose comme 20 secondes plus tard, elle devrait commencer à démarrer sous Linux. Si tout va bien, vous devriez alors obtenir le shell ash de Busybox comme indiqué plus bas. Vous pouvez alors commencer à (Configurer le réseau).
Exemple de code 1.1 : Quand tout va bien... |
init started: BusyBox v1.00-pre10 (2004.04.27-02:55+0000) multi-call binary Gentoo Linux; http://www.gentoo.org/ Copyright 2001-2004 Gentoo Technologies, Inc.; Distributed under the GPL Gentoo/MIPS Netboot for Silicon Graphics Machines Build Date: April 26th, 2004 * To configure networking, do the following: * For Static IP: * /bin/net-setup <IP Address> <Gateway Address> [telnet] * For Dynamic IP: * /bin/net-setup dhcp [telnet] * If you would like a telnetd daemon loaded as well, pass "telnet" * As the final argument to /bin/net-setup. Please press Enter to activate this console. |
Si votre machine se bloque et refuse de télécharger son image, cela peut venir de deux choses : ou bien vous vous êtes trompé quelque part, ou alors il faut la persuader gentiment de fonctionner correctement (non, pas à coups de marteau !). Voici une liste de ce que vous pouvez vérifier :
Si vous avez tout bien vérifié sur votre serveur et que vous continuez à avoir des problèmes de délais de réponse dépassés, essayez de taper sur votre console SGI :
Exemple de code 1.1 : Essayer de forcer le bon fonctionnement de la PROM SGI |
>> resetenv >> unsetenv netaddr >> unsetenv dlserver >> init >> bootp(): root=/dev/ram0 |
1. Alternative : Gentoo/MIPS SGI LiveCD
Sur les machines Silicon Graphics, il est possible de démarrer sur un CD afin d'installer un système d'exploitation (comme pour installer IRIX par exemple.) Récemment, des images de CD amorçables pour installer Gentoo ont été rendues disponibles.
Pour le moment, le LiveCD Gentoo/MIPS ne fonctionnera que sur les stations de travail SGI Indy, Indigo 2 et O2 équipées de processeurs R4000 ou R5000. Cependant, cela pourrait fonctionner avec d'autres plates-formes dans le futur.
Vous pouvez trouver les images des LiveCD en téléchargement sur votre miroir Gentoo favori, dans le répertoire experimental/mips/livecd.
Attention : Ces CD en sont encore au stade expérimental. Ils peuvent ne pas fonctionner. Vous pouvez rapporter un succès ou un échec soit sur notre Bugzilla, soit sur ce sujet du forum ou sur le canal IRC #gentoo-mips. Nous serions heureux d'avoir vos retours d'expérience. |
Il est important de noter que la PROM des SGI ne comprend pas le format ISO9660 et ne connait pas le standard El Torito. Ces images CD sont construites comme les labels disque SGI avec l'image de démarrage dans l'en-tête du volume, comme s'il s'agissait d'un disque dur. Il faut donc faire attention lorsqu'on grave l'image CD.
L'exemple ci-dessous suppose que vous gravez à une vitesse de 24x avec un graveur IDE. Si vous avez un graveur SCSI par exemple, il vous faut ajuster le paramètre dev pour qu'il corresponde. De même pour l'option speed. Si vous rencontrez des problèmes, vous pouvez essayer d'enlever l'option de vitesse.
Exemple de code 1.1 : Graver à l'aide de cdrecord |
# bzip2 -d mips-livecd-prototype-rc2-20041027.img.bz2 # cdrecord -vv -pad speed=24 dev=ATAPI:0,0,0 -tao mips-livecd-prototype-rc2-20041027.img |
Note : Il doit être possible de graver ces CD avec Windows, en supposant que votre logiciel de gravure grave l'image telle qu'elle est. Cependant, personne n'a réussi à obtenir un CD fonctionnel de cette manière. |
Note : Si vous ne savez pas quoi mettre pour l'argument dev, utilisez cdrecord -scanbus en tant qu'utilisateur root. Cela vous dira où se trouve votre graveur. |
1. Démarrer depuis le réseau sur un serveur Cobalt
Vue d'ensemble sur la procédure de démarrage réseau
Contrairement aux machines SGI, les serveurs Cobalt utilisent le protocole NFS pour effectuer le transfert du noyau sur lequel démarrer. Vous démarrez la machine en maintenant appuyées les boutons de flèches gauche et droite lors du démarrage de la machine. Elle essayera alors d'obtenir une adresse IP en faisant une requête BOOTP, montera le répertoire /nfsroot depuis le serveur grâce à NFS, puis essayera de télécharger et démarrer sur le fichier vmlinux_raq-2800.gz (selon le modèle) qui doit être un binaire ELF standard.
Télécharger une image de démarrage en réseau
Sur http://dev.gentoo.org/~redhatter/mips/cobalt/netboots/, vous trouverez les images nécessaires pour démarrer en réseau un serveur Cobalt. Les fichiers dont vous avez besoin s'appellent nfsroot-KERNEL-COLO-DATE-cobalt.tar. Choisissez le plus récent et décompressez-le dans le répertoire / comme montré ci-dessous :
Exemple de code 1.1 : Décompresser l'image nfsroot |
# tar -C / -xvf nfsroot-2.6.13.4-1.19-20051122-cobalt.tar
|
Dans la mesure où les Cobalt utilisent NFS pour télécharger l'image de démarrage, vous devez exporter le répertoire /nfsroot sur votre serveur. Si vous ne l'avez pas déjà fait, vous devrez installer le paquet net-fs/nfs-utils.
Exemple de code 1.1 : Installation de nfs-utils |
# emerge net-fs/nfs-utils
|
Maintenant que c'est fait, ajoutez la ligne suivante à votre fichier /etc/exports. Vous pouvez changer les restrictions d'accès si vous voulez.
Exemple de code 1.1 : Exporter le répertoire /nfsroot |
/nfsroot *(ro,sync) |
Il vous faut maintenant démarrer votre serveur NFS :
Exemple de code 1.1 : Démarrer le serveur NFS |
# /etc/init.d/nfs start
|
Si le serveur NFS fonctionnait déjà, vous pouvez lui demander de relire le fichier exports avec la commande exportfs.
Exemple de code 1.1 : Exporter un nouveau répertoire |
# exportfs -av
|
Configuration du serveur DHCP pour une machine Cobalt
La partie DHCP est assez simple et classique. Ajoutez les lignes suivantes à votre fichier /etc/dhcp/dhcpd.conf :
Exemple de code 1.1 : Modification du fichier dhcpd.conf pour un serveur Cobalt |
subnet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx {
# ... éléments classiques...
# Configuration pour un serveur Cobalt
# Indiquez le nom de la machine ici :
host qube {
# Chemin vers le répertoire nfsroot.
# Il est utilisé principalement pour quand vous utilisez l'option de
# démarrage via TFTP avec CoLo.
# Vous ne devriez pas devoir changer ceci.
option root-path "/nfsroot";
# Adresse MAC de la carte ethernet du serveur Cobalt.
hardware ethernet 00:10:e0:00:86:3d;
# Serveur sur lequel télécharger l'image.
next-server 192.168.10.1;
# Adresse IP à attribuer au serveur Cobalt.
fixed-address 192.168.10.2;
# Emplacement du fichier default.colo relatif à /nfsroot
# Vous ne devriez pas devoir changer ceci.
filename "default.colo";
}
}
|
Vous devriez maintenant pouvoir démarrer vos démons. Exécutez les lignes suivantes :
Exemple de code 1.1 : Démarrer les démons DHCP et NFS |
# /etc/init.d/dhcp start # /etc/init.d/nfs start |
Si tout va bien, vous devriez pouvoir démarrer votre station de travail et continuer à suivre le guide. Si le serveur DHCP ne démarre pas pour une raison ou pour une autre, essayez de lancer dhcpd en ligne de commande pour voir ce qu'il vous donne comme indications. Si tout va bien il devrait simplement se dupliquer en tâche de fond. Sinon, il vous retournera « exiting. » juste après vous avoir donné les raisons de ce problème.
Démarrer en réseau la machine Cobalt
Bon, maintenant que tout fonctionne bien, le DHCP comme le NFS, vous pouvez allumer votre machine Cobalt. Branchez votre câble null modem et configurez le terminal série pour utiliser une configuration 115 200 bauds, 8 bits, sans parité, 1 bit d'arrêt et une émulation VT100. Une fois que c'est fait, maintenez appuyées les boutons de flèches gauche et droite à la fois lors du démarrage de la machine.
Exemple de code 1.1 : Lancement du noyau |
elf: 80080000 <-- 00001000 6586368t + 192624t elf: entry 80328040 net: interface down CPU revision is: 000028a0 FPU revision is: 000028a0 Primary instruction cache 32kB, physically tagged, 2-way, linesize 32 bytes. Primary data cache 32kB 2-way, linesize 32 bytes. Linux version 2.4.26-mipscvs-20040415 (root@khazad-dum) (gcc version 3.3.3... Determined physical RAM map: memory: 08000000 @ 00000000 (usable) Initial ramdisk at: 0x80392000 (3366912 bytes) On node 0 totalpages: 32768 zone(0): 32768 pages. zone(1): 0 pages. zone(2): 0 pages. Kernel command line: console=ttyS0,115200 root=/dev/ram0 Calibrating delay loop... 249.85 BogoMIPS Memory: 122512k/131072k available (2708k kernel code, 8560k reserved, 3424k dat) |
Si tout va bien, vous devriez alors obtenir le shell ash de Busybox comme indiqué plus bas. Vous pouvez alors commencer à (Configurer le réseau).
Exemple de code 1.1 : Quand tout se passe bien... |
VFS: Mounted root (ext2 filesystem) readonly. Freeing unused kernel memory: 280k freed init started: BusyBox v1.00-pre10 (2004.04.27-02:55+0000) multi-call binary Gentoo Linux; http://www.gentoo.org/ Copyright 2001-2004 Gentoo Technologies, Inc.; Distributed under the GPL Gentoo/MIPS Netboot for Cobalt Microserver Machines Build Date: April 26th, 2004 * To configure networking, do the following: * For Static IP: * /bin/net-setup <IP Address> <Gateway Address> [telnet] * For Dynamic IP: * /bin/net-setup dhcp [telnet] * If you would like a telnetd daemon loaded as well, pass "telnet" * As the final argument to /bin/net-setup. Please press Enter to activate this console. |
Si votre machine se bloque et refuse de télécharger son image cela peut venir de deux choses : ou bien vous vous êtes trompé quelque part, ou alors il faut la persuader gentiment de fonctionner correctement (non, pas à coups de marteau !). Voici une liste de ce que vous pouvez vérifier :