Локализация аппаратных проблем
Если вы столкнулись с проблемой, которая по вашему мнению носит аппаратный характер, первое, что вы должны сделать, это попытаться локализовать проблему. Это означает, что исключая все возможные составляющие и (обычно) саму операционную систему, вы постепенно шаг за шагом выделяете неисправную часть аппаратуры.
Это не так тяжело, как иногда может казаться. Первоначально вы должны отключить от системы все несущественное оборудование, а затем определить, какое устройство в действительности является источником неприятностей, подключая шаг за шагом устройства. Это означает, что вы должны отключить все устройства кроме контроллеров гибкого диска и видео, а также, разумеется, клавиатуры. Даже такие невинные на первый взгляд устройства, как мышь, могут внести большую сумятицу в ваши мозги.
Например, предположим, что система зависла во время загрузки при распознавании платы 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: Обычные установки для устройств