On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

5. Конфигурирование ядра FreeBSD

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

5.1. Зачем строить ядро отличное от существующего?

5.2. Построение и установка нового ядра (english)

5.3. Файл конфигурации

5.4. Создание узлов устройств

5.5. Если, что-нибудь не получается

5.1. Зачем строить ядро отличное от существующего?

Построение нового ядра это один из важнейших ритуалов администрирования, с которым администратор должен быть знаком. Это процесс, занимающий достаточно времени, обеспечивает улучшение работы вашей FreeBSD-системы. В отличии от GENERIC-ядра, который должен поддерживать любую возможную SCSII и сетевую карты, и кучу всякого старого железа, ваше собственное ядро содержит поддержку только для железа вашего PC. Это имеет ряд преимуществ:

  • Загрузка занимает меньше времени, потому что не тратится время на поиск железа, которого у вас нет.
  • Построенное заново ядро, довольно часто, использует меньше памяти, что очень важно, поскольку ядро это процесс, постоянно присутствующий в памяти, и неиспользуемый код занимает страницы RAM, которые могли бы с большей пользой использовать ваши программы. Таким образом, построение своего собственного ядра в системах с дефицитом RAM, является делом первостепенной важности.
  • Наконец, существует несколько опций ядра, которые вы можете настроить под свои нужды, и вы можете включить поддержку тех драйверов устройств, которых нет GENERIC-ядре.

5.2. Построение и установка нового ядра

First, let us take a quick tour of the kernel build directory. All directories mentioned will be relative to the main /usr/src/sys directory, which is also accessible through /sys. There are a number of subdirectories here representing different parts of the kernel, but the most important, for our purposes, are i386/conf, where you will edit your custom kernel configuration, and compile, which is the staging area where your kernel will be built. Notice the logical organization of the directory tree, with each supported device, filesystem, and option in its own subdirectory. Also, anything inside the i386 directory deals with PC hardware only, while everything outside the i386 directory is common to all platforms which FreeBSD could potentially be ported to.

Note: If there is not a /usr/src/sys directory on your system, then the kernel source has not been been installed. Follow the instructions for installing packages to add this package to your system.

Next, move to the i386/conf directory and copy the GENERIC configuration file to the name you want to give your kernel. For example:

	# cd /usr/src/sys/i386/conf
	# cp GENERIC MYKERNEL
Traditionally, this name is in all capital letters and, if you are maintaining multiple FreeBSD machines with different hardware, it is a good idea to name it after your machine's hostname. We will call it MYKERNEL for the purpose of this example.

Note: You must execute these and all of the following commands under the root account or you will get ``permission denied'' errors.

Now, edit MYKERNEL with your favorite text editor. If you are just starting out, the only editor available will probably be vi, which is too complex to explain here, but is covered well in many books in the bibliography. Feel free to change the comment lines at the top to reflect your configuration or the changes you have made to differentiate it from GENERIC.

If you have build a kernel under SunOS or some other BSD operating system, much of this file will be very familiar to you. If you are coming from some other operating system such as DOS, on the other hand, the GENERIC configuration file might seem overwhelming to you, so follow the descriptions in the Configuration File section slowly and carefully.

Note: If you are trying to upgrade your kernel from an older version of FreeBSD, you will probably have to get a new version of config(8) from the same place you got the new kernel sources. It is located in /usr/src/usr.sbin, so you will need to download those sources as well. Re-build and install it before running the next commands.

When you are finished, type the following to compile and install your kernel:

	# /usr/sbin/config MYKERNEL
	# cd ../../compile/MYKERNEL
	# make depend
	# make
	# make install
The new kernel will be copied to the root directory as /kernel and the old kernel will be moved to /kernel.old. Now, shutdown the system and reboot to use your kernel. In case something goes wrong, there are some troubleshooting instructions at the end of this document. Be sure to read the section which explains how to recover in case your new kernel does not boot.

Note: If you have added any new devices (such as sound cards) you may have to add some device nodes to your /dev directory before you can use them.

5.3. Файл конфигурации

Общий формат файла конфигурации очень прост. Каждая строка содержит ключевое слово и один или больше аргументов. Для простоты, многие строки содержат только один аргумент. Что-нибудь типа # рассматривается в качестве комментария и игнорируется. В следующих разделах описаны все ключевые слова, почти в том же порядке, в котором они присутствуют в GENERIC, хотя некоторые связанные ключевые слова могут быть сгруппированы в один раздел (например Сеть) даже если они были разбросаны по всему GENERIC файлу. Исчерпывающий лист опций и более подробные объяснения строк относящихся к устройствам представлены в конфигурационном файле LINT, находящемся в той же директории, что и GENERIC. Если вы не уверены в необходимости, какой-лтбо строки, посмотрите сначала информацию о ней в файле LINT.

Сейчас предпринимаются усилия, для большей организованности в управлении опциями конфигурирования ядра. Традиционно, каждая опция из файла конфигурации просто конвертировалась в вид -D``опция'' в строке CFLAGS в Makefile ядра. На деле это приводило к жуткой неразберихе, когда было непонятно какая опция к какому файлу относится.

