Table of Contents

HERCULES: Overview

Hercules est une implémentation logicielle open source des architectures mainframe System/370 et ESA/390, en plus du nouveau z/Architecture 64 bits. Hercules s'exécute sous Linux, Windows (98, NT, 2000 et XP), Solaris, FreeBSD et Mac OS X (10.3 et versions ultérieures).

Hercules est un logiciel Open Source certifié OSI sous licence Q Public License.

Hercules a été créé par Roger Bowler et est maintenu par Jay Maynard. Jan Jaeger a conçu et mis en œuvre de nombreuses fonctionnalités avancées d'Hercules, notamment la reconfiguration dynamique, la console intégrée, l'exécution interprétative et la prise en charge de z/Architecture. Une équipe de programmeurs dédiée travaille constamment à la mise en place de nouvelles fonctionnalités et à la correction des bugs.

Installation

Construction à partir des sources

./util/cvslvlck
./configure

Par défaut, le script configure tentera de deviner les indicateurs d'optimisation du compilateur appropriés pour le système. Si ses suppositions s'avèrent être fausses, on peut désactiver toute optimisation en passant l'option --disable-optimization, ou spécifier vos propres indicateurs d'optimisation avec --enable-optimization=FLAGS.

Pour des options de configuration supplémentaires, exécuter: ./configure --help

make
make install

Installation sous Red Hat/Centos

rpm -Uvh RPMfile 

Cela mettra les exécutables Hercules dans /usr/bin et les bibliothèques dynamiques dans /usr/lib et /usr/lib/hercules, que l'on pourra exécuter n'importe où. Les exemples de fichiers de configuration seront placés dans /etc/hercules et le jeu de cartes IPLable de l'utilitaire autonome ZZSA sera placé dans /usr/share/hercules.

Installation sous Debian/Ubuntu

Les paquets Debian sont disponibles pour “Woody” et les versions ultérieures.

apt-get install hercules
dpkg -i DEB 

Démarrage de Hercules

Pour démarrer Hercules, utiliser cette commande à l’invite de commande Unix ou Windows:

hercules [-f nomfichier ]
      [ -d ]
      [-p dyndir ] [[-l dynmod ] ...]
      [> logfile ]

où:

Ensuite, connecter un client tn3270 au port de la console (normalement le port 3270). Le client sera connecté à la première adresse de périphérique 3270 spécifiée dans le fichier de configuration (il doit s'agir de l'adresse de la console principale). Si la console principale est une console 1052 ou 3215, connecter un client Telnet au lieu d'un client tn3270.

On peut maintenant entrer une commande ipl à partir du panneau de commande.

Utilisation du clavier

L’écran principal de Hercules contient une liste déroulante de messages avec une zone de saisie des commandes et une ligne d’état du système au bas de l’écran.

Pour faire défiler les messages, utiliser les touches Page précédente ou Page suivante, les touches Ctrl+Flèche vers le haut ou Ctrl + Flèche vers le bas, ou les touches Home ou End et/ou les touches Ctrl + Home ou Ctrl + End.

Les messages importants sont mis en surbrillance dans une couleur différente (généralement le rouge) et ne peuvent pas être déplacés de l'écran pendant deux minutes. Si la gestion du curseur étendu est disponible, les messages importants actuellement en haut de l'écran peuvent être supprimés plus tôt en déplaçant le curseur sur la ligne contenant le message, puis en appuyant sur entrée.

Utiliser la touche Insert pour basculer entre les modes insertion et superposition lorsqu'on tape dans la zone de saisie de commande. Utiliser les touches Home et End pour accéder au premier ou au dernier caractère de la commande ou utiliser les touches fléches gauche/droite pour accéder à un caractère spécifique. Utiliser la touche Echap pour effacer la zone de saisie.

Si vous appuyer sur Echap lorsque la zone de saisie de commande est déjà vide, l'écran passe en mode d'affichage semi-graphique “Nouveau panneau”, qui indique l'état général du système et des périphériques.

