Échec du démarrage de la machine virtuelle Linux Azure après l’application des modifications du noyau
Remarque
CentOS référencé dans cet article est une distribution Linux qui atteint la fin de vie (EOL). Tenez compte de votre utilisation et planifiez en conséquence. Pour plus d’informations, consultez Guide sur la fin de vie de CentOS.
Cet article fournit des solutions à un problème dans lequel une machine virtuelle Linux ne peut pas démarrer après l’application des modifications du noyau.
Conditions préalables
Assurez-vous que la console série est activée et fonctionnelle sur la machine virtuelle Linux.
Comment identifier le problème de démarrage lié au noyau
Pour identifier un problème de démarrage lié au noyau, case activée la chaîne de panique du noyau spécifique. Pour ce faire, utilisez Azure CLI ou le Portail Azure pour afficher la sortie du journal de la console série de la machine virtuelle dans le volet diagnostics de démarrage ou de la console série.
Une panique du noyau ressemble à la sortie suivante et s’affiche à la fin du journal de la console série :
Probing EDD (edd=off to disable)... ok
Memory KASLR using RDRAND RDTSC...
[ 300.206297] Kernel panic - xxxxxxxx
[ 300.207216] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G ------------ T 3.xxx.x86_64 #1
Résolution des problèmes en ligne
Conseil
Si vous avez une sauvegarde récente de la machine virtuelle, restaurez la machine virtuelle à partir de la sauvegarde pour résoudre le problème de démarrage.
La console série est la méthode la plus rapide pour résoudre le problème de démarrage. Il vous permet de résoudre directement le problème sans avoir à présenter le disque système à une machine virtuelle de récupération. Vérifiez que vous remplissez les conditions préalables nécessaires pour votre distribution. Pour plus d’informations, consultez Console série de machine virtuelle pour Linux.
Identifiez le problème de démarrage spécifique lié au noyau.
Utilisez la console série Azure pour interrompre votre machine virtuelle dans le menu GRUB et sélectionnez un noyau précédent pour la démarrer. Pour plus d’informations, consultez Système de démarrage sur une version antérieure du noyau.
Accédez à la section correspondante pour résoudre le problème de démarrage spécifique lié au noyau :
Une fois le problème de démarrage lié au noyau résolu, redémarrez la machine virtuelle pour qu’elle puisse démarrer sur la dernière version du noyau.
Résolution des problèmes hors connexion
Conseil
Si vous avez une sauvegarde récente de la machine virtuelle, restaurez la machine virtuelle à partir de la sauvegarde pour résoudre le problème de démarrage.
Si la console série Azure ne fonctionne pas sur la machine virtuelle spécifique ou n’est pas une option dans votre abonnement, résolvez le problème de démarrage à l’aide d’une machine virtuelle de secours/réparation. Pour cela, procédez comme suit :
À l’aide des commandes de réparation de machine virtuelle, créez une machine virtuelle de réparation à laquelle est connectée une copie du disque de système d’exploitation de la machine virtuelle affectée. Montez la copie des systèmes de fichiers du système d’exploitation dans la machine virtuelle de réparation à l’aide de chroot.
Remarque
Vous pouvez également créer manuellement une machine virtuelle de secours à l’aide du portail Azure. Pour en savoir plus, consultez l’article Résoudre les problèmes d’une machine virtuelle Linux en connectant le disque du système d’exploitation à une machine virtuelle de récupération à l’aide du portail Azure.
Identifiez le problème de démarrage spécifique lié au noyau.
Accédez à la section correspondante pour résoudre le problème de démarrage spécifique lié au noyau :
Une fois le problème de démarrage lié au noyau résolu, effectuez les actions suivantes :
- Quittez chroot.
- Démonter la copie des systèmes de fichiers de la machine virtuelle de secours/réparation.
- Exécutez la commande
az vm repair restore
pour remplacer le disque de système d’exploitation réparé par le disque de système d’exploitation d’origine de la machine virtuelle. Pour plus d’informations, consultez l’étape 5 Réparer une machine virtuelle Linux à l’aide des commandes de réparation de machine virtuelle Azure. - Vérifiez si la machine virtuelle peut démarrer. Pour ce faire, examinez la Serial console Azure ou essayez de vous connecter à la machine virtuelle.
S’il existe du contenu important lié au noyau, que la partition entière
/boot
ou d’autres contenus importants sont manquants et qu’ils ne peuvent pas être récupérés, nous vous recommandons de restaurer la machine virtuelle à partir d’une sauvegarde. Pour plus d’informations, consultez l’article Comment restaurer les données de la machine virtuelle Azure dans le portail Azure.
Système de démarrage sur une version antérieure du noyau
Utiliser la console série Azure
Redémarrez la machine virtuelle à l’aide de la console série Azure.
- Sélectionnez le bouton d’arrêt en haut de la fenêtre de la console série.
- Sélectionnez l’option Redémarrer la machine virtuelle (dur).
Une fois la connexion à la console série rétablie, un compteur de compte à rebours s’affiche dans le coin supérieur gauche de la fenêtre de console série. Appuyez sur la touche ESCAPE pour interrompre votre machine virtuelle dans le menu GRUB.
Appuyez sur la flèche vers le bas pour sélectionner une version précédente du noyau.
Modifiez la
GRUB_DEFAULT
variable dans le fichier /etc/default/grub comme indiqué dans Modifier manuellement la version du noyau par défaut. Il s’agit d’un changement persistant.
Remarque
Si une seule version du noyau est répertoriée dans le menu GRUB, suivez l’approche de résolution des problèmes hors connexion pour résoudre ce problème à partir d’une machine virtuelle de réparation.
Utiliser la machine virtuelle de réparation (scripts ALAR)
Exécutez la commande bash suivante dans Azure Cloud Shell pour créer une machine virtuelle de réparation. Pour plus d’informations, consultez Utiliser azure Linux Auto Repair (ALAR) pour corriger une machine virtuelle Linux - option noyau.
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username rescue --repair-password 'password!234' --copy-disk-name repairdiskcopy
Exécutez la commande suivante pour remplacer le noyau rompu par la version précédemment installée :
az vm repair run --verbose -g $RGNAME -n $VMNAME --run-id linux-alar2 --parameters kernel --run-on-repair az vm repair restore --verbose -g $RGNAME -n $VMNAME
Remarque
Si une seule version du noyau est installée dans le système, suivez l’approche de résolution des problèmes hors connexion pour résoudre ce problème à partir d’une machine virtuelle de réparation.
Modifier manuellement la version du noyau par défaut
Pour modifier la version du noyau par défaut à partir d’une machine virtuelle de réparation (dans chroot) ou sur une machine virtuelle en cours d’exécution, procédez comme suit :
Remarque
Si une restauration de la rétrogradation du noyau est effectuée, sélectionnez la version du noyau la plus récente au lieu de l’ancienne.
RHEL 7, Oracle Linux 7 et CentOS 7
Validez la liste des noyaux disponibles dans le fichier de configuration GRUB en exécutant l’une des commandes suivantes :
Machines virtuelles Gen1 :
cat /boot/grub2/grub.cfg | grep menuentry
Machines virtuelles Gen2 :
cat /boot/efi/EFI/*/grub.cfg | grep menuentry
Définissez le nouveau noyau par défaut et spécifiez le titre du noyau correspondant en exécutant la commande suivante :
# grub2-set-default 'Red Hat Enterprise Linux Server, with Linux 3.10.0-123.el7.x86_64'
Remarque
Remplacez par
Red Hat Enterprise Linux Server, with Linux 3.10.0-123.el7.x86_64
le titre d’entrée de menu correspondant.Vérifiez que le nouveau noyau par défaut est celui souhaité en exécutant la commande suivante :
grub2-editenv list
Vérifiez que la valeur de la
GRUB_DEFAULT
variable dans le fichier /etc/default/grub est définie sursaved
. Pour le modifier, veillez à régénérer le fichier de configuration GRUB pour appliquer les modifications.
RHEL 8/9 et CentOS 8
Répertoriez les noyaux disponibles en exécutant la commande suivante :
ls -l /boot/vmlinuz-*
Définissez le nouveau noyau par défaut en exécutant la commande suivante :
grubby --set-default /boot/vmlinuz-4.18.0-372.19.1.el8_6.x86_64
Remarque
Remplacez par
4.18.0-372.19.1.el8_6.x86_64
la version du noyau correspondante.Vérifiez que le nouveau noyau par défaut est celui souhaité en exécutant la commande suivante :
grubby --default-kernel
SLES 12/15, Ubuntu 18.04/20.04
Répertoriez les noyaux disponibles dans le fichier de configuration GRUB en exécutant la commande suivante :
Machines virtuelles Gen1 :
SLES 12/15 :
cat /boot/grub2/grub.cfg | grep menuentry
Ubuntu 18.04/20.04 :
cat /boot/grub/grub.cfg | grep menuentry
Machines virtuelles Gen2 :
cat /boot/efi/EFI/*/grub.cfg | grep menuentry
Définissez le nouveau noyau par défaut en modifiant la valeur de la
GRUB_DEFAULT
variable dans le fichier /etc/default/grub . Pour la version du noyau la plus récente installée dans le système, la valeur par défaut est 0. Le noyau disponible suivant est défini sur « 1>2 ».vi /etc/default/grub GRUB_DEFAULT="1>2"
Remarque
Pour plus d’informations sur la configuration de la
GRUB_DEFAULT
variable, consultez SUSE Boot Loader GRUB2 et Ubuntu Grub2/Setup. En guise de référence : la valeur menuentry de niveau supérieur est 0, la valeur du premier sous-menu de niveau supérieur est 1 et chaque valeur de menuentry imbriquée commence par 0. Par exemple, « 1>2 » est le troisième menu du premier sous-menu.Régénérez le fichier de configuration GRUB pour appliquer les modifications. Suivez les instructions fournies dans Réinstaller GRUB et régénérer le fichier de configuration GRUB pour la distribution Linux et la génération de machine virtuelle correspondantes.
Panique du noyau - Non synchronisation : VFS : Impossible de monter la racine fs sur unknown-block(0,0)
Cette erreur se produit en raison d’une mise à jour récente du système (noyau). Il est le plus souvent vu dans les distributions basées sur RHEL. Vous pouvez identifier ce problème à partir de la console série Azure. L’un des messages d’erreur suivants s’affiche :
« Panique du noyau - non synchronisation : VFS : Impossible de monter la racine fs sur unknown-block(0,0) »
[ 301.026129] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) [ 301.027122] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G ------------ T 3.10.0-1160.36.2.el7.x86_64 #1 [ 301.027122] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS 090008 12/07/2018 [ 301.027122] Call Trace: [ 301.027122] [<ffffffff82383559>] dump_stack+0x19/0x1b [ 301.027122] [<ffffffff8237d261>] panic+0xe8/0x21f [ 301.027122] [<ffffffff8298b794>] mount_block_root+0x291/0x2a0 [ 301.027122] [<ffffffff8298b7f6>] mount_root+0x53/0x56 [ 301.027122] [<ffffffff8298b935>] prepare_namespace+0x13c/0x174 [ 301.027122] [<ffffffff8298b412>] kernel_init_freeable+0x222/0x249 [ 301.027122] [<ffffffff8298ab28>] ? initcall_blcklist+0xb0/0xb0 [ 301.027122] [<ffffffff82372350>] ? rest_init+0x80/0x80 [ 301.027122] [<ffffffff8237235e>] kernel_init+0xe/0x100 [ 301.027122] [<ffffffff82395df7>] ret_from_fork_nospec_begin+0x21/0x21 [ 301.027122] [<ffffffff82372350>] ? rest_init+0x80/0x80 [ 301.027122] Kernel Offset: 0xc00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
« erreur : le fichier '/initramfs-*.img' est introuvable »
erreur : le fichier '/initramfs-3.10.0-1160.36.2.el7.x86_64.img' est introuvable.
Ce type d’erreur indique que le fichier initramfs n’est pas généré, que l’entrée initrd est manquante dans le fichier de configuration GRUB après un processus de mise à jour corrective ou qu’une configuration manuelle GRUB est incorrecte.
Avant de redémarrer un serveur, nous vous recommandons de valider la configuration et /boot
le contenu grub s’il existe une mise à jour du noyau en exécutant l’une des commandes suivantes. Il est important de s’assurer que la mise à jour est effectuée et qu’il n’y a pas de fichiers initramfs manquants.
Basé sur le BIOS - Systèmes Gen1
# ls -l /boot # cat /boot/grub2/grub.cfg
Basé sur UEFI - Systèmes Gen2
# ls -l /boot # cat /boot/efi/EFI/*/grub.cfg
Régénérer les initramfs manquants à l’aide de scripts ALAR de réparation de machine virtuelle Azure
Créez une machine virtuelle de réparation en exécutant la ligne de commande Bash suivante avec Azure Cloud Shell. Pour plus d’informations, consultez Utiliser Azure Linux Auto Repair (ALAR) pour corriger une machine virtuelle Linux - option initrd.
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username rescue --repair-password 'password!234' --copy-disk-name repairdiskcopy
Régénérez l’image initrd/initramfs et régénérez le fichier de configuration GRUB s’il manque l’entrée initrd. Pour ce faire, exécutez la commande suivante :
az vm repair run --verbose -g $RGNAME -n $VMNAME --run-id linux-alar2 --parameters initrd --run-on-repair az vm repair restore --verbose -g $RGNAME -n $VMNAME
Une fois la commande de restauration exécutée, redémarrez la machine virtuelle d’origine et vérifiez qu’elle peut démarrer.
Régénérer manuellement les initramfs manquants
Importante
- Si vous êtes en mesure de démarrer la machine virtuelle à l’aide d’une version précédente du noyau ou à l’intérieur de chroot à partir de la machine virtuelle de réparation/sauvetage, régénérez manuellement les initramfs manquants.
- Pour régénérer manuellement les initramfs manquants à partir d’une machine virtuelle de réparation, vérifiez que l’étape 1 de la résolution des problèmes hors connexion a déjà été suivie et que ces commandes sont exécutées dans chroot.
Identifiez la version spécifique du noyau qui rencontre des problèmes de démarrage. Vous pouvez extraire les informations de version de l’erreur de panique du noyau correspondante.
Reportez-vous à la capture d’écran suivante comme exemple. L’erreur de panique du noyau indique que la version du noyau est « 3.10.0-1160.59.1.el7.x86_64 » :
Régénérez le fichier initramfs manquant en exécutant l’une des commandes suivantes :
RHEL/CentOS/Oracle Linux 7/8
sudo depmod -a 3.10.0-1160.59.1.el7.x86_64 sudo dracut -f /boot/initramfs-3.10.0-1160.59.1.el7.x86_64.img 3.10.0-1160.59.1.el7.x86_64
Importante
Remplacez par
3.10.0-1160.59.1.el7.x86_64
la version du noyau correspondante.SLES 12/15
sudo depmod -a 5.3.18-150300.38.53-azure sudo dracut -f /boot/initrd-5.3.18-150300.38.53-azure 5.3.18-150300.38.53-azure
Importante
Remplacez par
5.3.18-150300.38.53-azure
la version du noyau correspondante.Ubuntu 18.04
sudo depmod -a 5.4.0-1077-azure sudo mkinitramfs -k -o /boot/initrd.img-5.4.0-1077-azure
Importante
Remplacez par
5.4.0-1077-azure
la version du noyau correspondante.
Régénérez le fichier de configuration GRUB. Suivez les instructions fournies dans Réinstaller GRUB et régénérer le fichier de configuration GRUB pour la distribution Linux et la génération de machine virtuelle correspondantes.
Si les étapes ci-dessus sont effectuées à partir d’une machine virtuelle de réparation, suivez l’étape 3 dans Résolution des problèmes hors connexion. Si les étapes ci-dessus sont effectuées à partir de la console série Azure, suivez la méthode de résolution des problèmes en ligne .
Redémarrez votre machine virtuelle sur la version du noyau la plus récente.
Panique du noyau - Non synchronisation : tentative de suppression de l’init
Identifiez ce problème à partir de la console série Azure. Vous verrez une sortie semblable à celle-ci :
dracut Warning: Boot has failed. To debug this issue add "rdshell" to the kernel command line.
Kernel panic - not syncing: Attempted to kill init!
Pid: 1, comm: init Not tainted 2.6.32-754.17.1.el6.x86_64 #1
Call Trace:
[<ffffffff81558bfa>] ? panic+0xa7/0x18b
[<ffffffff81130370>] ? perf_event_exit_task+0xc0/0x340
[<ffffffff81086433>] ? do_exit+0x853/0x860
[<ffffffff811a33b5>] ? fput+0x25/0x30
[<ffffffff81564272>] ? system_call_after_swapgs+0xa2/0x152
[<ffffffff81086498>] ? do_group_exit+0x58/0xd0
[<ffffffff81086527>] ? sys_exit_group+0x17/0x20
[<ffffffff81564357>] ? system_call_fastpath+0x35/0x3a
[<ffffffff8156427e>] ? system_call_after_swapgs+0xae/0x152
Ce type de panique du noyau se produit en raison des causes possibles suivantes :
Consultez les sections suivantes pour obtenir des détails sur la cause et des solutions. Assurez-vous que les commandes sont exécutées à partir d’une machine virtuelle de réparation/sauvetage dans un environnement chroot, comme indiqué dans Résolution des problèmes hors connexion.
Fichiers et répertoires importants manquants
Les fichiers et répertoires Linux importants sont manquants en raison d’une erreur humaine. Par exemple, les fichiers sont supprimés accidentellement ou endommagés par le système de fichiers.
Validez le contenu du disque du système d’exploitation après avoir attaché la copie du disque du système d’exploitation à une machine virtuelle de réparation et monté les systèmes de fichiers correspondants à l’aide de chroot. Vous pouvez comparer les sorties avec celles d’une machine virtuelle active exécutant la même version de système d’exploitation.
ls -l / ls -l /usr/lib ls -l /usr/lib64 ls -lR / | more
Restaurez les fichiers manquants à partir d’une sauvegarde. Pour plus d’informations, consultez Récupérer des fichiers à partir d’une sauvegarde de machine virtuelle Azure. En fonction du nombre de fichiers manquants, il peut être préférable d’effectuer une restauration complète des machines virtuelles. Pour plus d’informations, consultez l’article Comment restaurer les données de la machine virtuelle Azure dans le portail Azure.
Bibliothèques et packages principaux système manquants
Les bibliothèques, fichiers ou packages principaux du système importants sont supprimés du système ou endommagés. Pour résoudre ce problème, réinstallez les bibliothèques, fichiers ou packages affectés. Cette solution fonctionne sur des distributions rpm telles que les machines virtuelles Red Hat/CentOS/SUSE. Pour les autres distributions Linux, nous vous recommandons de restaurer la machine virtuelle à partir d’une sauvegarde.
Pour effectuer la réinstallation, procédez comme suit :
Créez une machine virtuelle de secours à l’aide d’une image brute avec la même version et la même génération de système d’exploitation que la machine virtuelle affectée.
Accédez à l’environnement chroot dans la machine virtuelle de secours pour résoudre le problème.
sudo chroot /rescue
La sortie de la commande indique quelle bibliothèque est manquante ou endommagée, comme indiqué ci-dessous :
/bin/bash: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
Vérifiez tous les packages système et leurs status correspondantes dans la machine virtuelle de secours. Comparez la sortie à une machine virtuelle saine exécutant la même version du système d’exploitation.
sudo rpm --verify --all --root=/rescue
Voici un exemple de sortie de commande :
error: Failed to dlopen /usr/lib64/rpm-plugins/systemd_inhibit.so /lib64/librt.so.1: undefined symbol: __pthread_attr_copy, version GLIBC_PRIVATE S.5....T. c /etc/dnf/dnf.conf S.5....T. c /etc/ssh/sshd_config .M....... /boot/efi/EFI/BOOT/BOOTX64.EFI .M....... /boot/efi/EFI/BOOT/fbx64.efi .M....... /boot/efi/EFI/redhat/BOOTX64.CSV .M....... /boot/efi/EFI/redhat/mmx64.efi .M....... /boot/efi/EFI/redhat/shimx64-redhat.efi .M....... /boot/efi/EFI/redhat/shimx64.efi missing /run/motd.d .M....... g /var/spool/anacron/cron.daily .M....... g /var/spool/anacron/cron.monthly .M....... g /var/spool/anacron/cron.weekly missing /lib64/libc-2.28.so <------- .M....... /boot/efi/EFI/redhat S.5....T. c /etc/security/pwquality.conf
La ligne
missing /lib64/libc-2.28.so
de sortie est liée à l’erreur précédente à l’étape 2 et indique que le package libc-2.28.so est manquant. Toutefois, le package libc-2.28.so peut être modifié. Dans ce cas, la sortie s’affiche.M.....
au lieu demissing
. Le package libc-2.28.so est référencé en tant qu’exemple dans les étapes suivantes.Dans la machine virtuelle de secours, vérifiez quel package contient la bibliothèque /lib64/libc-2.28.so.
sudo rpm -qf /lib64/libc-2.28.so
glibc-2.28-127.0.1.el8.x86_64
Remarque
La sortie affiche le package qui doit être réinstallé, y compris le nom et la version du package. La version du package peut être différente de celle installée sur la machine virtuelle affectée.
Dans la machine virtuelle affectée, vérifiez quelle version du package glibc est installée.
sudo rpm -qa --all --root=/rescue | grep -i glibc
glibc-common-2.28-211.0.1.el8.x86_64 glibc-gconv-extra-2.28-211.0.1.el8.x86_64 glibc-2.28-211.0.1.el8.x86_64 <---- glibc-langpack-en-2.28-211.0.1.el8.x86_64
Téléchargez le package glibc-2.28-211.0.1.el8.x86_64. Vous pouvez le télécharger à partir du site web officiel du fournisseur du système d’exploitation ou de la machine virtuelle de secours à l’aide d’un outil de gestion de package comme
yumdownloader
ouzypper install --download-only <packagename>
en fonction du système d’exploitation que vous exécutez.Voici un exemple d’utilisation de l’outil
yumdownloader
:cd /tmp sudo yumdownloader glibc-2.28-211.0.1.el8.x86_64
Last metadata expiration check: 0:03:24 ago on Thu 25 May 2023 02:36:25 PM UTC. glibc-2.28-211.0.1.el8.x86_64.rpm 8.7 MB/s | 2.2 MB 00:00
Réinstallez le package affecté dans la machine virtuelle de secours.
sudo rpm -ivh --root=/rescue /tmp/glibc-*.rpm --replacepkgs --replacefiles
warning: /tmp/glibc-2.28-211.0.1.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY Verifying... ################################# [100%] Preparing... ################################# [100%] Updating / installing... 1:glibc-2.28-211.0.1.el8 ################################# [100%]
Accédez à l’environnement chroot dans la machine virtuelle de secours pour valider la réinstallation.
sudo chroot /rescue
Désactivez la machine virtuelle de secours et échangez le disque du système d’exploitation sur la machine virtuelle affectée.
Autorisations de fichier incorrectes
Des autorisations de fichier incorrectes à l’échelle du système sont modifiées en raison d’une erreur humaine (par exemple, une personne s’exécute chmod 777
sur / ou d’autres systèmes de fichiers de système d’exploitation importants). Pour résoudre ce problème, restaurez les autorisations de fichier. Cette solution fonctionne sur des distributions rpm telles que les machines virtuelles Red Hat/CentOS/SUSE. Pour les autres distributions Linux, nous vous recommandons de restaurer la machine virtuelle à partir d’une sauvegarde.
Pour restaurer les autorisations de fichier, exécutez la commande suivante après avoir attaché la copie du disque du système d’exploitation à une machine virtuelle de réparation et monté les systèmes de fichiers correspondants à l’aide de chroot :
rpm -a --setperms
rpm --setugids --all
chmod u+s /bin/sudo
chmod 660 /etc/sudoers.d/*
chmod 644 /etc/ssh/*.pub
chmod 640 /etc/ssh/*.key
Remarque
N’exécutez pas cette commande sur des systèmes de production en cours d’exécution.
Si le problème persiste après la récupération manuelle des autorisations de fichier correspondantes, effectuez une restauration à partir de la sauvegarde.
Partitions manquantes
Dans les cas où /usr
les systèmes de fichiers , /opt
, /var
/home
, /tmp
, et /
sont répartis sur différentes partitions, les données peuvent être inaccessibles en raison de problèmes au niveau des partitions, qui peuvent être causés par des erreurs pendant les opérations de redimensionnement de partition ou d’autres.
Dans ce scénario, si vous documentez la disposition de la table de partition d’origine, avec les secteurs de début et de fin exacts pour chacune des partitions d’origine, et qu’aucune autre modification n’est effectuée sur le système, comme la création de nouveaux systèmes de fichiers, recréez les partitions en utilisant la même disposition d’origine avec des outils tels que fdisk (pour les tables de partition MBR) ou gdisk (pour les tables de partition GPT) pour accéder au système de fichiers manquant.
Si cette approche ne fonctionne pas, effectuez une restauration à partir d’une sauvegarde.
Problèmes liés à SELinux
Des autorisations SELinux incorrectes peuvent empêcher le système d’accéder aux fichiers importants. Pour résoudre ce problème, procédez comme suit :
Pour vérifier si le système rencontre des problèmes dus à des autorisations SELinux incorrectes, démarrez le système avec SELinux désactivé en ajoutant l’option de noyau selinux=0 à la ligne GRUB linux16.
Si le système est en mesure de démarrer, exécutez la commande suivante pour déclencher une réétiquetation SELinux au moment du démarrage et redémarrer le système :
touch /.autorelabel
Si la machine virtuelle ne peut toujours pas démarrer, effectuez une restauration complète de la machine virtuelle à partir de la sauvegarde. Pour plus d’informations, consultez l’article Comment restaurer les données de la machine virtuelle Azure dans le portail Azure.
Autres problèmes de démarrage liés au noyau
Cet article traite des paniques les plus courantes du noyau Linux identifiées dans Azure. Pour plus d’informations sur les scénarios courants de panique du noyau, consultez Panique du noyau dans les machines virtuelles Linux Azure - Événements de panique de noyau courants.
Il existe d’autres paniques de noyau possibles importantes qui peuvent entraîner aucun démarrage ou aucun scénario SSH (Secure Shell).
Veillez à exécuter des commandes à partir d’une machine virtuelle de réparation dans un environnement chroot, comme indiqué dans Résolution des problèmes hors connexion. Si le système est déjà démarré sur une version précédente du noyau, ces commandes peuvent également être exécutées à partir de la machine virtuelle d’origine à l’aide de privilèges racine ou sudo
, comme indiqué dans Résolution des problèmes en ligne.
Mise à niveau récente du noyau
Si le noyau panique démarre après une mise à niveau récente du noyau, démarrez la machine virtuelle sur la version précédente du noyau. Pour plus d’informations, consultez Système de démarrage sur une version antérieure du noyau.
Vous pouvez également case activée s’il existe déjà une version de noyau plus récente publiée par le fournisseur de distribution Linux et l’installer. Pour plus d’informations sur l’installation de la dernière version du noyau, consultez Processus de mise à jour du noyau.
Rétrogradation récente du noyau
Si le noyau panique démarre après une rétrogradation récente du noyau, revenez au noyau installé le plus récent. Vous pouvez également case activée s’il existe déjà une version de noyau plus récente publiée par le fournisseur de distribution Linux et l’installer. Pour plus d’informations sur l’installation de la dernière version du noyau, consultez Processus de mise à jour du noyau.
Pour démarrer le système sur la version du noyau la plus récente, suivez les instructions fournies dans Modifier manuellement la version du noyau par défaut, mais sélectionnez le premier noyau répertorié dans le menu GRUB. Dans une modification manuelle, vous pouvez définir la valeur sur GRUB_DEFAULT
0 et régénérer le fichier de configuration GRUB correspondant.
Modifications du module du noyau
Vous pouvez rencontrer une panique du noyau liée à un nouveau module de noyau ou à un module de noyau manquant. Pour obtenir des détails sur le module de noyau spécifique qui provoque des problèmes (le cas échéant), case activée la trace de panique du noyau correspondante.
Pour valider les modules du noyau chargés et les modules désactivés dans les fichiers /etc/modprobe.d/*.conf , exécutez l’une des commandes suivantes :
RHEL/CentOS/Oracle Linux 7/8
lsinitrd /boot/initramfs-3.10.0-1160.59.1.el7.x86_64.img lsmod cat /etc/modprobe.d/*.conf
Importante
Remplacez par
3.10.0-1160.59.1.el7.x86_64
la version du noyau correspondante.SLES 12/15
lsinitrd /boot/initrd-5.3.18-150300.38.53-azure lsmod cat /etc/modprobe.d/*.conf
Importante
Remplacez par
5.3.18-150300.38.53-azure
la version du noyau correspondante.Ubuntu 18.04
lsinitramfs /boot/initrd.img-5.4.0-1077-azure lsmod cat /etc/modprobe.d/*.conf
Importante
Remplacez par
5.4.0-1077-azure
la version du noyau correspondante.
Pour supprimer un module de noyau spécifique, exécutez la commande suivante et régénérez les initramfs si nécessaire.
rmmod <kernel_module_name>
Si un service système utilise le module de noyau spécifique, désactivez-le en exécutant la systemctl disable <serviceName>
commande ou systemctl stop <serviceName>
.
Modifications récentes de la configuration du système d’exploitation
Identifiez les modifications récentes de configuration du noyau susceptibles de provoquer des problèmes. Pour résoudre les problèmes, ajustez ces paramètres ou restaurez les modifications de configuration.
Exécutez la commande suivante pour rechercher les paramètres de noyau persistants configurés dans l’un des fichiers suivants :
cat /etc/systctl.conf
cat /etc/sysctl.d/*
Exécutez la commande suivante pour analyser les paramètres actuels du noyau et leurs valeurs actuelles :
sysctl -a
Remarque
Exécutez cette commande sur un système en cours d’exécution et non à partir d’un environnement chroot.
Fichiers manquants possibles
Pour plus d’informations sur ce type de problème, consultez Fichiers et répertoires importants manquants.
Autorisations incorrectes sur les fichiers
Pour plus d’informations sur ce type de problème, consultez Autorisations de fichier incorrectes.
Partitions manquantes
Pour plus d’informations sur ce type de problème, consultez Partitions manquantes.
Bogues du noyau
Identifiez ce problème à partir de la console série Azure. Ce type de problème ressemblera à la sortie suivante :
[5275698.017004] kernel BUG at XXX/YYY.c:72!
[5275698.017004] invalid opcode: 0000 [#1] SMP
Ce type de panique du noyau est associé à des bogues de noyau ou à des bogues de noyau tiers.
Pour corriger les bogues du noyau, effectuez une recherche dans la Base de connaissances du fournisseur à l’aide de la chaîne BOGUE du noyau et recherchez les problèmes connus dans la version de noyau correspondante exécutée par votre système. Voici quelques ressources importantes pour les fournisseurs :
-
Cet outil est conçu pour vous aider à diagnostiquer un plantage du noyau. Lorsque vous entrez un texte, vmcore-dmesg.txtou un fichier comprenant un ou plusieurs messages d’oops du noyau, il vous guide tout au long du diagnostic du problème de blocage du noyau.
-
Pour accéder aux ressources Red Hat, liez vos comptes Microsoft Azure et Red Hat. Pour plus d’informations, consultez Comment les clients Microsoft Azure peuvent accéder au portail client Red Hat.
Nous vous recommandons de maintenir tous vos systèmes à jour afin d’exclure les éventuels bogues déjà corrigés dans les versions les plus récentes du noyau. Pour plus d’informations, consultez Processus de mise à jour du noyau.
Si une analyse supplémentaire est requise de la part du fournisseur, configurez et activez kdump pour générer un vidage principal :
- Configuration de Kdump dans les machines virtuelles Red Hat.
- Configuration du vidage sur incident du noyau dans les machines virtuelles Ubuntu.
- Configuration du vidage du noyau dans les machines virtuelles SLES
Processus de mise à jour du noyau
Pour installer la dernière version du noyau disponible, exécutez l’une des commandes suivantes :
RHEL/CentOS/Oracle Linux
yum update kernel
SLES 12/15
zypper refresh zypper update kernel*
Ubuntu 18.04/20.04
apt update apt install linux-azure
Pour réinstaller une version de noyau spécifique, exécutez l’une des commandes suivantes. Assurez-vous que vous n’êtes pas démarré sur la version du noyau que vous essayez de réinstaller. Pour plus d’informations, consultez Système de démarrage sur une version antérieure du noyau.
RHEL/CentOS/Oracle Linux
yum reinstall kernel-3.10.0-1160.59.1.el7.x86_64
Importante
Remplacez par
3.10.0-1160.59.1.el7.x86_64
la version du noyau correspondante.SLES 12/15
zypper refresh zypper install -f kernel-azure-5.3.18-150300.38.75.1.x86_64
Importante
Remplacez par
kernel-azure-5.3.18-150300.38.75.1.x86_64
la version du noyau correspondante.Ubuntu 18.04/20.04
apt update apt install --reinstall linux-azure=5.4.0.1091.68
Importante
Remplacez par
5.4.0.1091.68
la version du noyau correspondante.
Pour mettre à jour le système et appliquer les dernières modifications disponibles, exécutez l’une des commandes suivantes :
RHEL/CentOS/Oracle Linux
yum update
SLES 12/15
zypper refresh zypper update
Ubuntu 18.04/20.04
apt update apt upgrade
Les paniques de noyau peuvent être liées à l’un des éléments suivants. Pour plus d’informations, consultez Paniques du noyau au moment de l’exécution.
- Modifications de la charge de travail de l’application.
- Développement d’applications ou bogues d’application.
- Problèmes liés aux performances, etc.
Étapes suivantes
Si l’erreur de démarrage spécifique n’est pas un problème de démarrage lié au noyau, consultez Résoudre les erreurs de démarrage d’Azure Linux Machines Virtuelles pour obtenir d’autres options de résolution des problèmes.
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour