Устранение некоторых проблем На моём винчестеры есть запорченные блоки!

Если это SCSI-устройство, то винчестер должен иметь возможность автоматической переадресации таких блоков. Однако по непонятным причинам во многих поставляемых дисках эта возможность отключена...

Чтобы её включить, вам нужно изменить режим работы устройства, что во FreeBSD может быть выполнено администратором посредством команды scsi -f /dev/rsd0c -m 1 -e -P 3

и изменить значения параметров AWRE и ARRE с 0 на 1:- AWRE (Auto Write Reallocation Enbld): 1 ARRE (Auto Read Reallocation Enbld): 1

Последующие параграфы были предоставлены (Ted Mittelstaedt):

Для дисков IDE появление запорченных блоков является признаком возможных неприятностей. Все современные IDE-диски поставляются с включенной возможностью переадресации испорченных блоков. Все производители винчестеров в настоящее время предоставляют расширенные гарантии и заменяют диски с запорченными блоками.

Если вы всё же хотите спасти ваш диск IDE с запорченными блоками, вы можете попытаться найти программу диагностики винчестеров от производителя и протестировать ею диск. Иногда эти программы могут заставить электронику винчестера пересканировать диск в поисках испорченных блоков и заблокировать их.

В случае дисков стандартов ESDI, RLL и MFM, наличие испорченных блоков является обычным явлением и не является большой проблемой. В ПК контроллер винчестера и BIOS берут на себя работу по блокировке испорченных блоков. Это прекрасно работает в случае операционных систем типа DOS, которые используют вызовы BIOS для доступа к диску. Однако драйвер диска во FreeBSD не обращается к BIOS, поэтому для обеспечения подобной функциональности существует bad144. bad144 работает только с драйвером wd, её НЕВОЗМОЖНО использовать со SCSI. bad144 помещает все найденные испорченные сектора в специальный файл.

У bad144 имеется особенность - специальный файл с испорченными блоками помещается на последнюю дорожку диска. Так как этот файл может содержать список испорченных секторов, находящихся в начале диска, где может располагаться файл ядра /kernel, он должен быть доступен загрузчику, использующему вызовы BIOS для чтения файла ядра. Это значит, что диск, который использует bad144, не должен иметь размеры, превышающие 1024 дорожки, 16 головок и 63 сектора. Это ограничивает размер диска, обрабатываемого bad144, 500 мегабайтами.

Для использования bad144, просто установите "Bad Block" в положение ON на экране программы fdisk во время начальной установки. Это работает начиная с FreeBSD 2.2.7. Диск должен иметь размер, не превышающий 1024 дорожки. Рекомендуется, чтобы до этого диск проработал не менее 4 часов для перехода в рабочий тепловой режим и стабильный режим работы головок.

Если диск имеет размер, превышающий 1024 головки (как, например, большой диск ESDI), контроллер ESDI использует особый режим трансляции, чтобы это работало в DOS. Драйвер wd будет знать об этих режимах трансляции, ЕСЛИ вы укажете на использование "преобразованных" параметров в команде "set geometry" программы fdisk. Вы также НЕ должны использовать режим "dangerously dedicated" при выделении раздела для FreeBSD, так как при этом параметры диска не принимаются во внимание. Также, хотя fdisk будет использовать изменённые параметры, он всё же помнит настоящий размер диска, и попытается создать слишком большой раздел FreeBSD. Если параметры диска изменились на транслированные, раздел ДОЛЖЕН быть создан вручную с указанием количества блоков.

Самым быстрым способом является установка большого диска ESDI с контоллером ESDI, загрузка DOS и выделение на нём раздела DOS. Затем запустите инсталляционную программу FreeBSD и в экране программы fdisk найдите и запишите размер блока и их количество раздела DOS. Затем установите параметры в те же значения, которые использует DOS, удалите раздел DOS и создайте "совмещённый" раздел FreeBSD с ранее записанным размером блока. Затем установите загрузку с этого раздела и включите сканирование испорченных блоков. Во время установки сначала, ещё до создания файловых систем, запустится bad144 (вы можете это увидеть по Alt-F2). Если возникнут проблемы при создании файла с запорченными секторами, вы установили слишком большие параметры диска - перезагрузитесь и начните всё сначала (включая повторные разбиение на разделы и форматирование винчестера в DOS).