En mode d'affichage semi-graphique “Nouveau panneau”, il n'y a pas de zone de saisie de commande. Des “touches de raccourci” à caractère unique sont utilisées à la place pour émettre certaines des fonctions les plus courantes telles que le démarrage ou l'arrêt de la CPU. Les touches de raccourci sont celles qui sont en surbrillance. En appuyant sur le '?' key affiche de brèves informations d'aide sur l'utilisation du panneau semi-graphique.

Manipulation normale du curseur

Touche action
Esc Efface le contenu de la zone de saisie de commande. Si la zone de saisie de commande est déjà vide, passez au nouveau panneau semi-graphique.
Del Supprime le caractère à la position du curseur.
Retour arrière Efface le caractère précédent.
Insérer Bascule entre le mode insertion et le mode superposition.
Languette Tente de compléter le nom de fichier partiel à la position du curseur dans la zone de saisie de commande. S'il existe plusieurs fichiers possibles, une liste des noms de fichiers correspondants est affichée.
Accueil Déplace le curseur au début de la saisie dans la zone de saisie de commande. Si la zone de saisie de commande est vide, fait défiler la zone de message vers le haut.
Fin Déplace le curseur à la fin de l'entrée dans la zone de saisie de commande. Si la zone de saisie de commande est vide, fait défiler la zone de message vers le bas.
Page Up Fait défiler la zone de message d’un écran à l’autre.
Bas de page Fait défiler la zone de message d’un écran à l’autre.
Flèche vers le haut Rappelle la commande précédente dans la zone de saisie.
Flèche vers le bas Rappelle la commande suivante dans la zone de saisie.
Flèche droite Déplace le curseur sur le caractère suivant de la zone de saisie.
Flèche gauche Déplace le curseur sur le caractère précédent de la zone de saisie.
Ctrl + flèche vers le haut Fait défiler la zone de message d'une ligne.
Ctrl + flèche bas Fait défiler la zone de message d'une ligne.
Ctrl + Accueil Fait défiler la zone de message vers le haut.
Ctrl + Fin Fait défiler la zone de message vers le bas.

Les fonctions de clavier supplémentaires suivantes entrent en vigueur lorsque la fonction de traitement du curseur étendu Hercules (OPTION_EXTCURS) est activée au moment de la compilation. À l'heure actuelle, cette fonctionnalité est activée sur la plate-forme Windows uniquement.

Gestion étendue du curseur

Touche action
Alt + flèche vers le haut Déplace le curseur d'une rangée.
Alt + flèche bas Déplace le curseur d'une ligne vers le bas.
Alt + flèche droite Déplace le curseur vers la droite d'une colonne.
Alt + flèche gauche Déplace le curseur à gauche d'une colonne.
Languette Si le curseur est en dehors de la zone de saisie de commande, déplace le curseur au début de la saisie dans la zone de saisie de commande. Sinon, se comporte comme décrit dans le tableau précédent.
Accueil Si le curseur est en dehors de la zone de saisie de commande, déplace le curseur au début de la saisie dans la zone de saisie de commande. Sinon, se comporte comme décrit dans le tableau précédent.
Fin Si le curseur est en dehors de la zone de saisie de commande, déplace le curseur à la fin de la saisie dans la zone de saisie de commande. Sinon, se comporte comme décrit dans le tableau précédent.

Commandes du panneau

Liste des commandes

Ce qui suit est ce qui est affiché sur la console matérielle Hercules (HMC) en réponse au message '?' commande en cours de saisie. Veuillez noter qu'il peut ne pas être complètement exact ou à jour. S'il vous plait entrer le '?' commande par vous-même pour une liste plus complète, précise et à jour des commandes de panneau prises en charge.

Commande Description de la commande
? lister toutes les commandes
help commande une aide spécifique
* (commentaire de journal à syslog )
message display message sur la console a la VM
msg identique au message
msgnoh identique au message - pas d'en-têt e
hst historique des commandes
hao Hercules Opérateur Automatique
journal direct journal sortie
logopt change log options
version informations de versio n
quit terminer l'émulateur
exit (synonyme de 'quit' )
cpu définir le cpu cible pour l'affichage du panneau et les commande s
start start CPU (ou imprimante si argument donné)
stop stop CPU (ou imprimante si argument donné )
startall démarre tous les processeurs
stopall arrêter tous les processeur s
cf configurer le processeur actuel en ligne ou hors ligne
cfall configure tous les processeurs en ligne ou hors lign e
.reply Commande scp
!message scp message prioritaire
ssd arrêt du signa l
ptt display pthread trac e
i génère une interruption d'attention d'E / S pour le périphérique
ext générer une interruption externe
restart générer une interruption de redémarrage
archmode set architecture mod e
loadparm set du paramètre IP L
ipl IPL Normal à partir du périphérique xxxx
iplc IPL Clear du périphérique xxxx
sysreset Issue SYSTEM Réinitialisation du fonctionnement manuel
sysclear Issue SYSTEM Clear Réinitialisation du fonctionnement manuel
store le statut de la CPU du magasin au zéro absol u
psw afficher ou modifier le mot d'état du programme
gpr afficher ou modifier les registres à usage général
fpr afficher les registres à virgule flottante
fpc afficher registre de contrôle en virgule flottante
cr afficher ou modifier les registres de contrôle
ar afficher les registres d'accès
pr afficher le préfixe enregistrer
timerint afficher la minuterie ou mise à jour des minuteries
clocks afficher tod clkc et cpu timer
ipending afficher les interruptions en attente
ds affichersubchannel
r afficher ou modifier le stockage réel
v afficher ou modifier le stockage virtuel
u démonter le stockage
devtmax afficher ou définir le nombre maximal de threads de périphérique
k afficher trace interne cckd
attach configuration d'un périphérique
detach retirer le périphérique
define renommer l'appareil
devinit réinitialiser le périphérique
devlist Liste de périphériques ou tous les périphériques
qd query dasd
automount afficher/mettre à jour lesrépertoires des bande automount
scsimount montages automatiques sur bande SCSI
cd changement de répertoire
pwd afficher répertoire courant
sh commande shell
cache commande cache
cckd commande cckd
shrd shrd commande
conkpalv afficher/modifier la console Paramètres persistants de TCP
quiet Activer/désactiver l'actualisation automatique des données d'affichage du panneau
t instruction trace
t+ activation trace (trace on)
t- désactivation trace (trace off)
t? requête de trace
s instruction pas à pas
s+ activation pas à pas
s- désactivation pas à pas
s? requête pas à pas
b définir le point d'arrêt
b+ définit un point d'arrêt
b- supprimer un point d'arrêt
g désactiver l'instruction pas à pas et démarrer la CPU
ostailor interruption programme de trace
pgmtrace interruption programme de trace
savecore enregistrer une image de base dans un fichier
loadcore charge un fichier image principal
loadtext charge un fichier de pont de texte
ldmod charge un module
rmmod supprime un module
lsmod liste modules dynamiques
lsdep liste les deépendances du module
iodelay affichage de délai ou réglage de la valeur de délai d'E/S
ctc activer/désactiver le débogage CTC
toddrag afficher ou définir le facteur de traînée de l'horloge TOD
panrate affichar ou définir la fréquence pour l'actualisation de la console
msghld afficher ou définir le délai d'expiration des messages en attente
syncio afficher statistiques des appareils syncio
maxrates afficher le taux maximum observé de MIPS/SIOS pour l'intervalle défini ou définir un nouvel intervalle de reporting
defsym Define symbol
script Exécuter une séquence de commandes du panneau contenues dans un fichier
cscript Annule un fil de script en cours d'exécution
evm ECPS:VM Commands (Deprecated)
ecpsvm ECPS:VM Commandes
aea Afficher les tables AEA
aia Afficher les champs AIA
tlb Afficher les tables TLB
sizeof affiche la taille des structures
suspend Suspendre hercules
resume reprendre hercules
herclogo Lire un nouveau fichier de logo hercules
traceopt Options d'affichage des traces d'instruction
cmdtgt Spécifie la cible de la commande
herc Hercules commande
scp Envoie la commande scp
pscp Envoie la commande scp du message prio message
sf+dev ajoute un fichier shadow
sf-dev supprime un fichier shadow
sfc compresse les fichiers shadow
sfk vérifie les fichiers shadow
sfd affiche les statistiques du fichier shadow
t{+/-}dev activer/désactiver le traçage CCW
s{+/-}dev activer/désactiver le pas à gauche
t{+/-}CKD active/désactive le traçage CKD_KEY
f{+/-}adr marque les frames inutilisables/utilisables

