Alt + sysrq + REISUB non riavvia il mio laptop


59

A volte, il mio laptop si è bloccato, quindi ho usato la combinazione di tasti magici di Alt+ SysRq+ REISUBper eseguire un riavvio sicuro. Tuttavia, non sembra funzionare per me come quando premo il Btasto per completare il comando del tasto magico, dice semplicemente "resettare ..." e non fa nulla.

Tutti gli altri tasti sembrano funzionare bene poiché ripristina il layout della tastiera, uccide tutte le attività ecc., Ma non sembra completarsi con un riavvio.

Ho avuto l'impressione che il mio laptop dovrebbe riavviarsi dopo che tutti i tasti magici sono stati premuti nell'ordine di REISUB.

Risposte:


58

Alt + SysRq è stato disabilitato per correggere un bug. La disabilitazione di Magic-SysRq è stata considerata un bug stesso e da allora è stata riattivata ( # 1025467 ). Se è ancora disabilitato per te, puoi riattivarlo:

Ubuntu 12.04 e precedenti

Modifica il file /etc/sysctl.conf per includere la riga

kernel.sysrq=1

Ubuntu 12.10 e versioni successive

A partire da Ubuntu 12.10 è possibile un controllo più dettagliato di quali funzionalità di Magic-SysRq sono abilitate. Basta modificare il file /etc/sysctl.d/10-magic-sysrq.conf .

Il file è ben documentato e ti dice esattamente come abilitare quali funzionalità. L'attuale impostazione predefinita è stata scelta per motivi di sicurezza e deve essere modificata solo se si conosce il motivo per cui è necessario (per le implicazioni di sicurezza, vedere # 194676 ).


6
No non l'ha fatto. Funziona perfettamente su maverick, sdolcinato, onirico e preciso.
psusi

In realtà è stato disabilitato per risolvere un bug, ma è stato riabilitato. Ho aggiornato la risposta. Dovremmo anche modificare la domanda per essere un po 'più generale?
mniess

1
@geezanansa Puoi modificare i tuoi commenti mentre sono ancora caldi. Si prega di evitare di aggiungere più commenti consecutivi. Inoltre, SysRq funziona per me il 13.04. Non l'ho mai provato su un Live DVD, solo dopo l'installazione. Quindi, non capisco i giudizi di questa risposta perché si tratta di un periodo di tempo molto breve (vedi la segnalazione di bug). ;)
gertvdijk,

1
@gertvdijk: Quando ho aggiornato la domanda che ho citato etc / sysctl.d / 10-magic-sysrq.conf che include i parametri sysrq per tutto il necessario per abilitare tutte le rispettive funzioni. All'epoca in cui era stata posta la domanda (nel 2010), in realtà era la soluzione perché "b" era effettivamente disattivata per impostazione predefinita a causa di un bug. Ho modificato la risposta in modo più generico, rispondo alla domanda che sysrq è completamente disfunzionale e anche parzialmente disfunzionale.
mniess

1
@geezanansa, sì, penso che lo abbiano disabilitato in quantistica, dopo che l'ho pubblicato
psusi

31

Le tastiere sono il problema qui!

  • Ad alcuni semplicemente non piacciono i 4 tasti contemporaneamente e smettono di essere una tastiera fino a quando non ne rilasci uno.
  • Tutte le tastiere si trasformano in layout QWERTY quando si invia il segnale SysRq. Questo rende difficile trovare i comandi giusti sulle tastiere con un altro layout. Wikipedia: i comandi SysRq mostrano una tabella per trovare quelli giusti per layout alternativi comuni.
  • Alcuni hanno SysRqun altro tasto che PrtSctenere premuto con un tasto funzione. Sul mio laptop questo è Fn+ End. Tenere premuto Alt+ PrtScfunziona solo se un processo di sistema (window manager?) Lo traduce per me. In totale crash, funziona solo il vero SysRq !
  • Alcuni attivano la SysRqchiave solo quando si tiene premuto il tasto Alt + PrtSc(hardware). Il tasto Alt sinistro non funzionerà in questo caso, per lo stesso motivo di cui sopra. Ecco come funziona la mia tastiera USB.
  • Suggerimento: prova a colpire Shift+ Alt+ SysRqper vedere un output di "aiuto" su un terminale virtuale. Questo è utile per vedere se funziona senza fare alcun danno:

    SysRq: HELP: loglevel (0-9) reBoot Crash terminate-all-task (E) memory-full-oom-kill (F) kill-all-task (I) thaw-filesystems (J) saK show-backtrace-all -active-cpus (L) show-memory-use (M) nice-all-RT-task (N) powerOff show-registers (P) show-all-timer (Q) unRaw Sync show-task-state (T) Smonta show-block-task (W) dump-ftrace-buffer (Z)