В новой схеме, для каждый #ifdef, который связан с опцией, эта опция ищется в заголовочном файле opt_foo.h, который создается в директории, где происходит компиляция программой config. Список опций для config разбит на два файла: архитектурно-независимые опции прописаны в файле /sys/conf/options, архитектурно-зависимые -- в файле /sys/arch/conf/options.arch, где arch это например i386.

5.3.1. Обязательные ключевые слова

Эти ключевые слова требуются в каждом ядре, которое вы строите.

machine ``i386''
Первое ключевое слово это machine, поскольку FreeBSD работает только на платформе Intel 386 и совместимых с ней, то это соотвественно i386.

Замечание: любое ключевое слово, в котором цифры используются в качестве текста, должны быть заключены в кавычки, в противном случае, config растеряется и будет думать, что вы имели в виду число 386.

cpu ``cpu_type''
Следующее ключевое слово это cpu, которое подключает поддержку, для каждого CPU, с которым работает FreeBSD. Возможные значения cpu_type:
  • I386_CPU
  • I486_CPU
  • I586_CPU
  • I686_CPU
и строки, включащие слово cpu, с разными значениями поля cpu_type могут присутствовать в вашем файле конфигурации, так же как они присутствуют в файле GENERIC. Для вашего собственного ядра вам лучше всего указать, только тот cpu, который на самом деле стоит в вашей машине. Если, например, у вас Intel Pentium, то используйте I586_CPU в качестве cpu_type.
ident machine_name
Далее идет ident, который идентифицирует ядро. Вам надо изменить название GENERIC на любое другое, в данном примере -- MYKERNEL. Название, которое вы запишите в ident, будет печататься, когда вы будете загружать ядро, поэтому полезно дать ядру отличающееся имя, если вы хотите сохранить это ядро наряду с обычным (например вы хотите построить экспериментальное ядро). Заметьте, что как и в случае с machine и cpu, нужно заключить название ядра в кавычки, если в нем используются цифры.

Так как название ядра передается компилятору C для флага -D, то не используйте такие имена, как DEBUG, или что-нибудь еще, что можно спутать с именем машины или названием CPU, например vax.

