Delen via


Proactief ervoor zorgen dat u toegang hebt tot GRUB en sysrq kan u veel uitgestelde tijd besparen

Als u toegang hebt tot de seriële console en GRUB, worden de hersteltijden van uw Virtuele IaaS Linux-machine in de meeste gevallen verbeterd. GRUB biedt herstelopties die anders langer zouden duren om uw VM te herstellen.

De redenen voor het uitvoeren van een VM-herstel zijn talrijk en kunnen worden toegeschreven aan scenario's zoals:

  • Beschadigde bestandssystemen/kernel/MBR (Master Boot Record)
  • Mislukte kernelupgrades
  • Onjuiste GRUB-kernelparameters
  • Onjuiste fstab-configuraties
  • Firewallconfiguraties
  • Wachtwoord verloren
  • Sshd-configuratiebestanden beheren
  • Netwerkconfiguraties

Veel andere scenario's zoals hier wordt beschreven

Controleer of u toegang hebt tot GRUB en de seriële console op uw vm's die zijn geïmplementeerd in Azure.

Als u geen gebruik hebt van seriële console, raadpleegt u deze koppeling.

Tip

Zorg ervoor dat u back-ups van bestanden maakt voordat u wijzigingen aanbrengt

Bekijk deze video hieronder om te zien hoe u uw Linux-VM snel kunt herstellen zodra u toegang hebt tot GRUB

Linux-VM-video herstellen

Er zijn een aantal methoden om linux-VM's te herstellen. In een cloudomgeving is dit proces lastig geweest. Er wordt voortdurend vooruitgang geboekt met hulpprogramma's en functies om ervoor te zorgen dat services snel worden hersteld.

Met de seriële Console van Azure kunt u communiceren met uw Linux-VM alsof u zich op de console van een systeem bevindt.

U kunt veel configuratiebestanden bewerken, inclusief hoe de kernel wordt opgestart.

De meer ervaren Linux/Unix-sys-beheerders zullen de modi voor één gebruiker en noodgeval waarderen die toegankelijk zijn via de Seriële Console van Azure, waardoor Schijf wisselen en VM-verwijdering voor veel herstelscenario's overbodig zijn.

De methode van herstel is afhankelijk van het probleem dat wordt ondervonden, bijvoorbeeld een verloren of verkeerd geplaatst wachtwoord kan opnieuw worden ingesteld via Azure Portal opties ->Wachtwoord opnieuw instellen. De functie Wachtwoord opnieuw instellen wordt een extensie genoemd en communiceert met de Linux-gastagent.

Andere extensies, zoals Aangepast script, zijn beschikbaar, maar deze opties vereisen dat de Linux-waagent actief is en een goede status heeft, wat niet altijd het geval is.

Schermopname van de agentstatus op de pagina Eigenschappen in Azure Portal.

Als u toegang hebt tot de Seriële Console van Azure en GRUB, betekent dit dat een wachtwoordwijziging of een onjuiste configuratie binnen enkele minuten in plaats van uren kan worden gecorrigeerd. U kunt zelfs afdwingen dat de VM wordt opgestart vanaf een alternatieve kernel als u meerdere kernels op de schijf hebt in het scenario waarin uw primaire kernel beschadigd raakt.

Schermopname van het geselecteerde scherm met het geselecteerde besturingssysteem in GRUB, waarin meerdere kernels kunnen worden gekozen.

Voorgestelde volgorde van herstelmethoden

Schijf wisselen video

Als u geen toegang hebt tot GRUB watch deze video en bekijkt u hoe u de schijfwisselprocedure eenvoudig kunt automatiseren om uw VM te herstellen

Uitdagingen

Niet alle Linux Azure-VM's zijn standaard geconfigureerd voor GRUB-toegang en ze zijn ook niet allemaal geconfigureerd om te worden onderbroken met de sysrq-opdrachten. Sommige oudere distributies, zoals SLES 11, zijn niet geconfigureerd om aanmeldingsprompt weer te geven in de seriële Azure-console

In dit artikel bekijken we verschillende Linux-distributies en documentconfiguraties over het beschikbaar maken van GRUB.

Linux-VM configureren om SysRq-sleutels te accepteren

De sysrq-sleutel is standaard ingeschakeld op sommige nieuwere Linux-distributies, maar op andere kan deze worden geconfigureerd voor het accepteren van waarden alleen voor bepaalde SysRq-functies. Bij oudere distributies is deze mogelijk volledig uitgeschakeld.

