Parfois, les choses tournent mal et le système que l'on a installé n’est plus amorçable. Peut-être la configuration du chargeur de démarrage a-t-elle été rompue lors de la tentative de modification, ou peut-être qu'un nouveau noyau l'on a installé ne démarre-t-il pas. Quelle que soit la cause, on a besoin d'un système sur lequel travailler pour corriger le problème, et le mode rescue
peut être utile pour cela.
Il existe plusieurs options pour récupérer un système Ubuntu en panne sur s390x:
Le menu de démarrage de zipl offre par défaut une option permettant de démarrer un ancien noyau via l'option de démarrage numéro 2.
zIPL v2.3.0-build-20180425 interactive boot menu 0. default (ubuntu) 1. ubuntu 2. old Please choose (default will boot in 10 seconds):
Les problèmes de démarrage sont souvent introduits avec une modification du noyau. Il y a donc de bonnes chances que le noyau précédent/ancien fonctionne toujours.
Une autre option consiste à utiliser le noyau d'installation et initrd en mode de secours (parfois aussi appelé mode de récupération). Pour activer le mode de secours, il faut démarrer avec le paramètre de démarrage rescue/enable=true
, et ce paramètre doit être ajouté au fichier parmfile.ubuntu
.
Le démarrage en mode rescue
est légèrement différent pour une LPAR par rapport à un guest z/VM.
Choisir l'installation réseau, indiquer le serveur où l'image a été extraite et le dossier ./boot
de l'image. Ouvrir le fichier parmfile.ubuntu
, ajouter le paramètre de démarrage rescue/enable=true
et procéder la suite normalement pour une installation de partition logique, c'est-à-dire avec la tâche HMC Charger depuis un support amovible ou un serveur.
Mais il est préférable d’ajouter une entrée de démarrage dédiée pour le mode rescue. Par conséquent, copier le fichier parmfile.ubuntu
et le fichier ubuntu.ins
pour créer des versions distinctes pour le mode rescue, qui aboutissent à une entrée distincte en mode rescue dans la tâche Load from Removable Media or Server
Se connecter au serveur de démarrage réseau (FTP) et copier le fichier ins
(installation) et le fichier de configuration:
$ cd <chemin d'accès à l'image de serveur ubuntu extraite> /ubuntu-server-18.04/boot $ cp ubuntu.ins rescue.ins $ cp parmfile.ubuntu parmfile.rescue
Modifier le nouveau fichier rescue.ins
créé à partir du fichier par défaut:
$ cat rescue.ins * Ubuntu for z Series (default kernel) kernel.ubuntu 0x00000000 initrd.off 0x0001040c initrd.siz 0x00010414 parmfile.ubuntu 0x00010480 initrd.ubuntu 0x01000000
, pointer sur le nouveau parmfile.rescue
:
$ cat rescue.ins * Ubuntu for z Series (default kernel) kernel.ubuntu 0x00000000 initrd.off 0x0001040c initrd.siz 0x00010414 parmfile.rescue 0x00010480 initrd.ubuntu 0x01000000
Ouvrir parmfile.rescue
et ajouter rescue/enable=true
(le fichier parmfile est vide par défaut):
$ cat parmfile.rescue rescue/enable=true
Maintenant, démarrer la tâche Load from Removable Media or Server
, sélectionner Source FTP
, entrer les données du serveur de démarrage réseau (FTP), puis passer à l’étape Sélectionnez le logiciel à installer
On trouvera en plus de l’entrée par défaut une autre entrée pour le mode de rescue
:
Load from Removable Media or Server - Select Software to Install - P00ABCDE:LINLPAR Select the software to install. Select | Name | Description * | ubuntu-server-18.04/boot/rescue.ins | Ubuntu for z Series (default kernel) o | ubuntu-server-18.04/boot/ubuntu.ins | Ubuntu for z Series (default kernel)
Sélectionner ubuntu-server-18.04/boot/rescue.ins
et continuer avec OK
.
Il faut accéder au mini-disque où se trouvent les fichiers du programme d’installation, y compris parmfile.ubuntu
, ajouter le paramètre de démarrage rescue/enable=true
et procéder normalement pour une installation z/VM, c’est-à-dire l'exécution du script ubuntu exec REXX. Mais là encore, il est préférable d’ajouter un script de démarrage dédié pour le mode rescue
.
Copier le fichier parmfile ubuntu
et le fichier ubuntu exec
pour créer des versions distinctes pour le mode rescue
:
Se connecter au système z/VM, ayez le CMS actif (ipl-ed) et s'assurer d’avoir accès au minidisque où se trouvent les fichiers d’installation. Dans cet exemple, File Mode
(Fm) A
est utilisé, cela peut être différent en fonction du système. Copier les fichiers suivants:
copyfiles ubuntu exec a rescue exec a copyfiles parmfile ubuntu a parmfile rescue a listfiles rescue * a RESCUE EXEC A1 listfiles * rescue a PARMFILE RESCUE A1
Changer PARMFILE RESCUE
(par défaut, il est vide):
x PARMFILE RESCUE A * * * Top of File * * * * * * End of File * * *
Et ajouter le paramètre rescue:
x PARMFILE RESCUE A * * * Top of File * * * rescue/enable=true * * * End of File * * *
Modifier également le fichier RESCUE EXEC
afin qu’il pointe vers le nouveau fichier parmfile rescue
:
x RESCUE EXEC A * * * Top of File * * * /* REXX EXEC TO IPL Ubuntu's Rescue Mode */ /* z Systems FROM THE VM READER. */ /* */ 'CP CLOSE RDR' 'PURGE RDR ALL' 'SPOOL PUNCH * RDR' 'PUNCH KERNEL UBUNTU * (NOHEADER' 'PUNCH PARMFILE RESCUE * (NOHEADER' 'PUNCH INITRD UBUNTU * (NOHEADER' 'CHANGE RDR ALL KEEP NOHOLD' 'CP IPL 000C CLEAR' * * * End of File * * *
Maintenant, démarrer le guest z/VM comme d’habitude, mais en utilisant le script REXX nouvellement créé pour le mode de secours, taper donc simplement: rescue <Enter>
En utilisant l’un ou l’autre des deux types d’installation, vous verrez apparaître les premiers écrans du programme d’installation, avec une note dans le coin de l’écran pour indiquer qu’il s’agit d’un mode recue
et non d’une installation complète:
Rescue mode [?] Ubuntu installer main menu Choose the next step in the install process: Configure the network device Configure the network Choose language Choose a mirror of the Ubuntu archive Download installer components Change debconf priority Save debug logs Execute a shell Abort the installation
Le système n'est pas sur le point d'être écrasé! Le mode “Rescue” tire simplement parti des fonctions de détection de matériel disponibles dans le programme d'installation pour assurer que les disques, périphériques réseau, etc., sont disponibles lors de la réparation du système.
Au lieu de l'outil de partitionnement, on a maintenant accès à une liste des partitions du système dans laquelle on est invité à en sélectionner une. Normalement, on doit sélectionner la partition contenant le système de fichiers root
que l'on souhaite réparer. On peut sélectionner des partitions sur les périphériques RAID et LVM ainsi que sur celles créées directement sur les disques:
Rescue mode [!!] Enter rescue mode Enter a device you wish to use as your root file system. You will be able to choose among various rescue operations to perform on this file system. If you choose not to use a root file system, you will be given a reduced choice of operations that can be performed without one. This may be useful if you need to correct a partitioning problem. Device to use as root file system: /dev/sda1 /dev/sdb1 Assemble RAID array <Go Back>
Si possible, le programme d'installation présentera maintenant une invite du shell dans le système de fichiers sélectionné, que l'on peut utiliser pour effectuer les réparations nécessaires.
Si le programme d'installation ne peut pas exécuter un shell utilisable dans le système de fichiers root
sélectionné, peut-être parce que le système de fichiers est corrompu, il émettra un avertissement et proposera de donner un shell dans l'environnement du programme d'installation. On ne disposera peut-être pas autant d'outils disponibles dans cet environnement, mais ils suffiront souvent pour réparer le système de toute façon. Le système de fichiers root
sélectionné sera monté dans le répertoire /target
.
Une option triviale consiste simplement à démarrer le noyau d'installation standard et initrd
sans aucun paramètre de noyau supplémentaire, puis à sélectionner l'entrée Start Shell
dans l'écran initial.
[!!] Configuring d-i This is the network console for the Debian installer. From here, you may start the Debian installer, or execute an interactive shell. To return to this menu, you will need to log in again. Network console option: Start installer Start installer (expert mode) Start shell
La fonctionnalité du shell de l’installateur Debian est limitée, mais il peut toujours servir de système de secours pour réparer une installation endommagée. Lorsqu'on n'utilise pas le mode rrecue
, veiller à ne pas repartitionner ou formater accidentellement un disque susceptible de provoquer une perte de données.
Dans les deux cas, après avoir quitté le shell, le système redémarre.