Если переадресация включена и всё равно на диске присутствуют запорченные блоки, то, по-видимому, остаётся только заменить винчестер. Количество испорченных блоков с течением времени имеет тенденцию только увеличиваться. FreeBSD не распознаёт мой EISA SCSI контроллер Bustek 742a!

Нижеследующая информация специфична для 742a, но может касаться и других адаптеров от Buslogic (Bustek = Buslogic).

Существуют две основных ``версии'' адаптеров 742a. Это аппаратные модификации A-G и модификации H и выше. Буква, обозначающая модификацию, расположена после номера сборки на кромке адаптера. На адаптере 742a установлены две микросхемы ПЗУ, одна содержит BIOS, а другая - микрокод (так называемое firmware). Для FreeBSD не имеет значения используемая версия BIOS, но имеет значение версия микрокода. Buslogic высылает обновления для ПЗУ, если вы позвоните в их отдел технической поддержки. Михросхемы с BIOS и микрокодом поставляются соответствующими парами. В ПЗУ адаптера вы должны иметь самую последнюю версии микрокода для вашей аппаратной модификации.

Адаптерам модификаций A-G может только подойти BIOS/Firmware версий вплоть до 2.41/2.21. Адаптерам модификаций H и старше подходят самые последние версии BIOS/Firmware 4.70/3.37. Отличие между версиями микрокода заключается в том, что версия микрокода 3.37 поддерживает механизм ``round robin''.

На адаптерах Buslogic проставлен серийный номер. Если у вас адаптер старой модификации, вы можете позвонить в подразделение RMA фирмы Buslogic, сказать им серийный номер адаптера и попытаться обменять его на более новую модификацию. Если адаптер достаточно нов, то они его поменяют.

FreeBSD 2.1 поддерживает микрокод модификаций только 2.21 и выше. Если у вас версия микрокода старее, чем эта, то адаптер не будет распознаваться как адаптер Buslogic. Однако он может быть опознан как Adaptec 1540. Ранние версии микрокода от Buslogic содержат режим ``эмуляции'' AHA1540. Однако для EISA-адаптера всё это выглядит как-то некрасиво.

Если у вас адаптер старой модификации и вы получили микрокод 2.21 для него, установите перемычку W1 в положение B-C, по умолчанию она находится в положении A-B.

Адаптеры 742a EISA никогда не имели проблему ``>16MB'', описанную в разделе . Эта проблема возникает со SCSI-адаптерами Vesa-Local Buslogic. Не распознаётся SCSI-контроллер на HP Netserver!

В общем-то это известная проблема. EISA-контроллеры SCSI, расположенные на материнской плате машин HP Netserver, занимают EISA-слот номер 11, так что все ``настоящие'' слоты EISA будут ему предшествовать. Так как адресное пространство для слотов EISA выше 10 пересекается с адресным пространством, предназначенным для PCI, то автоконфигуратор FreeBSD в настоящее время не может эту проблему нормально обойти.

Так что пока лучшее, что вы можете предпринять, это попытаться указать, что пересечения диапазонов адресов нет :), установив опцию ядра о конфигурировании ядра.

Конечно, это даст вам типичную ситуации "курица или яйцо" при установке системы на такой машине. Для обхода этой проблемы внутри UserConfig есть специальный хак. Не используя ``визуального'' интерфейса, а только интерфейс командной строки, просто наберите eisa 12 quit

в приглашении, и проинсталлируйте систему как обычно. В любом случае рекомендуется, что вы отконфигурируете и проинсталлируете собственное ядро. Программа в настоящее время может сохранять это значение.

Надеемся, что будущие версии будут содержать полное решение этой проблемы.

. Что не так с IDE-контроллером CMD640?

Этот контроллер не рабочий. Он не может отрабатывать команды на обоих каналах одновременно.

Решение этой проблемы существует и включается автоматически, если в вашей системе испольщуется этот контроллер. Подробная информация находится на страницах Справочника по дисковому драйверу (man 4 wd).

Если вы уже работаете с FreeBSD 2.2.1 или 2.2.2 с IDE-контроллером CMD640 и хотите использовать второй канал, постройте новое ядро с включенной опцией Выдаются сообщения типа ``

Обычно это вызвано конфликтом прерываний (например, двух адаптеров, использующих один и тот же IRQ). FreeBSD до версии 2.0.5R была нечувствительна к таким конфликтам, и драйвер сетевого адапетра оставался работоспособен даже при конфликтах IRQ. Однако с версии 2.0.5R и выше, конфликты IRQ больше не считаются безобидными. Загрузитесь с опцией -c и смените строку, описывающую ed0/de0/... на соответствующую вашей системе..

