ATRYBUTY :
https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key, który został oparty na oryginalnej pracy
napisanej przez
Kredyty
napisane przez Mydraal
Zaktualizowano przez Adama Sulmickiego
Zaktualizowano przez Jeremy M. Dolan 2001/01/28 10:15:59
Dodano do: Crutcher Dunnavant
https://askubuntu.com/a/11194/102029 mneiss podał linki do LaunchPada.
Zawartość
Co to jest sysrq?
Dlaczego RESIUB (O) nie działa?
1 Jak sprawić, aby sysrq zachowywał się tak, jak chcę?
1.1 Co to jest magiczny klucz SysRq?
1.2 Jak włączyć magiczny klucz SysRq?
1.3 Jak korzystać z magicznego klucza SysRq?
1.4 Czym są klawisze „poleceń”?
1.5 OK, więc do czego mogę ich używać?
1.6 Rozwiązywanie problemów
1.6.1 Wieszanie przed uruchomieniem
skryptów startowych 1.6.2 Czasami SysRq wydaje się „blokować” po użyciu, co mogę zrobić?
1.6.3 Uderzyłem w SysRq, ale wydaje się, że nic się nie dzieje, co jest nie tak?
1.6.4 Chcę dodać kluczowe zdarzenia SysRQ do modułu, jak to działa?
1.6.5 Wniosek
1.6.6 DODATEK
Uwaga. Pomocne
może okazać się użycie przycisku Ctrl+, Faby skorzystać ze spisu treści.
Co to jest SysRq?
Powszechnie znaną i stosowaną metodą przywracania użytkowania maszyny po jej zamrożeniu lub zablokowaniu z ograniczeniem ryzyka uszkodzenia dysku prowadzącego do uszkodzenia pliku systemowego lub utraty danych jest użycie
Alt+ SysRq+ ra potem si wtedy ei wtedy ii wtedy ui wtedy bi / lub w razie potrzeby ( o)
Nie działało to zgodnie z oczekiwaniami dla wielu (tj. Dla mnie i Jamesa) poprzez wszystkie smaki od> = 8.04LTS do aktualnej wersji 13.04.
Dlaczego RESIUB (O) nie działa?
Rozważ ten opis błędu znaleziony w LaunchPad Bug 194676 :
Opis problemu:
Domyślnie SysRq jest domyślnie włączony w systemach komputerowych Ubuntu, co jest nieocenione, gdy system jest zamknięty i chcesz go zatrzymać tak delikatnie, jak to możliwe lub rozwiązać problem. Jednak wiele osób jest zaskoczonych, że możesz poprosić go o zrzucenie zawartości bieżącej pamięci na konsolę (lub dmesg), choć tylko z klawiatury.
openSUSE ustawia domyślną maskę bitów o wartości 176 na SysRq, która domyślnie ogranicza synchronizację, restart i „ponowne podłączanie tylko do odczytu”. Powoduje to, że ludzie domyślnie nie używają sysrq do sprawdzania pamięci, która brzmi sensownie.
Programiści Ubuntu zauważyli, że trzeba coś z tym zrobić, a najlepszym rozwiązaniem, biorąc pod uwagę możliwe komplikacje wspomnianej obserwacji, jest domyślnie zastosowanie maski bitowej 176 sysrq, co stwarza potrzebę wprowadzania danych przez użytkownika, aby ustawić sysrq zgodnie z ich życzeniem. Maska bitowa 176 tylko pozwala S, U, Bktóry jest synchronizacja, zamontować zamontowane partycje i restart.
Przeczytanie pełnego raportu o błędzie i komentarzy podświetli niektóre opcje, które mogą mieć zastosowanie w twoim systemie.
Łączny wpływ różnych urządzeń, jąder, klawiatur i bitmasków oznacza, że sysrq zachowuje się różnie dla różnych osób.
Jedną z metod uzyskania danych wyjściowych dotyczących sposobu korzystania z sysrq przez twój system jest zastosowanie poleceń sysrq z tty (gdy system nie cierpi z powodu blokad / zawieszeń). Może to oznaczać, że sysrq nie został całkowicie wyłączony, ale używa maski bitowej 176.
Wyszukiwanie / proc / sys / kernel / sysrq na 13.04 Desktop amd64 liveDVD i instalacji 13.04 Desktop amd64 potwierdza, że domyślnie jest to pozostawienie sysrq na masce bitowej 176.
Jeśli sysrq działa dla ciebie; warto zapytać: „Gdybym nie zmienił ustawień 10-magic-sysrq; Kto to zrobił?”.
1 Jak sprawić, aby sysrq zachowywał się tak, jak chcę?
Poniżej znajduje się zredagowana kopia i wklej https://fedoraproject.org/wiki/QA/Sysrq .
1.1 Co to jest magiczny klucz SysRq?
Jest to „magiczna” kombinacja klawiszy, na którą jądro odpowie, niezależnie od tego, co robi, chyba że jest całkowicie zablokowana.
1.2 Jak włączyć magiczny klucz SysRq?
sysrq jest wbudowany w jądro Ubuntu, ale jest domyślnie wyłączony podczas uruchamiania, używając 10-magic-sysrq.conf.
Aby ponownie włączyć go podczas rozruchu, musisz edytować plik /etc/sysctl.d/10-magic-sysrq.conf. tzn. odkomentowanie tej linii włączy wszystkie funkcje sysrq:
# 1 - enable all functions of sysrq
Podczas uruchamiania jądra ze skompilowanym SysRq, / proc / sys / kernel / sysrq kontroluje funkcje, które można wywoływać za pomocą klucza SysRq. Oto lista możliwych wartości w / proc / sys / kernel / sysrq:
0 - disable sysrq completely
1 - enable all functions of sysrq
>1 - bitmask of allowed sysrq functions (see below for detailed function description):
2 - enable control of console logging level
4 - enable control of keyboard (SAK, unraw)
8 - enable debugging dumps of processes etc.
16 - enable sync command
32 - enable remount read-only
64 - enable signalling of processes (term, kill, oom-kill)
128 - allow reboot/poweroff
176 - allow only sync, reboot and "remount read-only"
256 - allow nicing of all RT tasks
Możesz ustawić wartość w pliku za pomocą następującego polecenia.
echo "number" >/proc/sys/kernel/sysrq
Tak byłoby w pełni włączyć.
echo "1" > /proc/sys/kernel/sysrq
Lub też można to włączyć, robiąc.
sysctl -w kernel.sysrq=1
Uwaga.
Wartość / proc / sys / kernel / sysrq wpływa tylko na wywołanie za pomocą klawiatury. Wywoływanie dowolnej operacji przez / proc / sysrq-trigger jest zawsze dozwolone (przez użytkownika z uprawnieniami administratora - patrz poniżej).
1.3 Jak korzystać z magicznego klucza SysRq?
Ubuntu Desktop
Naciskasz kombinację klawiszy Alt+ SysRq+ command key.
NB Patrz notatki w tej sekcji oraz w sekcji Rozwiązywanie problemów dla innych możliwych ustawień domyślnych dla innych systemów i klawiatur.
Możliwe jest ustawienie dowolnej postaci: Wszystkie architektury
Napisz znak do / proc / sysrq-trigger:
echo t > /proc/sysrq-trigger
by ustawić Tzachowywać się jak SysRq
Note.
Niektóre klawiatury mogą nie mieć przypisanego klucza SysRq. SysRqKlucz jest znany również jako Print Screenklucza. Również niektóre klawiatury nie obsługują naciśnięcia tak wielu klawiszy jednocześnie, więc możesz mieć więcej szczęścia z Alt+ SysRq- SysRqnastępnie naciśnij, command keya następnie zwolnij wszystko. Więcej informacji na ten temat można znaleźć w pełnym tekście kontroli jakości, którego ten przewodnik oparty jest na https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key.3F .
1.4 Czym są klawisze „poleceń”?
'b' - Will immediately reboot the system without syncing or unmounting your disks.
'c' - Will perform a kexec reboot in order to take a crashdump.
'd' - Shows all locks that are held.
'e' - Send a SIGTERM to all processes, except for init.
'f' - Will call oom_kill to kill a memory hog process.
'g' - Used by kgdb on ppc and sh platforms.
'h' - Will display help (any key that is not listed here will bring forth help )
'i' - Send a SIGKILL to all processes, except for init.
'k' - Secure Access Key (SAK) Kills all programs on the current virtual terminal.
Uwaga.
Zobacz ważne komentarze poniżej w sekcji SAK.
'l' - Shows a stack backtrace for all active CPUs.
'm' - Will dump current memory info to your console.
'n' - Used to make RT tasks nice-able
'o' - Will shut your system off (if configured and supported).
'p' - Will dump the current registers and flags to your console.
'q' - Will dump a list of all running timers.
'r' - Turns off keyboard raw mode and sets it to XLATE.
's' - Will attempt to sync all mounted filesystems.
't' - Will dump a list of current tasks and their information to your console.
'u' - Will attempt to remount all mounted filesystems read-only.
'v' - Dumps Voyager SMP processor info to your console.
'w' - Dumps tasks that are in uninterruptable (blocked) state.
'x' - Used by xmon interface on ppc/powerpc platforms.
'0'-'9' - Sets the console log level, controlling which kernel messages will be printed to your console. ('0', for example would make it so that only emergency messages like PANICs or OOPSes would make it to your console.)
1.5 OK, więc do czego mogę ich używać?
Un raw jest bardzo przydatny, gdy następuje awaria serwera X lub programu svgalib.
Sa k(Secure Access Key) jest przydatny, gdy chcesz mieć pewność, że na konsoli nie działa program trojański, który mógłby złapać twoje hasło podczas próby zalogowania się. Zabije wszystkie programy na danej konsoli, dzięki czemu upewnisz się, że zobaczysz monit o zalogowanie się od init, a nie o trojana. Inni uważają, że jest przydatny jako (Klucz uwagi systemowej), który jest przydatny, gdy chcesz wyjść z programu, który nie pozwala na zmianę konsoli. (Na przykład X lub program svgalib.)
Uwaga.
W swojej prawdziwej formie nie jest prawdziwym SAK, takim jak ten w systemie zgodnym z C2 i nie należy go mylić jako taki.
Ponowne buruchomienie jest dobre, gdy nie można zamknąć.
Uwaga.
Ogólnie uważa się, że dobrą praktyką jest umontaż jako pierwszy
Crashdump może być użyty do ręcznego uruchomienia czrzutu awaryjnego, gdy system jest zawieszony.
Uwaga.
Jądro musi zostać zbudowane z włączoną funkcją CONFIG_KEXEC!
Synchronizacja jest świetna, gdy system jest zablokowany, pozwala sync na dyskach i na pewno zmniejszy ryzyko utraty danych i fsckowania.
Ostrzeżenie
Synchronizacja nie została wykonana, dopóki na ekranie nie pojawi się „OK” i „Gotowe”. (Jeśli jądro jest naprawdę w konflikcie, możesz nigdy nie otrzymać komunikatu OK lub Gotowe.
Umount jest zasadniczo użyteczny w taki sam sposób, jak Sync.
Loglevels 0- 9są przydatne, gdy konsola jest zalewana wiadomościami jądra, których nie chcesz widzieć. Wybranie tej opcji 0uniemożliwi dotarcie do konsoli wszystkich komunikatów jądra z wyjątkiem najpilniejszych.
Uwaga.
Będą nadal rejestrowane, jeśli syslogd / klogd żyją
T erm i ikll są przydatne, jeśli masz jakiś niekontrolowany proces, którego nie możesz zabić w żaden inny sposób, zwłaszcza jeśli odradza się inny proces.
Uwaga.
W przypadku złej paniki jądra wykonaj Alt+ Sysrq+, ea następnie Alt+ Sysrq+, ua następnie Alt+ Sysrq+ ii na koniec Alt+ Sysrq+b
1.6 Rozwiązywanie problemów
1.6.1 Wieszanie przed uruchomieniem skryptów startowych
Jeśli maszyna zawiesi się przed uruchomieniem skryptów startowych, uruchom z sysrq_always_enabled=1
1.6.2 Czasami SysRq wydaje się „blokować” po użyciu, co mogę zrobić?
Tapping shift, alti controlpo obu stronach klawiatury, a uderzenie nieprawidłową sekwencję sysrq znowu będzie rozwiązać problem. (tj. coś takiego jak alt+ sysrq+ z).
Przełączenie na inną wirtualną konsolę ( Ctrl+ Alt+ Fn1- Fn6), a następnie powrót Ctrl+ Alt+ Fn7również powinno pomóc.
1.6.3 Uderzyłem SysRq, ale wydaje się, że nic się nie dzieje, co jest nie tak?
Istnieje kilka klawiatur, które wysyłają różne skancody dla SysRqwstępnie zdefiniowanego 0x54. Więc jeśli SysRqnie działa po wyjęciu z pudełka dla określonej klawiatury, biegnij, showkey -s
aby znaleźć właściwą sekwencję scancode. Następnie użyj, setkeycodes <sequence> 84
aby zdefiniować tę sekwencję do zwykłego SysRqkodu (84 to liczba dziesiętna dla 0x54). Prawdopodobnie najlepiej umieścić to polecenie w skrypcie rozruchowym.
Ostrzeżenie
Wyjdź showkey
, nie pisząc niczego przez dziesięć sekund.
1.6.4 Chcę dodać SysRqkluczowe zdarzenia do modułu, jak to działa?
Aby zarejestrować podstawową funkcję w tabeli, musisz najpierw dołączyć nagłówek include/linux/sysrq.h
, który określi wszystko, czego potrzebujesz. Następnie musisz utworzyć strukturę sysrq_key_op i wypełnić ją ...
Używasz funkcji obsługi klawiszy.
Ciąg help_msg, który zostanie wydrukowany, gdy SysRQ wydrukuje pomoc
Ciąg action_msg, który zostanie wydrukowany tuż przed wywołaniem programu obsługi. Twój przewodnik musi być zgodny z prototypem w 'sysrq.h'
Po utworzeniu sysrq_key_op możesz wywołać funkcję jądra register_sysrq_key (int key, struct sysrq_key_op * op_p); spowoduje to zarejestrowanie operacji wskazywanej przez „op_p” na klawiszu tabeli klucz, jeśli to miejsce w tabeli jest puste. W czasie zwalniania modułu należy wywołać funkcję unregister_sysrq_key (klucz int, struct sysrq_key_op * op_p), który usunie klucz op wskazywany przez „op_p” z klucza „klucz”, jeśli tylko wtedy, gdy jest w nim zarejestrowany otwór. Dzieje się tak w przypadku, gdy miejsce zostało nadpisane od czasu jego rejestracji.
System Magic SysRqdziała poprzez rejestrację operacji na kluczach w tabeli odnośników operacji, która jest zdefiniowana w 'drivers / char / sysrq.c'. Ta tabela kluczy zawiera wiele operacji zarejestrowanych w czasie kompilacji, ale jest zmienna, a 2 funkcje są eksportowane w celu uzyskania interfejsu: register_sysrq_key i unregister_sysrq_key. Oczywiście nigdy nie pozostawiaj nieprawidłowego wskaźnika w tabeli. to znaczy; kiedy moduł, który wywołał register_sysrq_key (), kończy działanie, musi wywołać unregister_sysrq_key (), aby wyczyścić użyty wpis tabeli kluczy sysrq.
Uwaga.
Wskaźniki zerowe w tabeli są zawsze bezpieczne.
Jeśli z jakiegoś powodu odczuwasz potrzebę wywołania funkcji handle_sysrq z funkcji wywoływanej przez uchwyt_sysrq, musisz mieć świadomość, że jesteś w blokadzie (jesteś także w obsłudze przerwań, co oznacza, że nie śpij!), Więc zamiast tego musisz wywołać __handle_sysrq_nolock.
1.6.5 Wniosek
Użyj Alt+ SysRq+, Sa następnie, Ua następnie, Baby zsynchronizować, spróbuj ponownie zamontować wszystkie zamontowane systemy plików, a następnie uruchom ponownie, jeśli to konieczne. Bez zmiany rzeczy w plikach systemowych.
Jeśli Alt+ SysRq+ Bnie zrestartuje systemu, może być konieczna edycja /etc/sysctl.d/10-magic-sysrq.conf, aby umożliwić próbę zastosowania Alt+ SysRq+ B(lub / i Opo edycji / proc / sys / kernel / maska bitowa sysrq umożliwiająca ponowne uruchomienie i zamknięcie systemu za pomocą sysrq. Możesz to zrobić dowolną z metod opisanych powyżej.
1.6.6 DODATEK:
Zobacz także - http://ubuntuforums.org/showthread.php?t=617349 i https://www.kernel.org/doc/Documentation/sysrq.txt
Osoby mające problemy z klawiaturą Apple MacBook dotyczące sysrq patrz: https://help.ubuntu.com/community/AppleKeyboard i https://bugs.launchpad.net/mactel-support/+bug/262408
Względnie interesujące informacje - Po obejrzeniu 17 08 2013 odcinka programu BBC „Click” i artykułu „cyberwarfare” naprawdę przykułem moją uwagę. Program ma również własną stronę internetową Kliknij, jeśli nie możesz obejrzeć programu. FAWC