maxusers number
Эта позиция устанавливает размер для некоторых очень важных системных таблиц. Это число будет рассматриваться, как приблизительное количество пользователей одновременно работающих на вашей машине. В нормальных условиях, вам нужно установить значение maxusers равным, по крайней, четырем, особенно, если вы используете X Window System или хотите что-нибудь компилировать. По параметру maxusers устанавливается другой очень важный параметр -- это максимальное количество процессов, которое расчитывается как 20 + 16 * maxusers, таким образом если вы установите maxusers равным одному, тогда на вашей машине может быть запущено одновременно только 36 процессов, включая около 18 процессов, запускаемых системой при старте, и около 15 процессов дополнительно будет создано, если вы запустите X Window System. Даже такая простая задача, как чтение man-страницы потребует запуска еще 9 процессов, которые фильтруют, распаковывают, показывают нужную информацию. Если вы установите maxusers равным 4, то это позволит работать 84 процессам одновременно, такого количества вполне достаточно для большинства пользователей. Но, если вы, пытаясь запустить еще одну программу, или у вас сервер с большим количеством пользователей (как сервер Walnut Creek CDROM's FTP ), вдруг, увидите ужасное сообщение об ошибке вида ``proc table full'', то в этом случае вы можете увеличить maxusers и перестроить ядро.

Замечание: maxuser нет ограничивает количество пользователей, которые могут зайти на вашу машину. Он устанавливает размеры определенных таблиц, причем эти размеры приблизительно соотвествуют тому количеству пользователей, которое бы вы хотели иметь (т.е. размеры будут такие, как будто максимальное число пользователей действительно не превышает maxuser ). И эти размеры соответсвуют тому количеству процессов, которое каждый из них, в среднем, запускает. Ключевое слово, которое действительно ограничивает количество одновременных удаленных login это псевдо-устройство pty 16.

config kernel_name root on root_device
В этой строчке определяется место хранения ядра с именем kernel_name. Традиционно ядро называется vmunix но во FreeBSD, это называется kernel. В качестве kernel_name, вам надо всегда использовать kernel, потому что изменение этого названия вызовет многочисленные проблемы с работой утилит. Во второй части строки определяется диск и раздел, где искать корневую файловую и ядро. Наверняка root_device будет: wd0 для систем с не-SCSI дисками, или sd0 для систем со SCSI дисками.

5.3.2. Общие опции

Эти строки обеспечивают поддержку различных файловых систем и других опций.

options MATH_EMULATE
Эта строка указывает ядру моделировать (изображать) математический сопроцессор, если на вашей машине его нет (386 или 486SX). сли у вас Pentium, 486DX, или 386 или 486SX с отдельной 387 или 487 микросхемой, вы можете закомментировать эту строчку.

Замечание: Часто, режим эмулирования математического сопроцессора работает not очень хорошо, в реализации поставляемой FreeBSD. Если у вас нет математического сопроцессора и вы хотите, чтобы все работало хорошо, мы советуем вам заменить эту опцию на GPL_MATH_EMULATE, для того, чтобы использовать отличную математическую поддержку GNU, которая не включена по умолчанию из-за правил лицензий

options ``COMPAT_43''
Совместимость с 4.3BSD. Оставьте эту строку; некоторые программы начнут вести себя странно, если вы закомментируете эту строку.
options BOUNCE_BUFFERS
Устройства ISA и EISA, действующие в режиме совместимости с ISA, могут осуществлять DMA (Direct Memory Access) к памяти объемом не больше 16 мегабайт. Эта опция позволяет таким устройствам работать с системами, где объем памяти больше 16 мегабайт.
options UCONSOLE
Позволяет пользователям открывать консоль, что полезно при использовании X Windows. Например, вы можете создать окно консоли, запустив команду xterm -C, которая будет выводить сообщения `write', `talk', и другие сообщения, посылаемые на консоль ядром.
options SYSVSHM
Эта опция обеспечивает возможность работы с разделяемой памятью в соответствии с System V. Эта возможность используется в расширении XSHM в X Windows, многие графические программы (такие как проигрыватель фильмов XAnim, и Linux DOOM) используют преимущества разделяемой памяти для увеличения производительности. Если вы используете X Window System, вам определенно нужно включить эту опцию.
options SYSVSEM
Поддержка семафоров в соответствии с System V. Используется меньше не очень часто, но добавляет всего несколько сотен в ядро.
options SYSVMSG
Поддержка сообщений в соответствии с System V. Как и в предыдущем случае увеличивает ядро ненамного.

Замечание: Команда ipcs(1) выдаст список процессов, использующих одну из этих возможностей System V.

5.3.3. Опции файловой системы

Данные опции добавляют поддержку различных файловых систем. Вы должны подключить, по крайней мере, одну из них для поддержки устройства с которого вы будете загружаться; обычно это FFS если вы загружаетесь с твердого диска, или NFS если у вас бездисковая станция и вы загружаетесь с помощью Ethernet. Вы можете включить другие часто-используемые файловые системы в ядро, но не включайте поддержку файловых систем, которые вы собираетесь использовать редко (может быть файловая система MS-DOS?), так как они будут динамически загружаться из директории Loadable Kernel Module (загружаемый модуль ядра) /lkm как только вы смонтируете раздел такого типа.

options FFS
Основная файловая система жесткого диска; оставьте эту опцию, если вы будете загружаться с жесткого диска.
options NFS
Сетевая файловая система. Если вы не собираетесь монтировать разделы с файлового сервера Unix, то вы можете закомментировать эту строку.
options MSDOSFS
MS-DOS Filesystem. Если вы не планируете монтировать разделы DOS во время загрузки, то можете смело закомментировать эту строку. Эта опция будет автоматически подключаться, как только вы смонтируете раздел DOS, как уже было сказано. Также, прекрасный пакет mtools (в коллекции ports) позволит вам работать с гибкими дисками DOS без процедур mount и unmount (при этом MSDOSFS даже не требуется).
options ``CD9660''
Файловая система ISO 9660 для CD-ROM. Закомментируйте эту строку если, у вас нет устройства CD-ROM drive или если вам очень редко будут нужны данные на CD (эта файловая система будет динамически загружаться, как только вы смонтируете CD). Аудио CD не требуют наличия этой файловой системы.
options PROCFS
Файловая система процессов. Это фиктивная файловая система монтируемая как /proc, которая позволяет таким программам как ps(1), выдавать вам достаточно информации о текущих процессах.
options MFS
Файловая система отображения памяти. В основном, это диск RAM для быстрого доступа к временным файлам, полезно если у вас достаточно большой объем swap, который бы вы хотели эффективно использовать. Самое лучшее место монтирования раздела MFS это директория /tmp, так как многие программы хранят свои временные данные здесь. Для того, чтобы смонтировать диск MFS RAM как /tmp, добавьте следующую строку в файл /etc/fstab и перезагрузите систему, либо просто напечатайте ее в командной строке mount /tmp:
	/dev/wd1s2b   /tmp mfs rw 0 0 

Замечание: Замените /dev/wd1s2b на ваше название раздела swap, который будет записан в файле /etc/fstab следующим образом:

	/dev/wd1s2b none swap sw 0 0

Замечание: Файловая система MFS также может загружаться динамически not, таким образом вы обязаны включить эту файловую систему в ваше ядро, если хотите поэкспериментировать со всем этим.

options QUOTA
Включает дисковые квоты, точнее возможность их устанавливать. Если ваша система предоставляет услуги многим пользователям и вы не хотите, чтобы их данные переполняли раздел /home, вы можете установить квоты на использование диска для каждого пользователя. Для более полной информации посмотрите раздел Disk Quotas.

5.3.4. Основные контроллеры и устройства

В этих разделах описаны основные контроллеры дисков, лент и CD-ROM, поддерживаемые FreeBSD. Есть отдельные разделы по SCSI контроллерам и сетевым network картам.

controller isa0
Все PC's поддерживаемые FreeBSD имеют хотя бы один такой контроллер. Если у вас IBM PS/2 (Micro Channel Architecture), то пока что вы не сможете использовать FreeBSD.
controller pci0
Включите это если у вас материнская плата PCI. Это включает авто-определение карт PCI и переход (шлюз) из PCI на ISA шину.
controller fdc0
Контроллер гибкого диска: fd0 дисковод ``A:'' , а fd1 дисковод ``B:''. ft0 это устройство для ленты QIC-80 посаженный на floppy-контроллер. Закомментируйте строки, соответствующие тем устройствам, которых у вас нет.

Замечание: поддержка ленты QIC-80 требует отдельной фильтрационной программы называющейся ft(8), смотрите страницу руководства для более полной информации.

controller wdc0
Это первичный IDE-контроллер. wd0 и wd1 являются первичным (master) и вторичным (slave) жесткими дисками соответственно. wdc1 -- вторичный IDE-контроллер, на который можно разместить третий или четвертый диск, или IDE CD-ROM. Закомментируйте те строки, которые не применяете (если у вас SCSI диск, скорее всего, вам надо будет закомментировать все шесть строк).
device wcd0
Это устройство обеспечивает поддержку IDE CD-ROM. Обязательно проверьте, чтобы не были закомментированы wdc0 и wdc1, если у вас более одного IDE-контроллера и ваш CD-ROM установлен на карте второго контроллера. Чтобы использовать эту возможность, вы должны включить строку options ATAPI.
device npx0 at isa? port ``IO_NPX'' irq 13 vector npxintr
npx0 это интерфейс для работы с плавающей запятой во FreeBSD, это либо аппаратный сопроцессор для математики, либо программа эмулирования этого сопроцессора. Эту строку нельзя включать по выбору, т.е. ее надо включать обязательно.
device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr
Поддержка ленточных устройств Wangtek и Archive QIC-02/QIC-36
Proprietary CD-ROM support (Поддержка фирменных CD-ROM)
Следующие драйверы предназначены для, так называемых, фирменных CD-ROM. Эти устройства имеют собственный контроллер, или могут быть вставлены в звуковую карту так же, как SoundBlaster 16. Они не являются ни IDE, ни SCSI. Наиболее старые одно- и двухскоростные CD-ROMы используют эти интерфейсы, в то время как новые четырех-скоростные скорее всего будут IDE или SCSI.
device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr
Mitsumi CD-ROM (LU002, LU005, FX001D).
device scd0 at isa? port 0x230 bio
Sony CD-ROM (CDU31, CDU33A).
controller matcd0 at isa? port ? bio
Matsushita/Panasonic CD-ROM (продаются Creative Labs для SoundBlaster).

5.3.5. Поддержка SCSII устройств

В этом разделе описываются различные SCSI контроллеры и SCSI устройства, поддерживаемые FreeBSD.

SCSI Controllers
Следующий десяток строчек включает поддержку различных типов SCSI-контроллеров. Закомментируйте все, чего нет на вашей машине:

controller bt0 at isa? port ``IO_BT0'' bio irq ? vector btintr
Большинство контроллеров Buslogic
controller uha0 at isa? port ``IO_UHA0'' bio irq ? drq 5 vector uhaintr
UltraStor 14F и 34F
controller ahc0
Adaptec 274x/284x/294x
controller ahb0 at isa? bio irq ? vector ahbintr
Adaptec 174x
controller aha0 at isa? port ``IO_AHA0'' bio irq ? drq 5 vector ahaintr
Adaptec 154x
controller aic0 at isa? port 0x340 bio irq 11 vector aicintr
Adaptec 152x и звуковые карты, использующие Adaptec AIC-6360 (медленные!)
controller nca0 at isa? port 0x1f88 bio irq 10 vector ncaintr
Карты ProAudioSpectrum, использующие NCR 5380 или Trantor T130
controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr
8 битовый контроллер Seagate ST01/02 (медленный!)
controller wds0 at isa? port 0x350 bio irq 15 drq 6 vector wdsintr
Контроллер Western Digital WD7000
controller ncr0
Контроллер NCR 53C810, 53C815, 53C825, 53C860, 53C875 PCI SCSI
options ``SCSI_DELAY=15''
Это запись говорит ядру сделать паузу 15 секунд перед тем как проверить наличие SCSI устройства в системе. Если у вас только IDE-диск, вы можете игнорировать это, иначе вы можете уменьшить это число, скажем до 5 секунд, для ускорения загрузки. Если вы так сделали и у FreeBSD начались проблемы с распознаванием SCSI-устройств, конечно же, надо восстановить прежнее значение.
controller scbus0
Если у вас есть хоть какие-то SCSI-контроллеры, то эта строка обеспечивает общую поддержку SCSI. Если у вас нет ничего, относящегося к SCSI, вы можете закомментировать эту строку и еще следующие три строки.
device sd0
Поддержка жестких SCSI-дисков.
device st0
Поддержка ленточных SCSI-устройств.
device cd0
Поддержка SCSI CD-ROM.

Заметим, что цифра 0 в предыдущих примерах, ввдит в легкое заблуждение: все эти устройства автоматически конфигурируются (именуются и проч.) системой, как только она их обнаруживает; в независимости от того, сколько их на самом деле висит на SCSI шине(ах), и какие у них ID.

Если вы хотите ``навязать'' специфические ID на определенные устройства, то обратитесь к соответствующему разделу файла конфигурации LINT.

5.3.6. Поддержка консоли, шины мыши и X сервера

Вы должны выбрать один из двух типов консолей, и, если вы планируете использовать X Window System с консолью vt220, включите опцию XSERVER и, возможно, шину мыши или устройство мыши PS/2.

device sc0 at isa? port ``IO_KBD' tty irq 1 vector scintr
sc0 это драйвер консоли по умолчанию, который похож (во всяком случае по названию) на SCO консоль. Поскольку большинство полнлэкранных программ получают доступ к консоли через библиотеку базы данных терминалов, например через termcap, то не имеет большого значения, используете вы это (sc0) или vt0, драйвер консоли совместимый с VT220. При входе систему, установите переменную TERM в ``scoansi'', если полноэкранные программы ругаится, при использовании такого типа консоли.
device vt0 at isa? port ``IO_KBD'' tty irq 1 vector pcrint
Это VT220-совместимый драйыер консоли, совместимый с VT100/102 (т.е. он понимает VT100/102, а наоборот нет). Он хорошо работает на некоторых laptops, которые аппаратно несовместимы с sc0. После входа в систему установите переменную TERM в ``vt100'' или ``vt220''. Этот драйвер очень полезен, если вы собираетесь заходить на много всяких разных машин в сети, может случиться, что в termcap или terminfo нет записей о sc0 -- вто время как ``vt100'', понимается практически на всех платформах.

options ``PCVT_FREEBSD=210''
Нужен для драйвера консоли vt0.
options XSERVER
Применим только с драйвером консоли vt0. Подключает код необходимый для запуска сервера X Window XFree86 под драйвером консоли vt0.
device mse0 at isa? port 0x23c tty irq 5 vector ms
Используйте это устройство, если у вас карта шины мыши Logitech или ATI InPort.

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

device psm0 at isa? port ``IO_KBD'' conflicts tty irq 12 vector psmintr
Используйте это устройство, если мышь подключена к порту мыши PS/2.

5.3.7. Последовательные и параллельные порты

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

device sio0 at isa? port ``IO_COM1'' tty irq 4 vector siointr
sio0 -- sio3 это четыре последовательных порта, которые в MS-DOS обозначаются COM1 -- COM4 соответственно. Заметим, что если у вас внутренний модем подключен на COM4, а последовательный порт на COM2, то вам придется изменить IRQ модема на 2 (по непонятным техническим причинам IRQ 2 = IRQ 9), для доступа к нему во FreeBSD. Если у вас многопортовая последовательная карта, посмотрите страницу руководства по sio(4), для более полной информации о правильных значениях для этих строк. Некоторые видеокарты (например основанные на микросхемах S3) используют адреса IO в виде 0x*2e8, и, поскольку многие дешевые последовательные карты не могут полностью кодировать 16-bit IO адресное пространство, они конфликтуют с такими картами, и делают использование порта COM4 практически невозможным.

Каждый последовательный порт должен иметь уникальный IRQ (если только вы не используете многопортовую карту, где поддерживаются разделяемые прерывания ), поэтому нельзя использовать IRQs, установленные для COM3 и COM4 по умолчанию.

device lpt0 at isa? port? tty irq 7 vector lptintr
lpt0 -- lpt2 это три порта принтера, которые могут быть на вашей машине. У многих пристутствует лишь один, поэтому, если у вас в наличии не все то комментируйте ненужные строки.

5.3.8. Сеть

FreeBSD, как, впрочем, весь Unix в целом, делает уделяет большое внимание сетевым возможностям. Поэтому, даже если у вас нет карты Ethernet, обратите особое внимание на обязательные опции и поддержку сетевых возможностей dial-up.

options INET
Поддержка сети. Оставьте эту опцию даже если вы не собираетесь испеолбзовать сеть. Многим программам требуется, по крайней мере, сеть типа loopback (т.е. сетевые соединения внутри вашего PC) поэтому эта опция является строго обязательной.
Ethernet cards
Следующие строки подключают поддержку различных карт Ethernet. Если у вас нет сетевой карты, то вы можете закомментировать все эти строки. В противном случае, вам надо будет включить поддержку ваших(ей) карт(ы):

device de0
карты Ethernet на основе Digital Equipment DC21040, DC21041 или DC21140 chips
device fxp0
Intel EtherExpress Pro/100B
device vx0
3Com 3C590 и 3C595 (плохая)
device cx0 at isa? port 0x240 net irq 15 drq 7 vector cxintr
Cronyx/Sigma multiport sync/async (с Cisco или PPP framing)
device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 vector edintr
Western Digital и SMC 80xx and 8216; Novell NE1000 и NE2000; 3Com 3C503; HP PC Lan Plus (HP27247B и HP27252A)
device el0 at isa? port 0x300 net irq 9 vector elintr
3Com 3C501 (медленная!)
device eg0 at isa? port 0x310 net irq 5 vector egintr
3Com 3C505
device ep0 at isa? port 0x300 net irq 10 vector epintr
3Com 3C509 (плохой)
device fe0 at isa? port 0x240 net irq ? vector feintr
Fujitsu MB86960A/MB86965A Ethernet
device fea0 at isa? net irq ? vector feaintr
карта DEC DEFEA EISA FDDI
device ie0 at isa? port 0x360 net irq 7 iomem 0xd0000 vector ieintr
AT&T StarLAN 10 и EN100; 3Com 3C507; малоизвестный NI5210
device ix0 at isa? port 0x300 net irq 10 iomem 0xd0000 iosiz 32768 vector ixintr
Intel EtherExpress 16
device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr
Digital Equipment EtherWorks 2 and EtherWorks 3 (DEPCA, DE100, DE101, DE200, DE201, DE202, DE203, DE204, DE205, DE422)
device lnc0 at isa? port 0x300 net irq 10 drq 0 vector lncintr
карты Lance/PCnet (Isolan, Novell NE2100, NE32-VL)
device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr
IBM/National Semiconductor PCMCIA ethernet контроллер.
device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr
3Com PCMCIA Etherlink III

Замечание: Для определенных карт (например для NE2000) вам надо будет изменить порт и/или IRQ, поскольку нет ``сиандарта'' по размащению этих карт.

pseudo-device loop
loop это основное устройство типа loopback для TCP/IP. Если вы делаете telnet или FTP на localhost ( 127.0.0.1), то это делается с помощью этого псевдо-устройства. Обязательная опция.
pseudo-device ether
ether нужно только в том случае, если у вас есть карта Ethernet; эта опция подключает программу поддерживающую общий протокол Ethernet.
pseudo-device sl number
sl нужен для поддержки протокола SLIP (Serial Line Internet Protocol). Этот протокол был почти целиком вытеснен протоколом PPP, который легче устанавливать, который лучше подходит для соединений типа модем-модем, при этом он более эффективен и более мощный. Параметр number, идущий после sl, определяет количество одновременных сессий SLIP, которые надо поддерживать. В нашем руководстве документе есть более полная информация о SLIP client или server.
pseudo-device ppp number
ppp нужен для поддержки ядром PPP (Point-to-Point Protocol) для подключения в Internet типа dial-up. Существует также версия PPP, реализованная как пользовательское приложение, которое использует tun и предлагает большую гибкость и дополнительные возможности, как например автодозвон (demand dialing). Если вы еще не передумали использовать этот драйвер PPP, то почитайте раздел PPP в режиме ядра этог руководства. Как и в случае с устройством sl, number определяет сколько одновременных сессий PPP надо поддерживать.
pseudo-device tun number
tun используется программами для PPP, работающего в пользовательском режиме. Эту программу легко и быстро запускать. Есть также дополнительные возможности, например автодозвон. Число после tun количество одновременных сессий PPP, которые надо поддерживать. Для более полной информации смотри раздел PPP в пользовательском режиме.
pseudo-device bpfilter number
Фильтр пакетов, сделанный в Berkeley. Это псевдоустройство позволяет устанавливать сетевые интерфейсы в раскрепощенный режим, который забирает все пакеты, рассылаемые по broadcast (например ethernet). Эти пакеты могут быть скачаны на диск и/или исследованы с помощью программы tcpdump(1). Заметим, реализация этой возможности может серьезно повредить сетевой безопасности вашей системы. number, стоящий после bpfilter это количество интерфейсов, которые могут опрашиваться одновременно. Не обязательная опция, не рекомендуется применять, если есть малейшие опасения о взломах через сеть и прочих неприятностях. Не все сетевые карты поддерживают эту возможность.

5.3.9. Звуковые карты

Это первый раздел, в котором содержатся строки, которых нет ядре GENERIC. Чтобы включить поддержку звуковой карты, вам нужно будет скопировать соответствующие строки из файла LINT (который содержит поддержку для всех устройств) например такие:

controller snd0

Общая программа звукоывх драйверов. Нужна для всех следующих сетевых карт кроме pca.

device pas0 at isa? port 0x388 irq 10 drq 6 vector pasintr

ProAudioSpectrum digital audio и MIDI.

device sb0 at isa? port 0x220 irq 7 conflicts drq 1 vector sbintr

SoundBlaster digital audio.

Замечание: Если ваш SoundBlaster на другом IRQ (например 5), измените irq 7 на, например, irq 5 и уберите ключевое слово conflicts. Также, вы должны добавить строку: options ``SBC_IRQ=5''

device sbxvi0 at isa? drq 5

SoundBlaster 16 digital 16-bit audio.

Замечание: Если ваш SB16 на другом 16-bit DMA канале (например 6 или 7), измените ключевое слово drq 5 соответствующим образом, и добавьте строку: options "SB16_DMA=6"

device sbmidi0 at isa? port 0x330

Интерфейс 16 MIDI. Если у вас SoundBlaster 16, вы должны включить эту строку, иначе ядро не скомпилируется.

device gus0 at isa? port 0x220 irq 10 drq 1 vector gusintr

Gravis Ultrasound.

device mss0 at isa? port 0x530 irq 10 drq 1 vector adintr

Microsoft Sound System.

device opl0 at isa? port 0x388 conflicts

AdLib FM-synthesis audio. Включите эту строку для пользователей AdLib, SoundBlaster, и ProAudioSpectrum, если вы хотите проигрывать файлы MIDI припомощи программы playmidi (в коолекции ports).

device mpu0 at isa? port 0x330 irq 6 drq 0

Отдельная карта Roland MPU-401.

device uart0 at isa? port 0x330 irq 5 vector ``m6850intr''

Отдельный 6850 UART для MIDI.

device pca0 at isa? port ``IO_TIMER1'' tty

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

Замечание: Существует дополнительная документация в /usr/src/sys/i386/isa/sound/sound.doc. Кроме того, если вы добавили какое-нибудь из вышеперечисленных устройств, обязательно создайте звуковые узлы устройств.

5.3.10. Псевдо-устройства

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

pseudo-device gzip
gzip позволяет запускать программы FreeBSD, которые были сжаты при помощи gzip. Программы в директории /stand сжаты, поэтому было бы неплохо добавить эту опцию в ядро.
pseudo-device log
log используется для журналирования сообщений ядра об ошибках. Обязательная опция.
pseudo-device pty number
pty это ``псевдо-терминал'' или моделированный порт входа. Он используется входящими сессиями telnet и rlogin, xterm-ами, и некотрыми другими приложениями, как например emacs. number определяте количество pty, которые можно создать. Вам нужно будет больше, чем значение равное 16, которое установлено по умолчанию в GENERIC; вам, наверняка, понадобится большее число одновременно работающих окон xterm и/или удаленных logins, поэтому увеличьте это число, но оно должно быть не более 64.
pseudo-device snp number
Подсматривающее устройство. Это псевдо-устройство позволяет одной сессии терминала просматривать другую используя команду watch(8). Заметим, что реализация этой возможности имеет большие последствия для безопасности и секретности. number после snp это общее количество одновременно работающих сессий snoop(подсматривающих). Не обязательная опция.
pseudo-device vn
Драйвер Vnode. Позволяет работать с файлом, как с устройством, после создания, с помощью команды vnconfig(8). Это драйвер может быть полезен при работе с images для гибких дисков и при использовании файла, как устройства для swap (например swap файл в MS Windows). Не обязательная опция.
pseudo-device ccd number
Склеенные (последовательно) диски. Это псевдо устройство позволяет вам присоединять (конкатенировать) несколько разделов диска в один большой ``meta''-диск. number после ccd это общее количество присоединенных дисков (не общее количество дисков, которые могут быть присоединены), которое можно создать (т.е. это, как мы поняли, количество ``meta''-дисков). (Смотрите man-страницы ccd(4) и ccdconfig(8) для более полной информации.) Не является обязательной.

5.3.11. Джойстик, колонки, прочее

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

device joy0 at isa? port ``IO_GAME''
устройство джойстик для PC.
pseudo-device speaker
Поддерживает шумовые эффекты в стиле IBM BASIC для колонок PC. Вот некоторые забавные программы, которые его используют /usr/sbin/spkrtest, которая является shell скриптом, проигрывающим некоторые простенькие песенки, ит программа /usr/games/piano которая позволяет играть на клавиатуре, как на пианино (эта программа есть на вашем диске, только если вы установили пакет games). Кроме того, есть замечательная текстовая ролевая игра NetHack (в коллекции ports), которую можно отконфигурировать так, что она будет использовать это устройство, чтобы проигрывать мелодии, когда вы в играете на музыкальных инструментах в процессе игры.

Также смотрите pca0 устройство.

5.4. Создание узлов устройств

Почти каждое устройство определенное в ядре имеет соответствующий файл ``node(узел)'' в директории /dev. Эти ``узлы'' выглядят, как обыкновенные файлы, но на самом деле это записи в ядре, которые программы используют чтобы получить доступ к устройству. shell скрипт /dev/MAKEDEV, который выполняется, когда вы первый раз устанавливаете операционную систему, создает ``узлы'' для почти всех поддерживаемых устройств. Но не все, поэтому когда вы добавляете поддержку нового устройства, этот скрипт проверяет есть ли соответствующий файл в этой (/dev) директории, и если нет, то добавляет. Вот простой пример:

Предположим вы добавляете в ядро поддержку IDE CD-ROM. Строка, которую надо добавить:

	controller wcd0
Это значит, что вам надо искать записи начинающиеся с wcd0 в директории /dev, после этого, возможно, идет буква, например `c', или перед этим может быть буква 'r', которая означает `raw (сырое)' устройство. Это означает, что нужных файлов нет, поэтому надо войти в директорию /dev и выполнить команду:
	# sh MAKEDEV wcd0
Когда MAKEDEV закончит работу, вы увидите файлы wcd0c и rwcd0c в директории /dev, что свидетельствует о правильном выполнении скрипта.

Для звуковых карт команда:

	# sh MAKEDEV snd0
создает соответствующие файлы. Замечание: если созданы узлы устройств для таких устройств, как звуковые карты, то в ситуации, когда ваша машина доступна другим пользователям (по сети), будет целесообразно защитить эти устройства от внешнего доступа, путем добавления их в файл /etc/fbtab. Для более полной информации, смотрите man fbtab.

Проделайте такую же процедуру для всех устройств, которых нет в ядре GENERIC и для которых нет записей в файле /etc/fbtab.

Замечание: Для всех SCSI-контроллов используются одни и те же файлы в директории /dev, поэтому не надо их создавать. Кроме того, для сетевых карт и псевдо-устройств SLIP/PPP вообще не бывает соответствующих файлов в директории /dev, поэтому не беспокойтесь о них.

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

Не работает команда Config
Если команда config рушится когда вы даете ей описание ядра, то, скорее всего, у вас какая-нибудь простенькая ошибка. К счастью, config печатает номер строки, в которой что-то не так, поэтому при помощи текстового редактора, например vi, вы быстренько доберетесь до этого места в конфигурационном файле. Например, если вы увидите слелующее:
	config: line 17: syntax error
то вы сможете, в vi, добраться до этого места написав ``17G'' в командном режиме. Убедитесь в том, что ключевые слова написаны правильно, сверившись с файлом GENERIC или другим справочником.
Неудачно завершается команда make
Если рушится команда make, то чаще всего это говорит об ошибках в конфигурационном файле, которые не были обнаружены при выполнении команды config. Еще раз просмотрите файл конфигурации, и если не смогли обнаружить ошибку, то пошлите почту в список рассылки FreeBSD, в котором рассматриваются общие вопросы freebsd-questions@FreeBSD.ORG в письме изложите конфигурацию вашего ядра, обычно они отвечают достаточно быстро.
Ядро не загружается
Если ваше новое ядро не желает загружаться, или не распознает устройства, не паникуйте! К счастью, у BSD существует отличный механизм для возвращения работоспособности системы в случае неподходящих ядер. Просто, в приглашении загрузки FreeBSD, напишите название ядра, которое вы хотите загрузить (например ``kernel.old''), вместо того, чтобы просто нажать ``Enter''. При переконфигурировании ядра, неплохо сохранять работающее ядро.

После загрузки при помощи хорошего ядра, вы можете проверить конфигурационный файл и попробовать построить ядро заново. Наш очень хороший помощник файл /var/log/messages, в котром записываются, среди прочего, все сообщения ядра, при каждой удачной загрузке. Кроме того, команда dmesg(8) выводит все сообщения ядра текущей загрузки.

Замечание: если у вас проблемы с построением ядра, то обязательно сохраните ядро GENERIC, или какое-то другое ядро, про которое известно, что оно работает; причем это ядро стоить сохранить под названием, которое не забудется при следующих построениях. Вы не можете полагаться на kernel.old потому что при установке нового ядра, kernel.old становится копией последнего установленного ядра, которое могло быть нефункциональным. Кроме того, передвиньте работающее ядро в правильное место размещения ядер, иначе такие команды как ps(1) не будут работать правильно. Правильная команда ``разблокировки'' файла ядра, котоый команда make установила (для того, чтобы передвинуть другое ядро насовсем) это:

	# chflags noschg /kernel
И если вы хотите ``заблокировать'' ваше новое ядро, т.е. передвинуть его в другое место или в какой-нибудь файл, то это нельзя делать при помощи следующей команды:
	# chflags schg /kernel
Ядро работает, но не работает ps!
Если вы установили версию ядра, отличающуюся от той версии, с помощью которой были построены системные утилиты, например экспериментальное ядро ``2.2.0'' в системе 2.1.0-RELEASE, многие системные команды, как например ps(1) и vmstat(8) не будут работать совсем. Вы должны перекомпилировать библиотеку libkvm также, как и те утилиты. Это одна из причин почему плохо использовать версию ядра отличную от всей остальной операционной системы.

Назад       Содержание