Przycisk power ma nie zamykać systemu - Linux.
26 października, 2008
Zdarza się, że przypadkowe naciśnięcie przycisku power powoduje restart komputera. Szczególnie w laptopie przyciski te są na wierzchu, widoczne, a na dodatek w innym kolorze, co przyciąga dzieci i skłania je do interakcji (jeśli kiedykolwiek ktokolwiek będzie chciał wysadzić pół Europy, to wystarczy zaopatrzyć stosowną walizeczkę nuklearną w czerwony przycisk z napisem "nie dotykać" i zostawić milusińskiego sam na sam z tą walizką na kilkanaście minut...). Zabezpieczenie się przed tym w przypadku Linuksa jest bardzo proste...
Za obsługę zdarzeń ACPI w Debianie odpowiada acpid/, a pliki odpowiedzialne za obsługę poszczególnych zdarzeń znajdują się w katalogu /etc/acpi - czyli tradycyjnie.
Za zdarzenie naciśnięcia przycisku power odpowiedzialny jest skrypt /etc/acpi/powerbtn.sh. W przypadku, kiedy nie mamy zainstalowanego powersaved (nie mam), wystarczy prosta modyfikacja:
# If powersaved is running, let it process the acpi event if pidof powersaved; then exit 0 fi
zmieniamy na:
# If powersaved is running, let it process the acpi event if pidof powersaved; then exit 0 else logger "power button pressed - ignored on demand" exit 0 fi
Dzięki temu skrypt wrzuci do sysloga informację, że ktoś próbował wciskać power (do celów statystycznych oczywiście) i zakończy działanie.
Oczywiście w ten sposób tracimy możliwość awaryjnego restartu/wyłączenia systemu (TBH nie pamiętam, kiedy jej ostatnio potrzebowałem). Dłuższe przytrzymanie power w celu wyłączenia powinno działać (przetestuję niebawem), ale wypadałoby mieć jakąś alternatywę na "grzeczne" zamknięcie systemu.
Pierwsza metoda to ctrl-alt-del (o ile mamy aktywną obsługę tego). Druga to użycie Magic Key (oczywiście też o ile mamy aktywną obsługę...). "Grzeczny" reboot to (na podstawie powyższej strony):
- Alt+SysRQ+e (wysłanie sygnału TERM, procesy mogą się poprawnie zamknąć)
- Alt+SysRQ+u (zamontowanie zasobów w trybie tylko do odczytu)
- Alt+SysRQ+i (zabicie procesów, które nie zareagowały na sygnał TERM - odpowiednik kill -9)
- Alt+SysRQ+b (reboot)
Jeśli ktoś ma inne pomysły na zabezpieczenie systemu przed dziećmi i/lub informacje nt. wyłączenia obsługi przycisku power w przypadku korzystania z powersaved - proszę o informacje.
UPDATE: Z wielce irytujących rzeczy jest zabawa przez dziecię klawiszem Caps lock. Rozwiązanie (za tą stroną):
xmodmap -e "remove lock = Caps_Lock"
Entera na razie nie wyłączam... ;)
1. jam łasica napisał(a):
26 października 2008, 09:31:06
Po wciśnięciu przycisku power, mógłby się rozlegać jakiś głośny nieprzyjemny dźwięk. Wtedy dziecko rozpłacze się i ucieknie :P
2. Jazz napisał(a):
26 października 2008, 09:55:13
Kolega „jam łasica” chyba niedzieciaty. Moja córka jakoś tak tuż po skończeniu roku miała zabawę polegającą na podgłaszaniu wieży na maxa i przylatywaniu do mnie, żebym ściszył i tak przez pół godziny.
3. rozie napisał(a):
26 października 2008, 10:10:25
Dokładnie. Jest spora szansa, że się spodoba i dopiero dramat będzie…
4. Jakub Klawiter napisał(a):
26 października 2008, 10:25:57
Hmmm IMO...
1. Jak nacisnąć PowerBttn to wywala się dialog z pytaniem czy zamknąć system, można kliknąć Anuluj i wtedy plan szczwanej bestii spalony
2. Nie wiem jak u Was, ale mój hacker zostawiony sam na sam z komputerem ma gdzieś wciskanie power buttonów, jest zbyt zajęty wyrywaniem klawiszy z klawiatury …
5. RedHand napisał(a):
26 października 2008, 11:07:07
Rozie jak zwykle lubi „ułatwiać” sobie życie. Nie proście wyklikać to w ustawieniach zarządzania zasilaniem w środowisku graficznym? Ja akurat mam Gnoma i tam mogę sobie z rozwijanej listy ustawić co chcę aby się działo po kliknięciu powera… Ale wiem… Lubię sobie uprzykrzać życie klikaniem myszką.
:-)
6. kayo napisał(a):
26 października 2008, 11:12:30
Kajtek zamiast wciskać Power woli zalogować się i oglądać Bolka i Lolka na YT;-)
http://kayo.jogger.pl/2008/09/27/kajtek-i-debian-lenny/
7. rozie napisał(a):
26 października 2008, 11:17:06
Jakub Klawiter: Bez problemu można podpiąć tę akcję, co przy kliknięciu KDE-owego „zamknij”, tym bardziej, że nawet wykrywanie uruchomienia trybu graficznego jest w skrypcie (niżej, nie wklejałem tego fragmentu).
RedHand: W KDE (3.5) nie ma/nie widzę/nie działa. Niestety. Poza tym, takie rozwiązanie jest uniwersalne. ;)
8. Livio napisał(a):
26 października 2008, 12:42:45
O, a w GNOME jest opcja w „kaplecie” zasilania „kiedy został wciśnięty klawisz zasilania” :) .
Nazwa paskudna, no, ale opcja jest i działa ^^ .
9. D4rky napisał(a):
26 października 2008, 13:17:34
rozie demand -> rozie’s demand
A tak w ogóle to interesujące podejście do problemu, ale jeśli dziecko przytrzyma przycisk to jest większy ból :P
Co do MagicSysRQ – najpopularniejsze jest Alt+SysRQ+R-E-I-S-U-B
R – przestawienie klawiatury na tryb domyślny (przydatne jeśli masz np włączonego DVORAKa)
E – prosi procesy o wyłączenie
I – prosi BEJZBOLEM procesy o wyłączenie
S – synchronizuje dyski
U – przemontowuje w trybie ro (wtedy też robi sync, ale lepiej mieć pewność)
B – reboot.
Zamiast B można jeszcze O, wtedy nie zrestartuje, a wyłączy.
10. rozie napisał(a):
26 października 2008, 18:36:44
D4rky: Dzięki. I „ignoring” powinno być. Wywalam „rozie” – nieprzenośne. ;)
Jakby miało przytrzymać, to zdążę zareagować. Naciśnięcie drastycznie taką możliwość reakcji ogranicza. ;)
Co do sysrq – wystarczą te podane. Sync jest robiony i tak…