ATTRIBUZIONI :
https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key che si basava sul lavoro originale di
Credits
Scritto da Mydraal
Aggiornato da Adam Sulmicki
Aggiornato da Jeremy M. Dolan 2001/01/28 10:15:59
Aggiunto a cura di Crutcher Dunnavant
https://askubuntu.com/a/11194/102029 mneiss ha fornito collegamenti per LaunchPad.
Contenuto
Che cos'è sysrq?
Perché RESIUB (O) non funziona?
1 Come posso fare in modo che sysrq si comporti come voglio?
1.1 Qual è la chiave magica di SysRq?
1.2 Come abilitare la chiave magica SysRq?
1.3 Come si usa la chiave magica SysRq?
1.4 Quali sono i tasti 'comando'?
1.5 Va bene, quindi per cosa posso usarli?
1.6 Risoluzione dei problemi
1.6.1 Sospensione prima che gli initscript vengano eseguiti
1.6.2 A volte SysRq sembra bloccarsi dopo averlo usato, cosa posso fare?
1.6.3 Ho colpito SysRq, ma non sembra succedere nulla, cosa c'è che non va?
1.6.4 Voglio aggiungere eventi chiave SysRQ a un modulo, come funziona?
1.6.5 Conclusione
1.6.6 APPENDICE
Nota.
È possibile che sia utile utilizzare Ctrl+ Fper utilizzare il sommario.
Che cos'è SysRq?
Un metodo comune ben noto e utilizzato per riottenere l'uso della macchina dopo il blocco o il blocco con la limitazione del rischio di corruzione del disco che porta al danneggiamento dei file di sistema o alla perdita di dati consiste nell'utilizzare
Alt+ SysRq+ re quindi se quindi ee quindi ie quindi ue quindi be / o o se necessario ( o)
Questo non ha funzionato come previsto per molti (cioè io e James) attraverso tutti i gusti da> = 8.04LTS all'attuale versione 13.04.
Perché RESIUB (O) non funziona?
Considera questa descrizione del bug trovata nel bug 194676 di LaunchPad :
Descrizione del problema:
per impostazione predefinita SysRq è abilitato per impostazione predefinita sui sistemi desktop Ubuntu, il che è prezioso quando un sistema è bloccato e si desidera arrestarlo il più delicatamente possibile o eseguire il debug del problema. Tuttavia, molte persone sono sorprese che si possa anche chiedere di scaricare il contenuto della memoria corrente sulla console (o dmesg) anche se solo dalla tastiera.
openSUSE imposta una maschera di bit predefinita di 176 sul suo SysRq che per impostazione predefinita ti limita a sincronizzare, riavviare e "rimontare di sola lettura". Questo impedisce alle persone di usare sysrq per impostazione predefinita per ispezionare la memoria che sembra ragionevole.
Gli sviluppatori Ubuntu hanno visto la necessità di fare qualcosa al riguardo e la soluzione migliore considerando le possibili complicazioni dell'osservazione menzionata è applicare la maschera di bit 176 sysrq per impostazione predefinita creando la necessità di input dell'utente per impostare sysrq come desiderano. Maschera di bit consente solo 176 S, U, Bche è sincronizzazione, rimontare le partizioni e riavviare.
La lettura della segnalazione completa e dei commenti evidenzierà alcune opzioni che potrebbero essere applicabili al tuo sistema.
L'effetto cumulativo di hardware, kernel, tastiere e maschere di bit diversi fa sì che sysrq si comporti in modo diverso per persone diverse.
Un metodo per ottenere l'output di txt riguardo all'uso del sistema da parte di sysrq consiste nell'applicare i comandi sysrq da tty (quando il sistema non soffre di blocchi / blocchi). Ciò potrebbe indicare che sysrq non è stato completamente disabilitato ma utilizza la maschera di bit 176.
La ricerca di / proc / sys / kernel / sysrq su un LiveDVD amd64 Desktop 13.04 e un'installazione amd64 Desktop 13.04 conferma che l'impostazione predefinita è attualmente lasciare sysrq su maschera di bit 176.
Se sysrq funziona per te; potrebbe valere la pena di chiedere: "Se non ho modificato le impostazioni di 10-magic-sysrq, allora: chi ha fatto?"
1 Come posso fare in modo che sysrq si comporti come voglio?
Quello che segue è una copia e incolla modificata di https://fedoraproject.org/wiki/QA/Sysrq .
1.1 Qual è la chiave magica di SysRq?
È una combinazione di tasti "magici" a cui puoi rispondere a cui il kernel risponderà indipendentemente da qualsiasi altra cosa stia facendo, a meno che non sia completamente bloccato.
1.2 Come abilitare la chiave magica SysRq?
sysrq è integrato nel kernel di Ubuntu ma è disabilitato all'avvio, per impostazione predefinita, usando 10-magic-sysrq.conf.
Per riattivarlo al momento dell'avvio, è necessario modificare il file /etc/sysctl.d/10-magic-sysrq.conf. vale a dire decommentare questa linea abiliterà tutte le funzioni di sysrq:
# 1 - enable all functions of sysrq
Quando si esegue un kernel con SysRq compilato, / proc / sys / kernel / sysrq controlla le funzioni che possono essere invocate tramite la chiave SysRq. Ecco l'elenco dei possibili valori in / 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
È possibile impostare il valore nel file con il seguente comando.
echo "number" >/proc/sys/kernel/sysrq
Quindi per abilitarlo pienamente sarebbe.
echo "1" > /proc/sys/kernel/sysrq
O anche abilitarlo facendo.
sysctl -w kernel.sysrq=1
Nota.
Il valore di / proc / sys / kernel / sysrq influenza solo l'invocazione tramite una tastiera. L'invocazione di qualsiasi operazione tramite / proc / sysrq-trigger è sempre consentita (da un utente con privilegi di amministratore, vedere di seguito).
1.3 Come si usa la chiave magica SysRq?
Ubuntu Desktop
Si preme il tasto combinato Alt+ SysRq+ command key.
NB: consultare le note in questa sezione e nella sezione Risoluzione dei problemi per altre possibili impostazioni predefinite per altri sistemi e tastiere.
È possibile impostare qualsiasi personaggio di tua scelta: Tutte le architetture
Scrivi un personaggio su / proc / sysrq-trigger:
echo t > /proc/sysrq-trigger
imposta il Tcomportamento come SysRq
Nota.
Alcune tastiere potrebbero non avere un tasto etichettato SysRq. La SysRqchiave è anche nota come Print Screenchiave. Inoltre alcune tastiere non sono in grado di gestire così tanti tasti premuti contemporaneamente, quindi potresti avere più fortuna con Alt+ SysRq- SysRqquindi premere command keye rilasciare tutto. Vedere la scrittura completa del QA su cui questa guida si basa su https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key.3F per ulteriori informazioni al riguardo.
1.4 Quali sono i tasti 'comando'?
'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.
Nota.
Vedi i commenti importanti di seguito nella sezione 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 Va bene, quindi per cosa posso usarli?
Un raw è molto utile quando il tuo server X o un programma svgalib si arresta in modo anomalo.
Sa k(Secure Access Key) è utile quando vuoi essere sicuro che non ci sia un programma trojan in esecuzione sulla console che potrebbe prendere la tua password quando provi ad accedere. Ucciderà tutti i programmi su una determinata console, permettendoti così di assicurarti che il prompt di accesso che vedi sia effettivamente quello di init, non un programma trojan. Altri lo trovano utile come (Chiave di attenzione del sistema), utile quando si desidera uscire da un programma che non consente di cambiare console. (Ad esempio, X o un programma svgalib.)
Nota.
Nella sua vera forma non è un vero SAK come quello di un sistema compatibile con c2, e non dovrebbe essere confuso come tale.
Re boot è buono quando non sei in grado di arrestare.
Nota.
È generalmente considerata una buona pratica umontare prima
Crashdump può essere utilizzato per attivare manualmente un crashdump quando il sistema è bloccato.
Nota.
Il kernel deve essere stato creato con CONFIG_KEXEC abilitato!
La sincronizzazione è ottima quando il tuo sistema è bloccato, ti consente di seseguire il ync dei tuoi dischi e certamente ridurrà la possibilità di perdita di dati e fscking.
Avviso
La sincronizzazione non è avvenuta fino a quando non vengono visualizzati "OK" e "Fine" sullo schermo. (Se il kernel è davvero in conflitto, potresti non ricevere mai il messaggio OK o Fatto.
Umount è sostanzialmente utile allo stesso modo di Sync.
I loglevel 0- 9sono utili quando la tua console è inondata di messaggi del kernel che non vuoi vedere. La selezione 0impedirà a tutti tranne i messaggi del kernel più urgenti di raggiungere la tua console.
Nota.
Saranno comunque registrati se syslogd / klogd sono attivi
T erm e k ill sono utili se si ha una sorta di processo in fuga che non si è in grado di uccidere in nessun altro modo, specialmente se sta generando altri processi.
Nota.
Quando si verifica un panico del kernel errato, fare Alt+ Sysrq+ equindi Alt+ Sysrq+ uquindi Alt+ Sysrq+ ie infine Alt+ Sysrq+b
1.6 Risoluzione dei problemi
1.6.1 Sospensione prima che gli initscript vengano eseguiti
Se la macchina si blocca prima che gli initscripts possano essere eseguiti, avviare con sysrq_always_enabled=1
1.6.2 A volte SysRq sembra "bloccato" dopo averlo usato, cosa posso fare?
Toccando shift, alte controlsu entrambi i lati della tastiera e premendo di nuovo una sequenza sysrq non valida si risolverà il problema. (cioè qualcosa come alt+ sysrq+ z).
Anche il passaggio a un'altra console virtuale ( Ctrl+ Alt+ Fn1- Fn6) e poi di nuovo Ctrl+ Alt+ Fn7dovrebbe aiutare.
1.6.3 Ho colpito SysRq, ma non sembra succedere nulla, cosa c'è che non va?
Ci sono alcune tastiere che inviano scancodes diversi SysRqrispetto allo 0x54 predefinito. Quindi se SysRqnon funziona per una determinata tastiera, esegui showkey -s
per scoprire la sequenza scancode corretta. Quindi utilizzare setkeycodes <sequence> 84
per definire questa sequenza con il solito SysRqcodice (84 è decimale per 0x54). Probabilmente è meglio inserire questo comando in uno script di avvio.
Avviso
Si esce showkey
non digitando nulla per dieci secondi.
1.6.4 Voglio aggiungere SysRqeventi chiave a un modulo, come funziona?
Per registrare una funzione di base con la tabella, devi prima includere l'intestazione include/linux/sysrq.h
, questo definirà tutto il necessario. Successivamente, è necessario creare una struttura sysrq_key_op e popolarla con ...
La funzione del gestore dei tasti che utilizzerai.
Una stringa help_msg, che verrà stampata quando SysRQ stampa la guida
Una stringa action_msg, che verrà stampata subito prima della chiamata del gestore. Il gestore deve essere conforme al prototipo in "sysrq.h"
Dopo aver creato sysrq_key_op, è possibile chiamare la funzione kernel register_sysrq_key (chiave int, struct sysrq_key_op * op_p); questo registrerà l'operazione indicata da 'op_p' nella chiave della tabella 'chiave', se quello slot nella tabella è vuoto. Al momento dello scaricamento del modulo, è necessario chiamare la funzione unregister_sysrq_key (chiave int, struct sysrq_key_op * op_p), che rimuoverà la chiave op indicata da 'op_p' dalla chiave 'chiave', se e solo se è attualmente registrata in quella fessura. Questo nel caso in cui lo slot sia stato sovrascritto da quando è stato registrato.
Il SysRqsistema Magic funziona registrando le operazioni chiave su una tabella di ricerca delle chiavi, che è definita in "drivers / char / sysrq.c". Questa tabella di chiavi contiene una serie di operazioni registrate al momento della compilazione, ma è mutabile e vengono esportate 2 funzioni per interfacciare register_sysrq_key e unregister_sysrq_key. Ovviamente, non lasciare mai un puntatore non valido nella tabella. ie; quando il modulo che ha chiamato register_sysrq_key () viene chiuso, deve chiamare unregister_sysrq_key () per ripulire la voce della tabella delle chiavi sysrq utilizzata.
Nota.
I puntatori null nella tabella sono sempre sicuri.
Se per qualche motivo senti la necessità di chiamare la funzione handle_sysrq all'interno di una funzione chiamata da handle_sysrq, devi essere consapevole di essere in un blocco (sei anche in un gestore di interruzioni, il che significa che non dormire!), Quindi devi invece chiamare __handle_sysrq_nolock.
1.6.5 Conclusione
Usa Alt+ SysRq+ Se poi Ue poi Bper sincronizzare, prova a rimontare tutti i filesystem montati e poi riavvia se necessario. Senza cambiare nulla in file di sistema.
Se Alt+ SysRq+ Bnon riavvia il sistema, potrebbe essere necessario modificare /etc/sysctl.d/10-magic-sysrq.conf per consentire il tentativo di applicare Alt+ SysRq+ B(o / e Odopo aver modificato / proc / sys / kernel / Maschera di bit sysrq per abilitare il riavvio e l'arresto del sistema mediante sysrq, che può essere fatto con uno dei metodi sopra descritti.
1.6.6 APPENDICE:
Vedi anche - http://ubuntuforums.org/showthread.php?t=617349 e https://www.kernel.org/doc/Documentation/sysrq.txt
Per quelli con problemi con la tastiera di Apple MacBook relativi a sysrq, consultare: https://help.ubuntu.com/community/AppleKeyboard e https://bugs.launchpad.net/mactel-support/+bug/262408
Informazioni interessanti relative - Dopo aver visto l'episodio del 17 08 2013 del programma della BBC "Click" e l'articolo "cyberwarfare" ha attirato la mia attenzione. Il programma ha anche il proprio sito Web Fare clic su se non è possibile guardare il programma. FAWC