АТРИБУЦІЇ :
https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key, яка базувалася на оригінальній роботі "
Кредити"
Автор: Mydraal
Оновлено Адам Сулміцький
Оновлено Джеремі М. Долан 2001/01/28 10:15:59
Додано до Ратчер Даннаван
https://askubuntu.com/a/11194/102029 mneiss надав посилання для LaunchPad.
Зміст
Що таке sysrq?
Чому RESIUB (O) не працює?
1 Як змусити sysrq поводитись так, як я хочу?
1.1 Що таке магічний ключ SysRq?
1.2 Як увімкнути чарівну клавішу SysRq?
1.3 Як використовувати магічну клавішу SysRq?
1.4 Що таке "командні" клавіші?
1.5 Гаразд, для чого я можу їх використовувати?
1.6 Виправлення неполадок
1.6.1 Підвішування перед тим, як розпочати запуск
інциклітів 1.6.2 Іноді SysRq здається, що він "застряг" після його використання, що я можу зробити?
1.6.3 Я натиснув SysRq, але, здається, нічого не трапиться, що не так?
1.6.4 Я хочу додати ключові події SysRQ до модуля, як це працює?
1.6.5 Висновок
1.6.6 ДОДАТОК
Примітка.
Ви можете скористатись Ctrl+, Fщоб корисно використовувати зміст.
Що таке SysRq?
Загальновідомий і застосовуваний метод відновлення використання машини після її заморожування або блокування з обмеженням ризику пошкодження диска, що призводить до пошкодження або втрати даних системних файлів, - це використовувати
Alt+ SysRq+, rа потім sі потім, eі потім, iі потім, uі потім, bі / або за потреби ( o)
Це не спрацювало, як очікувалося для багатьох (тобто я та Джеймс) завдяки різним смакам від> = 8.04LTS до поточного релізу 13.04.
Чому RESIUB (O) не працює?
Розглянемо цей опис помилки, знайдений у LaunchPad Bug 194676 :
Опис проблеми:
За замовчуванням SysRq увімкнено за замовчуванням на настільних системах Ubuntu, що є безцінним, коли система заблокується, і ви хочете зупинити її якомога обережніше або налагоджувати проблему. Однак багато людей дивуються, що ви також можете попросити його скинути вміст поточної пам'яті на консоль (або dmesg), хоча тільки з клавіатури.
openSUSE встановлює біт-маску за замовчуванням 176 на своєму SysRq, що за замовчуванням обмежує синхронізацію, перезавантаження та "перезавантаження лише для читання". Це зупиняє людей, що використовують sysrq за замовчуванням, щоб перевірити пам'ять, яка звучить розумно.
Розробники Ubuntu побачили необхідність зробити щось з цього приводу, і найкращим рішенням, враховуючи можливі ускладнення згаданого спостереження, є застосування бітової маски 176 sysrq за замовчуванням, що створює необхідність у введенні користувача для встановлення sysrq за своїм бажанням. Bitmask 176 тільки дозволяє S, U, Bщо синхронізація, перемонтувати змонтовані розділи та перезавантаження.
Читаючи повний звіт про помилки та коментарі, виділяються деякі варіанти, які можуть бути застосовні до вашої системи.
Накопичувальний вплив різних апаратних засобів, ядер, клавіатур і бітмасок означає, що sysrq поводиться по-різному для різних людей.
Одним із способів отримання виводу txt щодо того, як ваша система використовує sysrq, є застосування команд sysrq від tty (коли система не страждає від блокування / заморожування). Це може означати, що sysrq не був повністю відключений, але використовується бітова маска 176.
Пошук / proc / sys / kernel / sysrq на 13.04 робочому столі amd64 liveDVD та встановлення amd64 на робочому столі 13.04 підтверджує, що за замовчуванням в даний час залишається sysrq за бітною маскою 176.
Якщо sysrq працює для вас; можливо, варто запитати: "Якщо я не змінив налаштування 10-магічного sysrq; хто це зробив?"
1 Як змусити sysrq поводитись так, як я хочу?
Далі йде відредагована копія та вставка https://fedoraproject.org/wiki/QA/Sysrq .
1.1 Що таке магічний ключ SysRq?
Це "магічне" клавішне комбінація, на яке ядро може реагувати, незалежно від того, що воно робить, якщо тільки воно не заблоковано повністю.
1.2 Як увімкнути чарівну клавішу SysRq?
sysrq вбудований у ядро Ubuntu, але відключений під час завантаження за замовчуванням, використовуючи 10-magic-sysrq.conf.
Щоб знову включити його під час завантаження, потрібно відредагувати файл /etc/sysctl.d/10-magic-sysrq.conf. тобто коментування цього рядка дозволить виконувати всі функції sysrq:
# 1 - enable all functions of sysrq
Під час запуску ядра з SysRq, складеного в, / proc / sys / kernel / sysrq контролює функції, дозволені для виклику за допомогою ключа SysRq. Ось список можливих значень у / 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
Ви можете встановити значення у файлі за допомогою наступної команди.
echo "number" >/proc/sys/kernel/sysrq
Тож повністю включити це було б.
echo "1" > /proc/sys/kernel/sysrq
Або також можна це зробити.
sysctl -w kernel.sysrq=1
Примітка.
Значення / proc / sys / kernel / sysrq впливає лише на виклик за допомогою клавіатури. Запрошення на будь-яку операцію через / proc / sysrq-тригер завжди дозволено (користувачем з правами адміністратора (див. Нижче)).
1.3 Як використовувати магічну клавішу SysRq?
Ubuntu Desktop
Ви натискаєте клавішу комбі Alt+ SysRq+ command key.
Примітка. Див. Примітки в цьому розділі та в розділі "Виправлення неполадок" для інших можливих налаштувань за замовчуванням для інших систем та клавіатур.
Можна встановити будь-який символ на ваш вибір: Усі архітектури
Напишіть символ на / proc / sysrq-тригер:
echo t > /proc/sysrq-trigger
встановив би Tсебе як SysRq
Note.
На деяких клавіатурах може не бути маркованих ключів SysRq. SysRqКлюч також відомий як Print Screenключ. Також деякі клавіатури не можуть обробляти стільки клавіш, які одночасно натискати, тож вам може бути більше удачі з Alt+ SysRq- SysRqтоді натисніть, command keyа потім відпустіть усе. Детальну інформацію про це див. У повному обсязі написання якості, на основі якого посібник заснований на https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key.3F .
1.4 Що таке "командні" клавіші?
'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.
Примітка.
Дивіться важливі коментарі нижче в розділі 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 Гаразд, для чого я можу їх використовувати?
Un raw дуже зручно, коли ваш сервер X або програма svgalib виходить з ладу.
Sa k(ключ безпечного доступу) корисний, коли ви хочете бути впевненим, що на консолі не працює троянська програма, яка могла б захопити ваш пароль при спробі входу. Це знищить усі програми на даній консолі, тим самим дозволить вам переконатися, що підказка для входу, яку ви бачите, є насправді тією, що є з init, а не з якоюсь троянською програмою. Інші вважають це корисним як (System Key Key), що корисно, коли ви хочете вийти з програми, яка не дозволить вам перемикати консолі. (Наприклад, X або програма svgalib.)
Примітка.
У своїй справжній формі це не справжній SAK, як той, що відповідає системі c2, і він не повинен помилятися як такий.
Re boot добре, коли ви не можете закрити.
Примітка.
Загальноприйнятою вважається хороша практика uмонтуватися спочатку
Crashdump можна використовувати для вручну запускати cрашдамп, коли система підвішена.
Примітка.
Ядро потрібно створити з увімкненою CONFIG_KEXEC!
Синхронізація чудова, коли ваша система заблокована, вона дозволяє sсинхронізувати ваші диски і, безумовно, зменшить шанс втрати даних і fscking.
Попередження
Синхронізація не відбулася, доки на екрані не з’являться "ОК" та "Готово". (Якщо ядро справді перебуває у сутичці, ви, можливо, ніколи не отримаєте повідомлення ОК чи Готово.
Umount в основному корисний тими ж способами, що і Sync.
Ескізи 0- 9корисні, коли вашу консоль заливають повідомленнями ядра, які ви не хочете бачити. Вибір 0не дозволить усім конфігураційним повідомленням ядра потрапити на вашу консоль.
Примітка.
Вони все ще будуть записані, якщо syslogd / klogd живі
T erm і k ill корисні, якщо у вас є якийсь утікаючий процес, ви не можете вбити іншим способом, особливо якщо це нерест інших процесів.
Примітка.
Якщо у вас виникає паніка ядра, зробіть Alt+ Sysrq+, eпотім Alt+ Sysrq+, uпотім Alt+ Sysrq+ iі, нарешті, Alt+ Sysrq+b
1.6 Виправлення неполадок
1.6.1 Вішання перед запуском підписів
Якщо машина зависає до того, як Initscripts запуститься, завантажтеся sysrq_always_enabled=1
1.6.2 Іноді SysRq здається, що він "застряг" після його використання, що я можу зробити?
Дотик shift, altі controlпо обидва боки від клавіатури, і вражаючи неприпустиму послідовність SYSRQ знову буде вирішити цю проблему. (тобто щось на зразок alt+ sysrq+ z).
Переключення на іншу віртуальну консоль ( Ctrl+ Alt+ Fn1- Fn6), а потім знову Ctrl+ Alt+ Fn7також має допомогти.
1.6.3 Я вдарив SysRq, але, здається, нічого не трапиться, що не так?
Існують деякі клавіатури, які надсилають різні SysRqкоди сканування, ніж попередньо визначені 0x54. Тож якщо SysRqпевна клавіатура не спрацьовує, запустіть, showkey -s
щоб з’ясувати правильну послідовність сканування. Потім використовуйте setkeycodes <sequence> 84
для визначення цієї послідовності звичайний SysRqкод (84 - десятковий для 0x54). Мабуть, найкраще ввести цю команду в сценарій завантаження.
Попередження
Ви виходите showkey
, не вводячи нічого протягом десяти секунд.
1.6.4 Я хочу додати SysRqдо модуля ключові події, як це працює?
Для того, щоб зареєструвати основну функцію в таблиці, спочатку потрібно включити заголовок include/linux/sysrq.h
, це визначатиме все, що вам потрібно. Потім потрібно створити структуру sysrq_key_op і заповнити її за допомогою ...
Функція обробника ключів, яку ви будете використовувати.
Рядок help_msg, який буде надрукований, коли SysRQ друкує довідку
Рядок action_msg, який буде надрукований безпосередньо перед викликом вашого обробника. Ваш обробник повинен відповідати прототипу в 'sysrq.h'
Після створення sysrq_key_op ви можете викликати функцію ядра register_sysrq_key (ключ int, структура sysrq_key_op * op_p); це зареєструє операцію, на яку вказує 'op_p', при клавіші таблиці 'ключ', якщо цей слот у таблиці порожній. Під час розвантаження модуля необхідно викликати функцію undegister_sysrq_key (ключ int, struct sysrq_key_op * op_p), яка видалить ключ op, на який вказує 'op_p', з ключа 'key', якщо і лише якщо він наразі зареєстрований у цій виїмка. Це в тому випадку, якщо слот було перезаписано з моменту його реєстрації.
Система Magic SysRqпрацює, реєструючи ключові операції у таблиці пошуку операційного ключа, яка визначена у "драйверах / char / sysrq.c". Ця ключова таблиця має ряд операцій, зареєстрованих у ній під час компіляції, але є змінною, і для функцій інтерфейсу до неї експортуються 2 функції register_sysrq_key та undegister_sysrq_key. Звичайно, ніколи не залишайте недійсний покажчик у таблиці. тобто; коли ваш модуль, який викликав register_sysrq_key (), виходить, він повинен викликати undegister_sysrq_key (), щоб очистити запис таблиці ключових sysrq, який він використовував.
Примітка.
Нульові вказівники в таблиці завжди безпечні.
Якщо ви з якоїсь причини відчуваєте необхідність викликати функцію handle_sysrq з-за функції, яку викликає handle_sysrq, ви повинні знати, що ви перебуваєте в блокуванні (ви також перебуваєте в обробці переривань, а це означає, що не спите!), Так Ви повинні замість цього зателефонувати __handle_sysrq_nolock.
1.6.5 Висновок
Використовуйте Alt+ SysRq+, Sа потім Uі потім, Bщоб синхронізувати, спробуйте повторно встановити всі змонтовані файлові системи, а потім, якщо потрібно, перезавантажте. Без зміни речі на системні файли.
Якщо Alt+ SysRq+ Bне перезавантажує систему, можливо, доведеться відредагувати /etc/sysctl.d/10-magic-sysrq.conf, щоб дозволити спробу застосувати Alt+ SysRq+ B(або / та Oпісля редагування / proc / sys / kernel / sysrq бітова маска для ввімкнення перезавантаження та відключення системи за допомогою sysrq. Ви можете це зробити будь-яким із описаних вище способів.
1.6.6 ДОДАТОК:
Дивіться також - http://ubuntuforums.org/showthread.php?t=617349 та https://www.kernel.org/doc/Documentation/sysrq.txt
Тим, хто має проблеми з клавіатурою Apple MacBook щодо sysrq, див: https://help.ubuntu.com/community/AppleKeyboard та https://bugs.launchpad.net/mactel-support/+bug/262408
Відносна цікава інформація - Після перегляду 17 серпня 2013 року епізоду програми BBC "Клацніть" та статті "Кібервійни" дійсно привернула мою увагу. У програмі також є власний веб-сайт Клацніть, якщо ви не можете переглянути програму. FAWC