Если вы используете разъём BNC сетевого адаптера, таймауты устройства могут быть вызваны плохим терминированием. Чтобы это проверить, подключите терминатор к адаптеру (без кабеля) и посмотрите, не исчезли ли сообщения об ошибках.

Некоторые NE2000-совместимые адаптеры выдают такую ошибку, если нет связи по UTP-порту или отключен кабель. При монтировании компакт-диска, выдаётся сообщение ``Incorrect super block''.

В параметрах команды вам нужно указать тип устройства, который вы собираетесь смонтировать. По умолчанию полагает, что монтируемая файловая система имеет тип ``. При этом конечно предполагается, что CDROM содержит файловую систему стандарта ISO 9660, как на большинстве CDROM. С версии 1.1R FreeBSD автоматически распознаёт также расширение Rock Ridge (для длинных имён файлов).

Например, если вы хотите смонтировать устройство CDROM ``/dev/cd0c'', в каталог /mnt, вы должны выполнить следующую команду: mount -t cd9660 /dev/cd0c /mnt

Заметьте, что имя устройства (``/dev/cd0c'' в этом примере) может быть другим, в зависимости от интерфейса вашего CDROM. Отметьте, что опция `` mount_cd9660 /dev/cd0c /mnt При монтировании компакт-диска выдаётся сообщение ``Device not configured''.

Обычно это означает, что в приводе CDROM нет компакт-диска либо устройство не было обнаружено на этапе загрузки. Вставьте в привод какой-нибудь диск, и/или проверьте его настройку как ведущего/ведомого устройства, если оно типа IDE (ATAPI). Для привода CDROM может потребоваться несколько секунд для обнаружения, что был вставлен диск, так что будьте терпеливыми.

Иногда SCSI CDROM может отсутствовать в системе из-за недостатка времени на ответ при сбросе шины. Если ваш привод CD-ROM является SCSI-устройством, пожалуйста, попробуйте добавить такой символ в ваш файл конфигурации ядра и перекомпилируйте его. options "SCSI_DELAY=15" Мой принтер печатает невероятно медленно. Что тут можно сделать?

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

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

Это может быть вызвано сбоями аппаратного обеспечением (память, материнская плата, итд). Попробуйте запустить на вашем ПК программу тестирования памяти. Имейте в виду, что в случае незначительных отклонений в работе возможна ситуация, когда все программы тестирования, которые вы будете пробовать, будут утверждать, что с ОЗУ всё в порядке, а ошибка будет возникать при определённых условиях (таких, как использование DMA при использовании режима управления шиной контроллером SCSI типа Adaptec 1542, интенсивное обращение к ОЗУ при компиляции ядра или значительной нагрузке на систему).

В FAQ по SIG11 (ссылка дана ниже) сказано, что медленная память является самая распространённой причиной возникновения этой проблемы. Увеличьте число тактов ожидания в настройке BIOS или установите более быструю память.

Для меня самой распространённой причиной была сбойная кэш-память или кэш-контроллер. Попробуйте отключить внешний кэш (второго уровня) в BIOS и посмотрите, не решит ли это вашу проблему.

Подробная информация по этому вопросу содержится в . При загрузке монитор темнеет и теряет синхронизацию!

Это известная проблема с видеоадаптерами ATI Mach 64. Она вызвана тем, что этот адаптер использует адрес он обращается к порту, даже если если он не существует, и Пока это не исправлено, используйте следующий метод: В приглашенни загрузчика наберите Отключите устройства Для продолжения загрузки наберите exit.

Если вам нужно использовать последовательные порты, вм должны построить новое ядро со следующей можификацией: в файле /usr/src/sys/i386/isa/sio.c найдите строчку, содержащую число Даже после этих изменений вы можете обнаружить, что X Window работает ненормально. Некоторые новейшие видеоадаптеры ATI Mach 64 (например ATI Mach Xpression) не работают с текущей версией , перейдя по ссылке, указывающей на новый бета-релиз. Вам нужны следующие файлы:

AccelCards, BetaReport, Cards, Devices, FILES, README.ati, README.FreeBSD, README.Mach64, RELNOTES, VGADriver.Doc, X312BMa64.tgz

Замените старые файлы новыми версиями и не забудьте снова запустить . У меня 128 МБ ОЗУ, но система используется только 64.

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

