De virtuele Azure Linux-machine kan niet worden opgestart na het toepassen van kernelwijzigingen
Opmerking
CentOS waarnaar in dit artikel wordt verwezen, is een Linux-distributie en bereikt end of life (EOL). Overweeg uw gebruik en plan dienovereenkomstig. Zie Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.
Dit artikel biedt oplossingen voor een probleem waarbij een virtuele Linux-machine (VM) niet kan worden opgestart na het toepassen van kernelwijzigingen.
Voorwaarden
Zorg ervoor dat de seriële console is ingeschakeld en functioneel is op de Linux-VM.
Opstartprobleem met betrekking tot kernels identificeren
Als u een opstartprobleem met betrekking tot de kernel wilt identificeren, controleert u de specifieke kernel panic-tekenreeks. Gebruik hiervoor de Azure CLI of de Azure Portal om de uitvoer van het seriële consolelogboek van de VM weer te geven in het deelvenster diagnostische gegevens over opstarten of seriële console.
Een kernel panic ziet eruit als de volgende uitvoer en wordt weergegeven aan het einde van het seriële consolelogboek:
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
Online probleemoplossing
Tip
Als u een recente back-up van de VM hebt, herstelt u de VM vanuit de back-up om het opstartprobleem op te lossen.
De seriële console is de snelste methode om het opstartprobleem op te lossen. Hiermee kunt u het probleem rechtstreeks oplossen zonder dat u de systeemschijf hoeft te presenteren aan een herstel-VM. Zorg ervoor dat u voldoet aan de vereiste vereisten voor uw distributie. Zie Seriële console voor virtuele machines voor Linux voor meer informatie.
Identificeer het specifieke kernelgerelateerde opstartprobleem.
Gebruik de seriële Console van Azure om uw VM te onderbreken in het grub-menu en selecteer een eerdere kernel om deze op te starten. Zie Opstartsysteem op oudere kernelversie voor meer informatie.
Ga naar de bijbehorende sectie om het specifieke kernelgerelateerde opstartprobleem op te lossen:
Nadat het kernelgerelateerde opstartprobleem is opgelost, start u de VM opnieuw op zodat deze kan opstarten via de nieuwste kernelversie.
Offline oplossen van problemen
Tip
Als u een recente back-up van de VM hebt, herstelt u de VM vanuit de back-up om het opstartprobleem op te lossen.
Als de seriële Azure-console niet werkt op de specifieke VM of geen optie is in uw abonnement, kunt u het opstartprobleem oplossen met behulp van een herstel-VM. Ga hiervoor als volgt te werk:
Gebruik vm-herstelopdrachten om een herstel-VM te maken waaraan een kopie van de besturingssysteemschijf van de betrokken VM is gekoppeld. Koppel de kopie van de besturingssysteembestandssystemen in de herstel-VM met behulp van chroot.
Opmerking
U kunt ook handmatig een reddings-VM maken met behulp van de Azure Portal. Zie Problemen met een Virtuele Linux-machine oplossen door de besturingssysteemschijf te koppelen aan een herstel-VM met behulp van de Azure Portal voor meer informatie.
Identificeer het specifieke kernelgerelateerde opstartprobleem.
Ga naar de bijbehorende sectie om het specifieke kernelgerelateerde opstartprobleem op te lossen:
Nadat het kernelgerelateerde opstartprobleem is opgelost, voert u de volgende acties uit:
- Sluit chroot af.
- Ontkoppel de kopie van de bestandssystemen van de herstel-VM.
- Voer de
az vm repair restore
opdracht uit om de herstelde besturingssysteemschijf te vervangen door de oorspronkelijke besturingssysteemschijf van de VM. Zie Stap 5 in Een Virtuele Linux-machine herstellen met behulp van de herstelopdrachten voor virtuele Azure-machines voor meer informatie. - Controleer of de VM kan worden opgestart door de seriële console van Azure te bekijken of door verbinding te maken met de VM.
Als er belangrijke kernelgerelateerde inhoud is, de volledige
/boot
partitie of andere belangrijke inhoud ontbreekt en deze niet kunnen worden hersteld, raden we u aan de VM te herstellen vanaf een back-up. Zie Azure VM-gegevens herstellen in Azure Portal voor meer informatie.
Opstartsysteem op oudere kernelversie
Seriële Console van Azure gebruiken
Start de VM opnieuw op met behulp van de seriële console van Azure.
- Selecteer de afsluitknop boven in het seriële consolevenster.
- Selecteer de optie VM opnieuw opstarten (hard).
Zodra de verbinding met de seriële console is hervat, ziet u een aftelteller in de linkerbovenhoek van het seriële consolevenster. Druk op de ESCAPE-toets om uw VM te onderbreken in het menu GRUB.
Druk op de pijl-omlaag om een eerdere kernelversie te selecteren.
Wijzig de
GRUB_DEFAULT
variabele in het bestand /etc/default/grub volgens instructies in Standaard kernelversie handmatig wijzigen. Dit is een permanente wijziging.
Opmerking
Als er slechts één kernelversie wordt vermeld in het menu GRUB, volgt u de offline-probleemoplossingsbenadering om dit probleem vanaf een herstel-VM op te lossen.
Vm herstellen (ALAR-scripts) gebruiken
Voer de volgende bash-opdracht uit in Azure Cloud Shell om een reparatie-VM te maken. Zie Azure Linux Auto Repair (ALAR) gebruiken om een linux-VM - kerneloptie te herstellen voor meer informatie.
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username rescue --repair-password 'password!234' --copy-disk-name repairdiskcopy
Voer de volgende opdracht uit om de verbroken kernel te vervangen door de eerder geïnstalleerde versie:
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
Opmerking
Als er slechts één kernelversie in het systeem is geïnstalleerd, volgt u de offline-probleemoplossingsbenadering om dit probleem op te lossen vanaf een herstel-VM.
Standaard kernelversie handmatig wijzigen
Voer de volgende stappen uit om de standaard kernelversie van een herstel-VM (in chroot) of op een actieve VM te wijzigen:
Opmerking
Als een kernel downgrade terugdraait, selecteert u de meest recente kernelversie in plaats van de oudere versie.
RHEL 7, Oracle Linux 7 en CentOS 7
Valideer de lijst met beschikbare kernels in het GRUB-configuratiebestand door een van de volgende opdrachten uit te voeren:
Gen1-VM's:
cat /boot/grub2/grub.cfg | grep menuentry
Gen2-VM's:
cat /boot/efi/EFI/*/grub.cfg | grep menuentry
Stel de nieuwe standaardkernel in en geef de bijbehorende kerneltitel op door de volgende opdracht uit te voeren:
# grub2-set-default 'Red Hat Enterprise Linux Server, with Linux 3.10.0-123.el7.x86_64'
Opmerking
Vervang door
Red Hat Enterprise Linux Server, with Linux 3.10.0-123.el7.x86_64
de bijbehorende titel van het menu-item.Controleer of de nieuwe standaardkernel de gewenste is door de volgende opdracht uit te voeren:
grub2-editenv list
Zorg ervoor dat de waarde van de
GRUB_DEFAULT
variabele in het bestand /etc/default/grub is ingesteld opsaved
. Als u dit wilt wijzigen, moet u het GRUB-configuratiebestand opnieuw genereren om de wijzigingen toe te passen.
RHEL 8/9 en CentOS 8
Geef de beschikbare kernels weer door de volgende opdracht uit te voeren:
ls -l /boot/vmlinuz-*
Stel de nieuwe standaardkernel in door de volgende opdracht uit te voeren:
grubby --set-default /boot/vmlinuz-4.18.0-372.19.1.el8_6.x86_64
Opmerking
Vervang door
4.18.0-372.19.1.el8_6.x86_64
de bijbehorende kernelversie.Controleer of de nieuwe standaardkernel de gewenste is door de volgende opdracht uit te voeren:
grubby --default-kernel
SLES 12/15, Ubuntu 18.04/20.04
Geef de beschikbare kernels in het GRUB-configuratiebestand weer door de volgende opdracht uit te voeren:
Gen1-VM's:
SLES 12/15:
cat /boot/grub2/grub.cfg | grep menuentry
Ubuntu 18.04/20.04:
cat /boot/grub/grub.cfg | grep menuentry
Gen2-VM's:
cat /boot/efi/EFI/*/grub.cfg | grep menuentry
Stel de nieuwe standaardkernel in door de waarde van de
GRUB_DEFAULT
variabele in het bestand /etc/default/grub te wijzigen. Voor de meest recente kernelversie die in het systeem is geïnstalleerd, is de standaardwaarde 0. De volgende beschikbare kernel is ingesteld op '1>2'.vi /etc/default/grub GRUB_DEFAULT="1>2"
Opmerking
Zie SUSE Boot Loader GRUB2 en Ubuntu Grub2/Setup voor meer informatie over het configureren van de
GRUB_DEFAULT
variabele. Ter referentie: de waarde menuentry op het hoogste niveau is 0, de eerste waarde van het submenu op het hoogste niveau is 1 en elke waarde voor geneste menu-pogingen begint met 0. '1>2' is bijvoorbeeld het derde menu uit het eerste submenu.Genereer het GRUB-configuratiebestand opnieuw om de wijzigingen toe te passen. Volg de instructies in GRUB opnieuw installeren en GRUB-configuratiebestand opnieuw genereren voor de bijbehorende Linux-distributie en VM-generatie.
Kernel panic - niet gesynchroniseerd: VFS: kan root fs niet koppelen op unknown-block(0,0)
Deze fout treedt op vanwege een recente systeemupdate (kernel). Dit wordt het meest gezien in distributies op basis van RHEL. U kunt dit probleem identificeren via de seriële Azure-console. U ziet een van de volgende foutberichten:
"Kernel panic - not syncing: VFS: Unable to mount root fs on 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)
"error: file '/initramfs-*.img' not found"
error: bestand '/initramfs-3.10.0-1160.36.2.el7.x86_64.img' niet gevonden.
Dit soort fout geeft aan dat het initramfs-bestand niet wordt gegenereerd, dat het GRUB-configuratiebestand de initrd-vermelding ontbreekt na een patchproces of een onjuiste configuratie van GRUB.
Voordat u een server opnieuw opstart, raden we u aan de GRUB-configuratie en /boot
-inhoud te valideren als er een kernelupdate is door een van de volgende opdrachten uit te voeren. Het is belangrijk om ervoor te zorgen dat de update is voltooid en er geen initramfs-bestanden ontbreken.
BIOS-gebaseerd - Gen1-systemen
# ls -l /boot # cat /boot/grub2/grub.cfg
Op basis van UEFI - Gen2-systemen
# ls -l /boot # cat /boot/efi/EFI/*/grub.cfg
Ontbrekende initramfs opnieuw genereren met behulp van Azure Repair VM ALAR-scripts
Maak een herstel-VM door de volgende Bash-opdrachtregel uit te voeren met Azure Cloud Shell. Zie Azure Linux Auto Repair (ALAR) gebruiken om een Linux-VM te herstellen - initrd-optie voor meer informatie.
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username rescue --repair-password 'password!234' --copy-disk-name repairdiskcopy
De installatiekopieën initrd/initramfs opnieuw genereren en het GRUB-configuratiebestand opnieuw genereren als de initrd-vermelding ontbreekt. Voer hiervoor de volgende opdracht uit:
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
Zodra de herstelopdracht is uitgevoerd, start u de oorspronkelijke VM opnieuw op en controleert u of deze kan worden opgestart.
Ontbrekende initramfs handmatig opnieuw genereren
Belangrijk
- Als u de VM kunt opstarten met behulp van een eerdere kernelversie of binnen chroot van de repair/rescue-VM, moet u ontbrekende initramfs handmatig opnieuw genereren.
- Als u ontbrekende initramfs handmatig opnieuw wilt genereren vanaf een herstel-VM, moet u ervoor zorgen dat stap 1 in Offline probleemoplossing al is gevolgd en dat deze opdrachten in chroot worden uitgevoerd.
Identificeer de specifieke kernelversie die problemen heeft met opstarten. U kunt de versie-informatie extraheren uit de bijbehorende kernel panic-fout.
Raadpleeg de volgende schermopname als voorbeeld. De kernel panic-fout toont aan dat de kernelversie '3.10.0-1160.59.1.el7.x86_64' is:
Genereer het ontbrekende initramfs-bestand opnieuw door een van de volgende opdrachten uit te voeren:
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
Belangrijk
Vervang door
3.10.0-1160.59.1.el7.x86_64
de bijbehorende kernelversie.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
Belangrijk
Vervang door
5.3.18-150300.38.53-azure
de bijbehorende kernelversie.Ubuntu 18.04
sudo depmod -a 5.4.0-1077-azure sudo mkinitramfs -k -o /boot/initrd.img-5.4.0-1077-azure
Belangrijk
Vervang door
5.4.0-1077-azure
de bijbehorende kernelversie.
Het GRUB-configuratiebestand opnieuw genereren. Volg de instructies in GRUB opnieuw installeren en GRUB-configuratiebestand opnieuw genereren voor de bijbehorende Linux-distributie en VM-generatie
Als de bovenstaande stappen worden uitgevoerd vanaf een herstel-VM, volgt u stap 3 in Offline oplossen. Als de bovenstaande stappen worden uitgevoerd vanuit de seriële Azure-console, volgt u de methode Online probleemoplossing .
Start de VM opnieuw op via de meest recente kernelversie.
Kernel panic - niet synchroniseren: geprobeerd init te doden
Identificeer dit probleem vanuit de seriële Azure-console. De uitvoer ziet er ongeveer als volgt uit:
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
Dit soort kernel panic treedt op vanwege de volgende mogelijke oorzaken:
Zie de volgende secties voor details van de oorzaak en oplossingen. Zorg ervoor dat de opdrachten worden uitgevoerd vanaf een herstel-/herstel-VM in een chroot-omgeving, zoals wordt aangegeven in Offline probleemoplossing.
Belangrijke bestanden en mappen ontbreken
Belangrijke Linux-bestanden en -mappen ontbreken vanwege een menselijke fout. Bestanden worden bijvoorbeeld per ongeluk verwijderd of het bestandssysteem beschadigd.
Valideer de inhoud van de besturingssysteemschijf nadat u de kopie van de besturingssysteemschijf hebt gekoppeld aan een herstel-VM en de bijbehorende bestandssystemen hebt gekoppeld met behulp van chroot. U kunt de uitvoer vergelijken met de uitvoer van een werkende VM waarop dezelfde versie van het besturingssysteem wordt uitgevoerd.
ls -l / ls -l /usr/lib ls -l /usr/lib64 ls -lR / | more
Herstel de ontbrekende bestanden uit een back-up. Zie Bestanden herstellen van back-up van virtuele Azure-machines voor meer informatie. Afhankelijk van het aantal ontbrekende bestanden is het misschien beter om een volledige VM te herstellen. Zie Azure VM-gegevens herstellen in Azure Portal voor meer informatie.
Belangrijke systeemkernbibliotheken en -pakketten ontbreken
Belangrijke systeemkernbibliotheken, bestanden of pakketten worden van het systeem verwijderd of beschadigd. U kunt dit probleem oplossen door de betrokken bibliotheken, bestanden of pakketten opnieuw te installeren. Deze oplossing werkt op RPM-gebaseerde distributies zoals Red Hat/CentOS/SUSE-VM's. Voor andere Linux-distributies raden we u aan de VM te herstellen vanuit een back-up.
Voer de volgende stappen uit om het opnieuw installeren uit te voeren:
Maak een herstel-VM met behulp van een onbewerkte installatiekopieën met dezelfde versie en generatie van het besturingssysteem als de betreffende VM.
Open de chroot-omgeving in de herstel-VM om het probleem op te lossen.
sudo chroot /rescue
De uitvoer van de opdracht geeft aan welke bibliotheek ontbreekt of beschadigd is, zoals hieronder wordt weergegeven:
/bin/bash: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
Controleer alle systeempakketten en hun bijbehorende status in de herstel-VM. Vergelijk de uitvoer met een goede VM waarop dezelfde versie van het besturingssysteem wordt uitgevoerd.
sudo rpm --verify --all --root=/rescue
Hier volgt een voorbeeld van de uitvoer van de opdracht:
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
De uitvoerregel
missing /lib64/libc-2.28.so
is gerelateerd aan de vorige fout in stap 2 en geeft aan dat het libc-2.28.so-pakket ontbreekt. Het libc-2.28.so-pakket kan echter worden gewijzigd. In dit geval wordt de uitvoer weergegeven.M.....
in plaats vanmissing
. In de volgende stappen wordt naar het libc-2.28.so-pakket verwezen als voorbeeld.Controleer in de reddings-VM welk pakket de bibliotheek /lib64/libc-2.28.so bevat.
sudo rpm -qf /lib64/libc-2.28.so
glibc-2.28-127.0.1.el8.x86_64
Opmerking
In de uitvoer wordt het pakket weergegeven dat opnieuw moet worden geïnstalleerd, inclusief de pakketnaam en versie. De pakketversie kan afwijken van de versie die is geïnstalleerd op de betreffende VM.
Controleer in de betreffende VM welke versie van het glibc-pakket is geïnstalleerd.
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
Download het pakket glibc-2.28-211.0.1.el8.x86_64. U kunt deze downloaden van de officiële website van de leverancier van het besturingssysteem of van de reddings-VM met behulp van een hulpprogramma voor pakketbeheer, zoals
yumdownloader
ofzypper install --download-only <packagename>
afhankelijk van het besturingssysteem dat u uitvoert.Hier volgt een voorbeeld van het gebruik van het
yumdownloader
hulpprogramma: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
Installeer het betrokken pakket opnieuw in de reddings-VM.
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%]
Open de chroot-omgeving in de reddings-VM om het opnieuw installeren te valideren.
sudo chroot /rescue
Schakel de reddings-VM uit en wissel de besturingssysteemschijf om naar de betreffende VM.
Verkeerde bestandsmachtigingen
Onjuiste systeembrede bestandsmachtigingen worden gewijzigd vanwege een menselijke fout (bijvoorbeeld iemand die op / of andere belangrijke bestandssystemen van het besturingssysteem wordt uitgevoerdchmod 777
). U kunt dit probleem oplossen door de bestandsmachtigingen te herstellen. Deze oplossing werkt op RPM-gebaseerde distributies zoals Red Hat/CentOS/SUSE-VM's. Voor andere Linux-distributies raden we u aan de VM te herstellen vanuit een back-up.
Als u de bestandsmachtigingen wilt herstellen, voert u de volgende opdracht uit nadat u de kopie van de besturingssysteemschijf hebt gekoppeld aan een herstel-VM en de bijbehorende bestandssystemen hebt gekoppeld met behulp van 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
Opmerking
Voer deze opdracht niet uit op actieve productiesystemen.
Als het probleem zich nog steeds voordoet nadat u de bijbehorende bestandsmachtigingen handmatig hebt hersteld, voert u een herstelbewerking uit vanuit een back-up.
Ontbrekende partities
In gevallen waarin /usr
, /opt
, /var
/home
, , /tmp
en /
bestandssystemen zijn verspreid over verschillende partities, zijn de gegevens mogelijk niet toegankelijk vanwege problemen op partitieniveau, die kunnen worden veroorzaakt door fouten tijdens het wijzigen van partitiegroottebewerkingen of andere.
Als u in dit scenario de oorspronkelijke indeling van de partitietabel documenteert, met de exacte begin- en eindsectoren voor elk van de oorspronkelijke partities, en er geen verdere wijzigingen worden uitgevoerd op het systeem, zoals het maken van nieuwe bestandssystemen, maakt u de partities opnieuw met behulp van dezelfde oorspronkelijke indeling met hulpprogramma's als fdisk (voor MBR-partitietabellen) of gdisk (voor GPT-partitietabellen) om toegang te krijgen tot het ontbrekende bestandssysteem.
Als deze aanpak niet werkt, voert u een herstelbewerking uit vanuit een back-up.
SELinux-problemen
Verkeerde SELinux-machtigingen kunnen voorkomen dat het systeem toegang heeft tot belangrijke bestanden. Voer de volgende stappen uit om dit probleem op te lossen:
Als u wilt controleren of het systeem problemen heeft vanwege onjuiste SELinux-machtigingen, start u het systeem met SELinux uitgeschakeld door de kerneloptie selinux=0 toe te voegen aan de GRUB linux16-regel.
Als het systeem kan worden opgestart, voert u de volgende opdracht uit om een SELinux-herlabel te activeren tijdens het opstarten en het systeem opnieuw op te starten:
touch /.autorelabel
Als de VM nog steeds niet kan worden opgestart, voert u een volledige VM-herstel uit vanuit een back-up. Zie Azure VM-gegevens herstellen in Azure Portal voor meer informatie.
Andere opstartproblemen met betrekking tot kernels
In dit artikel worden de meest voorkomende Linux-kernelpanieken beschreven die in Azure zijn geïdentificeerd. Zie Kernel panic in Azure Linux-VM's - Veelvoorkomende kernelpanniekgebeurtenissen voor meer informatie over veelvoorkomende kernel panic-scenario's.
Er zijn enkele andere belangrijke mogelijke kernelpanieken die geen opstart- of SSH-scenario's (Secure Shell) kunnen veroorzaken.
Zorg ervoor dat u opdrachten uitvoert vanaf een herstel-VM in een chroot-omgeving, zoals aangegeven in Offline probleemoplossing. Als het systeem al is opgestart via een eerdere kernelversie, kunnen deze opdrachten ook worden uitgevoerd vanaf de oorspronkelijke VM met behulp van basisbevoegdheden of sudo
, zoals wordt aangegeven in Online probleemoplossing.
Recente kernelupgrade
Als de kernel in paniek raakt na een recente kernelupgrade, start u de VM op via de vorige kernelversie. Zie Opstartsysteem op oudere kernelversie voor meer informatie.
U kunt ook controleren of er al een nieuwere kernelversie is uitgebracht door de Linux-distributieleverancier en deze installeren. Zie Kernelupdateproces voor meer informatie over het installeren van de meest recente kernelversie.
Recente kernel downgrade
Als de kernel in paniek raakt na een recente kerneldowngrade, keert u terug naar de laatst geïnstalleerde kernel. U kunt ook controleren of er al een nieuwere kernelversie is uitgebracht door de Linux-distributieleverancier en deze installeren. Zie Kernelupdateproces voor meer informatie over het installeren van de meest recente kernelversie.
Als u het systeem wilt opstarten via de meest recente kernelversie, volgt u de instructies in De standaardversie van de kernel handmatig wijzigen, maar selecteert u de eerste kernel die wordt vermeld in het grub-menu. In een handmatige wijziging kunt u de GRUB_DEFAULT
waarde instellen op 0 en het bijbehorende GRUB-configuratiebestand opnieuw genereren.
Wijzigingen in kernelmodule
Mogelijk ondervindt u een kernelpanniek die is gerelateerd aan een nieuwe kernelmodule of een ontbrekende kernelmodule. Voor meer informatie over de specifieke kernelmodule die problemen veroorzaakt (indien aanwezig), controleert u de bijbehorende kernel panic trace.
Voer een van de volgende opdrachten uit om de geladen kernelmodules en de uitgeschakelde modules in /etc/modprobe.d/*.conf-bestanden te valideren:
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
Belangrijk
Vervang door
3.10.0-1160.59.1.el7.x86_64
de bijbehorende kernelversie.SLES 12/15
lsinitrd /boot/initrd-5.3.18-150300.38.53-azure lsmod cat /etc/modprobe.d/*.conf
Belangrijk
Vervang door
5.3.18-150300.38.53-azure
de bijbehorende kernelversie.Ubuntu 18.04
lsinitramfs /boot/initrd.img-5.4.0-1077-azure lsmod cat /etc/modprobe.d/*.conf
Belangrijk
Vervang door
5.4.0-1077-azure
de bijbehorende kernelversie.
Als u een specifieke kernelmodule wilt verwijderen, voert u de volgende opdracht uit en genereert u de initramfs zo nodig opnieuw.
rmmod <kernel_module_name>
Als een systeemservice gebruikmaakt van de specifieke kernelmodule, schakelt u deze uit door de systemctl disable <serviceName>
opdracht of systemctl stop <serviceName>
uit te voeren.
Recente configuratiewijzigingen van het besturingssysteem
Identificeer recente wijzigingen in de kernelconfiguratie die problemen kunnen veroorzaken. U kunt de problemen oplossen door deze instellingen aan te passen of de configuratiewijzigingen terug te draaien.
Voer de volgende opdracht uit om permanente kernelparameters te vinden die zijn geconfigureerd in een van de volgende bestanden:
cat /etc/systctl.conf
cat /etc/sysctl.d/*
Voer de volgende opdracht uit om de huidige kernelparameters en hun huidige waarden te analyseren:
sysctl -a
Opmerking
Voer deze opdracht uit op een actief systeem en niet vanuit een chroot-omgeving.
Mogelijk ontbrekende bestanden
Zie Belangrijke bestanden en mappen ontbreken voor meer informatie over dit soort problemen.
Verkeerde machtigingen voor bestanden
Zie Onjuiste bestandsmachtigingen voor meer informatie over dit soort problemen.
Ontbrekende partities
Zie Ontbrekende partities voor meer informatie over dit soort problemen.
Kernelfouten
Identificeer dit probleem vanuit de seriële Azure-console. Dit soort probleem ziet eruit als de volgende uitvoer:
[5275698.017004] kernel BUG at XXX/YYY.c:72!
[5275698.017004] invalid opcode: 0000 [#1] SMP
Dit soort kernelpanniek is gekoppeld aan kernelfouten of kernelfouten van derden.
Als u kernelfouten wilt oplossen, zoekt u in de Knowledge Base van de leverancier met behulp van de bugtekenreeks van de kernel en zoekt u naar bekende problemen in de bijbehorende kernelversie van uw systeem. Hier volgen enkele belangrijke leveranciersresources:
-
Dit hulpprogramma is ontworpen om u te helpen bij het vaststellen van een kernelcrash. Wanneer u een tekst, vmcore-dmesg.txtof een bestand met een of meer kernel-oops-berichten invoert, wordt u begeleid bij het vaststellen van het probleem met het vastlopen van de kernel.
-
Als u toegang wilt krijgen tot de Red Hat-resources, koppelt u uw Microsoft Azure- en Red Hat-accounts. Zie Hoe Microsoft Azure-klanten toegang hebben tot de Red Hat-klantportal voor meer informatie.
We raden u aan al uw systemen up-to-date te houden om mogelijke fouten uit te sluiten die al zijn opgelost in de meest recente kernelversies. Zie Kernelupdateproces voor meer informatie.
Als verdere analyse van de leverancier vereist is, configureert en schakelt u kdump in om een kerndump te genereren:
- Kdump-configuratie in op Red Hat gebaseerde VM's.
- Configuratie van kernelcrashdump in Ubuntu-VM's.
- Kernelkerndumpconfiguratie in SLES-VM's
Kernelupdateproces
Voer een van de volgende opdrachten uit om de meest recente beschikbare kernelversie te installeren:
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
Als u een specifieke kernelversie opnieuw wilt installeren, voert u een van de volgende opdrachten uit. Zorg ervoor dat u niet bent opgestart met dezelfde kernelversie die u opnieuw probeert te installeren. Zie Opstartsysteem op oudere kernelversie voor meer informatie.
RHEL/CentOS/Oracle Linux
yum reinstall kernel-3.10.0-1160.59.1.el7.x86_64
Belangrijk
Vervang door
3.10.0-1160.59.1.el7.x86_64
de bijbehorende kernelversie.SLES 12/15
zypper refresh zypper install -f kernel-azure-5.3.18-150300.38.75.1.x86_64
Belangrijk
Vervang door
kernel-azure-5.3.18-150300.38.75.1.x86_64
de bijbehorende kernelversie.Ubuntu 18.04/20.04
apt update apt install --reinstall linux-azure=5.4.0.1091.68
Belangrijk
Vervang door
5.4.0.1091.68
de bijbehorende kernelversie.
Voer een van de volgende opdrachten uit om het systeem bij te werken en de meest recente wijzigingen toe te passen:
RHEL/CentOS/Oracle Linux
yum update
SLES 12/15
zypper refresh zypper update
Ubuntu 18.04/20.04
apt update apt upgrade
Kernel panics kunnen gerelateerd zijn aan een van de volgende items. Zie Kernel panics at runtime (Kernel panics at runtime) voor meer informatie.
- Wijzigingen in de toepassingsworkload.
- Toepassingsontwikkeling of toepassingsfouten.
- Prestatieproblemen, enzovoort.
Volgende stappen
Als de specifieke opstartfout geen opstartprobleem met betrekking tot de kernel is, raadpleegt u Opstartfouten in Azure Linux Virtual Machines oplossen voor verdere probleemoplossingsopties.
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Feedback-community van Azure.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor