Alt + sysrq + REISUB non riavvia il mio laptop

54

A volte il mio portatile si è bloccato, quindi ho usato la combinazione di tasti magici di Alt + SysRq + REISUB per eseguire un riavvio sicuro. Tuttavia, non sembra funzionare come quando premo il tasto B per completare il comando della chiave magica che dice semplicemente "resettaggio ..." e non fa nulla.

Tutti gli altri tasti sembrano funzionare correttamente, in quanto ripristina il layout della tastiera, uccide tutti i compiti ecc., ma sembra che non si completi con un riavvio.

Avevo l'impressione che il mio laptop si riavviasse dopo che i tasti magici sono stati tutti premuti nell'ordine di REISUB.

    
posta James White 02.11.2010 - 17:24

5 risposte

52

Alt + SysRq è stato disabilitato per correggere un bug. La disabilitazione di Magic-SysRq era considerata un bug 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 linea

kernel.sysrq=1

Ubuntu 12.10 e successivi

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

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

    
risposta data mniess 03.11.2010 - 16:45
27

Le tastiere sono il problema qui!

  • Ad alcuni non piacciono i 4 tasti-giù allo stesso tempo e basta smettere di essere una tastiera finché non ne rilasci alcuni.
  • Tutte le tastiere si trasformano in layout QWERTY quando si invia il segnale SysRq. Ciò rende difficile trovare i comandi giusti sulle tastiere con un altro layout. Wikipedia: i comandi SysRq mostrano una tabella per trovare quelli giusti per i layout alternativi comuni.
  • Alcuni hanno SysRq su un altro tasto diverso da PrtSc da mantenere con un tasto funzione. Sul mio portatile questo è Fn + Fine . Tenere premuto Alt + PrtSc funziona solo se qualche processo di sistema (window manager?) Lo traduce per me. In caso di crash totale, funziona solo real SysRq !
  • Alcuni attivano solo il tasto SysRq quando si tiene premuto a destra Alt + PrtSc (per 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 premere Maiusc + Alt + SysRq per vedere un output di "aiuto" su un terminale virtuale. Questo è utile per vedere se funziona senza fare del male:

      

    SysRq: HELP: loglevel (0-9) reBoot Crash terminate-all-tasks (E) memory-full-oom-kill (F) kill-all-tasks (I) thaw-filesystems (J) saK show- backtrace-all-active-cpus (L) show-memoria-utilizzo (M) nice-all-RT-tasks (N) powerOff show-registri (P) show-all-timer (Q) unRaw Sync show-task-states (T) Smonta show-blocked-tasks (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 niente di sbagliato in qualsiasi impostazione del kernel.

    
risposta data gertvdijk 13.01.2013 - 13:58
14

ATTRIBUTIONS :
link basato sul lavoro originale di
Credits
Scritto da Mydraal
Aggiornato da Adam Sulmicki
Aggiornato da Jeremy M. Dolan 2001/01/28 10:15:59
Aggiunto da Crutcher Dunnavant

link mneiss ha fornito i collegamenti per LaunchPad.

Contenuto

Che cos'è sysrq?
Perché RESIUB (O) non funziona?

1 Come faccio a syscrq a comportarmi come voglio io?
1.1 Qual è la chiave magica di SysRq?
1.2 Come abilitare la chiave SysRq magia?
1.3 Come utilizzare la chiave SysRq magica?
1.4 Quali sono i tasti "comando"?
1.5 Ok, quindi, per cosa li posso utilizzare?

1.6 Risoluzione dei problemi

1.6.1 Sospeso prima dell'inizio dell'esecuzione di initscripts 1.6.2 A volte SysRq sembra "bloccato" 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 funziona?
1.6.5 Conclusione
1.6.6 APPENDICE
Nota.
Puoi usare Ctrl + F per usare il sommario utile.

Che cos'è SysRq?

Un metodo comune ben noto e utilizzato per riottenere l'uso della macchina dopo il congelamento o il blocco con la limitazione del rischio di danneggiamento del disco che porta al danneggiamento o alla perdita di dati del file è usare
Alt + SysRq + r e quindi s e quindi e e quindi i e quindi u e poi b e / o se necessario ( o )

Questo non ha funzionato come previsto per molti (ie me e James) attraverso tutti i sapori da & gt; = 8.04LTS alla versione 13.04 corrente.

Perché RESIUB (O) non funziona?

Considera questa descrizione di bug trovata in LaunchPad Bug 194676 :

  

Descrizione del problema:
  Per impostazione predefinita, SysRq è abilitato di default sui sistemi desktop Ubuntu che ha un valore inestimabile quando un sistema si è 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 proprio SysRq che, per impostazione predefinita, limita la sincronizzazione, il riavvio e "rimonta sola lettura". Questo impedisce alle persone che utilizzano sysrq di controllare di default la memoria che sembra ragionevole.

Gli sviluppatori di Ubuntu hanno visto la necessità di fare qualcosa al riguardo e la soluzione migliore considerando le possibili complicazioni dell'osservazione citata è di applicare bitmask 176 sysrq per impostazione predefinita creando la necessità di input dell'utente per impostare sysrq come desiderano. Bitmask 176 consente solo S , U , B che è sincronizzato, rimontare montate le partizioni e riavviare.
Leggendo la segnalazione e i commenti completi del bug si evidenzieranno alcune opzioni che potrebbero essere applicabili al proprio sistema.

L'effetto cumulativo di hardware, kernel, tastiere e maschere di bit diversi significa che sysrq si comporta in modo diverso per persone diverse.

Un metodo per ottenere l'output txt su come il sistema sta usando sysrq è applicare i comandi sysrq di tty (quando il sistema non soffre di blocchi / blocchi). Ciò potrebbe indicare che sysrq non è stato completamente disabilitato ma sta usando bitmask 176.

La ricerca di / proc / sys / kernel / sysrq su un desktop 13.04 amd64 liveDVD e un'installazione di desktop 13,0 amd64 conferma che l'impostazione predefinita è di lasciare sysrq su bitmask 176.

Se sysrq funziona per te; potrebbe valere la pena chiedere: "Se non avessi cambiato le impostazioni di 10-magic-sysrq allora: chi è stato?"

1 Come faccio a syscrq a comportarmi nel modo in cui voglio?

Quello che segue è un copia e incolla del link .

1.1 Qual è la chiave SysRq magica?

È una combinazione di tasti "magica" che puoi colpire a cui il kernel risponderà indipendentemente da qualsiasi altra cosa stia facendo, a meno che non sia completamente bloccato.

1.2 Come abilito il tasto magico 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, devi modificare il file /etc/sysctl.d/10-magic-sysrq.conf. per esempio 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 richiamate 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 

Puoi impostare il valore nel file con il seguente comando.

echo "number" >/proc/sys/kernel/sysrq

Quindi per abilitare completamente 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. Il richiamo di qualsiasi operazione tramite / proc / sysrq-trigger è sempre consentito (da un utente con privilegi di amministratore, vedi sotto).

1.3 Come uso il tasto SysRq magico?

Desktop di Ubuntu

Premi il tasto combo Alt + SysRq + tasto comando .

N.B .- Vedere le note in questa sezione e nella sezione Risoluzione dei problemi per altre possibili impostazioni predefinite per altri sistemi e tastiere.

È possibile impostare qualsiasi carattere di tua scelta: Tutte le architetture

Scrivi un carattere in / proc / sysrq-trigger:

echo t > /proc/sysrq-trigger

imposta il T si comporta come SysRq
Nota.
Alcune tastiere potrebbero non avere un tasto con l'etichetta SysRq . La chiave SysRq è anche nota come chiave Stampa schermo . Inoltre alcune tastiere non sono in grado di gestire tanti tasti contemporaneamente, quindi potresti avere più fortuna con Alt + SysRq - SysRq quindi premere tasto comando quindi rilascia tutto. Vedi la scrittura completa del QA che questa guida si basa sul link per ulteriori informazioni su questo.

1.4 Quali sono i tasti "command"?

'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 Ok, quindi cosa posso usarli per?

Un r aw è molto utile quando il tuo server X o un programma svgalib si blocca.

Sa k (Secure Access Key) è utile quando si vuole essere sicuri che non ci sia nessun programma trojan in esecuzione alla console che potrebbe prendere la password quando si tenta di accedere. Ucciderà tutti i programmi su una determinata console, assicurandoti così che il prompt di accesso che vedi sia in realtà quello di init, non del trojan. Altri lo trovano utile come (System Attention Key) che è utile quando vuoi uscire da un programma che non ti permette di cambiare console. (Ad esempio, X o un programma svgalib.)
Nota.
Nella sua vera forma non è un vero SAK come quello in un sistema compatibile con c2, e non dovrebbe essere confuso in quanto tale.

Re b oot è buono quando non sei in grado di spegnerlo.
Nota.
È generalmente considerato un buon metodo per u montare prima

È possibile utilizzare Crashdump per attivare manualmente un rashdump c quando il sistema è bloccato.
Nota.
Il kernel deve essere stato creato con CONFIG_KEXEC abilitato!

La sincronizzazione è ottima quando il tuo sistema è bloccato, ti permette di s ync i tuoi dischi e certamente ridurrà la possibilità di perdita di dati e fscking.
Attenzione
La sincronizzazione non ha avuto luogo finché non viene visualizzato "OK" e "Fatto" sullo schermo. (Se il kernel è davvero in conflitto, potresti non ricevere mai il messaggio OK o Fatto.

U mount è fondamentalmente utile allo stesso modo di S ync.

Gli loglevel 0 - 9 sono utili quando la tua console è inondata di messaggi del kernel che non vuoi vedere. Selezionando 0 si impediranno tutti i messaggi del kernel più urgenti di raggiungere la console.
Nota.
Verranno comunque registrati se syslogd / klogd è vivo

T e rm e k i ll sono utili se hai qualche tipo di processo di fuga che non puoi uccidere in nessun altro modo, specialmente se sta generando altri processi.
Nota.
Quando si verifica un errore nel kernel panic fare Alt + Sysrq + e quindi Alt + Sysrq + u quindi Alt + Sysrq + i e infine Alt + sysrq + b

1.6 Risoluzione dei problemi

1.6.1 Sospensione prima che gli initscripts vengano eseguiti

Se la macchina è sospesa prima che gli initscript possano essere eseguiti, avvia con sysrq_always_enabled=1

1.6.2 A volte SysRq sembra "bloccato" dopo averlo usato, cosa posso fare?

Toccando shift , alt e control su entrambi i lati della tastiera, e colpendo di nuovo una sequenza sysrq non valida riparerà il problema. (Ad esempio, qualcosa come alt + sysrq + z ).

Passaggio a un'altra console virtuale ( Ctrl + Alt + Fn1 - Fn6 ) e poi di nuovo < anche kbd> Ctrl + Alt + Fn7 dovrebbe essere d'aiuto.

1.6.3 Ho colpito SysRq , ma non sembra succedere nulla, cosa c'è che non va?

Ci sono alcune tastiere che inviano diversi scancodes per SysRq rispetto al 0x54 predefinito. Quindi se SysRq non funziona fuori dalla scatola per una determinata tastiera, esegui showkey -s per trovare la sequenza corretta di scancode. Quindi usa setkeycodes <sequence> 84 per definire questa sequenza sul solito codice SysRq (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 eventi chiave SysRq a un modulo, come funziona?

Per poter registrare una funzione di base con la tabella, devi prima includere l'intestazione include/linux/sysrq.h , questo definirà tutto il resto che ti serve. Successivamente, devi creare una struttura sysrq_key_op e popolarla con ...

  • La funzione di gestore di chiavi che userai.

  • Una stringa help_msg, che stamperà quando SysRQ stampa help

  • Una stringa action_msg, che verrà stampata subito prima del gestore chiamato. Il tuo gestore deve essere conforme al prototipo in "sysrq.h"

Dopo aver creato sysrq_key_op, puoi chiamare la funzione kernel register_sysrq_key (int key, struct sysrq_key_op * op_p); questo registrerà l'operazione puntata da 'op_p' alla chiave della tabella 'chiave', se quella fessura nella tabella è vuota. Al momento dello scaricamento del modulo, è necessario chiamare la funzione unregister_sysrq_key (int key, struct sysrq_key_op * op_p), che rimuoverà la chiave op indicata da 'op_p' dalla chiave 'key', se e solo se è correntemente registrata in quel fessura. Questo è il caso in cui lo slot è stato sovrascritto da quando lo hai registrato.

Il sistema Magic SysRq funziona registrando le operazioni chiave su una tabella di ricerca op chiave, che è definita in "drivers / char / sysrq.c". Questa tabella di chiavi ha un numero di operazioni registrate al suo interno in fase di compilazione, ma è mutabile e vengono esportate 2 funzioni per l'interfaccia ad esso register_sysrq_key e unregister_sysrq_key. Naturalmente, mai e poi mai lasciare un puntatore non valido nella tabella. ie; quando il modulo che ha chiamato register_sysrq_key () si chiude, deve chiamare unregister_sysrq_key () per ripulire la voce della tabella di chiavi sysrq che ha usato.
Nota.
I puntatori nulli nel tavolo sono sempre al sicuro.

Se per qualche ragione senti la necessità di chiamare la funzione handle_sysrq da una funzione chiamata da handle_sysrq, devi essere consapevole del fatto che sei in un lock (anche tu sei in un gestore di interrupt, il che significa che non dormi! ), quindi è necessario chiamare __handle_sysrq_nolock.

1.6.5 Conclusione

Usa Alt + SysRq + S e poi U e poi B per sincronizzare, provare a rimontare tutti i filesystem montati e quindi riavviare se necessario. Senza cambiare una cosa nei file di sistema.
Se Alt + SysRq + B non 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 O dopo la modifica / proc / sys / kernel / sysrq bitmask per abilitare il riavvio e lo spegnimento del sistema mediante l'uso di sysrq. Puoi farlo con uno dei metodi sopra descritti.

1.6.6 APPENDICE: Vedi anche - link e link

Per chi ha problemi con la tastiera Apple MacBook riguardo a sysrq vedere: link e link

Informazioni interessanti relative- Dopo aver guardato l'episodio del 17 08 2013 del programma della BBC "Fai clic su" e l'articolo "cyberwarfare" ha attirato la mia attenzione. Il programma ha anche il proprio sito web Fai clic se non riesci a guardare il programma. FAWC

    
risposta data geezanansa 13.04.2017 - 14:24
3

Mi sono imbattuto in questo l'altro giorno e ci sono voluti alcuni secondi per funzionare. Potrei aver persino fatto l'intera sequenza REISUB due volte.

Inoltre, assicurati di utilizzare la chiave sysrq (la maggior parte dei laptop richiede di tenere premuta la funzione, quindi stai davvero tenendo premuto 4 tasti contemporaneamente)

    
risposta data Scott Ritchie 02.11.2010 - 20:00
3

Alcuni anni fa usavo Alt + SysRq + S , U , B , O per riavviare o spegnere una macchina bloccata, perché come per te, Alt + SysRq + B a volte non voleva funzionare.

(Inoltre, ho bisogno di prendere l'abitudine di usare Alt + SysRq + E , I Per prima cosa non vedo molto l'uso di Alt + SysRq + R , perché la modalità tastiera è importante se si riavvia e resettarlo comunque?)

    
risposta data Marius Gedminas 03.11.2010 - 12:36

Leggi altre domande sui tag