Для решения этой проблемы вам нужно использовать опцию ядра, указанную ниже. Способ выяснения полной информации о памяти из BIOS существует, но у нас нет места в загрузочном блоке, чтобы это делать. Когда проблема нехватки места в загрузочных блоках будет решена, мы будем использовать расширенные функции BIOS для получения полной информации о памяти... но пока мы остановились на опции ядра. options "MAXMEM=<n>"

Здесь FreeBSD 2.0 аварийно завершает работу с сообщением ``kmem_map too small!''

Такое завершение работы показывает, что системе не хватает виртуальной памяти для сетевых буферов (точнее, структур mbuf). Вы можете увеличить количество виртуальной памяти для структур mbuf, добавив:

options "NMBCLUSTERS=<n>"

в файл конфигурации ядра, где <n> - это число в пределах 512-4096, в зависимости от числа TCP-соединений, которое вам нужно одновременно обслуживать. Я рекомендую попробовать значение 2048 - это должно избавить вас от аварийных остановов. Вы можете отслеживать количество структур mbuf, выделенных/используемых системой командой . Значение по умолчанию для NMBCLUSTERS равно Сообщение ``CMAP busy panic'' при перезагрузке с новым ядром.

Процедура определения устаревших фалов /var/db/kvm_*.db иногда даёт сбой и использует не те файлы, что может вызвать аварийный останов системы.

Если это случилось, перезагрузитесь в однопользовательском режиме и выполните команду: rm /var/db/kvm_*.db ahc0: brkadrint, Illegal Host Access at seqaddr 0x0

Это - результат конфликта со SCSI-адаптером Ultrastor.

Во время загрузки войдите в меню конфигурации ядра и выключите устройство , являющееся источником этой проблемы. Sendmail говорит, что ``mail loops back to myself''

В FAQ по sendmail на это дан такой ответ:- * Выдаются сообщения "Local configuration error", примерно такие: 553 relay.domain.net config error: mail loops back to myself 554 ... Local configuration error Как можно решить эту проблему? Согласно записям MX, почта для домена (скажем, domain.net) была перенаправлена на указанный хост (в нашем случае relay.domain.net), но он не распознаётся как domain.net. Добавьте строку domain.net в файл /etc/sendmail.cw (если вы используете FETURE(use_cw_file)) или добавьте "Cw domain.net" в /etc/sendmail.cf.

Текущая версия больше не поставляется вместе с sendmail. Однако этот документ регулярно помещается в конференции , , , и . Вы можете получить копию по электронной почте, послав сообщение, содержащее команду "send usenet/news.answers/mail/sendmail-faq" в теле письма, в адрес . Полноэкранные приложения на удалённой машине ведут себя неправильно!

На удалённой машине тип терминала может быть устанавлен в значение, отличное от типа терминала cons25, используемого на консоли FreeBSD.

Есть несколько способов решения этой проблемы: После входа на другую машину установите значение переменной окружения TERM равным ansi или sco. Используйте эмулятор VT100 типа на локальной машине. screen даёт вам возможность открывать несколько рабочих сеансов на одном терминале, и она имеет ещё ряд полезных особенностей. Опишите терминал cons25 в базе данных характеристик терминалов на удалённой машине. Запустите X Window System и осуществляйте доступ к удалённой машине из xterm. Выводятся сообщения "calcru: negative time..."

Это может быть вызвано различными аппаратными или программными проблемами, связанными с прерываниями. Это может быть связано как с ошибками при программировании, так и с природой самих устройств. Например, работа с TCP/IP по параллельному порту с использованием большого MTU приводит к этой проблеме, также как использование графических акселераторов; в последнем случае вы должны проверить настройку прерываний на графическом адаптере.

Одним из проявлений этой проблемы является прерывание работы процессов с диагностическим сообщением "SIGXCPU exceeded cpu time limit".

Если эта проблема не может быть решена, для FreeBSD 3.0 от 29 ноября 1998 и выше измените значение системной переменной: sysctl -w kern.timecounter.method=1

Это коснётся производительности системы, но принимая во внимание источник этой проблемы, это будет незаметно. Если проблема всё ещё даёт знать о себе, оставьте значение этой переменной равным единичке и увеличьте значение параметра "NTIMECOUNTER" в файле конфигурации вашего ядра. Если в конце концов вы достигнете значения "NTIMECOUNTER=20", то вам эту проблему решить не удастся, прерывания дают слишком большую нагрузку на процессор, чтобы обеспечить отслеживание времени.