ЗАВИСАНИЕ СИСТЕМЫ

Мои друзья, зная мой интерес к таким вещам, выслали мне один интересный документ. Привожу небольшую часть, может быть кому-нибудь и пригодится. Надеюсь, что за большой объем текста, меня не наругают.
Зависание системы
Хотя большинство ошибок в коде ядра приводят к сообщению “oops”, иногда, вы можете полностью повесить систему. Если система повисла, то никаких сообщений напечатано быть не может. Например, если код ядра вошел в бесконечный цикл, то в ядре перестает работать диспетчер переключения задач, и система перестает реагировать на все внешние воздействия, включая “магическую” комбинацию CTRL+ALT+DEL. Ваше отношение к зависанию системы, как и к всему остальному, может быть выражено одним из двух вариантов – либо вы предотвратите это заблаговременно, либо будете отлаживать это по факту возникновения.
…........ лишнее убрал...........
Иногда может создаться видимость зависания системы. Это может случиться, например, если клавиатура окажется блокированной каким-то странным способом. Такие ложные зависания могут быть определены с помощью специальной программы, которая занимается непрерывным выводом какой-нибудь информации. Например, вывод системных часов, один из удачных вариантов такой программы – если показания часов изменяются, значит диспетчер задач продолжает работать. Если вы не использует графический десктоп, то проверку работы диспетчера можно осуществить с помощью программ, которые вызывают мигание светодиодов на клавиатуре, включают и выключают двигатель на флоппи-дисководе, или управляют спикером. Последнее действует особенно раздражающе, поэтому лучше познакомиться с ioctl-командой KDMKTONE. Пример программы (misc-progs/heartbeat.c), которая моргает светодиодами клавиатуры в ритме сердцебиения доступна в источниках на FTP-сайте O'Reilly.
Если клавиатура не принимает ввод, то можно попробовать соединиться к вашей системе по сети и убить все подозрительные процессы, или сбросить клавиатуру через kdb_mode -a. Однако, если сеть вам не доступна, то от наблюдения зависания вашего компьютера по блокировке клавиатуры не принесет много пользы. В этом случае, вам желательно иметь какое-нибудь альтернативное устройство ввода, чтобы иметь возможность, хотя бы, аккуратно перегрузить систему. Это, в любом случае, лучше, чем вызов перезагрузки компьютера какой-нибудь кнопкой на системном блоке, после которой вы будете вынуждены выждать время отработки программы проверки файловой системы fsck.
Таким альтернативным устройством может быть мышь. Начиная с версии 1.10, сервер консольной мыши gpm, через параметры командной строки предлагает такую возможность, но это работает только в текстовом режиме.
Наверное единственным исключительным инструментом в таких ситуациях является “магическая” клавиша SysRq, которая доступна на большинстве архитектур под ядром 2.2 и выше. Такая возможность вызывается комбинацией ALT+SysRq на клавиатуре PC и комбинацией ALT+Stop на клавиатурах SPARC. Третья клавиша, которую необходимо нажать после этих двух, вызывает то, или иное полезное действие. Приведем список некоторых возможных “третьих” клавиш:
r
Выключает режим “сырого” ввода в ситуациях, когда вы не можете запустить kbd_mode. k
Вызывает функцию “secure attention” (SAK). SAK убивает все процессы, запущенные с текущей консоли, оставляю вас с “чистым” терминалом.
s
Выполняет критическую (emergency) синхронизации для всех дисков.
u
Попытка перемонтировать все диски в режиме read-only. Эта операция, обычно вызывается сразу же после s, и поможет вам избежать потери времени на проверку файловой системы при возникновении серьезных проблем в системе.
b
Немедленная перезагрузка системы. Будьте уверены, что предварительно вы выполнили синхронизацию и перемонтирование дисков.
p
Печатает текущее состояние регистров
t
Печатает текущий список задач
m
Печатает информацию по использованию памяти
Существуют и другие третьи клавиши SysRq. Полных список смотрите в файле sysrq.txt каталога Documentation источников ядра. Заметьте, что такое SysRq-волшебство должно быть явно разрешено в конфигурации ядра. Большинство дистрибутивов включают эту возможность по соображениям безопасности. Эту возможность можно разрешить во время работы ядра следующей командой:
echo 1 > /proc/sys/kernel/sysrq
Другая предосторожность, которую нужно выполнять при воспроизведении зависания системы заключается в монтировании всех дисков в режиме read-only (или не монтировать ненужные файловые системы вообще). Если диски примонтированы в режиме read-only, или не примонтированы вообще, то отсутствует риск повреждения файловой системы. Также, можно монтировать все файловые системы через NFS (network file system – сетевая файловая система). При этом, в конфигурации ядра должно быть разрешено монтирование “NFS-Root” и, необходимо передать специальные параметры ядру при загрузке. В этом случае, вы избежите повреждение файловой системы даже без использования SysRq-комбинаций.
Ошибки не исчезают с опытом - они просто умнеют
С год назад пользовался Alt+SysRq+k, эта комбинация убивала иксы и давала консоль, сейчас эта комбинация после убийства иксов дает черный экран, и нет возможности переключится в соседнюю консоль по Alt+F(x).
Кроме того такая комбинация серъезная дыра в безопасности, как мне кажется :) - неаунитифицированный локальный пользователь сможет вызвать отказ в работе системы :)
Меня пока берегло, уже писал об этом раньше. Дальше “oops” не выходило - всегда удавалось попасть в консоль по Alt+F(n).
PS - а насчет дыры, если локально, то защиты от проникновения в компьютер нет. Сейчас используется, узким кругом лиц, совсем другой способ защиты информации, совсем противоположный ее назначению - уничтожение информации + к этому расстановка ловушек.
Просто смешно смотреть как показывают по телевизору - люди в масках врываются в офис и изымают диски. Ну не ужели фирма, ворочающая миллионами и миллиардами, не потратит несколько десятков или сот тысяч на защиту наиболее важной (открытой к доступу) информации (читай здесь уничтожение)
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.