In tutti i casi in cui mi sono imbattuto, non ha funzionato, lo scambio della tastiera ha funzionato perfettamente e ha dimostrato che non c'era nulla di sbagliato in nessuna impostazione del kernel.


2
@geezanansa Ho visto la tastiera chiaramente incapace di gestire determinate combinazioni di 4 tasti. La sostituzione ha risolto il problema. Veramente. Tuttavia, potrebbe funzionare per tutte le tue tastiere. E se non capisci i voti, allora perché non spieghi perché non lo fai?
gertvdijk,

2
Considerando che James conferma che tutti i comandi di sysrq funzionano ad eccezione di B. Questa risposta non è una risposta alla domanda che leggo come Perché sysrq B non funziona? La tastiera non è un problema per James o molti altri per quanto riguarda sysrq. -1
geezanansa,

17

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 -sper scoprire la sequenza scancode corretta. Quindi utilizzare setkeycodes <sequence> 84per definire questa sequenza con il solito SysRqcodice (84 è decimale per 0x54). Probabilmente è meglio inserire questo comando in uno script di avvio.
Avviso
Si esce showkeynon 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


2
In particolare, ho appena testato Al + SysRq + REISUB su un sistema i386 Quantal completamente aggiornato e funziona benissimo. Sei sicuro che il bug di sicurezza collegato, o qualsiasi parte della discussione sulla sicurezza in questa risposta, sia realmente correlato al problema? In tal caso, è una causa abbastanza comune del problema che dovrebbe apparire per prima in questa risposta?
Eliah Kagan,

Il problema di sicurezza è importante in quanto la serie completa di comandi sysrq non è disponibile a causa dell'applicazione della maschera di bit 176 al momento dell'avvio; come descrive la segnalazione di bug.
geezanansa,

3

L'ho incontrato l'altro giorno e ci sono voluti alcuni secondi per lavorare. Potrei anche aver fatto l'intera sequenza REISUB due volte.

Inoltre, assicurati di utilizzare il tasto sysrq (la maggior parte dei laptop richiede di tenere premuta la funzione, quindi tieni davvero premuti 4 tasti contemporaneamente)


Grazie per la tua risposta Scott. Devo davvero tenere premuto il tasto funzione (fn) insieme a alt e sysrq. Dopo aver premuto il tasto B finale per terminare la sequenza REISUB, il mio laptop sembra bloccarsi dopo che è stato visualizzato: Ripristino Quando si ripete la sequenza dei tasti magici non si fa nulla, né si visualizza nulla sullo schermo dopo. Quindi sembra che il sistema si blocchi quando deve riavviarsi.
James White,

3

Alcuni anni fa ho usato per usare Alt+ SysRq+ S, U, B, Oriavviare o spegnere una macchina bloccata, perché come per voi, Alt+ SysRq+ Ba volte non ha voglia di lavorare.

(Inoltre, ho bisogno di prendere l'abitudine di usare Alt+ SysRq+ E, Iprima. Io non vedo molto punto di usare Alt+ SysRq+ R, dal momento che il motivo che importa modalità della tastiera se sta andando per il riavvio e ripristinare lo stesso?)


1
perché è importante la modalità tastiera se si riavvia e reimposta comunque? Perché restituisce la capacità di input alla tastiera? il che potrebbe significare che non è necessario riavviare o spegnere
geezanansa,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.