Часто Задаваемые Вопросы по FreeBSD 2.X, 3.X, 4.X и 5.X

         

Почему я должен использовать FQDN для хостов не в моей сети?


Вы, наверное, обнаружили, что хост, к которому вы обратились, оказался на самом деле в другом домене; например, если вы находитесь в домене foo.example.org и хотите обратиться к хосту mumble в домене example.org, то должны указать его полное доменное имя, mumble.example.org, а не просто mumble.

Традиционно, это позволял делать ресолвер BSD BIND. Однако текущая версия bind (посмотрите справку по named(8)), поставляемая с FreeBSD, больше не добавляет имена доменов, отличающихся от того, в котором вы находитесь, для не полностью указанных имён хостов. Так что неполно указанный хост mumble будет найден либо как mumble.foo.example.org, либо будет искаться в корневом домене.

Это отличается от предыдущего поведения, при котором поиск продолжался в mumble.example.org и mumble.edu. Посмотрите RFC 1535 о причинах объявления такого поведения плохой практикой и даже ошибкой в безопасности.

Как хорошее решение, вы можете поместить строку

search foo.example.org example.org

вместо ранее используемой

domain foo.example.org

в файл /etc/resolv.conf (посмотрите справку по resolv.conf(5)). Однако удостоверьтесь, что порядок поиска не нарушает ``границ полномочий между местным и внешним администрированием'', как это названо в RFC 1535.



Почему я не могу смонтировать диск Linux по NFS?


Некоторые версии NFS для Linux поддерживают запросы на монтирование только с привилегированного порта; попробуйте

# mount -o -P linuxbox:/blah /mnt



Почему я не могу смонтировать диск Sun по NFS?


Рабочие станции Sun под управлением SunOS 4.X поддерживают запросы на монтирование только с привилегированного порта; попробуйте

# mount -o -P sunbox:/blah /mnt



