Ma station de travail Sun Ultra 1 n'a pas de lecteur CD ni de lecteur de disquette, mais l'utilisation du réseau est prévue pour installer un système d'exploitation.
Pour que tout fonctionne, on utilise la console série (9600bit/s, 8N1, en débranchant le clavier), mais il est possible d'utiliser le clavier et l'écran à la place.
Solaris 8 nécessite entre 300Mo et 1.3Go en installation de base (probablement bien plus une fois d'autres paquets installés). 192Mio de mémoire ne pose pas de problème à l'installeur (aucune idée du minimum).
NVRAM
Comme la NVRAM est à remplacer, il faudra configurer l'adresse MAC et quelques paramètres à chaque arrêt de l'alimentation.
01 0 mkp
80 1 mkp
08 2 mkp
0 3 mkp
20 4 mkp
c0 5 mkp
ff 6 mkp
ee 7 mkp
0 8 mkp
0 9 mkp
0 a mkp
0 b mkp
c0 c mkp
ff d mkp
ee e mkp
0 f 0 do i idprom@ xor loop f mkp
Chaque ligne règle un octet de la NVRAM (HostID : 80c0ffee , adresse MAC : 8:0:20:c0:ff:ee), et la dernière calcule le checksum des précédentes et l'écrit dans la NVRAM.
Pour les autres variables de la NVRAM, il faut les remettre par défaut avec set-defaults
. Il peut être utile de désactiver le boot automatique avec setenv auto-boot? no
, puis choisir le périphérique et le fichier démarré par défaut (en cas de redémarrage) setenv boot-device net
(ou bien cdrom, disk), setenv boot-file kernel/unix
.
Une fois la NVRAM remplie, le système doit démarrer "proprement" avec reset
. Il n'y a pas de coupure d'alimentation, de ce fait la NVRAM ne perd aucune donnée.
Serveurs
Les machines Sun ont besoin de plusieurs services réseau pour démarrer :
- rarpd, qui va assigner une adresse IP en fonction de l'adresse MAC de la station
- tftpd, qui va fournir une image bootable à la station
- bootparamd, qui va fournir les partages NFS à monter pour accéder au système d'installation
- NFS, pour partager les dossiers contenant le programme d'installation la raçine d'un système Solaris
Tous ces serveurs peuvent être sur des machines distinctes et fonctionnent avec différents OS Unix.
Configuration
Avant de commencer la configuration, on a un CD de Solaris 8 monté dans le dossier /mnt/ d'une machine x86 avec Debian Linux.
Rarp
On installe le paquet rarpd, on démarre le daemon, puis on fait correspondre l'adresse MAC, le hostname et l'adresse IP de la station :
# cat "08:00:20:c0:ff:ee sunultra" >> /etc/ethers
(>> ajoute à la fin du fichier)
# cat "192.168.3.123 sunultra" >> /etc/hosts
Tftpd
On installe un serveur tftp (quelconque, avec ou sans inetd), puis on note son dossier racine (/var/tftp/ dans notre cas).
On va copier l'image dans la racine :
# find /mnt/Solaris_8/Tools/ |grep inetboot
/mnt/Solaris_8/Tools/Boot/usr/platform/sun4u/lib/fs/nfs/inetboot
/mnt/Solaris_8/Tools/Boot/usr/platform/sun4us/lib/fs/nfs/inetboot
/mnt/Solaris_8/Tools/Boot/usr/platform/sun4d/lib/fs/nfs/inetboot
/mnt/Solaris_8/Tools/Boot/usr/platform/sun4m/lib/fs/nfs/inetboot
L'image de la plateforme sun4u est celle qui correspond aux machines Ultra 1 :
# cp /mnt/Solaris_8/Tools/Boot/usr/platform/sun4u/lib/fs/nfs/inetboot /var/tftp/
Une particularité des machines Sun est d'utiliser une image par adresse IP, avec une adresse ip en hexadécimal :
# printf %02X 192 168 3 123
C0A8037B
Une fois que bash nous a converti l'adresse, on va lier l'adresse IP à l'image qu'on veut booter :
# cd /var/tftp/; ln -svf inetboot C0A8037B; ln -svf inetboot C0A8037B.SUN4U
On met deux fichiers dans le doute, certaines version d'OpenBoot ajoutent le nom d'architecture à la fin du fichier.
NFS
On installe un serveur NFS (nfs-kernel-server, nfs-common et rpcbind avec Debian) et on edite le fichier /etc/exports
On crée un dossier là où on a au moins 1Go de libre (/media/stuff/local/sunultra/ dans notre cas).
On va le partager avec # exportfs 192.168.3.0/24:/media/stuff/local/sunultra/ -o rw,sync,no_subtree_check
(on peut remplacer l'adresse et le cidr par * ou par une seule machine).
On peut aussi ajouter la ligne /media/stuff/local/sunultra/ 192.168.3.0/24(rw,sync,no_subtree_check)
dans le fichier /etc/exports.
Bootparamd
On installe bootparamd, puis on ajoute les lignes suivantes dans le fichier /etc/bootparams :
sunultra root=192.168.3.3:/media/stuff/local/sunultra/Solaris_8/Tools/Boot \
install=192.168.3.3:/media/stuff/local/sunultra \
rootopts=:rsize=32768 boottype=:in
Copie des fichiers
On va ensuite copier les fichiers de /mnt/ vers /media/stuff/local/sunultra en conservant les permissions et les fichiers cachés.
rsync -trav /mnt /media/stuff/local/sunultra
Installation
J'ai probablement fait quelque chose d'incorrect (je serais heureux d'avoir un retour si quelqu'un trouve) qui fait échouer l'installation après le montage du partage NFS avec There were problems loading the media from /cdrom.
.
Bricolage
Comme je n'ai pas réussi à installer Solaris 8 par le réseau ni à booter sur un CD, j'ai séparé l'installation :
- Boot réseau :
boot net -v - install
,
- Plantage de l'installation :
There were problems loading the media from /cdrom.
- Démontage du partage NFS :
umount /cdrom
- Montage du CDROM :
mount -r -F hsfs /dev/dsk/c0t1d0s0 /cdrom
- Suite de l'installation :
ttinstall
Notes
Disques non-détectés :
Modification du script d'installation /sbin/startup :
mkdir /tmp/linkmod
cp -f /usr/lib/devfsadm/linkmod/* /tmp/linkmod/
devfsadm -l /tmp/linkmod/
Installation "bloquée" :
Curseur tournant après plusieurs minutes :
On bouge le fichier gênant : mv /sbin/get_netmask /sbin/get_netmask.test
cannot open /cdrom/.cdtoc :
Des fichiers ont été oubliés dans le miroir NFS, ou le CD/partage n'est pas monté.
panic[cpu0]/thread=xxxxx: Can't invoke /etc/init, error N :
Le fichier est inexistant ou inacessible en lecture/execution, il est possible que les liens ou permissions/droits des fichiers n'aient pas été conservées pendant la copie sur le partage NFS.
Utilisation
Si le réseau ne fonctionne pas, il suffit de plusieurs étapes :
# ifconfig le0 up
# ifconfig le0 192.168.3.123
# route add default 192.168.3.1
La commande netstat -r
peut donner des informatiosn sur la table de routage.
Références
Tags de l'article : software, sun, unix, vieilleries, workstation
Hardware
Cette station est le haut de gamme de 1995.
Tout est fait sur-mesure par Sun ou utilise des composants haut-de-gamme.
Beaucoup de connecteurs internes ou externes sont exotiques, mais ont été choisis avant que les PC soient répandus, et où chaque constructeur avait ses propre standards de câblage.
Configuration :
- CPU : UltraSPARC, 64-bit, 143MHz
- RAM : 192Mio DSIMM (4x16Mio + 2x64Mio, 2 slots libres), bus 288bits (256 + ECC), les modules s'installent par paire
- Disque dur : Quantum 1Go 5400rpm SCSI (SCA)
- Lecteur CDROM : Non-installé
- Lecteur disquette : Non-installé
- Carte Graphique : TurboGX 1Mio, 8-bit, sbus
- Carte d'extension sbus : Réseau/SCSI (un slot sbus libre)
- Alimentation : Monstre de 180W (au moins deux canaux complètement distincts, et une sortie 230V commandée)
Câblage
Tout est différent des PC. Par exemple, la souris est branchée au clavier, qui est branché à la carte-mère avec un connecteur mini-din à 8-pins (incompatible avec les claviers PS/2). L'écran utilise un connecteur 13W3, avec 3 coax et 10 pins dans un connecteur de la taille d'un DB-25, mais pas avec le même pinout que les écrans SGI ou NeXT.
Par chance, j'ai pu avoir un clavier avec la machine, mais je n'ai pu récupérer qu'un câble 13W3 mâle, il va donc falloir bricoler.
Ventilateur
En branchant la machine pour la première fois, on découvre que le ventilateur du processeur ne fonctionne pas, et qu'il utilise un connecteur Molex micro-fit introuvable.
Le ventilateur d'origine est un "Elina Fan" KDA1205MB8P : 50mm de diamètre, 10mm d'épaisseur, 5 pales, "middle speed", 12V, 140mA, ~5'000rpm, ~10CFM.
Pour éviter une surchauffe, il faut le remplacer par un ventilateur équivalent, un "ADDA" AD0512MB-G76 : 50mm de diamètre, 10mm d'épaisseur, 7 pales, "middle speed", 12V, 90mA, ~4'600rpm, ~10CFM.
Le connecteur et le câble se changent en quelques coups de fer à souder.
Console
Comme j'ai mis un peu de temps à faire fonctionner l'écran, j'ai vu qu'il était possible d'utiliser la machine à partir d'une console (Port A, 9600 8N1).
C'est un câble DB25, mais il n'y a que 3 fils à souder. On peut même recycler un câble DB25 mâle d'imprimante.
Ici on va le relier à un PC avec un connecteur DB9 :
| DB25 | Signal | DB9 | Signal |
|----------+--------+-------+---------|
| 2 | Tx Out | 3 | Rx In |
| 3 | Rx In | 2 | Tx Out |
| 7 | GND | 1 | GND |
Il faut aussi même s'assurer que les ports A et B sont configurés en mode RS-232, avec les jumpers J2104 et J2105 (Reference Manual, pages 4-1 à 4-3).
Il n'y a plus qu'à brancher à un PC avec un terminal, et on devrait voir rapidement des infos quand la machine démarre.
Affichage
Faire un adaptateur 13W3 vers VGA m'a pris du temps et plusieurs essais, simplement parce qu'il y a plusieurs standards (SGI, IBM, NeXT, Apple, Sun...), il est même possible d'avoir différents standards pour une même marque.
Pour une station Sun Ultra 1 avec une carte TurboGX :
| 13W3 | Signal | VGA |
|--------+-----------+-------|
| 1 | Serial R | NC |
| 2 | V Sync | NC |
| 3 | Sense 0 | NC |
| 4 | Sense GND | | ---+
| 5 | C Sync | 13 | |
| 6 | H Sync | NC | |
| 7 | Serial W | NC | |
| 8 | Sense 1 | NC | |
| 9 | Sense 2 | | ---+
| 10 | Sync GND | 10 |
| A1 | Red | 1|6 |
| A2 | Green | 2|7 |
| A3 | Blue | 3|8 |
Les pins Sense 2 et Sense GND sont reliés pour que la carte graphique se configure en mode 1152x900@76Hz (et détecte un écran).
Sur cette carte, les synchros verticales et horizontales ne sont pas supportées, il faut utiliser la synchro composite à la place (qui n'est pas supportée par beaucoup d'écrans LCD).
RTC/NVRAM
Sur les machines SUN, des paramètres propres à la machine, l'heure et l'adresse MAC de la carte réseau sont stockées dans une SRAM avec une batterie on-chip. Ça fonctionne très bien, mais la durée de vie de ces puces est de l'ordre de 15 à 20 ans. Au delà, il faudra changer la puce ou découper la puce pour changer la pile.
On commence par enlever la puce de son support (Reference Manual, page 10-10) en notant la position du détrompeur (côté CPU) :
Ensuite, on va limer le boitier de la puce pour atteindre les contacts de la pile, du côté opposé au détrompeur :
Pendant cette étape, il est pratique de placer la puce dans un étau, pour être sûr de limer horizontalement.
Une fois les contacts atteints, on peut venir y souder un support de pile CR20xx ou bien des piles AA/AAA :
Il ne reste plus qu'a remettre la NVRAM dans son socket (détrompeur côté CPU).
Les horloges RTC/NVRAM DS1553 ont l'air compatibles pin-à-pin, avec les mêmes fonctionalités et les mêmes registres.
Upgrades
Le disque dur d'origine (1Go, 5400rpm) a été remplacé par un disque dur plus récent (18Go, 10krpm avec un bruit d'aspirateur), pour avoir un peu plus de place pour Solaris 8 (l'installation complète prend 1.3Go).
Un lecteur de DVD SCSI a été ajouté pour tenter de démarrer depuis un CD, mais il semble y avoir des histoires avec des secteurs de 2048 et 512 octets.
Notes
- Il n'est pas possible d'écrire dans la console série si le clavier est branché
- L'écran ne s'allume pas si le clavier n'est pas branché
Références
Tags de l'article : info, sun, vieilleries, workstation
En voyant une vidéo parlant des données présentes sur les divers codes barres des billets d'avion, j'ai regardé si les billets de train que j'avais en stock étaient pareil.
https://www.youtube.com/watch?v=jM4_iz3RqE8
J'ai trouvé 4 types de billets avec des codes-barres différents :
- Billets cartonnés (code PDF417)
- E-Billets TGV et IC (code PDF417 ou Aztec)
- E-Billets TER (code Aztec)
- Billets "Online-Ticket" ÖBB imprimés (code Aztec)
Billet cartonné
"Billet classique", commandé puis retiré a un guichet/borne, avec un code PDF-417 imprimé à gauche
A|B|CC|DDDDDD|EEEEEEEEE|F|G|HH|0000000000|II|JJ|KK|L|MMM|NNN|OOO|
PPPPP|QQQQQ|RRRRRR|SSSS|TTT|UUU|VVV|W|XXXX|YY|
| | | | | | |*| | |
- A : Type de format ('e' dans ce cas)
- B : Code d'imprimante (E pour les guichets)
- C : Code de ticket
- D : Numéro de dossier
- E : Numéro de billet
- F : Drapeau de spécimen (0 pour un faux ou 1 pour un vrai)
- G : Version de codage du billet (1)
- H : Ticket A de B
- 0 : Réservé (10 caractères)
- I : Type de carte de réduction (deux espaces en cas d'absence)
- J : Nombre de voyageurs adultes
- K : Nombre de voyageurs enfants
- L : Dernier digit de l'année du voyage
- M : Date d'impression (nombre de jours depuis le 01.01)
- N : date de début de validité, idem
- O : Date de fin de validité, idem
Premier segment :
- P : Gare de départ (code ISO3166-1 du pays puis code de la gare sur 3 digits)
- Q : Gare d'arrivée, idem
- R : Numéro de train (6 digits, ou 5 digits + '\0', ou '0' + 4 digits + '\0')
- S : Code antifraude
- T : Date de départ du train (nombre de jours depuis le 01.01)
- U : Numéro de voiture
- V : Numéro de place
- W : Classe du voyage
- X : Code du tarif
- Y : Conditions du services/payements
Le premier segment (de M à V) peut être complété par un second segment suivant la même syntaxe si le voyage a des correspondances. En cas d'absence, il y a 29 espaces, la classe est notée '*', puis 6 espaces.
A|B|CC|DDDDDD|EEEEEEEEE|F|G|HH|0000000000|II|JJ|KK|L|MMM|NNN|OOO|
PPPPP|QQQQQ|RRRRRR|SSSS|TTT|UUU|VVV|W|XXXX|YY|
| | | | | | |*| | |
e|E|DV|RUZNxx|58361xxxx|1|1|11|0000000000| |01|00|3|165|166|226|
FRLPD|CHGVA|96506 | |166| | |2|LJ25|B |
| | | | | | |*| | |
Ici on a un un billet au format "e" pour le numéro de dossier RUZNxx, un numéro de billet 58361xxxx, le billet est valide, et il n'y a qu'un seul billet pour ce voyage. Le billet n'est pas lié à une carte de réduction, il est pour un adulte sans enfant, est vallable pour l'année 2013, a été acheté le 14.06 et est vallable du 15.06 au 14.08.
Le premier segment est au départ de Lyon Part-Dieu (France, LPD) et à destination de Genève-Cornavin (Suisse, GVA), pour le train 96506, le code est illisible, le train circule le 15.06, n'a pas de place/voiture réservée, est en 2nde classe, pour un tarif "illico Jeunes -25%" et n'est pas échangeable après le départ.
Dans tous les cas, ces billets ne posent aucun risques une fois le voyage effectué dans sa totalité (par contre il est possible de l'annuler ou de le reproduire si il n'a pas encore été utilisé).
E-Billet TGV/IC
Les E-billets sont fournis par des agences de voyages (Voyages-SNCF, Capitaine-train, E-billet-SNCF) et ont un code Aztec pour ceux imprimés soi-même ou un code PDF-417 pour ceux imprimés sur les bornes de la SNCF. Dans les deux cas ils utilisent la même organisation.
A|B|CC|DDDDDD|EEEEEEEEE|F|G|HH|II/JJ/KKKK|
LLLLL|MMMMM|NNNNN|OO/PP|
QQQQQQQQQQQQQQQQQQQ|RRRRRRRRRRRRRRRRRRR|SSSSSSSSSSSSSSSSSSS|T|UU|VVVVV|
LLLLL|MMMMM|NNNNN|
- A : type de format (i)
- B : 1 pour un billet imprimé à une borne (code PDF-417), 0 pour un billet imprimé soi-même (code Aztec)
- C : Confirmation Voyage (CV)
- D : Numéro de Dossier
- E : Numéro d'E-Billet
- F : Drapeau de spécimen (0 pour un faux ou 1 pour un vrai)
- G : Version du codage du billet (2)
- H : Ticket A de B
- II/JJ/KKKK : date de naissance du voyageur
- L : Gare de départ (code ISO3166-1 du pays puis code de la gare sur 3 digits)
- M : Gare d'arrivée, idem
- N : Numéro de train
- OO/PP : date du trajet
- Q : Numéro de client
- R : Nom du voyageur (suivi ou précédé par des espaces, 19 caractères max)
- S : Prénom du voyageur (suivi ou précédé par des espaces, 19 caractères max)
- T : Classe
- U : inconnu, possiblement un caractère de contrôle ou un code antifraude
- V : Code du tarif
Le 2nd segment est facultatif et remplacé par des 0 et des espaces
- L : Gare de départ (code ISO3166-1 du pays puis code de la gare sur 3 digits)
- M : Gare d'arrivée, idem
- N : Numéro de train
A|B|CC|DDDDDD|EEEEEEEEE|F|G|HH|II/JJ/KKKK|
LLLLL|MMMMM|NNNNN|OO/PP|
QQQQQQQQQQQQQQQQQQQ|RRRRRRRRRRRRRRRRRRR|SSSSSSSSSSSSSSSSSSS|T|UU|VVVVV|
LLLLL|MMMMM|NNNNN|
i|1|CV|RIKNxx|248713xxx|1|2|11|01/01/1990|
FRCMF|FRPAZ|05706|13/05|
0029009166230xxxxxx|BOxxxxxx |XAVIER |2| 2|PR112|
FRPMO|FRDLY|16757|
Ici on a un billet au format "i", imprimé sur une borne SNCF, le billet est une "Confirmation de voyage" pour le dossier RIKNxx, un numéro de billet 248713xxx, le billet est valide, et il n'y a qu'un seul billet pour ce voyage.
Le billet est au départ de Chambéry-Challes-les-eaux (France, CMF), à destination de Paris-Austerlitz (France, PAZ), avec le train 05706 le 13/05.
Le numéro d'identifiant du trajet est 0029009166230xxxxxx, porté par "Xavier Bo", voyageant en seconde classe avec un tarif "preum's"
La seconde partie du trajet est au départ de Paris Montparnasse (France, PMO) vers La-Ferté-Bernard (France, DLY), avec le train 16757.
A|B|CC|DDDDDD|EEEEEEEEE|F|G|HH|II/JJ/KKKK|
LLLLL|MMMMM|NNNNN|OO/PP|
QQQQQQQQQQQQQQQQQQQ|RRRRRRRRRRRRRRRRRRR|SSSSSSSSSSSSSSSSSSS|T|UU|VVVVV|
LLLLL|MMMMM|NNNNN|
i|0|CV|QZWKx|482593xxx|1|2|11|01/01/1990|
CHGVA|FRLPD|09744|19/12|
00290290169300xxxxxx|BOxxxxxx |XAVIER |2| | 0|00000
Ici on a un billet au format "i", imprimé par ses propres moyens, le billet est une "Confirmation de voyage" pour le dossier QZWKxx, un numéro de billet 482593xxx, le billet est valide, et il n'y a qu'un seul billet pour ce voyage.
Le billet est au départ de Genève-Cornavin (Suisse, GVA), à destination de Lyon Part-Dieu (France, LPD), avec le train 09744 le 19/12.
Le numéro d'identifiant du trajet est 00290290169300xxxxxx, porté par "Xavier Bo", voyageant en seconde classe. Par contre les informations de tarif sont vides et le voyage n'a pas de correspondance (champs remplis par des espaces ou des '0').
Le ticket à plutôt l'air de servir à identifier le voyageur (I, J, K, Q, R) et à porter un numéro d'identifiant (Q) qui doit pointer dans une base de donnée mieux remplie (et non-modifiable).
Certains paramètres (O, P, T, V) ont l'air d'être présent en cas de base de donnée injoignable ou pas à jour pour au moins vérifier sommairement que personne ne tente de frauder.
E-Billet TER imprimé
Le billet a été commandé sur le site web des TER-Rhône-Alpes et a un code Aztec assez grand.
Le début contient des données encodées, puis la chaîne :
T00T100xx|0000738xx|FRLYL|FRHCZ|
S|28122015|2|NG02|INTERNET BILLET IL|BOUxxxxx XAVIER |01011990|ADULTE| |01| 00|28122015|28122015|000000000000|28122015|1313|0000000200
En interprêtant sommairement, on remarque plusieurs chaînes contenant la date du 28.12.2015 (date de commande, début et fin de validité du ticket).
La chaîne 1313 correspond à l'heure de la commande du billet, "NG02" semble être un tarif, et plusieurs champs peuvent correspondre à la classe.
Les champs FRLYL et FRHCZ sont au format des autres billets et indiquent les gares de départ et d'arrivée (France, Lyon Gorge-de-Loup et Fleurieux-sur-l'Arbresle).
Par contre je n'ai qu'un seul ticket de ce type pour l'instant, je pourrais compléter quand j'aurais comparé avec des tickets du même type pour des trajets.
Internet-Ticket ÖBB imprimé
Les tickets à imprimer soi-même sont les seuls à comporter un code-barres unique. Par contre le codage a l'air similaire et compatible avec celui utilisé par la DB (Allemagne) et les SBB (Suisse).
Pour l'instant le code comporte une en-tête dépendant du type de ticket/carte, du transporteur et de la longueur du message. Le reste est encodé en binaire mais semble décodable.
Références
- Format PDF417
- Code Aztec
- European Railway Agency - ERA/TD/2009-09/INT, structure des tickets cartonnés, page 151
- Codes barres et billets SNCF [FR], contenu des billets, E-billets et des cartes de réduction
- Confirmations, mémos, ... e-billet [FR], contenu des E-billets
- Titre de transports : billets papier [FR], lecture d'un billet papier
- Billets ÖBB [DE], contenu des billets et cartes ÖBB, pages 27 à 36
Tags de l'article : billets, info, reverse engineering, soft