Hlavní navigace

Kouzelná klávesa aneb PrintScreen jak ho neznáte

Petr Baudiš

Už je to asi opravdu dlouho co jste naposledy stiskli PrintScreen, pamatujete ještě? Vedle ScrollLocku a Pause se krčí ona klávesa, a často nese i druhou popisku, a to SysRq, což znamená Systém Request, neboli 'Požadavek systému' - prostě chcete dát svému milovanému OS najevo, že od něj chcete něco víc krom půlhodinového chrochtání disku. Avšak SysRq má v Linuxu mnoho netušených možnosti, o kterých se obyčejné ve většině manuálu nedozvíte...

Tato klávesa je vůbec velice zvláštní, když ji totiž normálně zmáčknete, nestane se vůbec nic. Aby se jen ona klávesa dostala od klávesnice do počítače, musíte zmáčknout Alt+SysRq. Pokud byste to udělali pod DOSem, udělá se normálně to, co byste také od PrintScreen čekali – takže se vám na papíře ocitne výpis obrazovky (když se to podaří – takový Norton Commander vypadá dosti hrozně, nezkoušejte to). Ale co se stane třeba v Linuxu? Rovnou si odpovíme: nic ;-).

A teď bychom mohli skončit, pokud bych tento článek ovšem psal před rokem 1997 – Linux totiž přesto tuto klávesu podporuje a dá se s ní dělat spousta užitečných věcí. Počítač je přetížený? Či jste ho natolik zmučili, že už vás prostě ignoruje? Je vám líto vašeho filesystému, a tak s rukou na resetu přemýšlíte co dělat? A teď s triumfálními fanfárami nastupuje právě klávesa SysRq. Pokud ve vašem jádru ještě stále bliká alespoň drobounké světélko života, a ještě stále je schopno si přečíst, co mu píšete na klávesnici, jste schopni díky SysRq například ukončit (poslat SIGTERM) či zavraždit (SIGKILL) všechny procesy puštěné na aktuální konzoli, všechny procesy obecně, či dokonce všechny procesy včetně initu (nedělejte to moc často), a hlavně synchronizovat všechny filesystémy, případně je ještě odmontovat (resp. remountovat jako r/o). Můžete se také zkusit vzpamatovat z podivného přenastavení klávesnice či monitoru nějakým zlým programem (vivat svgalib či dosemu), prohlédnout si registry, alokaci paměti či seznam procesů, změnit level logování (co vše vám jádro píše drze přímo do konzole), nebo rovnou rebootovat či shutdownovat, a to vše kdykoli je jádro ještě alespoň v trochu provozuschopném sta­vu…

Líbí se vám to? Ale jak na to, říkáte. Aby to vůbec mohlo fungovat, musíte mít zkompilované jádro s podporou ‚magic SysRq key‘, kteroužto naleznete v poněkud útlé sekci konfigurace jménem Kernel hacking (ono tam nic jiného krom toho SysRq stejně není, takže to snad najdete). Pokud nevíte, jestli to váš předkompilovaný kernel umí, vyzkoušejte níže uvedený postup a uvidíte sami…

Takže máte pod rukama kernel s podporou SysRq, tak si to hned vyzkoušíme. Přepněte do nějaké konzole v textovém režimu a s nějakou rozumnou aplikací (např. logovací konzole bude ideální), a stiskněte Alt+SysRq, podržte a zároveň stiskněte například ‚h‘. Měl by se vám vypsat krátký helpík, který vám řekne co vše SysRq umí – pokud se nevypíše, zkuste to bez Alt, jestli to stále nejde, asi to s tou podporou SysRq ve vašem jádře nebude tak žhavé – ale doufám že jsem vás navnadil tak, že při příští kompilaci vašeho kernelu si tuto podporu zapnete (kernel se zvětší nepatrně a nezpomalí prakticky vůbec – doufám ovšem jen že máte jádro nějaké rozumné verze).

A teď si můžete začít hrát. Alt+SysRq+S vám udělá to stejné jako příkaz ‚sync‘, U vám udělá to stejné jako ‚mount -o remount -r -a‘, tedy přepne všechny připojené filesystémy na readonly, takže se jim při rebootu nic zlého nastane. P vám zobrazí obsah všech registrů, T seznam všech procesů (dosti rozvleklý), M přehled o použité paměti, E se pokusí ukončit všechny procesy, I je zavraždí, a L zavraždí i init. Pokud chcete killnout jen proces který právě běží na současné konzoli (a nenechá vás přepnout jinam – opět vivat dosemu, svgalib a Xy), zmáčkněte K (ono tajemné SAK znamená System Attention Key ;-)). R přepne mód klávesnice z přímého (raw) do XLATu, tzn. o klávesnici se opět stará jádro a ne váš program – opět vivat zhavarované svgalib či X. Čísílka 0–8 určují co vše se vám bude psát na konzoli (0: nic [skoro], 8: vše), a konečně Béčkem váš computer rebootujete a (pokud je to podporováno a nakonfigurováno) Očkem ho vypnete.

Takže hodně štěstí s vaší novou hračkou a hlavně moc nemačkejte Alt+SysRq+L či B… Originální dokumentaci a povídání okolo si můžete přečíst v /usr/src/linux/Do­cumentation/sys­rq.txt, zdrojáky pro otrlé jsou /usr/src/linux/dri­vers/char/key­board.c a /usr/src/linux/dri­vers/char/sys­rq.c. A perlička na konec (buďme také trochu patrioti) – napsal to (podobně jako spousta dalších užitečných věciček) chudý český student Martin Mareš ;-).

Našli jste v článku chybu?