====== La Sun Enterprise 10 000 ====== ==== Histoire ==== L'histoire de la Sun E10k est un peu spéciale, en juillet 2007, je trouve sur eBay une fantastic offer pour un Sun Entreprise 10000 et un calculateur Artabel. Le matériel est sur Evry, MiNET aussi, et l'enchère commence à 50 euros, nous sommes en plein rêve. Ni une, ni deux, je suis l'offre avec assiduité afin de la remporter, mais malheur, à quelques secondes de la fin je la perds. S'en suit un réflexe qui viole la première règle de base d'eBay, ne pas contacter le vendeur et l'acheteur lorsqu'on a perdu l'enchère. Finalement au bout de deux semaines le vendeur me recontacte pour que nous discutions de l'enlèvement :) Victoire ! {{ :sun_enterprise_10k.jpg?nolink |}} Cette antiquité attend désormais des jours meilleurs dans la réserve du U5... ==== Terminologie ==== Quelques termes apparaîtront de manière récurrente dans ce document, notamment : SSP : System Service Processor hmeN : désigne l'interface réseau Sun Happy Meal numéro N - 1 (numérotation débutant à zéro) qfeN : désigne l'interface réseau Sun Quad Ethernet numéro N CSB : Control Board CBE : Control Board Executive, micrologiciel fonctionnant sur la CSB SB : System Board E10K : abbréviation de Sun Entreprise 10000 ==== Architecture SUN E10k avec son SSP ==== Le SSP est une machine qui permet de bootstraper une Sun e10k. Cette machine doit être sous Solaris dans la mesure où les applications nécessaires au contrôle de la carte mère de l'e10k ne fonctionnent que sous Solaris. Il serait probablement possible de faire fonctionner ces logiciels sous Linux avec la compatibilité binaire SunOS (non testé). En outre, une station Solaris SPARC pourrait être émulée sur une autre machine. Lorsque la Sun E10K démarre, elle récupère par RARP et BOOTP puis TFTP une adresse IP et une sorte de firmware de base permettant d'établir la communication avec le manager SSP. Une fois cette communication initiale établie entre les deux machines, vous récupérez la main sur la console d'administration SSP et vous pouvez démarrer des domaines sur la Sun E10K. En fonction des paramètres que vous entrez, la SSP va générer un fichier pour l'EEPROM de la Sun E10K, fichier qui sera ensuite transféré sur la flash et exécuté par le first stage bootloader pour vous donner un accès à une OpenBoot? sur la Sun E10k. ==== Installation de la Solaris 10 ==== J'ai utilisé une Sun UltraSparc? 10 pour installer Solaris avec le DVD de Solaris 10. L'installation ne pose pas particulièrement de problèmes, mais soyez vigilants et installez Solaris avec les paquets additionnels pour développeur, notamment afin d'inclure gcc. Installation des paquetages supplémentaires Nous aurons besoin de ncurses et de gdb pour utiliser les logiciels de la suite SSP. Nous allons faire une installation de ces logiciels par le web. Vous trouverez les Freeware Sun à l'adresse suivante : [[http://www.sun.com/software/solaris/freeware/s10pkgs_download.xml|​Sun Solaris 10 Freeware downloads]]. Il faut ensuite choisir, tout en bas de page, le lien : "Solaris 10 Companion Software SPARC Platform Edition". L'accès à cette page requiert la création d'un compte gratuit. Téléchargez ensuite les paquets : * SFWncur.pkg.bz2 * SFWgdb.pkg.bz2 Une fois ces paquets téléchargez, installez les ainsi : bzip2 -d SFWncur.pkg.bz2 pkgadd -d SFWncur.pkg bzip2 -d SFWgdb.pkg.bz2 pkgadd -d SFWgdb.pkg En outre, notamment afin de débugger plus facilement, je vous suggère d'installer tcpdump et sa dépendance associée, la librairie ncurses de la manière suivante : bzip2 -d SFWlncur.pkg.bz2 pkgadd -d SFWlncur bzip2 -d SFWtdmp.pkg.bz2 pkgadd -d SFWtdmp ====Configuration réseau entre la SSP et l'E10k==== La configuration réseau entre la SSP et l'E10K est primordiale, notamment lors de l'établissement de la communication entre la SSP et l'E10K car elle se fait en TCP/IP et nécessite une résolution par les fichiers /etc/hosts de Solaris. Dans un premier temps nous allons correctement configurer le réseau de la manière suivante : * Interface extérieure sur la carte hme0 en DHCP * Interface de configuration E10K sur qfe0 en 192.168.1.0/24 Le schéma suivant résume la topologie ci-dessus : {{ :network-archi.png?nolink |}} La configuration de l'interface hme0 s'est faite au moment de l'installation de **Solaris**, de même que l'interface qfe0. Je vous conseille de consulter les documentations Sun à ce propos si vous souhaitez reconfigurer le réseau à tout moment. Ici la machine solaris désigne le nom de machine côté LAN. **minetssp** désigne la même station Sun, mais côté LAN de contrôle de l'E10k, et enfin **minetcb0** désigne le nom de la Control Board 0. La résolution des noms est essentielle, dans la mesure où la CB0 va booter en utilisant RARPD puis tftp, et va ensuite faire des requêtes avec le nom de machine qu'on lui a attribué. Fichier **/etc/hosts** : 157.159.47.73 solaris 192.168.1.1 minetssp 192.168.1.2 minetcb0 Fichier **/etc/hosts.hme0** : 157.159.47.73 solaris Fichier **/etc/hosts.qfe0** : 192.168.1.1 minetssp 192.168.1.2 minetcb0 Fichier **/etc/ethers** : 80:xx:xx:xx:xx:xx minetcb0 80:xx:xx:xx:xx:xx minetssp ==== Démarrage des services réseau ==== L'entreprise 10000 utilise deux services réseaux principaux pour booter : RARP et TFTP. Il nous faut lancer ces deux services sur la Station Sun : in.rarpd -a inetadm -e svc:/network/tftp/udp6 Le répertoire racine du serveur TFTP par défaut est **/tftproot/** qui est justement le répertoire dans lequel les fichiers nécessaires au démarrage de la CB0 se situent. ====Configuration matérielle de l'E10k==== L'e10k utilise une control board (CSB0) et des system boards (entre 1 et 7) qui accueillent des processeurs UltraSparc-IV et des modules mémoire. Vous aurez besoin d'un câble croisé pour relier la control board à votre station Sun accueillant le logiciel SSP car les cartes ne peuvent pas faire de l'auto MDI/MDI-X. Vous devrez connecter le câble réseau sur la prise marquée d'une indication "Ethernet" sur la CSB0. Les system boards peuvent être connectées à des baies de disque en Fiber Channel et/ou en SCSI. En revanche la CSB0 ne peut accueillir de stockage, son seul but étant de controller les autres SB (system boards). Ces SB peuvent accueillir d'autres cartes, notamment Quad-Ethernet ou autres cartes au format SunBus. ==== Installation du logiciel SSP ==== L'installation du logiciel SSP ne pose pas de problèmes particuliers. Vous devrez commencer par décompresser l'archive contenant le logiciel SSP : unzip ssp_3_5_sparc.zip Puis nous allons installer le logiciel à l'aide de pkgadd : cd ssp_3_5_sparc/System_Service_Processor_3.5 ./Tools/ssp_install Product Dans certaines versions du logiciel SSP, des questions vous sont demandées, notamment concernant les répertoires d'installation. Il semblerait qu'avec la version 3.5, aucune question ne vous soit posée et que l'installation se fasse directement dans **/opt/SUNWssp/**. ==== Configuration du logiciel SSP ==== Une fois l'installation terminée, il faut configurer le logiciel SSP, cette configuration n'est pas très complexe, mais nécessite de connaître : * Le nombre de Control Board présentes dans l'E10k (maximum 2) * La vitesse minimale des processeurs présents dans les System boards * La topologie du réseau entre la Station Sun et l'E10k. Ensuite, nous devons lancer la commande de configuration suivante : /opt/SUNWssp/bin/ssp_config L'installation effectuée ne contient qu'une seule SSP, mais il est également possible de configurer une SSP de secours. Veuillez à indiquer le nom de machine de la CB0 (et de la CB1 si vous en avez une) qui correspond à l'entrée dans **/etc/hosts.qfe0**. Concernant les vitesses des processeurs, indiquez la plus petite fréquence disponible, le logiciel saura configurer un processeur de plus grande vitesse, mais ne saura pas configurer un processeur de plus petite vitesse que celui que vous avez indiqué. Redémarrez ensuite la Station Sun pour prendre en compte les changements, c'est une étape nécessaire. ==== Initilisation de la communcation SSP - E10k ==== Une fois la Station Sun redémarrée, vérifiez que les services réseau RARP et TFTP sont lancés, puis démarrez le service SSP : /etc/init.d/ssp start Connectez vous ensuite en tant qu'utilisateur SSP, mais n'utilisez surtout pas une commande du type su ssp alors que vous êtes root, car elle ne va pas lire le fichier .cshrc de l'utilisateur SSP. Ce fichier paramètre les chemins, comme $SSPLOGER et autres, qui sont très utiles pour accéder au fichiers journaux. ==== Configuration initiale de la Sun E10k ==== La première fois que vous lancez la Sun Entreprise 10000, vous devez vérifiez dans un premier temps la version de la PROM utilisée sur les CSB à l'aide de la commande suivante : cb_prom -r -h minetcb0 Quelle que soit la version du SSP que vous utilisez, il faut que la version de la prom soit 3.46 ou supérieure, vous pouvez mettre à jour la PROM à l'aide de la commande suivante : cb_prom -p /opt/SUNWssp/cbobjs/flash_boot.ima -h minetcb0 Une étape très importante consiste à calibrer les fréquences de polling SNMP, qui dépendent de la fréquence de fonctionement du bus interne aux System Board, elle même multiple de la vitesse du processeur. Cette calibration se fait à l'aide de la commande **autoconfig** : autoconfig all permettra de configurer toutes les cartes. Un redémarrage de la SSP est nécessaire après l'utilisation de cette commande. ==== Démarrage et prise de contrôle sur l'E10K ==== Nous sommes maintenant prêts pour démarrer l'Entreprise E10K. Une fois votre domaine crée, vous devrez basculer sur ce dernier : solaris:minet% domain_switch deadbeef Switch to domain deadbeef Nous devons maintenant faire tous les tests matériels préalables au démarrage de l'E10k : solaris:deadbeef% bringup -A off Trying to get bringup.lock lock... OK Checking that all other domains are down. OK Trying to set system clock... Bringing up domain deadbeef This will configure the Centerplane. Please confirm (y/n)? y Configuring the centerplane, POST args -C Starting: hpost -C Opening SNMP server library... Significant contents of /export/home/ssp/.postrc: # logfile Bogus GAARB 2 CID: 00000000 Bogus GAARB 3 CID: 00000000 FAIL GAARB 2: CID check fail. FAIL GAARB 3: CID check fail. phase cplane_isolate: CP domain cluster mask clear... phase init_reset: Initial system resets... phase jtag_integ: JTAG probe and integrity test... FAIL b/r/c = centerplane1/arb/gdarb: Component ID discrepancy. FAIL Actual 00000000; Expected : FAIL 14197049 FAIL PROC 3.0: CIDs look "missing" but speedcode = 7. FAIL PROC 3.1: CIDs look "missing" but speedcode = 7. FAIL PROC 3.2: CIDs look "missing" but speedcode = 7. FAIL b/r/c = sysboard3/proc3/spitfire: Component ID discrepancy. FAIL Actual 02D40001; Expected one of: FAIL B003602F or FAIL A003602F or FAIL 9003602F or FAIL 2003602F or FAIL 1003602F or FAIL 0003602F or FAIL 4002502F phase mem_probe: Memory dimm probe... phase iom_probe: I/O module type probe... phase jtag_bbsram: JTAG basic test of bootbus sram... phase proc1: Initial processor module tests... {7.2} ERROR: SUBTEST=Ecache Tags ID=a.5 {7.2} Tag compare error, {7.2} index 200d {7.2} expected 00000000.0000200d {7.2} observed 00000000.00002049 {7.2} xor 00000000.00000044 FAIL Proc 7.2 (**) Fail Test: 0A: Basic Ecache phase pc/cic_reg: PC and CIC register tests... phase dtag: CIC DTAG tests... phase mem: MC register and memory tests... phase io: I/O controller tests... phase procmem2: Processor vs. memory II tests... phase lbexit: Centerplane connection tests... phase npb_mem: Non-Proc Board MC and memory tests... phase npb_iopc: Non-Proc Board IOPC register tests... phase npb_io: Non-Proc Board I/O controller tests... phase npb_cplane: Non-Proc Board centerplane connection tests... phase nmb_procmem2: Non-Mem Board Proc vs. memory II tests... phase final_config: Final configuration... Configuring in 13, FOM = 120960.00: 21 procs, 20 Scards, 9216 MBytes. Creating OBP handoff structures... Configured in 13 with 21 processors, 20 Scards, 9216 MBytes memory. Interconnect frequency is 83.241 MHz, from SNMP MIB. Processor external frequency is 166.462 MHz, from SNMP MIB. Processor internal frequency is 332.966 MHz, from proc clk_mode probe. Boot processor is 0.0 = 0 POST (level=16, verbose=20, -C) execution time 8:07 Boot processor 0 written to /var/opt/SUNWssp/etc/minet/deadbeef/bootproc Updating domain deadbeef with bootproc 0 domainInstance 0 and interrupt vector MIB... OK Starting obp_helper -m 0 -A off... OK Starting netcon_server -p 0 ... OK Checking boot processor signatures.. OK Vous rencontrerez probablement quelques erreurs sur la lecture de l'identifiant des composants dans la chaîne JTAG, néanmoins, la plupart des erreurs ne sont pas critiques et sont probablement dus à la vétusté ou à de faux contacts sur les cartes, rien de bien grave en principe. Il est temps maintenant de récupérer une console sur l'E10K : solaris:deadbeef% netcon -g trying to connect... connected. Unlocked write permission is granted. scsi bus reset not seen SUNW,Ultra-Enterprise-10000, using Network Console OpenBoot 3.2.9, 9216 MB memory installed, Serial #11386607. Ethernet address 0:0:be:ad:be:ef, Host ID: 80adbeef. <#0> ok La suite est très similaire à toute autre machine Sun classique, nous avons un accès à OpenFirmware classique. ==== Liens utiles ==== * [[http://dlc.sun.com/pdf/805-7521-10/805-7521-10.pdf|Documentation SUN SSP 3.1.1]] * [[http://docs.sun.com/app/docs/coll/129.3?l=fr|Documentations SUN SSP 3.5]] * [[http://people.debian.org/~fabbione/e10k/debian_on_e10k.txt|Debian on E10k]] * [[http://no.spam.ee/~tonu/sparc/Sun-Enterprise-10000-StarFire-at-home/cracking/|​Cracking SUN SSP keys]]