De sysRq-functie is handig voor het rechtstreeks opnieuw opstarten van een gecrashte of niet-reagerende VM vanuit de Seriële Console van Azure, ook handig bij het verkrijgen van toegang tot het GRUB-menu. Als u een VM opnieuw opstart vanuit een ander portalvenster of een SSH-sessie, kan uw huidige consoleverbinding worden verbroken, waardoor GRUB-time-outs verlopen, waarnaar wordt gebruikt om het GRUB-menu weer te geven. De VM moet worden geconfigureerd voor het accepteren van de waarde 1 voor de kernelparameter, waarmee alle functies van sysrq of 128 worden ingeschakeld, waardoor opnieuw opstarten/uitschakelen mogelijk is

Sysrq-video inschakelen

Als u de VM wilt configureren voor het accepteren van opnieuw opstarten via SysRq-opdrachten op de Azure Portal, moet u een waarde van 1 instellen voor de kernelparameter kernel.sysrq

Als u deze configuratie wilt behouden, voegt u een vermelding toe aan het bestand sysctl.conf

echo kernel.sysrq = 1 >> /etc/sysctl.conf

De kernelparameter dynamisch configureren

sysctl -w kernel.sysrq=1

Als u geen hoofdtoegang hebt of sudo is verbroken, is het niet mogelijk sysrq te configureren vanaf een shell-prompt.

U kunt sysrq in dit scenario inschakelen met behulp van de Azure Portal. Deze methode kan nuttig zijn als het bestand sudoers.d/waagent is verbroken of is verwijderd.

Als u de functie Azure Portal Operations -> RunShellScript> gebruikt, moet het waagent-proces in orde zijn. U kunt deze opdracht vervolgens injecteren om sysrq in te schakelen

sysctl -w kernel.sysrq=1 ; echo kernel.sysrq = 1 >> /etc/sysctl.conf

Zoals hier wordt weergegeven:

Schermopname van het venster RunShellScript wanneer u de opdracht injecteert.

Zodra dit is voltooid, kunt u proberen sysrq te openen en ziet u dat opnieuw opstarten mogelijk is.

Schermopname van de optie SysRq-opdracht verzenden onder het toetsenbordpictogram op de knopbalk.

Selecteer Opnieuw opstarten en SysRq-opdracht verzenden

Schermopname van de optie Opnieuw opstarten in het dialoogvenster SysRq-opdracht naar gast verzenden.

Het systeem moet een resetbericht zoals dit registreren

Schermopname van het logboek voor het opnieuw instellen van berichten in de opdrachtregelinterface.

Ubuntu GRUB-configuratie

Standaard moet u toegang hebben tot GRUB door de Esc-toets ingedrukt te houden tijdens het opstarten van de VM. Als het GRUB-menu niet wordt weergegeven, kunt u het GRUB-menu forceren en op het scherm houden in de Seriële Console van Azure met behulp van een van deze opties.

Optie 1 : hiermee dwingt u grub op het scherm weer te geven

Werk het bestand /etc/default/grub.d/50-cloudimg-settings.cfg bij om het GRUB-menu op het scherm te houden voor de opgegeven TIME-OUT. U hoeft niet op Esc te drukken, omdat GRUB onmiddellijk wordt weergegeven.

GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=menu

Optie 2 : hiermee kunt u op Esc drukken voordat u opstart

Vergelijkbaar gedrag kan worden ervaren door wijzigingen aan te brengen in het bestand /etc/default/grub en een time-out van 3 seconden te observeren om op Esc te drukken

Maak een opmerking over deze twee regels:

#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true

en voeg deze regel toe:

GRUB_TIMEOUT_STYLE=countdown

Ubuntu 12.04

Ubuntu 12.04 staat toegang tot seriële console toe, maar biedt niet de mogelijkheid om te communiceren. Een aanmelding: prompt wordt niet weergegeven

Voor 12.04 om een aanmelding te verkrijgen : prompt:

  1. Maak een bestand met de naam /etc/init/ttyS0.conf met de volgende tekst:

    # ttyS0 - getty
    #
    # This service maintains a getty on ttyS0 from the point the system is
    # started until it is shut down again.
    start on stopped rc RUNLEVEL=[12345]
    stop on runlevel [!12345]
    
    respawn
    exec /sbin/getty -L 115200 ttyS0 vt102
    
  2. Vraag upstart om de getty te starten

    sudo start ttyS0
    

De instellingen die vereist zijn voor het configureren van seriële console voor Ubuntu-versies vindt u hier

Ubuntu-herstelmodus

Aanvullende herstel- en opschoningsopties zijn beschikbaar voor Ubuntu via GRUB, maar deze instellingen zijn alleen toegankelijk als u kernelparameters dienovereenkomstig configureert. Als u deze kernel opstartparameter niet configureert, wordt het menu Herstel naar de Azure Diagnostics verzonden en niet naar de seriële Console van Azure. U kunt toegang krijgen tot het Ubuntu-herstelmenu door de volgende stappen uit te voeren:

Het OPSTARTproces onderbreken en het GRUB-menu openen

Selecteer Geavanceerde opties voor Ubuntu en druk op Enter

Schermopname van de seriële console met Geavanceerde opties voor Ubuntu geselecteerd.

Selecteer de regel die wordt weergegeven (herstelmodus) druk niet op Enter, maar druk op 'e'

Schermopname van de seriële console met een versie van de herstelmodus geselecteerd.

Zoek de regel die de kernel laadt en vervang de laatste parameter nomodeset door destination as console=ttyS0

linux /boot/vmlinuz-4.15.0-1023-azure root=UUID=21b294f1-25bd-4265-9c4e-d6e4aeb57e97 ro recovery nomodeset

change to

linux /boot/vmlinuz-4.15.0-1023-azure root=UUID=21b294f1-25bd-4265-9c4e-d6e4aeb57e97 ro recovery console=ttyS0

Schermopname van de seriële console met de gewijzigde waarde.

Druk op Ctrl-x om de kernel te starten en te laden. Als alles goed gaat, ziet u deze extra opties, die u kunnen helpen bij het uitvoeren van andere herstelopties

Schermopname van de seriële console in het herstelmenu, dat extra herstelopties biedt.

Red Hat GRUB-configuratie

Red Hat 7.4+ GRUB-configuratie

De standaardconfiguratie /etc/default/grub op deze versies is voldoende geconfigureerd

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 earlyprintk=ttyS0"
GRUB_DISABLE_RECOVERY="true"

De SysRq-sleutel inschakelen

sysctl -w kernel.sysrq=1;echo kernel.sysrq = 1 >> /etc/sysctl.conf;sysctl -a | grep -i sysrq

Red Hat 7.2- en 7.3 GRUB-configuratie

Het bestand dat moet worden gewijzigd, is /etc/default/grub. Een standaardconfiguratie ziet eruit als in dit voorbeeld:

GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 earlyprintk=ttyS0"
GRUB_DISABLE_RECOVERY="true"

Wijzig de volgende regels in /etc/default/grub

GRUB_TIMEOUT=1 

to

GRUB_TIMEOUT=5
GRUB_TERMINAL_OUTPUT="console"

to

GRUB_TERMINAL="serial console"

Voeg ook deze regel toe:

GRUB_SERIAL_COMMAND="serial –speed=115200 –unit=0 –word=8 –parity=no –stop=1″

/etc/default/grub moet er nu uitzien als in dit voorbeeld:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 earlyprintk=ttyS0"
GRUB_DISABLE_RECOVERY="true"

Configuratie van grub voltooien en bijwerken met behulp van

grub2-mkconfig -o /boot/grub2/grub.cfg

Stel de SysRq-kernelparameter in:

sysctl -w kernel.sysrq = 1;echo kernel.sysrq = 1 >> /etc/sysctl.conf;sysctl -a | grep -i sysrq

U kunt GRUB en SysRq ook configureren met één regel in de shell of via de opdracht Uitvoeren. Maak een back-up van uw bestanden voordat u deze opdracht uitvoert:

cp /etc/default/grub /etc/default/grub.bak; sed -i 's/GRUB_TIMEOUT=1/GRUB_TIMEOUT=5/g' /etc/default/grub; sed -i 's/GRUB_TERMINAL_OUTPUT="console"/GRUB_TERMINAL="serial console"/g' /etc/default/grub; echo "GRUB_SERIAL_COMMAND=\"serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1\"" >> /etc/default/grub;grub2-mkconfig -o /boot/grub2/grub.cfg;sysctl -w kernel.sysrq=1;echo kernel.sysrq = 1 /etc/sysctl.conf;sysctl -a | grep -i sysrq

Red Hat 6.x GRUB-configuratie

Het bestand dat u wilt wijzigen is /boot/grub/grub.conf. De timeout waarde bepaalt hoe lang GRUB wordt weergegeven.

#boot=/dev/vda
default=0
timeout=15
splashimage=(hd0,0)/grub/splash.xpm.gz
#hiddenmenu
serial --unit=0 --speed=9600
terminal serial
terminal --timeout=5 serial console