Почему я не могу смонтировать (командой mount аудио CD?


Если вы попытаетесь смонтировать аудио CD, вы получите примерно такое сообщение об ошибке: ``cd9660: /dev/acd0c: Invalid argument''. Причина этого заключается в том, что команда mount работает только с файловыми системами. На аудио CD файловых систем нет; они содержат только данные. Вам нужна программа, читающая аудио CD, например, порт audio/xmcd port.



Почему я не могу снять с файла флаг schg?


Вы работаете в системе с повышенным (то есть большим, чем 0) уровнем защиты. Понизьте уровень защиты и попробуйте еще раз. Для получения более подробной информации обратитесь к и справочной странице о init(8).



Почему я не могу создать устройство /dev/ed


Дело в том, что такие устройства не нужны. В стандарте сетевого взаимодействия Беркли сетевые интерфейсы напрямую доступны только ядру. За дополнительной информацией обратитесь к файлу /etc/rc.network и страницам справочника, описывающим различные сетевые программы, упоминаемые здесь. Если всё это оставит вас в недоумении, почитайте книгу, описывающую администрирование сети в другой BSD-подобной операционной системе; с некоторыми незначительными исключениями, администрирование сети во FreeBSD в основном совпадает с SunOS 4.0 и Ultrix.



Почему я получаю сообщение об ошибке ``/kernel: proc: table is full''?


Ядро FreeBSD позволяет существовать одновременно ограниченному числу процессов. Оно вычисляется на основании параметра MAXUSERS в конфигурации ядра. MAXUSERS также влияет на другие ограничения ядра, такие как буферы работы с сетью (обратитесь к этому рассмотренному ранее вопросу). Если ваша машина сильно загружена, вам, наверное, понадобится увеличить MAXUSERS. Кроме максимального числа процессов, это увеличит значения и других параметров, ограничивающих систему.

После FreeBSD 4.4, значение MAXUSERS стало меняемой величиной, которая может быть задана как kern.maxusers в /boot/loader.conf. Для более ранних версий FreeBSD вам нужно будет изменить значение MAXUSERS в файле конфигурации ядра.

Если ваша машина загружена слабо, то просто вы запустили слишком много процессов, и вы можете исправить это через sysctl kern.maxproc. Если эти процессы запущены одним и тем же пользователем, вам также задать значение kern.maxprocperuid на единицу меньшим, чем новое значение kern.maxproc. (Оно должно быть по крайней мере на единицу меньшим, потому что системная программа init(8), должна работать всегда.)

Чтобы значения sysctl сохранились после перезагрузки, задайте их в /etc/sysctl.conf для последних версий FreeBSD, или в /etc/rc.local для более ранних версий.



Почему командой chmod невозможно изменить права на символические ссылки?


Символические ссылки не имеют атрибутов доступа, а по умолчанию утилита chmod(1) не следует символической ссылке для изменения прав доступа к файлу, на который указывает ссылка. Поэтому, если у вас есть файл, скажем, с именем foo и символическая ссылка bar на этот файл, то эта команда всегда будет выполняться успешно.

% chmod g-w bar

Однако права на файл foo не изменятся.

Чтобы это работало, используйте опции -H или -L вместе с опцией -R. Обратитесь к страницам Справочника по команде chmod(1) и по symlink(7).

Внимание: Опция -R выполняет команду chmod(1) РЕКУРСИВНО. Будьте осторожны, задавая каталоги или символические ссылки на каталоги в параметрах chmod(1). Если вы хотите изменить права на каталог, на который указывает символическая ссылка, используйте без опций и следуйте символической ссылке с помощью лидирующего слэша (/). Например, если foo является символической ссылкой на каталог bar, а вы хотите изменить права на foo (на самом деле bar), вы должны выполнить команду типа следующей:

% chmod 555 foo/

Если задан лидирующий слэш, то chmod(1) будет следовать символической ссылке, foo, меняя права на каталог bar.



Почему мне не удаётся откомпилировать ни один вариант ядра, даже GENERIC?


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

Вы не используете новые цели make buildkernel и make installkernel, и ваше дерево исходных текстов отличается от того, которое использовалось для построения работающей в данный момент системы (например, вы выполняете построение 4.3-RELEASE на системе 4.0-RELEASE). Если вы пытаетесь выполнить обновление, то, пожалуйста, прочитайте файл /usr/src/UPDATING, обратив особое внимание на раздел ``COMMON ITEMS'' в его конце.

Вы используете новые цели make buildkernel и make installkernel, но выполнение цели make buildworld не было завершено. Полное и корректное выполнение цели make buildkernel зависит от файлов, генерирующихся при выполнении цели make buildworld.

Даже если вы пытаетесь построить FreeBSD-STABLE, возможно, что вы скачали дерево исходных текстов в момент, когда оно модифицировалось или было неработоспособно по другим причинам; абсолютно гарантируется построение только релизов, хотя в большинстве случаев строится без проблем. Если вы ещё этого не сделали, попробуйте сгрузить дерево исходных текстов повторно и посмотреть, разрешилась ли проблема. Попробуйте использовать другой сервер в случае, если есть проблемы с тем, который вы используете сейчас.



Почему мой адаптер OM перестал работать без всякой видимой причины?


Этот адаптер имеет странную привычку терять информацию о своих настройках. Обновите настройки вашего адаптера при помощи утилиты 3c5x9.exe

из DOS.



Почему мой лэптоп некорректно распознаёт PC-карты?


Эта проблема часто встречается на лэптопах, которые работают более чем с одной операционной системой. Некоторые не-BSD операционные системы оставляют аппаратную часть PC-карт в неустойчивом состоянии. pccardd распознает карту как ``"(null)""(null)"'', а не как реально используемую модель.

Вы должны убрать всё питание со слота PC-карты для полного сброса аппаратуры. Полностью выключите лэптоп. (Не переводите его ни в спящий, ни в ждущий режим; питание должно быть выключено полностью.) Подождите несколько секунд и перезагрузитесь. Теперь ваша PC-карта должна заработать.

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



Почему моя мышь не работает с X?


Если вы используете syscons (стандартный драйвер консоли), то можете настроить поддержку указателя мыши во всех виртуальных экранах. Во избежание конфликтов с X, драйвер syscons поддерживает виртуальное устройство /dev/sysmouse. Все события, получаемые от реальной мыши, пишутся в устройство sysmouse через moused. Если вы хотите использовать вашу мышь на одной или нескольких виртуальных консолях, продолжая использовать X, посмотрите В: 4.13. и настройте moused.

Затем отредактируйте /etc/XF86Config так, чтобы в нём были следующие строки.

Section Pointer Protocol "SysMouse" Device "/dev/sysmouse" .....

Пример выше предназначен для XFree86 3.3.2 и выше. Для более ранних версий параметр Protocol должен быть MouseSystems.

Некоторые предпочитают использовать в X устройство /dev/mouse. Чтобы оно работало, файл устройства /dev/mouse должен являться ссылкой на /dev/sysmouse (посмотрите справку по sysmouse(4)):

# cd /dev

# rm -f mouse

# ln -s sysmouse mouse



Почему моя мышь PS/от MouseSystems не работает?


Было несколько сообщений, что некоторые модели мышей PS/2 от MouseSystems работают только в режиме ``высокого разрешения''. В других режимах курсор мыши постоянно прыгает в верхний левый угол экрана.

Укажите флаг 0x04 драйверу мыши PS/2 для перевода её в режим высокого разрешения. Войдите в UserConfig, задав опцию -c в приглашении загрузчика:

boot: -c

Затем в командной строке UserConfig наберите:

UserConfig> flags psm0 0x04

UserConfig> quit

В предыдущем разделе описана возможная причина проблем с мышью.



Почему моё ядро такое большое (больше МБ)?


Скорее всего, вы компилировали ядро в отладочном режиме. Ядра, построенные в этом режиме, содержат много символьной информации, которая используется для отладки и сильно увеличивает размер ядра. Заметьте, что, если вы работаете с FreeBSD версии 3.0 и старше, то уменьшения производительности при использовании отладочного ядра нет или оно незначительно, однако отладочное ядро полезно иметь под рукой на случай аварийного завершения работы системы.

Однако, если вы испытываете нехватку дискового пространства или просто не хотите использовать отладочное ядро, проверьте, что имеют место следующие две вещи:

В конфигурационном файле вашего ядра нет строчки, имеющей такой вид:

makeoptions DEBUG=-g

Вы не запускали утилиту config(8) с опцией -g.

Обе из вышеперечисленных ситуаций приведут к построению ядра в отладочном режиме. Если же вы точно следуете указанным шагам, то сможете построить обычное ядро и заметите значительное уменьшение его размера; большинство ядер имеют размер от 1.5МБ до 2МБ.



Почему моё правило ``fwd'' для ipfw по перенаправлению сервиса на другую машину не работает?


Возможно, потому что вы хотите выполнять трансляцию сетевых адресов (NAT), а не просто перенаправлять пакеты. Правило ``fwd'' делает точно то, что означает; оно перенаправляет пакеты. Данные внутри пакета оно не меняет. Пусть, скажем, у нас имеется правило такого вида:

01000 fwd 10.0.0.1 from any to foo 21

Когда пакет с адресом назначения foo достигает машины с этим правилом, то он перенаправляется на 10.0.0.1, но в нём остаётся адрес назначения foo! Адрес назначения пакета не меняется на 10.0.0.1. Большинство машин, скорее всего, отбросят полученный пакет, имеющий адрес назначения, им не соответствующий. Таким образом, правило ``fwd'' не часто работает так, как ожидает пользователь. Такое поведение является особенностью, а не ошибкой.

Обратитесь к , руководству по natd(8) или одной из нескольких утилит для перенаправления из Коллекции Портов для того, чтобы сделать это правильно.



Почему mountd продолжает выдавать


В большинстве случаев проблема заключается в недостаточном понимании корректного формата файла /etc/exports. Пожалуйста, просмотрите ещё раз справочную информацию по exports(5) и раздел об в Руководстве, особенно в части настройки NFS.



Почему не получается создать устройство snd


Такого устройства, как snd, не существует. Это название используется в качестве краткого обозначения различных устройств, которые составляют во FreeBSD звуковой драйвер, таких как mixer, sequencer и dsp.

Для создания этих устройств вы должны сделать следующее:

# cd /dev

# sh MAKEDEV snd0

Замечание: Вы можете пропустить этот шаг, если используете FreeBSD 5.0-RELEASE или более новую версию с включенным механизмом

devfs(5).



Почему не получается заставить работать дисковые квоты?


Не включайте квотирование на /,

Помещайте файл с квотами в ту файловую систему, которую он обслуживает, то есть:

Файловая система

Файл квот

/usr /usr/admin/quotas
/home /home/admin/quotas
... ...



Почему не срабатывает знак <@> для описания характеристики pn?


Знак <@> в характеристике, описывающей номер телефона, указывает программе tip обратиться к файлу /etc/phones для поиска телефонного номера. Однако знак <@> является также и специальным символом в файлах описания характеристик типа /etc/remote. Экранируйте его символом обратного слэша:

pn=\@



Почему не удаётся запустить tip или cu?


Скорее всего, в вашей системе запуск программ tip(1) и cu(1) разрешён только пользователю uucp и членам группы dialer. Вы можете использовать группу dialer для управления доступом к вашему модему или удалённым системам. Достаточно добавить пользователя в группу dialer.

Вы можете разрешить всем пользователям вашей системы запускать tip(1) и cu(1), выполнив команды:

# chmod 4511 /usr/bin/cu

# chmod 4511 /usr/bin/tip



Почему некоторый порт не компилируется на моей машине с X-STABLE?


Если вы используете FreeBSD версии, значительно отстающей от -CURRENT или -STABLE, вам нужен пакет обновления, который можно найти по адресу http://www.FreeBSD.org/ports/. Если вы отслеживаете все изменения, то, скорее всего, кто-то внёс изменения в порт, так что он работает в -CURRENT, но не работает в -STABLE. Так как предполагается, что коллекция портов должна работать как в ветке -CURRENT, так и в ветви -STABLE, то, пожалуйста, пошлите сообщение об этой ошибке с помощью команды send-pr(1).



Почему Netscape и Opera запускаются так долго?


Обычно проблема заключается в том, что на вашей машине неправильно настроен DNS. И Netscape, и Opera при запуске обращаются к DNS. Браузер не появится на вашем рабочем столе, пока программа либо не получит ответ на свой запрос, либо не определит, что система к сети не подключена.



Почему невозможно отредактировать метку диска ccd?


Симптом выглядит так:

# disklabel ccd0

(здесь выводится информация о диске, пробуем отредактировать метку) # disklabel -e ccd0

(редактирование, сохранение, выход) disklabel: ioctl DIOCWDINFO: No disk label on disk; use "disklabel -r" to install initial label

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

# disklabel ccd0 > /tmp/disklabel.tmp

# disklabel -Rr ccd0 /tmp/disklabel.tmp

# disklabel -e ccd0

(теперь это будет работать)



Почему нужно нажимать CTRL+P дважды для посылки одного этого символа CTRL+P?


По умолчанию CTRL+P является специальным символом ``принудительного ввода'', используемым для указания программе tip(1), что следующий символ является байтом данных. Вы можете назначить функцию символа принудительного ввода любому другому символу с помощью команды ~s, которая предназначена для ``установки значений переменных''.

Наберите ~sforce=single-char

с начала новой строки. Здесь под single-char имеется в виду любой одиночный символ. Если вы не зададите single-char, то символом принудительного ввода будет нулевой символ, который можно получить, нажав CTRL+2

или CTRL+SPACE. Подходящим значением для single-char является SHIFT+CTRL+6, что используется только некоторыми терминальными серверами.

Вы можете задать любое значение для символа принудительного ввода, указав его в вашем файле $HOME/.tiprc:

force=single-char



Почему подключение через ssh или telnet к моему компьютеру занимает так долго времени?


Симптом: между моментом установления TCP-соединения и выдачей клиентским программным обеспечением запроса на ввод пароля (или, в случае использования telnet(1), выдачей приглашения на вход) проходит большой промежуток времени.

Проблема: скорее всего, задержка вызвана программным обеспечением на стороне сервера, которое пытается преобразовать IP-адрес клиента в имя хоста. Многие серверы, включая Telnet и SSH, поставляемые с FreeBSD, делают это для того, чтобы, кроме всего прочего, записать имя хоста в файле журнала для справки администратора.

Лечение: Если проблема возникает вне зависимости от того, к какому серверу вы подключаетесь с вашего компьютера (клиента), то причина в клиенте; или же, если проблема возникает только при чьей-либо попытке подключиться к вашему компьютеру (серверу), то проблема с сервером.

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

Если проблема с сервером, и это происходит в локальной сети, то вам нужно настроить сервер для разрешения запросов на преобразование адреса в имя хоста в диапазоне ваших локальных адресов. Обратитесь к страницам Справочника по hosts(5) и named(8) для получения более подробной информации. Если это происходит в глобальной сети Интернет, то проблема может заключаться в некорректной работе ресолвера вашего сервера. Для проверки попробуйте найти другой хост--скажем, www.yahoo.com. Если это не работает, что проблема у вас.



Почему появляется сообщение ``panic


Эта ошибка проявляется, когда есть несогласование между представлениями загрузочного блока и ядра о дисковых устройствах. Эта ошибка обычно проявляется на системах с двумя дисками IDE, с винчестерами, установленными как ведущий или единственный на отдельных контроллерах IDE, с FreeBSD, инсталлированной на втором контроллере IDE. Программа в загрузочных блоках полагает, что система установлена на wd1 (второй диск BIOS), тогда как ядро даёт первому диску на втором контроллере название wd2. После обнаружения устройства ядро пытается смонтировать то, что загрузочные блоки выдают за загрузочный диск, wd1, тогда как он на самом деле wd2, и ошибается.

Для разрешения этой проблемы выполните одно из следующих действий:

Для FreeBSD 3.3 и выше, перегрузите систему и нажмите Enter при появлении приглашения Booting kernel in 10 seconds; hit [Enter] to interrupt. Вы окажетесь в загрузчике.

После этого наберите set root_disk_unit="disk_number". Здесь в качестве disk_number должен быть указан 0, если FreeBSD установлена на ведущем диске первого контроллера IDE, 1, если она установлена на ведомом диске первого контроллера IDE, 2, если система находится на ведущем диске второго IDE-контроллера и 3, если она установлена на ведомом диске второго контроллера IDE.

Затем введите команду boot, и ваша система должна нормально загрузиться.

Чтобы сделать эти изменения постоянными (то есть чтобы вам не было нужды выполнять эти действия каждый раз при перезагрузке или включении вашей машины с FreeBSD), поместите строчку root_disk_unit="disk_number" в файл /boot/loader.conf.local.

При использовании FreeBSD 3.2 и более ранних версий в приглашении Boot: наберите 1:wd(2,a)kernel и нажмите Enter. Если система запустилась, выполните команду echo "1:wd(2,a)kernel" > /boot.config, чтобы сделать это строкой загрузки по умолчанию.

Поместите диск с FreeBSD на первичный контроллер IDE, так чтобы именования диском пришли в соответствие.

, изменив конфигурацию контроллера wd на следующее:

controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr disk wd0 at wdc0 drive 0 # disk wd1 at wdc0 drive 1 # comment out this line

controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr disk wd1 at wdc1 drive 0 # change from wd2 to wd1 disk wd2 at wdc1 drive 1 # change from wd3 to wd2

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



Почему появляются конфликты прерываний


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

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

# # Высокоскоростной многопортовый коммуникационный адаптер - 16550 UARTS # device sio2 at isa? port 0x2a0 tty irq 5 flags 0x501 vector siointr device sio3 at isa? port 0x2a8 tty flags 0x501 vector siointr device sio4 at isa? port 0x2b0 tty flags 0x501 vector siointr device sio5 at isa? port 0x2b8 tty flags 0x501 vector siointr



Почему появляются сообщения ``/dev/bpf device not configured''?


Вы запускаете программу, которой требуется Berkeley Packet Filter (bpf(4)), однако его нет в вашем ядре. Перекомпилируйте ядро, добавив в его конфигурационный файл следующую строку:

pseudo-device bpf # Berkeley Packet Filter

Для FreeBSD 4.X и более ранних версий вы должны также создать файл устройства. После перезагрузки системы перейдите в каталог /dev и выполните команду:

# sh MAKEDEV bpf0

Обратитесь к разделу Руководства, посвящённому созданию файлов устройств за подробной информацией по управлению устройствами.



Почему после обновления FreeBSD


FreeBSD 4.X теперь гораздо более PnP-центрична, что отражается на некоторых устройствах PnP (к примеру, звуковых адаптерах и внутренних модемах), перестающих работать, хотя они функционировали в системе FreeBSD 3.X.

Причины такого поведения объясняются в следующем сообщении электронной почты, опубликованном в Питером Уэммом (Peter Wemm) в ответ на вопрос о внутреннем модеме, который перестал распознаваться после обновления до FreeBSD 4.X (комментарии внутри [] были добавлены для пояснения контекста послания.

Замечание: Содержание этой цитаты по сравнению с оригинальным текстом было изменено.

BIOS, поддерживающая PNP, предварительно отводит и оставляет ему [модему] место в адресном пространстве портов, так что [в 3.X] процедура обнаружения в старом стиле ISA ``находит'' его здесь.

В 4.0 код для работы с ISA гораздо более PnP-центричен. [В 3.X] было возможно при распознавании ISA найти ``беспризорное'' устройство и затем по идентификатору PNP-устройства произвести поиск и получить ошибку из-за конфликта ресурсов. Поэтому для предотвращения повторной процедуры распознавания в нём сначала выключаются все управляемые адаптеры. Это также означает, что для поддерживаемого оборудования PnP нужно знать их PnP-идентификаторы. Имеются планы на обеспечение возможности настройки этого со стороны пользователя.

Чтобы заставить устройство работать снова, требуется определить его PnP-идентификатор и добавить его в список, который используется процедурой распознавания ISA для идентификации устройств PnP. Этот идентификатор можно получить при помощи программы pnpinfo(8), найдя устройство в её выдаче, вот, например, вывод команды pnpinfo(8) в случае внутреннего модема:

# pnpinfo

Checking for Plug-n-Play devices...

Card assigned CSN #1 Vendor ID PMC2430 (0x3024a341), Serial Number 0xffffffff PnP Version 1.0, Vendor Version 0 Device Description: Pace 56 Voice Internal Plug & Play Modem

Logical Device ID: PMC2430 0x3024a341 #0 Device supports I/O Range Check TAG Start DF I/O Range 0x3f8 .. 0x3f8, alignment 0x8, len 0x8 [16-bit addr] IRQ: 4 - only one type (true/edge)


[лишние строки TAG исключены]

TAG End DF End Tag

Successfully got 31 resources, 1 logical fdevs -- card select # 0x0001

CSN PMC2430 (0x3024a341), Serial Number 0xffffffff

Logical device # 0 IO: 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 IRQ 5 0 DMA 4 0 IO range check 0x00 activate 0x01

Информация, которая вам нужна, находится в строке ``Vendor ID'' в самом начале вывода команды. Шестнадцатеричное число в скобках (в этом примере 0x3024a341) является PnP-идентификатором, а строчка, идущая прямо перед ним (PMC2430) является уникальным ASCII-идентификатором.

Либо, если в списке, выдаваемом pnpinfo(8), адаптера нет, можно воспользоваться утилитой pciconf(8). Вот часть выдачи команды pciconf -vl для интегрированного в материнскую плату звукового адаптера:

# pciconf -vl

chip1@pci0:31:5: class=0x040100 card=0x00931028 chip=0x24158086 rev=0x02hdr=0x00 vendor = 'Intel Corporation' device = '82801AA 8xx Chipset AC'97 Audio Controller' class = multimedia subclass = audio

В данном случае вам нужно использовать значение для chip, ``0x24158086''.

Эту информацию (ID производителя или номер микросхемы) нужно добавить в файл /usr/src/sys/isa/sio.c.

Сначала вы должны сделать резервную копию файла sio.c просто на тот случай, если что-то пойдёт не так. Эта копия также может потребоваться для создания патча для посылки его вместе с вашим PR (вы же собираетесь послать PR, не правда ли?) отредактировав файл sio.c и поискав строчку

static struct isa_pnp_id sio_ids[] = {

после чего переместитесь ниже и найдите подходящее место, чтобы добавить строчку для вашего устройства. Записи имеют примерно такой вид, и они отсортированы по ASCII-строкам Vendor ID, которые должны быть помещены в поле комментария справа от строки кода вместе с полным описанием устройства (если оно поместится) или частью из Device Description вывода программы pnpinfo(8):

{0x0f804f3f, NULL}, /* OZO800f - Zoom 2812 (56k Modem) */ {0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */ {0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */ {0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */ {0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */

Добавьте шестнадцатеричный идентификатор Vendor ID вашего устройства в соответствующее место, сохраните файл, перестройте ядро и выполните перезагрузку. Ваше устройство должно теперь быть найдено в виде устройства sio, как это и было во FreeBSD 3.X


Почему после редактирования моего файла crontab я получаю сообщения вида ``root: not found''?


Обычно это случается при редактировании системного crontab-файла (/etc/crontab) и последующего использования утилиты crontab(1) для его установки:

# crontab /etc/crontab

Это неправильно. Системный crontab-файл имеет формат, отличный от пользовательских crontab-файлов, которые обновляет утилита crontab(1) (страница Справочника по описывает отличия более подробно).

Если это именно то, что вы сделали, то дополнительный crontab-файл является просто копией файла /etc/crontab в неправильном формате. Удалите его такой командой:

# crontab -r

В следующий раз при редактировании файла /etc/crontab, вам не нужно делать ничего для оповещения утилиты cron(8) о сделанных изменениях, так как она распознает их автоматически.

Если вы хотите запускать что-то один раз в день, неделю или месяц, то, наверное, лучше обновить скрипты /usr/local/etc/periodic и позволить команде periodic(8), запускаемой системной cron-утилитой, планировать их выполнение вместе с другими периодическими системными задачами.

Реальная причина ошибки заключается в том, что системный crontab-файл имеет дополнительное поле, указывающее, какой пользователь запускает команду. В системном crontab-файле, поставляемом с FreeBSD и используемом по умолчанию, это пользователь root для всех строк. Если этот crontab-файл используется в качестве crontab-файла пользователя root (что не то же самое, что системный crontab-файл), cron(8) полагает, что слово root является первым в команде на выполнение, но такой команды не существует.



Почему ppp не протоколирует скорость соединения?


Для вывода протокола взаимодействия с модемом вам нужно включить следующее:

set log +connect

Это заставит протоколировать всё, вплоть до последней прочтённой через ``expect'' строки.

Если вы хотите видеть скорость соединения и используете PAP или CHAP (и поэтому вам не нужно определять никаких сценариев входа через set login после получения строки CONNECT сценарием дозвонки dial), вы должны указать ppp(8), что нужно ожидать полную строку CONNECT, вроде следующего:

set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 4 \ \"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n"

Здесь мы получили строку CONNECT, ничего не посылаем, затем ожидаем символа перевода строки, заставляя принять полный ответ модема.



Почему при работе в MacOS и Windows соединения замирают, когда на маршрутизаторе используется PPPoE


Мы благодарим Майкла Возняка (Michael Wozniak) mwozniak@netcom.ca>, который сообщил следующую информацию, и Дэна Флемминга (Dan Flemming) danflemming@mac.com> за решение проблемы в случае Mac:

Это происходит из-за эффекта, который можно назвать ``чёрной дырой'' на маршрутизаторе. MacOS и Windows 98 (и, может быть, другие операционные системы от Microsoft), посылают пакеты TCP с запрашиваемым размером сегмента, который слишком велик для того, чтобы быть помещённым в кадр PPPoE (для сети Ethernet размер MTU по умолчанию равен 1500) и с установленным битом ``не фрагментировать'' (по умолчанию для TCP), а маршрутизаторы Telco не посылает пакет ICMP ``нужно фрагментировать'' обратно на сайт www, с которым вы работаете. (Либо маршрутизатор посылает пакеты ICMP правильно, а межсетевой экран на стороне веб-сервера их сбрасывает.) Когда веб-сервер посылает вам кадры, которые не помещаются в поток PPPoE, то маршрутизаторы Telco их отбрасывают и странички не загружаются (часть страниц/графики всё же видно, потому что они меньше, чем MSS). Похоже, что такие настройки действуют по умолчанию на большинстве конфигураций PPPoE Telco (если они вообще знают, как программировать маршрутизатор... да уж...).

Одним из способов исправить это является использование утилиты regedit на машинах 96/98 для того, чтобы добавить в реестр следующий параметр...

HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\Class\NetTrans\0000\MaxMTU

Это должна быть строка со значением ``1436'', так как имеются сведения, что некоторые маршрутизаторы ADSL не могут работать с пакетами размером, превышающим эту величину. В Windows 2000 этот параметр реестра был перенесён в Tcpip\Parameters\Interfaces\ID адаптера\MTU и имеет тип DWORD.

Обратитесь к документам из Microsoft Knowledge Base Q158474 - Windows TCPIP Registry Entries и Q120642 - TCPIP & NBT Configuration Parameters for Windows NT для получения более полной информации по изменению MTU в Windows для работы с NAT-маршрутизатором.

Другим вариантом с Windows 2000 является установка в регистре DWORD-параметра Tcpip\Parameters\Interfaces\ID адаптера\EnablePMTUBHDetect в 1, как это отмечено в документе Microsoft 120642, указанном выше.

К несчастью, в MacOS нет возможности изменить настройки TCP/IP. Однако имеется коммерческое программное обеспечение, такое, как OTAdvancedTuner (OT for OpenTransport, the MacOS TCP/IP stack) компании , которое позволяет пользователям настраивать параметры TCP/IP. Пользователи MacOS NAT должны выбрать ip_interface_MTU из выпадающего меню, ввести число 1450 вместо 1500 в окне, затем щёлкнуть на кнопке, следующей за Save as Auto Configure, и щёлкнуть на Make Active.

В самой последней версии ppp(8) (2.3 и выше) имеется команда enable tcpmssfixup, которая автоматически выравнивает значение MSS к нужному. Эта возможность по умолчанию включена. Если у вас возникли проблемы с более старой версией ppp(8), то вас может заинтересовать порт tcpmssd.



Почему при загрузке системы выдаётся сообщение ``(bus speed defaulted)?''


Адаптеры SCSI Adaptec 1542 позволяют программно изменять скорость доступа к шине. Предыдущие версии драйвера 1542 пытались определить максимально возможную скорость работы и установить это значение. Мы обнаружили, что у некоторых пользователей это приводило к нарушению работоспособности системы, поэтому эта возможность сейчас вынесена в параметр конфигурации ядра TUNE_1542. Использование этой опции на тех системах, где она работает, может привести к ускорению доступа к дискам, а там, где это не работает, может привести к потере данных.



Почему при запуске некоторых программ


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

Ваше ядро и программы пользователей не соответствуют друг другу (например, вы построили ядро, но не выполнили команду installworld, или наоборот), и поэтому таблица имен отличается от того, что думают о ней пользовательские приложения. Если это ваш случай, просто завершите процесс обновления (обратитесь к файлу /usr/src/UPDATING для выяснения правильной последовательности действий).

Для загрузки ядра вы не используете /boot/loader, а делаете это непосредственно из boot2 (обратитесь к справочно странице по boot(8)). Хотя нет ничего плохого в обходе /boot/loader, обычно работу по доступности символьной информации ядра из пользовательских приложений он выполняет лучше.



Почему программа ppp, обслуживающая нуль-модем, никогда не закрывается?


не может определить, что соединение было закрыто. Это происходит из-за метода использования сигнальных линий нуль-модемного кабеля. При использовании такого типа соединения всегда включайте LQR.

enable lqr

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



Почему сетевой адаптер om PCI не работает с компьютерами Micron?


Некоторые материнские платы Micron имеют BIOS, не удовлетворяющую стандарту PCI BIOS, что приводит к несоответствию устройств PCI занимаемым ими адресам. Это приводит к печальным последствиям при загрузке FreeBSD.

Для решения этой проблемы отключите в BIOS опцию ``Plug and Play Operating System''.

Более подробная информация об этой проблеме находится по следующему адресу: http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron



Почему система называется именно FreeBSD?


Она может использоваться безо всяческих выплат, даже для извлечения выгоды.

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

Любой, у кого есть усовершенствования или исправления, может предоставить свой код и он будет (правда, с парой оговорок) добавлен в исходные тексты системы.

Следует отметить, что слово ``free'' используется здесь в двух смыслах, один означает ``бесплатно'', а другой ``вы можете делать всё, что хотите''. За исключением пары вещей, которые вы не можете делать с FreeBSD, например, претендовать на то, что являетесь её разработчиком, на самом деле можно делать с ней всё, что вам заблагорассудится.



Почему su выдаёт сообщение о том, что я не вхожу в root ACL?


Эта ошибка выдаётся распределённой системой аутентификации Kerberos. Эта ошибка не фатальна, однако это раздражает. Вы можете запустит su с ключом -K либо деинсталлировать Kerberos, как описано в следующем разделе.



Почему suidperl работает неправильно?


В целях обеспечения безопасности suidperl по умолчанию устанавливается без suid-бита. Системный администратор может включить использование suid-бита следующей командой.

# chmod u+s /usr/bin/suidperl

Если вы хотите, чтобы suid-бит для suidperl было установлен во время обновления из исходных текстов, отредактируйте /etc/make.conf, добавив ENABLE_SUIDPERL=true перед запуском make buildworld.

Работа в сети   PPP



Почему утилита top( показывает


Просто дело в том, что под свободной памятью подразумевается никак не используемая память. Вся память, которая вашей программе явно не выделялась, используется ядром FreeBSD для дискового кэша. Значения, показываемые утилитой top(1), помеченные как Inact, Cache и Buf - это всё кэшированные данные разных степеней устаревания. То, что данные находятся в кэше, означает, что система не будет обращаться к медленному диску снова за теми данными, обращение к которым было недавно, повышая таким образом общую производительность. В общем случае маленькие значения в пункте Free, показываемые утилитой top(1) для свободной памяти - это хорошо, если, конечно они не очень маленькие.



Почему в dmesg регулярно выводятся сообщения ``file: table is full''?


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



Почему в SSH аутентификация посредством


Причиной, по которой .shosts аутентификация не работает по умолчанию в последних версиях FreeBSD, является то что ssh(1) не устанавливается более с битом изменения привилегий на пользователя root. Если вы хотите ``исправить'' это, то вы можете сделать одно из двух нижеприведённых действий:

Как постоянную правку, установите ENABLE_SUID_SSH в true в файле /etc/make.conf и перекомпилируйте ssh.

Как временную правку измените права доступа к файлу /usr/bin/ssh на 4555 командой chmod 4555 /usr/bin/ssh из-под администратора. А потом добавьте строку ENABLE_SUID_SSH=true в файл /etc/make.conf, чтоб это изменение осталось в силе после очередного обновления системы с помощью make world.



Почему возможно заполнение раздела больше чем на ?


Часть каждого раздела UFS (по умолчанию 8%) зарезервировано для использования операционной системой и пользователем root. Утилита df(1) не учитывает это при подсчёте значения в колонке Capacity, так что оно может превышать 100%. Также вы заметите, что колонка Blocks всегда больше, чем сумма значений в колонках Used и Avail, обычно на 8%.

Для получения более подробной информации обратитесь к описанию опции -m в справке по tunefs(8).

Конфигурирование ядра   Системное администрирование



Почему возможности /bin/sh так


Потому что в стандарте POSIX сказано, что все командные процессоры должны вести себя так же, как shell.

Более подробный ответ заключается в следующем: многим требуется, чтобы разрабатываемые скрипты для командного процессора были переносимы между многими системами. Именно поэтому в POSIX очень подробно описан командный процессор и набор утилит. Большинство скриптов пишутся на языке процессора Bourne shell, к тому же некоторые важные программные вызовы (, system(3), popen(3) и их аналоги на языках скриптов высокого уровня, таких как Perl или Tcl) предполагают для интерпретации команд использование именно Bourne shell. Так как Bourne shell используется столь широко и часто, то очень важно, чтобы он стартовал очень быстро, его поведение было строго регламентировано и при этом потребности в оперативной памяти были малы.

В имеющейся реализации мы приложили максимум усилий для воплощения в жизнь всех этих требований одновременно. Для того, чтобы сохранить /bin/sh

небольшим по размеру, мы не включили многие из обычных возможностей, которые имеются в других командных процессорах. Однако в Коллекцию Портов включены командные процессоры, обладающие гораздо большими возможностями, такие, как bash, scsh, tcsh и zsh. (Вы можете сами сравнить использование памяти всеми этими оболочками, посмотрев в колонки ``VSZ'' и ``RSS'' вывода команды ps -u).



Почему возвращается моя электронная почта отправленная на любой из адресов FreeBSDorg?


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

Электронная почта была послана с домена или блока IP-адресов, которые известны нам как спамеры.

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

Тело сообщения электронной почты содержит только HTML.

Почта должна посылать только как обычный текст. Пожалуйста, настройте ваш почтовый агент на отправку только текста.

Почтовая программа FreeBSD.org не может преобразовать адрес IP подключающегося хоста в символическое имя.

Работа обратного DNS является стандартным требованием для принятия почты от хоста. Настройте обратный DNS для IP-адреса вашего почтового сервера. Многие способы домашнего подключения (DSL, кабель, коммутируемое соединение и тому подобное) не предоставляют такой возможности. В таком случае пересылайте свою электронную почту через почтовый сервер вашего поставщика услуг.

Имя хоста, указанное на этапе EHLO/HELO процесса обмена сообщениями SMTP не может быть преобразовано в IP-адрес.

На этом этапе диалога SMTP, перед принятием почты, необходим полное и преобразуемое имя хоста. Если у вас нет имени хоста, который зарегистрирован в DNS, то для пересылки своей почты вы должны использовать почтовый сервер вашего поставщика услуг.

Ваше сообщение имеет идентификатор, оканчивающийся строчкой ``localhost''.

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



Почему выводятся сообщения ``calcru: negative time''?


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

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

Если эта проблема не может быть решена, для FreeBSD 3.0 от 29 ноября 1998 и выше измените значение системной переменной:

# sysctl -w kern.timecounter.method=1

Замечание: Использование опции -w для sysctl(8) не рекомендуется и полностью игнорируется во FreeBSD 4.4-RELEASE и всех последующих версиях. Вы можете безболезненно опустить её при задании параметров при помощи sysctl, как это показано выше.

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



Поддерживает ли FreeBSD аппаратные платформы, отличные от x?


Да. В настоящее время FreeBSD поддерживает архитектуры Intel x86 и DEC (сейчас Compaq) Alpha. Начиная с FreeBSD 5.0, также поддерживаются архитектуры IA-64, AMD-64 и SPARC-64. Планируются к поддержке платформы MIPS и PowerPC, дополнительную информацию о происходящей работе можно получить, подписавшись соответственно на Список рассылки, посвящённый портированию FreeBSD на архитектуру PowerPC или Список рассылки, посвящённый портированию FreeBSD на архитектуру MIPS. Для обсуждение общих вопросов, касающихся новых аппаратных платформ, предназначен Список рассылки, посвящённый портированию FreeBSD на не-Intel платформы.

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



Поддерживает ли FreeBSD многопроцессорные системы (SMP)?


Да. Поддержка SMP в ядре GENERIC не включена, так что для её включения вам нужно перекомпилировать ядро. Посмотрите в файл /sys/i386/conf/LINT, чтобы определить, какие параметры нужно поместить в конфигурационный файл вашего ядра.



Поддерживает ли FreeBSD программные модемы, такие, как Winmodem?


FreeBSD поддерживает работу со многими программными модемами посредством специального дополнительного программного обеспечения. Установка порта comms/ltmdm добавит поддержку для модемов на основе очень популярного набора микросхем Lucent LT. Порт comms/mwavem поддерживает модемы, установленные в лэптопах IBM Thinkpad 600 и 700.

Вы не сможете установить FreeBSD, работая через программный модем; это программное обеспечение должно быть установлено после установки ОС.



Поддерживает ли FreeBSD протоколы SLIP и PPP?


Да. Обратитесь к страницам справочника по командам slattach(8), sliplogin(8), ppp(8), и pppd(8). ppp(8) и pppd(8) могут обслуживать как входящие, так и исходящие соединения, когда как sliplogin(8) имеет дело исключительно со входящими соединениям, а slattach(8) только с исходящими.

Более подробная информация об их использовании находится в разделе Руководства о протоколах PPP и SLIP.

Если вы имеете доступ в Internet только через командную строку оболочки, вам может подойти пакадж . С его помощью можно получить (ограниченный) доступ к таким службам, как FTP и http прямо с вашей машины.



Поддерживает ли FreeBSD роботов для смены лент?


FreeBSD поддерживает роботизированные устройства SCSI через устройство ch(4) и команду chio(1). Подробная информация об управлении такими роботами может быть найдена на странице Справочника по команде .

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



Поддерживает ли FreeBSD съёмные диски типа JAZ или EZ?


Кроме IDE-варианта устройства EZ, это всё устройства SCSI, так что для FreeBSD все они должны выглядеть как диски SCSI, а IDE EZ должен выглядеть как диск IDE.

Я не знаю, насколько хорошо FreeBSD поддерживает смену носителя во время работы. Конечно, чтобы сменить диск, вам сначала нужно его размонтировать, и обратите внимание на то, что при загрузке все внешние устройства должны быть включены, чтобы FreeBSD могла их распознать.

Посмотрите это о ``форматировании''.



Поддерживает ли FreeBSD технологию NAT или Masquerading?


Да. Если вы собираетесь использовать NAT с пользовательским соединением PPP, пожалуйста, обратитесь к . Если же вы хотите использовать NAT вместе с другим типом сетевого подключения, пожалуйста, взгляните на раздел о natd Руководства.



Поддерживает ли FreeBSD управление энергосбережением на лэптопах?


FreeBSD поддерживает APM на некоторых машинах. Поищите в файле конфигурации ядра LINT слово APM. Более полная информация может быть найдена в справочной странице по .



Поддерживает ли FreeBSD USB клавиатуры?


FreeBSD 4.X и более поздние версии имеют встроенную поддержку клавиатур USB. Некоторая поддержка устройств USB появилась во FreeBSD 3.1, но она не всегда работает так, как в версии 3.2. Если вы хотите поэкспериментировать с поддержкой клавиатуры USB во FreeBSD 3.X, следуйте указаниям ниже.

Используйте FreeBSD 3.X версий выше, чем 3.2.

В конфигурационный файл ядра добавьте следующие строки и перестройте ядро.

controller uhci0 controller ohci0 controller usb0 controller ukbd0 options KBD_INSTALL_CDEV

Перейдите в каталог /dev и создайте специальные файлы устройств следующим образом:

# cd /dev

# ./MAKEDEV kbd0 kbd1

Отредактируйте файл /etc/rc.conf, добавив следующие строки:

usbd_enable="YES" usbd_flags=""

Если вы хотите использовать клавиатуру USB во FreeBSD версий 4.X или более поздних, вам достаточно включить поддержку USB в файле /etc/rc.conf.

После включения поддержки USB-клавиатуры в системе AT-клавиатуре будет соответствовать /dev/kbd0, а клавиатуре USB /dev/kbd1, если они обе подключены к системе. Если присутствует только клавиатура USB, ей будет соответствовать /dev/ukbd0.

Если вы хотите использовать клавиатуру USB на консоли, вы должны явно указать драйверу консоли на использование имеющейся клавиатуры USB. Это может быть сделано в процессе инициализации системы следующей командой.

# kbdcontrol -k /dev/kbd1 < /dev/ttyv0 > /dev/null

Заметьте, что, если клавиатура USB является единственной присутствующей, она доступна как /dev/kbd0, и поэтому команда должна выглядеть примерно так:

# kbdcontrol -k /dev/kbd0 < /dev/ttyv0 > /dev/null

Вышеуказанную команду хорошо бы добавить в /etc/rc.i386.

Как только вы всё это сделаете, клавиатура USB будет работать и в X-окружении без каких-либо особых настроек.

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

За дополнительной информацией обратитесь к страницам справочной системы по ukbd(4).



Поддерживает ли FreeBSD USB мыши?


Рудиментарная поддержка устройств USB была добавлена во FreeBSD 3.1. В ранних версиях 3.X она не всегда работала. Начиная с FreeBSD 4.0, устройства USB должны работать без дополнительных ухищрений. Если вы хотите поэкспериментировать с поддержкой мыши USB во FreeBSD 3.X, следуйте нижеприводимым указаниям.

Используйте FreeBSD 3.2 и выше.

В конфигурационный файл ядра добавьте следующие строки и перестройте ядро.

device uhci device ohci device usb device ums

Во FreeBSD версий, предшествующих 4.0, вместо этого добавьте такие строчки:

controller uhci0 controller ohci0 controller usb0 device ums0

Перейдите в каталог /dev и создайте специальный файл устройства такой командой:

# cd /dev

# ./MAKEDEV ums0

Замечание: Вы можете пропустить этот шаг, если используете FreeBSD 5.0-RELEASE или более новую версию с включенным механизмом

devfs(5), так как необходимые файлы устройств будут создаваться в каталоге /dev автоматически.

Отредактируйте файл /etc/rc.conf, добавив такие строчки:

moused_enable="YES" moused_type="auto" moused_port="/dev/ums0" moused_flags="" usbd_enable="YES" usbd_flags=""

Подробное обсуждение moused может быть найдено в предыдущем разделе.

Чтобы использовать мышь USB при работе в X, отредактируйте файл XF86Config. Если вы используете XFree86 3.3.2 и выше, то в разделе Pointer должны присутствовать такие строки:

Device "/dev/sysmouse" Protocol "Auto"

Если у вас более старая версия XFree86, то в разделе Pointer должны присутствовать строки:

Device "/dev/sysmouse" Protocol "SysMouse"

Поддержке мыши при работе в X посвящен .

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



Поддерживает ли FreeBSD устройства ZIP?


Конечно же, FreeBSD поддерживает ZIP-устройства SCSI и ATAPI (IDE). Устройству SCSI ZIP могут быть назначены SCSI ID только 5 или 6, и если BIOS вашего SCSI-адаптера поддерживает такую возможность, вы можете с него даже загрузиться. Неизвестно, какие адаптеры позволяют загрузиться с устройств, номера которых отличны от 0 или 1, так что вам придётся обратиться к документации, если вам это нужно.

FreeBSD также поддерживает устройства Zip, работающие через параллельный порт. Проверьте, содержит ли ваше ядро драйверы для scbus0, da0, ppbus0 и vp0 (ядро GENERIC содержит всё это, кроме vp0). Если эти драйверы имеются, то устройство должно быть доступно как /dev/da0s4. Диски могут быть смонтированы командами mount /dev/da0s4 /mnt или (для дисков dos) mount_msdos /dev/da0s4 /mnt соответственно.

Также посмотрите далее в этой главе, а также в главе об администрировании.



Поддерживает ли FreeBSD вызовы IPC из System V?


Да, FreeBSD поддерживает IPC из System V, в том числе совместно используемую память, сообщения и семафоры. Во FreeBSD версий, вышедших после 3.2, IPC из System V поддерживаются в ядре GENERIC. В более ранних версиях FreeBSD для включения их поддержки нужно добавить следующие строки в файл конфигурации ядра.

options SYSVSHM # enable shared memory options SYSVSEM # enable for semaphores options SYSVMSG # enable for messaging

Перекомпилируйте и переустановите ядро.



Полноэкранные приложения на удалённой машине ведут себя неправильно!


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

Есть несколько возможных способов решения этой проблемы:

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

Используйте эмулятор VT100, например screen на консоли FreeBSD. Screen даёт вам возможность открывать несколько рабочих сеансов на одном терминале, и она имеет ещё ряд полезных особенностей. Каждое окно программы screen ведёт себя как терминал VT100, так что переменная TERM на удалённой машине должна быть установлена в значение vt100.

Опишите терминал cons25 в базе данных характеристик терминалов на удалённой машине. Способ описания зависит от используемой на этой машине операционной системе. Вам может помочь чтение руководств по администрированию удалённой системы.

Запустите X-сервер на стороне FreeBSD и войдите на удалённую систему с помощью какого-либо эмулятора терминала, работающего в X Window, такого, как xterm или rxvt. Переменная окружения TERM на удалённой машине должна быть установлена в значение xterm

или vt100.