Linux
Шрифт:
Проблемы с запуском программ
В этом разделе рассматриваются вопросы устранения проблем, возникающих при попытке запуска различных программ. Обычно такого плана проблемы возникают при неверно установленных правах доступа или отсутствующих системных библиотеках, необходимых данной программе.
Повреждение или удаление разделяемых библиотек
В случае повреждения разделяемых библиотек операционную систему, как правило, можно будет перезагрузить только с помощью аварийной загрузочной дискеты.
Поскольку работа всех компонентов операционной системы Linux полностью зависит от разделяемых библиотек, в случае их отсутствия или повреждения ни одну из обычных команд и утилит выполнить невозможно. В последних версиях Linux лишь очень небольшое количество программ связано с библиотеками статически. Именно по этой причине стандарт File Hierarchy Standard (Стандарт иерархии размещения файлов) требует, чтобы каталог /lib находился непосредственно в корневом каталоге, а также рекомендует избегать его использования в качестве точки монтирования.
Поскольку программы, используемые в нормальном процессе остановки системы, также могут быть динамически связаны с системными библиотеками, самым лучшим способом безопасной перезагрузки систем будет использование метода Magic SysRq, описанного ранее.
В противном случае потребуется перезагрузить машину с аварийной дискеты, после чего восстановить в системе корректные копии разделяемых библиотек.
Сообщение «getcwd: cannot access parent directories»
Это сообщение выводится в том случае, если некоторый процесс переходит в каталог с ограниченным
Как правило, в этом случае дочерний процесс, не имеющий необходимых привилегий, не может использовать команду is или даже команду echo *.
Чаще всего подобная ситуация возникает тогда, когда некоторым пользователям присвоены неверные права по отношению к каталогу, ведущему к их основному каталогу.
Программа вызывает SIG11
Если программа сообщила, что было вызвано прерывание SIG11 и получен дамп ядра, это обычно означает, что в вашей системе проблемы с оборудованием.
Обычно такого плана ошибки вызывают модули памяти, отдельные ячейки микросхем которых некорректно работают, причем эта проблема может не проявляться неделями. Реже подобную ошибку вызывает нестабильно работающая материнская плата.
Народное средство проверки нестабильной памяти – несколько раз подряд произвести компиляцию ядра операционной системы. Если попытка откомпилировать ядро операционной системы Linux завершится выдачей сообщения Internal compiler error со ссылкой на прерывание SIG11, причина, вероятнее всего, в ненадежной работе оперативной памяти.
К сожалению, в современных микросхемах оперативной памяти чрезвычайно трудно надежно выявить непостоянные отказы. Компьютеры и операционные системы настолько сложны, что простая последовательность операций "запись, чтение, проверка" в оперативной памяти едва ли будет пригодна для выявления проблем с оборудованием.
Если предполагается, что ошибка связана с оборудованием, попробуйте установить в компьютер другие модули памяти.
Превышение максимального количества открытых файлов
Ядро имеет ограничение, связанное с максимальным количеством одновременно открытых файлов, которое задается при компиляции ядра операционной системы. Достижение операционной системой этого предела приводит к тому, что операционная система отказывает в открытии файла.
Изменить текущее значение этого параметра можно отредактировав псевдофайлы /proc/sys/kernel/file-max и /proc/ sys/kernel/inode-max.
Например:
inode-max = 32768 file-max .=5.120
Два параметра системы – максимальное количество задач в системе и максимальное количество задач для одного пользователя – переопределяются при компиляции ядра. Используемые значения задаются в файле параметров ядра.
Проблемы с файловыми системами
Далее речь пойдет об устранении различных проблем, которые возникают при работе с файловыми системами.
Ошибка «unable to find swap-space signature»
Подобная ошибка может возникнуть в том случае, когда одно и то же дисковое пространство страниц виртуальной памяти используется одновременно несколькими операционными системами, либо была повреждена таблица swap-раздела.
При появлении такой ошибки необходимо воспользоваться командой fdisk для повторной проверки типов разделов, описанных в таблице разделов диска. Убедившись, что все выполненные для разделов назначения корректны, введите команду mkswap.
Переполнение файловой системы
Если пользователь заполнит все дисковое пространство, выделенное файловой системе, то за пользователем root резервируется некоторый свободный объем дискового пространства. Как справедливо предусмотрели разработчики файловой системы, администратору и некоторым утилитам необходимо наличие некоторого пустого дискового пространства для нормальной работы с переполненным разделом.
Разрешение на использование этого резервного пространства может быть предоставлено отдельному пользователю или группе пользователей при помощи утилиты tune2fs.
Очевидным решением этой проблемы является удаление некоторых файлов, либо архивирование редко используемых файлов.
В том случае, если пользователь root или процесс, запущенный с правами пользователя root, вызовет переполнение диска, начнется заполнение резервного пространства диска. По этой причине почта для пользователя root всегда должна посылаться на учетную запись, не имеющую особых привилегий, а ротация файлов журналов должна тщательно контролироваться.
Для предупреждения случаев переполнения файловых систем целесообразно использовать какую-либо программу мониторинга состояния операционной системы.
Переполнение числа блоков индекса файловой системы
Переполнение числа блоков индекса файловой системы возможно даже в том случае, когда основное пространство файловой системы еще не заполнено. Этот показатель не имеет отношения к параметру ядра, описывающему максимальное количество одновременно открытых блоков индексов. Если файловая система содержит большое количество файлов размером менее 4 Кбайт, то все блоки индекса такой файловой системы могут оказаться заполненными раньше, чем ее основное пространство.
Отношение количества блоков индекса к количеству блоков данных любой заданной файловой системы устанавливается при ее создании (параметр -i команды mke2fs). Файловые системы, предназначенные для размещения спула групп новостей, всегда должны иметь увеличенное отношение числа блоков индекса.
Подозрение на наличие сбойного кластера или сектора
В том случае, если вы заподозрили, что на вашем жестком диске появились сбойные кластеры, можно запустить утилиту для проверки жесткого диска на наличие сбойных секторов. Эту операцию необходимо производить в то время, когда никто не работает с компьютером, поскольку она может затянуться на достаточно длительное время.
Для выявления сбойных блоков и помещения сведений о них в соответствующий список файловой системы типа Ext2 можно использовать команду e2fsck -c.
При выполнении команды mount доступ к системе блокируется
В некоторых случаях выполняемый процесс может «зависнуть», если команда mount применяется к файловой системе на устройстве, не отвечающем на запросы системы. Кроме того, подобная ситуация иногда возникает при обращении к устройствам активной SCSI-цепочки, которые отсоединены или выключены.
Подобные ситуации могут происходить и при переключении на другие виртуальные консоли, регистрации через последовательные терминалы или соединения telnet и т. п. Если запустить утилиту ps, то подобные «подвешенные» процессы отмечаются как находящиеся в состоянии D. Выполнение для подобного процесса команды kin -9 не оказывает на этот процесс никакого влияния, поскольку обработка сигналов блокируется на все время, пока процесс ожидает завершения выполнения подпрограммы системного вызова ядра операционной системы.
В подобном состоянии операционная система может находиться сколько угодно долго, причем она будет нормально функционировать до тех пор, пока не будет предпринята попытка обращения к «подвешенному» процессу или устройству. Чтобы выйти из этого положения, необходимо корректно завершить все процессы операционной системы (которые не находятся в «подвешенном» состоянии), после чего компьютер можно будет перезагрузить.
Случайное удаление файла
Если все ссылки на файл и все связанные с ним блоки обработки уже удалены, то после закрытия последнего открытого для него дескриптора занятое файлом пространство становится доступным для системного драйвера сборки мусора. Как только занимаемое ранее файлом пространство будет очищено этим драйвером, файл будет утрачен навсегда.
В состав Linux включен документ "Undelete HOWTO" и несколько редакторов шестнадцатеричных данных. В частности, программы ext2ed и debugfs предоставляют некоторые инструменты, которые могут оказаться полезными при устранении проблем подобного рода.
Так же можно воспользоваться программой mc (Midnight Commander). Для этого запускаем тс и в командной строке набираем cd /#undei: /hda. В результате получаем панель, в которой находится список удаленных файлов, причем имя файла – номер inode. Эти файлы можно просмотреть и, выбрав нужный, восстановить.
Разрушение данных
Команда fsck используется для проверки и восстановления файловых систем. Восстановленные блоки индекса помещаются в зарезервированный каталог lost+found, который существует в каждом физическом разделе Ext2.
В том случае, если резервной копии данных не существует, можно попробовать разобраться в каталоге lost+found и попытаться вручную восстановить данные.
Проблемы с сетью
В этом разделе рассматривается устранение проблем, которые возникают в случае некорректной настройки, неправильного функционирования или повреждения сети.
К системе нет доступа из сети
Проверьте значения параметров TCP, содержащихся в файлах /etc/hosts.allow и /etc/hosts.deny. Кроме того, проверьте все другие аспекты организации работы брандмауэра, которые применимы к данной машине. Проконтролируйте состояние сетевого кабеля в тех точках, в которых он подключается к машине и к остальной части сети.
Используйте утилиту ping для проверки функционирования сети.
Проблемы ввода/вывода данных
Во многих приложениях можно устанавливать комбинации клавиш, предназначенные для вызова специальных функций. Если проблема с вводом возникает только в одной программе (например, emacs), то назначить комбинации клавиш можно с помощью команд этого же приложения.
Любой текст воспроизводится в виде двоичных символов
Чаще всего подобная ситуация возникает при использовании простых утилит, предназначенных для чтения двоичных файлов. Терминал воспринимает одну или более двоичных комбинаций как команду изменения символического шрифта. В результате, прочесть выводимые на экран сообщения будет невозможно. Введите команду reset, не обращая внимания на то, что будет выведено на экран. В результате все параметры терминала будут приведены к значениям, принимаемым по умолчанию.
Система не реагирует на команды, вводимые с клавиатуры
Убедитесь, что клавиатура подключена к компьютеру правильно, а не, скажем, к порту мыши. Если доступ к машине через сеть все еще возможен, то с помощью команды loadkeys -d восстановите карту ключей клавиатуры, используемую в системе по умолчанию. В противном случае не избежать перезагрузки системы со всеми вытекающими последствиями.
Переназначение клавиш
Утилита xmodmap предоставляет средства переназначения клавиш клавиатуры. Однако внесенные изменения остаются в силе только на время сеанса X Window. Для изменения раскладки клавиатуры в сеансах работы с текстовой консолью следует использовать утилиту loadkeys.
Окно сеанса X Window не воспринимает команд с клавиатуры и сигналов мыши
В среде X Window был выдан запрос, захвативший фокус ввода. Если выдавшее его приложение или задача «зависнет», менеджер окон окажется заблокированным и любой направленный в среду X Window ввод будет игнорироваться.
Для решения этой проблемы необходимо получить доступ к компьютеру по сети либо через последовательный терминал и после этого выполнить команду kill -9 для заблокированного задания. Если этого окажется недостаточно, продолжайте указанную процедуру, поднимаясь по соответствующему дереву процессов. В самом худшем случае остановка процесса Х-сервера вынудит процесс init "собрать мусор" в его ресурсах и ресурсах всех порожденных им процессов. Как правило, «убиения» заблокированного процесса или его родителей бывает достаточно для разблокирования устройства ввода.
Прочие аварийные ситуации
Некоторые аварийные ситуации нельзя отнести к какой-нибудь конкретной категории. Об этих ситуациях мы и поговорим в данном разделе.
Не работает устройство, подключенное к параллельному порту
Параллельный порт в настоящее время является точкой подключения различных периферийных устройств: принтеров, сканеров, CD-RW, ZIP Drive и многих других. В том случае, если в вашей операционной системе для устройств, подключаемых к параллельному порту, используются загружаемые модули, то вы должны с помощью команды lsmod проверить, соответствует ли загруженный модуль тому типу устройства, которое в данный момент подключено к параллельному порту.
Настоятельно рекомендуется не предпринимать попыток выгрузить модули до тех пор, пока не будет демонтирована файловая система, связанная с данным устройством
Работа системы кажется медленной, хотя объем оперативной памяти превосходит 64 Мбайт
Подобная проблема может быть связана с конструктивными недостатками определенных материнских плат, не способных кэшировать ячейки памяти, адреса которых расположены выше 64 Мбайт. Обычно такая проблема возникала с ранними платами для процессоров Pentium. Эта проблема особенно остро отражается на системе Linux, поскольку она распределяет доступную память в направлении сверху вниз, начиная с самых верхних адресов.
Возможные решения проблемы заключаются в замене материнской платы компьютера или в использовании параметра mem= ядра Linux для установки лимита используемой оперативной памяти на уровне 64 Мбайт, хотя в последнем случае вы теряете весь объем памяти выше 64 Мбайт.
После увеличения объема оперативной памяти система работает нестабильно
Некоторые материнские платы используют для собственных нужд небольшой блок ячеек оперативной памяти, расположенный у ее верхней границы. Попробуйте указать параметр ядра mem=хххм, где значение ххх – на один мегабайт меньше полного объема установленной в компьютере оперативной памяти.
После увеличения объема оперативной памяти система не видит добавленную память
Некоторые материнские платы (в основном для Pentium и ранние платы для Pentium II) страдают подобным недостатком. Для исправления ситуации можно указать параметр ядра mem=хххM, где значение ххх – полный объем установленной оперативной памяти. Если операционная система покажет вам полный объем оперативной памяти, но будет вести себя нестабильно – воспользуйтесь предыдущим советом.
Ссылки
•– «SIG11 Problem». Описание проблемы SIG11 и пути ее решения.
• Соответствующие HOWTO (см. гл. 13):
– Multiboot Using LILO mini-HOWTO;
– LILO mini-HOWTO.Часть VII Приложения
Приложение 1 Физическая структура файловой системы Ext2
Таблица П1.1. Структура суперблока
Таблица П1.2. Структура описания группы блоков
Таблица П1.3. Структура индексного дескриптора файла
Таблица П1.4. Тип и права доступа к файлу
Таблица П1.5. Специальные индексные дескрипторы
Таблица П1.6. Структура записи в файле каталога
Приложение 2 HOWTO
• The Linux 3Dfx HOWTO – описывает установку графического акселератора 3Dfx.
• 4mb Laptop HOWTO – установка Linux на слабые (RAM 4 Мбайт, жесткий диск менее 200 Мбайт) ноутбуки.
• Linux Access HOWTO – как адаптировать Linux для доступа тем, кто его не использует.
• Установка Linux на Acer LapTop HOWTO – описывает установку Linux на ноутбуки Acer.
• Advanced Bash-Scripting HOWTO – руководство по использованию языка сценариев командной оболочки Bash.
• Linux 2.4 Advanced Routing HOWTO – описание процесса маршрутизации для ядра Linux версии 2.4.