De laatste regel terminal –-timeout=5 seriële console zal de time-out van GRUB verder verhogen door een prompt van 5 seconden toe te voegen met druk op een willekeurige toets om door te gaan.

Schermopname van een console met uitvoer.

Het grub-menu moet op het scherm worden weergegeven voor de geconfigureerde time-out=15 zonder dat u op Esc hoeft te drukken. Zorg ervoor dat u in de console in de browser klikt om het menu actief te maken en de vereiste kernel te selecteren.

Schermopname van een console met twee Linux-opties.

Suse

SLES 12 sp1

Gebruik YaST bootloader volgens de officiële documenten

Of voeg de volgende parameters toe/wijzig in /etc/default/grub:

GRUB_TERMINAL=serial
GRUB_TIMEOUT=5
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=9600 --parity=no"

```console
Verify that ttys0 is used in the GRUB_CMDLINE_LINUX or GRUB_CMDLINE_LINUX_DEFAULT

```console
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0,9600n"

De grub.cfg opnieuw maken

grub2-mkconfig -o /boot/grub2/grub.cfg

SLES 11 SP4

De seriële console wordt weergegeven en er worden opstartberichten weergegeven, maar er wordt geen aanmelding weergegeven: prompt

Open een ssh-sessie in de VM en werk het bestand /etc/inittab bij door de opmerkingen op deze regel op te heffen:

#S0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt102

Voer vervolgens de opdracht uit

telinit q

Als u GRUB wilt inschakelen, moet u de volgende wijzigingen aanbrengen in /boot/grub/menu.lst

timeout 5
serial --unit=0 --speed=9600 --parity=no
terminal --timeout=5 serial console

root (hd0,0)
kernel /boot/vmlinuz-3.0.101-108.74-default root=/dev/disk/by-uuid/ab6b62bb--
1a8c-45eb-96b1-1fbc535b9265 disk=/dev/sda  USE_BY_UUID_DEVICE_NAMES=1 earlyprinttk=ttyS0 console=ttyS0 showopts vga=0x314

Met deze configuratie wordt het bericht Druk op een willekeurige toets gedurende 5 seconden op de console weergegeven

Vervolgens wordt het GRUB-menu gedurende 5 seconden weergegeven - door op de pijl-omlaag te drukken, onderbreekt u de teller en selecteert u een kernel die u wilt opstarten of voegt u het trefwoord single toe voor de modus voor één gebruiker waarvoor het hoofdwachtwoord moet worden ingesteld.

Als u de opdracht init=/bin/bash toevoegt, wordt de kernel geladen, maar zorgt u ervoor dat het init-programma wordt vervangen door een bash-shell.

U krijgt toegang tot een shell zonder dat u een wachtwoord hoeft in te voeren. U kunt vervolgens doorgaan met het bijwerken van het wachtwoord voor Linux-accounts of andere configuratiewijzigingen aanbrengen.

De kernel naar een bash-prompt dwingen

Als u toegang hebt tot GRUB, kunt u het initialisatieproces onderbreken. Deze interactie is nuttig voor veel herstelprocedures. Als u geen hoofdwachtwoord hebt en u voor één gebruiker een hoofdwachtwoord nodig hebt, kunt u de kernel opstarten en het init-programma vervangen door een bash-prompt. Deze onderbreking kan worden bereikt door init=/bin/bash toe te voegen aan de opstartregel van de kernel

Schermopname van een console met de bijgewerkte opstartregel.

Koppel uw /(hoofd)bestandssysteem-RW opnieuw met behulp van de opdracht

mount -o remount,rw /

Schermopname van een console met een actie voor opnieuw koppelen.

U kunt nu het hoofdwachtwoord wijzigen of veel andere linux-configuratiewijzigingen uitvoeren

Schermopname van een console waar u het hoofdwachtwoord en andere configuratie kunt wijzigen.

Start de VM opnieuw op met

/sbin/reboot -f

Modus voor één gebruiker

U hebt mogelijk ook toegang nodig tot de VM in de modus voor één gebruiker of in de modus voor noodgevallen. Selecteer de kernel die u wilt opstarten of onderbreken met behulp van pijltoetsen. Voer de gewenste modus in door het trefwoord één of 1 toe te voegen aan de opstartregel van de kernel. Op RHEL-systemen kunt u ook rd.break toevoegen.

Zie dit document voor meer informatie over het openen van de modus voor één gebruiker

Schermopname van de vermelding *Ubuntu in het scherm opstarten van het geselecteerde besturingssysteem in GRUB.

Volgende stappen

Meer informatie over seriële console van Azure

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.