Локализация аппаратных проблем
Если вы столкнулись с проблемой, которая по вашему мнению
носит аппаратный характер, первое, что вы должны сделать, это
попытаться локализовать проблему. Это означает, что исключая все
возможные составляющие и (обычно) саму операционную систему, вы
постепенно шаг за шагом выделяете неисправную часть аппаратуры.
Это не так тяжело, как иногда может казаться. Первоначально
вы должны отключить от системы все несущественное оборудование, а
затем определить, какое устройство в действительности является
источником неприятностей, подключая шаг за шагом устройства. Это
означает, что вы должны отключить все устройства кроме
контроллеров гибкого диска и видео, а также, разумеется,
клавиатуры. Даже такие невинные на первый взгляд устройства, как
мышь, могут внести большую сумятицу в ваши мозги.
Например, предположим, что система зависла во время загрузки
при распознавании платы Ethernet. Вы можете предположить, что
имеет место конфликт или это проблема данной платы Ethernet.
Простой и быстрый способ определиться - это вытащить плату
Ethernet и попытаться вновь загрузиться. Если все пойдет
нормально, то (a) плата Ethernet не поддерживается Linux (смотри
Раздел 1.8 относительно совместимых плат), или (b) существует
адрес или IRQ, конфликтующие с платой.
``Конфликт адреса или IRQ ?'' А это-то, скажите на милость,
что еще может значить? Все устройства в вашей машине используют
IRQ прим. переводчика: IRQ - Interrupt ReQuest или линию
запросов прерывания, чтобы сообщить системе, что система должна
для них что-то сделать. Вы можете представить себе IRQ как
веревочку, за которую устройство дергает, когда ему надо, чтобы
система позаботилась о выполнении какого-то поступившего запроса.
Если более, чем одно устройство дергает за эту веревочку, ядро не
способно определить, какое устройство нуждается в обслуживании.
Вот вам и глюк.
Поэтому убедитесь, что все инсталлированные вами устройства
используют уникальные линии IRQ. В общем случае IRQ для
устройства может быть установлен с помощью переключения джамперов
(jumpers) на плате; детали смотрите в документации на конкретное
устройство. Некоторые устройства вообще не используют IRQ, но
предполагается, что вы конфигурировали их, так, что они смогут им
воспользоваться. (Хорошие примеры тому контроллеры Seagate ST01 и
ST02 SCSI).
В некоторых случаях ядро, находящееся на ваших средствах
инсталляции, конфигурируется для использования конкретного IRQ для
конкретного устройства. Например, в некоторых дистрибутивах Linux
ядро предварительно сконфигурировано так, чтобы использовать IRQ
5 для контроллера TMC-950 SCSI, контроллера CD-ROM Mitsumi и
драйвер мыши busmouse. Если вы хотите использовать два или более из
этих устройств, вам необходимо будет вначале инсталлировать Linux
только с одним из этих устройств, подключенным к системе, а затем
перекомпилировать ядро, чтобы сменить IRQ, выделенное для другого
из них по умолчанию. (Смотри Главу 4 по поводу перекомпиляции
ядра).
Другая область, где могут возникнуть конфликты аппаратуры -
это каналы DMA (Direct Memory Access) (каналы прямого доступа к
памяти), адреса ввода-вывода (I/O) и адреса разделяемой памяти
(shared memory addresses). Все вышеперечисленное есть механизмы,
через которые система взаимодействует с различными устройствами.
Некоторые платы Ethernet, например, используют разделяемую память
также как и IRQ в качестве интерфейса с системой. И если они
конфликтуют с другими драйверами - система ведет себя
непредсказуемо. Вы должны быть готовы к изменению канала DMA,
адресов ввода-вывода или разделяемой памяти для различных
устройств с помощью переустановки джамперов. (К сожалению,
некоторые устройства не позволяют сделать такие переустановки).
Документация на различные устройства должна указывать IRQ,
канал DMA, адрес ввода-вывода или адрес разделяемой памяти,
которые используют устройства, и как их конфигурировать. И опять,
простейший способ справиться с этой проблемой, это просто
временно отключить конфликтующие устройства до того, как вы
определите причину конфликта.
Таблица 2.2 представляет перечень IRQ и каналов DMA,
используемых различными "стандартными" устройствами, стоящими во
многих системах. Практически все системы имеют эти устройства,
так что вам следует избегать установок IRQ и DMA других устройств
на эти значения.
Device I/O-адрес IRQ DMA
ttyS0 (COM1) 3f8 4 n/a
ttyS1 (COM2) 2f8 3 n/a
ttyS2 (COM3) 3e8 4 n/a
ttyS3 (COM4) 2e8 3 n/a
lp0 (LPT1) 378 - 37f 7 n/a
lp1 (LPT2) 278 - 27f 5 n/a
fd0, fd1 (floppies 1 and 2) 3f0 - 3f7 6 2
fd2, fd3 (floppies 3 and 4) 370 - 377 10 3
Таблица 2.2: Обычные установки для устройств