La commande ipl peut également être utilisée pour charger un cdrom ou un serveur. Par exemple, si un CD de distribution Linux SuSE S/390 standard est chargé et monté sur /cdrom par exemple, ce cdrom peut être appelé dans la commande ipl comme ceci: ipl /cdrom/suse.ins

Les commandes attach et detach sont utilisées pour ajouter ou supprimer dynamiquement des périphériques de la configuration, et la commande define peut être utilisée pour modifier le numéro de périphérique d'un périphérique existant.

La commande devinit peut être utilisée pour rouvrir un périphérique existant. Les arguments (s'ils sont spécifiés) remplacent les arguments spécifiés dans le fichier de configuration pour ce périphérique. Le type d'appareil ne peut pas être changé et ne doit pas être spécifié. Cette commande peut être utilisée pour rembobiner une bande, monter une nouvelle bande ou un fichier image disque sur un périphérique existant, charger un nouveau jeu de cartes dans un lecteur ou fermer et rouvrir une imprimante ou un périphérique de perforation.

En mode pas à pas, appuyer sur la touche Entrée pour passer à l’instruction suivante.

Il existe également un autre panneau de commande semi-graphique. Appuyer sur Echap pour basculer entre le format de ligne de commande et le format semi-graphique. Taper ? pour obtenir de l'aide dans l'un ou l'autre des panneaux de contrôle.

Certaines commandes offrent également des informations d'aide supplémentaires concernant leur syntaxe, etc. Entrer help <nom de la commande> pour afficher ces informations d'aide supplémentaires toutes les commandes ne prennent pas en charge l'aide.

Quand une commande est préfixée avec '-', la commande ne sera pas réaffichée sur la console. Ceci peut être utilisé dans des scripts et est également utilisé en interne lorsque des commandes doivent être appelées sans être rediffusées sur le panneau.

Le fichier hercules.rc (commandes d'exécution)

Hercules prend également en charge la possibilité d'exécuter automatiquement les commandes du panneau au démarrage via le fichier “commandes d'exécution”. Si le fichier de commandes d'exécution apparaît lors du démarrage d'Hercules, chaque ligne qu'il contient est lue et interprétée comme une commande en panneau, exactement comme si la commande avait été entrée à partir de la console système de la console HMC.

Le nom de fichier par défaut du fichier de commandes d'exécution est “hercules.rc”, mais vous pouvez le remplacer en définissant la variable d'environnement HERCULES\_RC sur le nom de fichier souhaité.

À l'exception de la commande pause (voir le paragraphe ci-dessous), chaque commande lue dans le fichier de commandes d'exécution est enregistrée dans la console, précédée du caractère > (signe supérieur à) afin que l'on puisse facilement distinguer les commandes du panneau entrées. depuis le clavier parmi ceux entrés via le fichier .rc.

Les lignes commençant par # sont traitées comme des “commentaires silencieux” et ne sont donc pas enregistrées dans la console. Les lignes commençant par * sont toutefois traitées comme des “commentaires forts” et seront enregistrées.

En plus de pouvoir exécuter toute commande de panneau valide (y compris la commande shell sh) via le fichier de commandes d'exécution, une commande supplémentaire pause nnn est prise en charge afin d'introduire un court délai avant la lecture et le traitement de la ligne suivante. dans le fichier. La valeur nnn peut être un nombre compris entre 1 et 999 et spécifie le nombre de secondes au minimum avant la lecture de la ligne suivante. L'utilisation créative du fichier de commandes d'exécution permet d'automatiser complètement le démarrage d'Hercules.

La fonction "Hercules Automatic Operator" (HAO)

La fonctionnalité HAO (Hercules Automatic Operator) est une fonctionnalité qui permet d'émettre automatiquement des commandes de panneau en réponse à certains messages en cours d'émission.

Pour utiliser la fonction d'opérateur automatique Hercules, il faut d'abord définir une “règle” consistant en une “cible” et une “commande” associée. La “cible” est simplement un modèle d'expression régulière utilisé pour faire correspondre le texte des divers messages émis par Hercules au cours de son exécution. Chaque fois qu'une correspondance est trouvée, la règle “se déclenche” et sa commande associée sont automatiquement émises.

Hercules Automatic Operator ne concerne que les messages émis par Hercules sur sa console HMC (console matérielle). Il ne peut pas être utilisé pour les messages que le système d'exploitation invité peut envoyer à l'un de ses terminaux. Il s’agit uniquement d’un opérateur automatique Hercules , et non d’ un opérateur automatique “VSE”, “MVS”, “VM”, etc.

Définir une règle

Pour définir une règle HAO, entrer la commande suivante:

hao cible

pour définir le modèle de correspondance “cible” de la règle (une expression régulière simple), suivi de la commande:

hao commande

définir la commande de panneau associée à la règle.

Le modèle cible est une simple valeur d'expression régulière définie par la fonction d'expression régulière prise en charge par votre plate-forme de construction hôte. Pour Windows, il doit s'agir d'une expression régulière compatible Perl (PCRE). Pour d'autres plates-formes de construction prises en charge, il peut s'agir d'une autre syntaxe d'expression régulière prise en charge. Consultez la documentation de programmation de votre plate-forme hôte pour plus de détails.

La commande associée est la commande du panneau Hercules valide que l'on souhaite émettre en réponse à un message émis correspondant au modèle cible souhaité.

Autres commandes et limitations

Pour supprimer une règle HAO entièrement ou partiellement définie, utiliser d'abord la commande hao list pour répertorier toutes les règles définies (ou partiellement définies), puis utiliser la commande hao del nnn pour supprimer la règle spécifique identifiée par nnn . (Toutes les règles reçoivent des numéros tels qu'elles sont définies et sont donc identifiées par leur valeur numérique). On peut éventuellement supprimer TOUTES les règles définies ou partiellement définies en exécutant la commande hao clear.

L’implémentation actuelle limite le nombre total de règles définies à 64.

Il n’existe actuellement aucun moyen de définir une commande dont les arguments varient en fonction du texte du message. C’est-à-dire qu’il n’ya actuellement aucun moyen de dire

Répondre avec la commande 'devinit cuu nomfichier' 
en réponse au texte de message 'HHCXXnnnI Device cuu intervention requise.'
où cuu est tout ce qui a été identifié dans le message.

Le HAO n'est pas si sophistiqué (encore). Seules des commandes simples en texte brut peuvent être définies et émises. Aucune substitution automatique n'est effectuée en fonction du texte du message (bien que la substitution de symbole DEFSYM normale soit prise en charge, car il s'agit d'une fonction de commande par panneau normale prise en charge séparément de HAO).

Toutes les règles définies sont vérifiées pour une correspondance chaque fois que Hercules envoie un message. Il n'y a aucun moyen de spécifier pour “arrêter le traitement des règles ultérieures”. Si un message est émis qui correspond à deux règles ou plus, chaque commande associée est ensuite émise en séquence. Par conséquent, le conseil de choisir avec soin les modèles de cibles de vos règles s’applique ici.