Ubuntu + PrtSc + AltGr = CRASH


2

लेनोवो t440p पर उबंटू 15.10 और 15.04 पर, जब मैं नेटबीन्स में एक कोड लिख रहा हूं और गलती से बटन पर क्लिक करता हूं AltGrऔर PrtScउसी समय यह क्रैश हो जाता है और रिबूट सिस्टम होता है। यह ताजा स्थापित उबंटू के साथ कार्रवाई नहीं करता है।

यह syslog से बैकट्रेस है:

Feb  5 19:47:43 mycomputername kernel: [   15.485327] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:44 mycomputername kernel: [   16.966879] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:44 mycomputername kernel: [   17.115697] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:44 mycomputername kernel: [   17.115844] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:45 mycomputername kernel: [   17.644247] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:45 mycomputername kernel: [   17.829425] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:46 mycomputername kernel: [   18.698713] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:47 mycomputername kernel: [   20.033534] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:48 mycomputername kernel: [   21.061323] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)

मैं लेनोवो कीबोर्ड पर PrintScreen पर क्लिक करके PrtSc को कैसे अक्षम कर सकता हूं या रोक सकता हूं? या इस backtrace पर क्या समस्या है?

धन्यवाद

जवाबों:


3

समस्या:

आपके कीबोर्ड पर, Print Screen (PrtSc)और System Request (SysRq)एक ही भौतिक बटन पर हैं, जैसे कि अधिकांश लेआउट पर मुझे पता है।

मुख्य संयोजनों Alt+ SysRq+ [SPECIFIC LETTER]को आमतौर पर मैजिक SysRq कमांड के रूप में जाना जाता है जो सीधे कर्नेल को कमांड भेजते हैं।

वे मुख्य रूप से एक ठंडे रीसेट के लिए एक सुरक्षित विकल्प के रूप में उपयोग किए जाते हैं यदि सिस्टम पूरी तरह से दुर्घटनाग्रस्त हो जाता है, क्योंकि उदाहरण के लिए नुकसान और डेटा भ्रष्टाचार को रोकने और रीसेट / रिबूट करने के लिए फ़ाइल सिस्टम को सिंक और अनमाउंट करने के आदेश हैं (यदि आप B3 कुंजी के रूप में दबाते हैं ) या बिजली बंद (3 कुंजी O)। अधिक जानकारी और संयोजनों की पूरी सूची, यहां तक ​​कि विभिन्न कीबोर्ड लेआउट के संबंध में, संबंधित विकिपीडिया लेख मैजिक SysRq कुंजी में पाया जा सकता है ।

तो आप गलती से क्या कर रहे हैं सीधे कर्नेल को रीबूट करने के लिए कमांड भेजना है, और यही वह करता है।


समाधान:

आपके कर्नेल को कैसे संकलित किया गया था , इस पर निर्भर करते हुए , आप हालांकि यह निर्दिष्ट करने में सक्षम हैं कि सिस्टम चालू होने पर कर्नेल को सुनना चाहिए। मैंने 4.2.0-27-genericइसे 15.10 पर कर्नेल के साथ परीक्षण किया और इसने काम किया, लेकिन यह कब से या किस कर्नेल के लिए सक्षम है, यह सीखना अच्छा होगा। अगर आपको पता हो तो कृपया कमेंट करें

  • वर्तमान SysRqकमांड फ़िल्टर मान ज्ञात करें :

    हम सीख सकते हैं कि SysRqवर्तमान में वर्चुअल फ़ाइल की सामग्री की जाँच करके कौन सी कमांड सक्षम हैं /proc/sys/kernel/sysrq:

    cat /proc/sys/kernel/sysrq
    

    परिणाम एक ऐसी संख्या होगी जिसकी व्याख्या इस प्रकार की जानी चाहिए:

    0 - disable SysRq
    1 - enable SysRq completely
    >1 - bitmask of enabled SysRq functions:
        2 - control of console logging level
        4 - control of keyboard (SAK, unraw)
        8 - debugging dumps of processes etc.
        16 - sync command
        32 - remount read-only
        64 - signalling of processes (term, kill, oom-kill)
        128 - reboot/poweroff
        256 - nicing of all RT tasks
    

    डेस्कटॉप पर होने पर मेरा डिफ़ॉल्ट मान है 176, जो है 128+32+16। तो ऊपर दी गई तालिका के अनुसार, मैं रिबूट, पावरऑफ, सिंक और रिमाउंट फाइल सिस्टम को केवल पढ़ने के लिए कर सकता हूं।

  • सभी SysRqआदेशों को अक्षम करें :

    नीचे दिए गए आदेश पर अमल और क्या कोशिश SysRqशॉर्टकट अभी भी बाद में काम करते हैं (उदाहरण के लिए Alt+ SysRq+ B/ रिबूट रीसेट करने के लिए):

    echo 0 | sudo tee /proc/sys/kernel/sysrq
    

    SysRqजब तक आप अगली बार रिबूट नहीं करते हैं, तब तक इसे वर्तमान सत्र के लिए सभी कमांड को अक्षम करना चाहिए ।

  • सभी SysRqआदेश सक्षम करें :

    सभी SysRq आदेशों को मैन्युअल रूप से सक्षम करने के लिए , हम 1इसके बजाय उसी वर्चुअल फ़ाइल पर मान लिखते हैं :

    echo 1 | sudo tee /proc/sys/kernel/sysrq
    
  • पिछला डिफ़ॉल्ट SysRqकमांड फ़िल्टर सक्षम करें :

    आप अपने डिफ़ॉल्ट कॉन्फ़िगरेशन को रिबूट करके, या यदि आपने चेक किया और इसे ट्विक करने से पहले मान को याद किया है, तो आप उस मूल्य को फिर से सेट कर सकते हैं 0/ 1सक्षम करने के लिए / सभी आदेशों को अक्षम करने के लिए।

    इसलिए मेरे मामले में जहां मूल मूल्य था 176, मैं चलाऊंगा:

    echo 176 | sudo tee /proc/sys/kernel/sysrq
    

1
आपका समाधान केवल अगले रिबूट तक होता है। /etc/sysctl.d/10-magic-sysrq.confफ़ाइल को संपादित करने के लिए उचित स्थायी समाधान है ।
रुस्लान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.