FAQ FreeBSD
Страница 27. Решение проблем  с прочим железом


  

3.8. Мой принтер печатает невероятно медленно. Что тут можно сделать?

Если принтер подключен к параллельному порту, и единственной проблемой является
его медлительность, попробуйте установить порт в режим "polled":
    # lptcontrol -p

Утверждается, что некоторые новейшие принтеры от HP не работают корректно в
режиме прерываний, скорее всего из-за (это ещё не совсем точно выяснено)
проблем с временными задержками.

3.9. Программы аварийно завершают работу с ошибкой Signal 11.

Ошибки выполнения, связанные с 11 сигналом, происходят, когда ваш процесс
пытается обратиться к области памяти, доступ к которой ему не был дан
операционной системой. Если что-то подобное происходит в случайные на первый в
згляд промежутки времени, то вам нужно попытаться выяснить подробности
происходящих событий более детально.
Эти проблемы могут быть классифицированы следующим образом:
 1. Если проблема возникает только в определенном приложении, которое было
    самостоятельно вами разработано, то, скорее всего, это ошибка в вашем коде.
 2. Если это проблема в части базового комплекта системы FreeBSD, то это тоже
    может быть ошибка в программном коде, хотя в большинстве случаев такие
    проблемы обнаруживаются и ошибки исправляются задолго до того, как обычным
    читателям FAQ доводится использовать этот код (именно для этого
    предназначена версия -current).
В частности, достоверно *не* ошибка FreeBSD, если вы сталкиваетесь с проблемой
при компиляции программы, но при работе компилятора место сбоя каждый раз
изменяется.

Например, положим, что вы запускаете команду "make buildworld" и компиляция зав
ершилась аварийно при попытке компиляции ls.c в to ls.o. Если при следующей
попытке повторно выполнить "make buildworld" компиляция прервется на том же
самом месте, то это ошибки процесса построения -- попробуйте обновить исходные
тексты и попробуйте снова. Если компиляция прерывается в каком-то другом месте,
то в этом практически достоверно виновато обрудование.
Что вы должны сделать:
В первом случае вы должны воспользоваться отладчиком, к примеру, gdb, для
нахождения точки программы, в которой делается попытка доступа к неверному
адресу и затем исправить эту ошибку.
Во втором случае вам нужно проверить, что ваше оборудование исправно.
Среди часто приводящих к этому причин:
 1. Ваши винчестеры могут перегреваться: Проверьте работу вентиляторов в вашем
    системном блоке, так как ваш диск (и может, также другие компоненты, могут
    перегреваться).
 2. Работающий процессор перегревается: Это может произойти из-за увеличения
    частоты процессора за рабочие границы или поломки вентилятора на
    процессоре. В любом случае вам нужно убедиться, что ваше оборудование
    работает так, как ему положено, по крайней мере, на момент поиска причин
    неисправности, другими словами, Установите частоту работы на настройки по
    умолчанию.
    Если вы превысили рабочие частоты работы процессора, заметьте, что дешевле
    обходится медленная система, чем сгоревшая система, требующая замены! Также
    общество нечасто симпатизирует проблемам на таких системах, вне зависимости
    от того, считаете ли вы увеличение рабочей частоты не влияющим на работу
    или нет.
 3. Хитрая память: Если у вас установлено множество микросхем SIMM/DIMM, то в
    ытащите их все и попытайтесь поработать индивидуально с каждой микросхемой
    SIMM или DIMM и локализовать проблему либо до проблематичной микросхемы
    DIMM/SIMM, либо даже их комбинации.
 4. Чересчур оптимистические настройки материнской платы: При настройке вашей
    BIOS и выборе положения перемычек на материнской плате вы имеете в
    озможность задать различные частоты и задержки, в большинстве случаев
    настройки по умолчанию достаточны, но иногда установка слишком малых
    периодов ожидания для ОЗУ, установка параметра "RAM Speed: Turbo" или
    подобных параметров в BIOS вызовет странное поведение. Возможным решением
    может стать установка параметров BIOS по умолчанию, но сначала стоит
    записать ваши настройки!
 5. Неустойчивое или недостаточное электропитание материнской платы. Если в в
    ашей системе есть неиспользуемые адаптеры ввода/вывода, винчестеры или прив
    оды компакт-дисков, попробуйте временно их убрать или отключить от кабеля
    электропитания, чтобы посмотреть, сможет ли ваш блок питания работать с
    меньшей нагрузкой. Или попробуйте воспользоваться другим блоком питания,
    желательно большей мощности (например, если имеющийся блок питания
    рассчитан на 250 Ватт, попробуйте другой мощностью 300 Ватт).
Вы также должны прочитать FAQ по SIG11 (ссылка дана ниже), в котором даны
прекрасные описания всех этих проблем, хотя и с точки зрения Linux. Также
обсуждается, как аппаратура или программное обеспечение для тестирования памяти
могут пропускать сбойную память.
Наконец, если ничего из этого не помогает, то возможно, что просто вы нашли
ошибку во FreeBSD и должны следовать инструкциям по посылке сообщений о
проблемах.
Подробная информация по этому вопросу содержится в FAQ по проблеме SIG11.

3.10. При загрузке монитор темнеет и теряет синхронизацию!

Это известная проблема с видеоадаптерами ATI Mach 64. Она вызвана тем, что этот
адаптер использует адрес 2e8, как и четвёртый последовательный порт. Из-за
ошибки (или особенности работы?) в драйвере sio(4) он обращается к порту, даже
если если он не существует, и даже если вы отключите sio3 (четвёртый порт),
который, как правило, использует этот адрес ввода/вывода.
Пока это не исправлено, используйте следующий метод:
 1. В приглашении загрузчика наберите -c. (Это переведёт ядро в режим
    конфигурации).
 2. Отключите устройства sio0, sio1, sio2 и sio3 (все их). После этого драйвер
    sio не будет активизироваться и проблем не будет.
 3. Для продолжения загрузки наберите exit.
Если вам нужно использовать последовательные порты, вы должны построить новое
ядро со следующей модификацией: в файле /usr/src/sys/i386/isa/sio.c найдите
строчку, содержащую число 0x2e8 и удалите её вместе с предшествующий запятой
(оставив следующую). После этого следуйте обычным указаниям по построению ядра.
Даже после этих изменений вы можете обнаружить, что X Window работает
ненормально. Если это произошло, удостоверьтесь, что вы используете XFree86 в
ерсии не ниже 3.3.3. Этот и последующие релизы имеют встроенную поддержку
адаптеров Mach64 и даже отдельный X-сервер для таких адаптеров. 

3.11. У меня 128 МБ ОЗУ, но система используется только 64.

Так как для определения объёма памяти FreeBSD использует информацию BIOS, она
ограничена 16 битами, используемыми для выражения размера ОЗУ в килобайтах
(65535 КБ = 64МБ) (или меньше... некоторые BIOS ограничивают размеры памяти до
16МБ). Если у вас больше чем 64МБ ОЗУ, FreeBSD будет пытаться обнаружить эту
память; однако эта попытка может и не удасться).

Для решения этой проблемы вам нужно использовать опцию ядра, указанную ниже.
Способ выяснения полной информации о памяти из BIOS существует, но у нас нет
места в загрузочном блоке, чтобы это делать. Когда проблема нехватки места в
загрузочных блоках будет решена, мы будем использовать расширенные функции BIOS
для получения полной информации о памяти... но пока мы остановились на опции
ядра.
options "MAXMEM=n"
Здесь n - это объём памяти в килобайтах. Для машины со 128 МБ ОЗУ вам нужно
использовать значение 131072.

 
« Предыдущая статья