Magiczny klawisz SysRq 25


Magiczny klawisz SysRq to kombinacja klawiszy w jądrze Linuksa, która, jeżeli opcja CONFIG_MAGIC_SYSRQ została włączona w czasie kompilacji kernela, pozwala użytkownikowi wykonać różne niskopoziomowe komendy niezależnie od stanu systemu używającego SysRq. Jest często używany do odzyskania systemu ze stanu zawieszenia lub do ponownego jego uruchomienia bez zniszczenia systemu plików.

Magiczne komendy

Kombinacja składa się z Alt, SysRq i innego klawisza:

  • od 0 do 9 ustawia poziom logu konsoli, który kontroluje typy wiadomości kernela , które są wyjściem konsoli,
  • b natychmiastowo uruchamia ponownie system bez odmontowania partycji czy synchronizacji

    Użycie samej sekwencji Alt+SysRq+B może zaowocować zniszczonym systemem plików

  • c uruchamia ponownie kexec[1] i wyjście crashdump’a[2]
  • e wysyła sygnał SIGTERM[3] do wszystkich procesów poza init (PID 1)
  • f wywołuje oom_kill, który zabije proces absorbujący najwięcej pamięci
  • h lub inny klawisz nieprzypisany żadnej komendzie, wyświetla zwięzłą pomoc w konsoli
  • i wysyła sygnał SIGKILL[4] do wszystkich procesów poza init
  • k zabija wszystkie procesy w aktualnej wirtualnej konsoli (tak więc może zostać użyty do zabicia X’ów i programów svgalib, zobacz poniżej)
  • l wysyła sygnał SIGKILL do wszystkich procesów włączając init,
  • m wyświetla aktualną informację o pamięci w konsoli
  • o wyłącza system
  • p wyświetla aktualne rejestry i flagi procesora w konsoli
  • r przełącza klawiaturę z trybu raw, używanego przez takie programy jak X11 i svgalib, w tryb XLATE
  • s usiłuje zsynchronizować wszystkie zamontowane systemy plików
  • t wyświetla listę aktualnych zadań i informacje o nich w konsoli
  • u usiłuje odmontować wszystkie zamontowane systemy plików w trybie tylko do odczytu
  • v wyświetla informację Voyager SMP

Dostęp z terminala i konfiguracja

Jeżeli maszyna jest niedysponowana lub jest sterowana na odległość, magiczne komendy można wykonać za pomocą terminala. To jest jednakże zależne od posiadania dostępu do powłoki w maszynie. By wykonać magiczne komendy, wpisz pożądaną komendę do SysRq trigger w procfs. Na przykład:

echo b > /proc/sysrq-trigger

To jest równoznaczne kombinacji klawiszy Alt+SysRq+B, która ponownie uruchamia komputer.
Ta właściwość jest kontrolowana zarówno przez opcję w czasie kompilacji jądra, CONFIG_MAGIC_SYSRQ, jak i kernelowy parametr sysctl, kernel.sysrq. Niektóre dystrybucje umożliwiają tylko opcję w czasie kompilacji jądra, ale inne, jak Ubuntu, umożliwiają te właściwości standardowo. By włączyć lub wyłączyć wywołania SysRq:

echo 0 > /proc/sys/kernel/sysrq

echo 1 > /proc/sys/kernel/sysrq

Odpowiednio wyłącza lub włącza wywołania. Selektywne włączenie komend jest nadal możliwe.

Awaryjny ponowny rozruch

„Raising Elephants Is So Utterly Bonkers” (polski odpowiednik „Rybak Edward Idzie Spożyć Ulubiony Browar”) jest mnemonicznym wymysłem dla zapamiętania sekwencji klawiszy, która powinna być użyta jako alternatywa dla ciskania w klawisz POWER, jeżeli Linux Ci się kiedykolwiek zawiesi i będzie potrzebny ponowny rozruch.

  1. Alt+SysRq+R – wyłącza klawiaturę z czystego trybu
  2. Alt+SysRq+E – kończy wszystkie procesy (oprócz init)
  3. Alt+SysRq+I – zabija wszystkie procesy (oprócz init)
  4. Alt+SysRq+S – synchronizuje dysk(i)
  5. Alt+SysRq+U – odmontowuje wszystkie systemy plików tylko do odczytu
  6. Alt+SysRq+B – uruchamia ponownie komputer

„Raising Skinny Elephants Is Utterly Boring” jest alternatywną „pamięciówką” dla tych samych sekwencji klawiszy, jedynie przekładając synchronizację systemów plików przed zamykanie i zabijanie wszystkich procesów.

Niezależnie od tego, która sekwencja została wybrana, powinna być wykonywana w wolnym tempie, dając systemowi szansę na wykonanie jednej czynności zanim każemy mu wykonać następną. Wykonując sekwencję powoli pozwalamy systemowi na bezpieczne zakończenie wszystkich procesów zanim wykonamy drastyczniejszą komendę zabicia wszystkich procesów. Jednakże, by zminimalizować ryzyko utraty danych, dobrym pomysłem jest poczekanie między komendą synchronizacji a odmontowania dysków i na koniec wydać komendę ponownego rozruchu.

Alternatywą do wykonania sekwencji klawiszy REISUB/RSEIUB jest proste wciśnięcie Alt+SysRq+R, jak Ctrl+Alt+Delete. Jest to równoważne do wydania przez root’a komendy „shutdown now” w konsoli; wyłączenie po sekwencji Ctrl+Alt+Del zabiera systemowi krótką chwilę. Jednakże, nie wszystkie Linuksy obsługują prostszą metodę.

Programy graficzne

Jeżeli magiczne klawisze SysRq są używane, by zabić zawieszony program graficzny, program nie ma szans by odzyskać tryb tekstowy. To może zrobić wszystko nieczytelnym. Komendy „textmode” (część SVGAlib) i „reset” potrafią odzyskać tryb tektowy i zrobić konsolę znów czytelną.

Terminologia

kexec – pozwala na ominięcie BIOS-u i bootloadera, i na załadowanie nowego jądra
crashdump – narzędzie pomocnicze crashdumpd wykorzystywane do raportowania błędów
SIGTERM – poprawne zamknięcie procesu
SIGKILL – unicestwienie procesu co może powodować utratę wszystkich zawartych w nim danych (nie ma możliwości przechwycenia tego sygnału przez proces)

Na podstawie: Magic SysRq key.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

25 komentarzy do “Magiczny klawisz SysRq