Disassembler

Artificial intelligence is no match for natural stupidity.
10října2012

Kouzelný SysRq


Tak schválně, kolikrát jste za poslední týden použili klávesu SysRq? Tedy za předpokladu, že na vaší klávesnici vůbec nějaká taková je, protože někteří výrobci její funkci na klávese s printscreenem nejen nepopisují, ale pro jistotu ji ani neimplementují. Systém requesty jsou přitom nesmírně užitečné při řešení závažných problémů na *nixových strojích.

Jaderná klávesa


V počítačovém pravěku, kdy většina aplikací pracovala na základní systémové úrovni a často úplně obcházela operační systém, bylo potřeba celou tu prasečinu nějak spolehlivě řídit. Posílání interruptů se zdálo být tím pravým řešením a právě to byl původní úkol SysRq klávesy. Dnes SysRq sice také složí ke komunikaci se systémovým jádrem, ovšem nikoliv jako iniciátor přerušení, ale jako modifikační klávesa k vytváření mocných klávesových zkratek.

K tomu, aby váš kernel SysRq klávesové zkratky akceptoval, musí být zkompilován s možností CONFIG_MAGIC_SYSRQ a v sysctl mít nastaven parametr kernel.sysrq na hodnotu vyšší než 0. Tedy za předpokladu, že používáte kernel ve verzi 2.6.12 nebo vyšší, kde lze možnosti SysRq nastavovat pomocí bitmasky. V nižších verzích existovalo pouze vypnuto/zapnuto.

Noty


Velice užitečná sekvence pro zakousnuté a zdánlivě mrtvé systémy je REISUB, tedy unRaw, tErminate, kIll, Sync, Unmount, reBoot. Oblíbená mnemotechnická pomůcka k této sekvenci je „Reboot Even If System Utterly Broken“, což pěkně vystihuje i její smysl.

Vzdálený SysRq


A až vás někdo, komu podpíráte servery, pořádně naštve, můžete mu mašinu pomocí SysRq crashnout i na dálku. Bonusové body dostanete, pokud server jede bez KVM a je umístěn v nějaké obtížně dostupné lokalitě.

Řídící znak pak SysRq triggeru pošlete následovně:

echo "c" > /proc/sysrq-trigger

Ovšem vzhledem k tomu, že SysRq počítá s výpisy do místních a nikoliv vzdálených konzolí, velmi pravděpodobně kýžený výstup na druhé straně SSH neuvidíte. Zběsile zvonící telefon ale bude známkou úspěchu.