diff --git a/ru_RU.KOI8-R/books/handbook/config/chapter.sgml b/ru_RU.KOI8-R/books/handbook/config/chapter.sgml index 0ad9bbf30b..985e2d80cf 100644 --- a/ru_RU.KOI8-R/books/handbook/config/chapter.sgml +++ b/ru_RU.KOI8-R/books/handbook/config/chapter.sgml @@ -2,9 +2,9 @@ The FreeBSD Documentation Project $FreeBSD$ - $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/config/chapter.sgml,v 1.23 2004/08/31 11:05:59 den Exp $ + $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/config/chapter.sgml,v 1.27 2004/10/22 10:33:59 den Exp $ - Original revision: 1.158 + Original revision: 1.181 --> @@ -40,6 +40,10 @@ Денис Пеплин + + Валерий + Кравчук + @@ -94,9 +98,7 @@ linkend="basics">). - Ознакомиться с модернизированием исходных текстов &os; - (), и - основами конфигурации/компиляции ядра + Ознакомиться с основами конфигурации/компиляции ядра (). @@ -325,39 +327,76 @@ + + + + Tom + Rhodes + Предоставил + + + Запуск сервисов сервисы - Обычно в системе работает множество сервисов. Их можно - запустить различными способами, каждый из которых имеет свои - преимущества. + Многие пользователи предпочитают устанавливать программы сторонних + производителей в &os; из набора портов. В подобных случаях + может потребоваться сконфигурировать программы так, чтобы они + запускались при инициализации системы. Сервисы, такие как + mail/postfix или + www/apache13, — + это лишь два примера множества программных пакетов, которые + можно запускать при инициализации системы. Поэтому остается только + надеяться, что для процедур, способных работать с программами + сторонних производителей, будут выдаваться объяснения в тех редких + случаях, когда что-то идет не так и приложение не запускается как + следует. - /usr/local/etc/rc.d + Большинство входящих в &os; сервисов, таких как &man.cron.8;, + запускается с помощью стартовых скриптов системы. Эти скрипты + могут отличаться в зависимости от версии &os; или ее производителя; + однако важнее всего учитывать, что их начальную конфигурацию + можно задать с помощью простых стартовых скриптов. - Программное обеспечение, установленное из коллекции портов или - пакетов обычно записывает свои скрипты в - /usr/local/etc/rc.d - который выполняется с аргументом при запуске - и с аргументом при завершении работы системы. - Этот метод запуска рекомендуется, если вы запускаете сервисы как - root, или же они должны быть запущены с - привилегиями root. Эти скрипты устанавливаются - вместе с пакетами, и соответственно, при удалении пакетов скрипты будут - также удалены. + С момента появления rcNG стало ясно, что инициализацию системы + для утилит сторонних производителей можно упростить. Многие + годы приложения должны были помещать простой стартовый скрипт в + каталог /usr/local/etc/rc.d, + который затем читался скриптами инициализации системы. Эти скрипты + затем выполнялись в ходе последующих стадий запуска системы. - Типичный скрипт из /usr/local/etc/rc.d, - выполняющийся при запуске выглядит следующим образом: + Хотя много разработчиков потратили часы на попытки внедрить + старый стиль конфигурирования в новую систему, остаётся фактом, + что для некоторых утилит сторонних производителей по-прежнему + необходим скрипт, помещённый в указанный выше каталог. Незначительные + различия в скриптах зависят от того, используется ли rcNG. Для + любой версии &os; до 5.1 дополнительное конфигурирование не + потребуется; в действительности, почти во всех случаях прекрасно + подойдет скрипт, который вскоре будет представлен. + + Хотя каждый скрипт должен соответствовать некоторым минимальным + требованиям, в большинстве случаев эти требования не зависят от версии + &os;. Каждый скрипт должен иметь в конце расширение + .sh и каждый скрипт должен быть выполняемым. + Последнее требование может быть выполнено путем установки командой + chmod уникальных прав доступа + 755. Также, как минимум, должна быть опция + start для запуска приложения и опция + stop для его остановки. + + Простейший стартовый скрипт, пожалуй, будет похож на + следующий: #!/bin/sh -echo -n ' FooBar' +echo -n ' utility' case "$1" in start) - /usr/local/bin/foobar + /usr/local/bin/utility ;; stop) - kill -9 `cat /var/run/foobar.pid` + kill -9 `cat /var/run/utility.pid` ;; *) echo "Usage: `basename $0` {start|stop}" >&2 @@ -365,57 +404,118 @@ stop) ;; esac -exit 0 - +exit 0 - Стартовые скрипты &os; ищут в каталоге - /usr/local/etc/rc.d скрипты с расширением - .sh, исполняемые пользователем - root. Обнаруженные скрипты выполняются с - с параметром при старте системы и с параметром - при завершении работы системы. - Поэтому если вы хотите использовать пример скрипта выше и запускать - его во время старта системы, сохраните его в каталоге - /usr/local/etc/rc.d с именем - FooBar.sh и убедитесь, что он исполняемый. - Вы можете сделать скрипт исполняемым с помощью &man.chmod.1;, - как показано ниже: + Этот скрипт поддерживает опции stop и + start для приложения, которое мы здесь называем + просто — utility. Для этого приложения + затем можно поместить следующую строку в файл /etc/rc.conf: - &prompt.root; chmod 755 FooBar.sh + utility_enable="YES" - Некоторые сервисы должны быть запущены &man.inetd.8; при установке - соединения с определённым портом. Это может понадобиться, например, - для почтовых серверов (POP, IMAP, и т.д.). Для этого нужно - отредактировать файл /etc/inetd.conf. - Подробнее о работе с этим файлом вы можете прочитать в - &man.inetd.8;. + А можно запускать его и вручную, с помощью команды: - Некоторые дополнительные системные сервисы могут быть не учтены - в файле /etc/rc.conf. Тогда для их запуска нужно - прописать соответствующую команду в /etc/rc.local. - Во &os; 3.1 не предусмотрен /etc/rc.local; - но считается признаком хорошего тона создание этого файла - администратором. Заметьте, что rc.local - используется для запуска сервисов только в крайнем случае. - Если есть лучший способ запустить сервис, используйте его. + &prompt.root; /usr/local/etc/rc.d/utility.sh start - Не записывайте свои команды в - /etc/rc.conf. Для запуска демонов, или для - выполнения вашей команды во время запуска - запишите ваш скрипт - в /usr/local/etc/rc.d. - + Хотя и не все программы сторонних производителей требуют + добавления строки в файл rc.conf, практически + каждый день очередной новый порт меняется так, чтобы поддерживать + подобную конфигурацию. Поищите в результатах, выдаваемых после + установки более детальную информацию по конкретному приложению. + Некоторые программы сторонних производителей будут включать стартовые + скрипты, позволяющие использовать приложение с rcNG; но это мы еще + обсудим в следующем разделе. - Также допускается использование &man.cron.8; для запуска системных - сервисов. Этот метод обладает рядом преимуществ, которые заключаются не - только в том, что &man.cron.8; запускает эти процессы, как владелец - crontab, но и в том, что сервисы могут быть - запущены и не привилегированными пользователями. + + Расширенное конфигурирование приложения - Очень удобно пользоваться возможностью - &man.cron.8;, которая заключается в том, что если вместо времени - указать @reboot, запланированная программа будет - запущена сразу после запуска &man.cron.8; после перезагрузки - системы. + Теперь, когда &os; включает rcNG, конфигурирование запуска + приложений стало более оптимальным; фактически, оно стало более + тщательным. С помощью ключевых слов, рассмотренных в разделе + rcNG, приложения теперь + можно настроить для запуска после других заданных сервисов, + например, DNS; можно разрешить передачу + дополнительных флагов через rc.conf вместо + жесткого задания флагов в стартовых скриптах, и т.д. Простой + скрипт может иметь следующий вид: + + #!/bin/sh +# +# PROVIDE: utility +# REQUIRE: DAEMON +# BEFORE: LOGIN +# KEYWORD: FreeBSD shutdown + +# +# НЕ МЕНЯЙТЕ ЗДЕСЬ ЭТИ СТАНДАРТНЫЕ ЗНАЧЕНИЯ +# ЗАДАВАЙТЕ ИХ В ФАЙЛЕ /etc/rc.conf + +# + +utility_enable=${utility_enable-"NO"} +utility_flags=${utility_flags-""} +utility_pidfile=${utility_pidfile-"/var/run/utility.pid"} + +. /etc/rc.subr + +name="utility" +rcvar=`set_rcvar` +command="/usr/local/sbin/utility" + +load_rc_config $name + +pidfile="${utility_pidfile}" + +start_cmd="echo \"Starting ${name}.\"; /usr/bin/nice -5 ${command} ${utility_flags} ${command_args}" + +run_rc_command "$1" + + Этот скрипт будет гарантировать, что указанное приложение + utility будет запущено перед сервисом + login, но после сервиса + daemon. Он также предоставляет метод + для создания и отслеживания файла идентификатора процесса, + PID. + + Этот новый метод также позволяет легко работать с аргументами + командной строки, включать стандартные функции из файла + /etc/rc.subr, обеспечивает совместимость + с утилитой &man.rcorder.8; и упрощает конфигурирование с помощью + файла rc.conf. По сути, этот сценарий + можно даже поместить в каталог + /etc/rc.d. Это, однако, + потенциально может сбить с толку утилиту &man.mergemaster.8; + при обновлениях программного обеспечения. + + + + Использование сервисов для запуска сервисов + + Другие сервисы, такие как даемоны сервера + POP3, IMAP, и т.п. могут + быть запущены с помощью &man.inetd.8;. Для этого необходимо + установить сервисную утилиту из набора портов и добавить + соответствующую строчку конфигурации в файл + /etc/inetd.conf или раскомментировать + подходящую строку конфигурации из уже имеющихся. Работа с даемоном + inetd и его конфигурирование подробно описано + в разделе inetd. + + В некоторых случаях использование для запуска системных + служб даемона &man.cron.8; может оказаться более приемлемым. Этот + подход имеет несколько преимуществ, поскольку даемон + cron запускает эти процессы от имени + владельца файла crontab. Это позволяет + обычным пользователям запускать и поддерживать некоторые + приложения. + + Утилита cron поддерживает уникальную + возможность, @reboot, — это значение + можно использовать вместо спецификации времени. В результате, + задание будет выполнено при запуске &man.cron.8;, обычно — + в ходе инициализации системы. + + @@ -564,7 +664,7 @@ HOME=/var/log любимый текстовый редактор: утилита cron узнает о том, что файл изменился и сразу начнет использовать обновленную версию. Обратитесь к этой + url="&url.books.faq;/admin.html#ROOT-NOT-FOUND-CRON-ERRORS">этой части FAQ за дальнейшей информацией. @@ -938,7 +1038,7 @@ tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500 active, т.е. несущая обнаружена. Для dc1, мы видим status: no carrier. Это нормально, когда - ethernet кабель не подключен к карте. + Ethernet кабель не подключен к карте. @@ -1063,8 +1163,8 @@ round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms низкой скорости соединения. Некоторые пользователи встречаются с несколькими - device timeouts, что нормально для некоторых сетевых - карт. Если это продолжается и надоедает, убедитесь, что + device timeouts, что нормально для некоторых + сетевых карт. Если это продолжается и надоедает, убедитесь, что устройство не конфликтует с другим устройством. Внимательно проверьте подключение кабеля. Возможно также, что вам просто надо установить другую карту. @@ -1112,25 +1212,28 @@ round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms один сервер работает в сети как несколько серверов. Это достигается присвоением нескольких сетевых адресов одному интерфейсу. - У сетевого интерфейса всегда есть один настоящий адрес, хотя он - может иметь любое количество синонимов (alias). Эти алиасы обычно - добавляются путём помещения синонимов в - /etc/rc.conf. + У сетевого интерфейса всегда есть один настоящий + адрес, хотя он может иметь любое количество синонимов + (alias). Эти синонимы обычно добавляются путём помещения + соответствующих записей в /etc/rc.conf. Синоним для интерфейса fxp0 выглядит следующим образом: ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx" - Заметьте, что алиас записи должны начинаться с alias0 и идти далее - в определенном порядке, (например, _alias1, _alias2, и т.д.). - Конфигурационный процесс остановится на первом отсутствующем по порядку - числе. + Заметьте, что записи синонимов должны начинаться с + alias0 и идти далее в определенном порядке + (например, _alias1, _alias2, + и т.д.). Конфигурационный процесс остановится на первом по порядку + отсутствующем числе. - Определение маски подсети для синонима очень важно, но к счастью, так же - просто. Для каждого интерфейса должен быть один адрес с истинной маской - подсети. Любой другой адрес в сети должен иметь маску подсети, состоящую - из всех единичек. + Определение маски подсети для синонима очень важно, но к счастью, + так же просто. Для каждого интерфейса должен быть один адрес с + истинной маской подсети. Любой другой адрес в сети должен иметь + маску подсети, состоящую из всех единичек (что выражается как + 255.255.255.255 или как + 0xffffffff). Например, рассмотрим случай, когда интерфейс fxp0 подключён к двум сетям, к сети @@ -1142,7 +1245,16 @@ round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms 10.1.1.1 по 10.1.1.5 и с 202.0.75.17 по - 202.0.75.20. + 202.0.75.20. Как было сказано выше, + только первый адрес в заданном диапазоне (в данном случае, + 10.0.1.1 и + 202.0.75.17) должен иметь реальную + маску сети; все остальные (с 10.1.1.2 + по 10.1.1.5 и с + 202.0.75.18 по + 202.0.75.20) должны быть + сконфигурированы с маской сети + 255.255.255.255. Для этого должны быть внесены следующие записи: @@ -1168,6 +1280,9 @@ round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms + + + /etc @@ -1238,6 +1353,9 @@ round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms + + + nameserver @@ -1277,7 +1395,7 @@ nameserver 147.11.100.30 <filename>/etc/hosts</filename> hosts - + /etc/hosts - простая текстовая база данных, напоминающая старый Интернет. Она работает совместно с DNS и NIS, сопоставляя доменные имена IP адресу. @@ -1319,7 +1437,7 @@ nameserver 147.11.100.30 # Формат /etc/hosts: - + [IP адрес в Интернете] [имя компьютера] [alias1] [alias2] ... Например: @@ -1337,9 +1455,9 @@ nameserver 147.11.100.30 <filename>syslog.conf</filename> - + syslog.conf - + syslog.conf is является файлом конфигурации для &man.syslogd.8;. В нём указываются, типы сообщений генерируемые syslog, и лог файлы, в которые они @@ -1385,7 +1503,7 @@ cron.* /var/log/cron <filename>newsyslog.conf</filename> newsyslog.conf - + newsyslog.conf - конфигурационный файл &man.newsyslog.8;, программы, обычно контролируемой &man.cron.8;. &man.newsyslog.8; определяет, когда лог-файлы нуждаются в @@ -1402,7 +1520,7 @@ cron.* /var/log/cron они должны быть пересмотрены. Лог файлы могут быть перегруппированы и/или заархивированы, когда они либо достигнут определённого размера, либо при достижении определённых даты/времени. - + # configuration file for newsyslog # $&os;$ # @@ -1489,7 +1607,7 @@ kern.maxfiles: 2088 -> 5000 либо строкового, либо целого, либо булевого типа. Переменные булевого типа могут принимать два значения (1 (истина) и 0 (ложь)). - + Если вы хотите устанавливать некоторые переменные автоматически при каждой загрузке компьютера, добавьте их в файл /etc/sysctl.conf. За дополнительной @@ -1546,22 +1664,24 @@ device_probe_and_attach: cbb0 attach returned 12 vfs.vmiodirenable - + Значением переменной vfs.vmiodirenable может быть установлено в 0 (выключено) или 1 (включено); по умолчанию 1. Эта переменная отвечает за метод кэширования каталогов. Размер большинства каталогов невелик. Они могут поместиться в одном фрагменте (обычно 1K), и могут занимать - ещё меньше места (обычно 512 байт) в кэше буфера. Однако, при - работе в стандартном режиме буфер прокэширует только заданное число - каталогов даже если у вас много памяти. Включение этого параметра + ещё меньше места (обычно 512 байт) в кэше буфера. + При отключении этой переменной (при установке значения 0) + буфер прокэширует только заданное число + каталогов даже если у вас много памяти. При включении (при + установке значения 1) эта переменная sysctl позволит использовать страничное кэширование VM, делая доступным для кэширования каталогов весь объём памяти. Однако, минимальный объём памяти, используемой для кэширования каталогов стал равен объёму страницы (обычно 4 K) - вместо 512 байт. Мы рекомендуем включить эту опцию, если ваш - компьютер исполняет программы, манипулирующие значительным + вместо 512 байт. Мы рекомендуем оставлять эту опцию включенной, + если ваш компьютер исполняет программы, манипулирующие значительным количеством файлов. Примером таких программ могут быть кэширующие прокси-серверы, большие почтовые серверы и серверы новостей. Обычно включение этой опции не понижает производительности, однако лучше @@ -1606,7 +1726,7 @@ device_probe_and_attach: cbb0 attach returned 12 Есть много других переменных sysctl, относящихся к кэшированию в буфер и страничному кэшированию VM. Мы не рекомендуем изменять - эти значения. Начиная &os; 4.3, система VM делает отличную + эти значения. Начиная &os; 4.3, система VM делает отличную работу по автоматической самонастройке. @@ -1662,25 +1782,25 @@ device_probe_and_attach: cbb0 attach returned 12 ядра, равное 1. Это должно быть сделано при помощи загрузчика при загрузке. Если вы сделаете это позже - изменения не будут иметь силы. - + За более подробной информацией обращайтесь к &man.ata.4;. - <option>SCSI_DELAY</option> + <title><literal>SCSI_DELAY</literal> (<varname>kern.cam.scsi_delay</varname>) - + SCSI_DELAY kern.cam.scsi_delay - Параметр настройки ядра может + Параметр настройки ядра SCSI_DELAY может использоваться для уменьшения времени загрузки системы. Значение по умолчанию велико и может составлять более 15 секунд в процессе загрузки. Уменьшение его до 5 секунд обычно работает (особенно - с современными дисками). В новые версии &os; (5.0+) должен + с современными дисками). В новых версиях &os; (5.0 и выше) должен использоваться параметр kern.cam.scsi_delay, настраиваемый во время загрузки. Этот параметр и параметр настройки ядра принимают значения в @@ -1879,7 +1999,7 @@ device_probe_and_attach: cbb0 attach returned 12 kern.maxfiles - + Значение kern.maxfiles может быть увеличено или уменьшено в зависимости от потребностей вашей системы. Эта переменная определяет максимальное число дескрипторов файлов. Когда @@ -1935,7 +2055,7 @@ device_probe_and_attach: cbb0 attach returned 12 Сетевые Ограничения - Опция ядра обуславливает + Опция ядра NMBCLUSTERS обуславливает количество Mbuf, доступных на машине. На сервере с большим трафиком и маленьким Mbuf производительность будет пониженной. Каждый кластер представлен двумя килобайтами памяти, поэтому значение 1024 означает @@ -1955,16 +2075,16 @@ device_probe_and_attach: cbb0 attach returned 12 Для настройки в процессе загрузки используйте в loader переменную kern.ipc.nmbclusters. Только в старых версиях &os; потребуется пересобрать ядро (&man.config.8;) с измененным - параметром . + параметром NMBCLUSTERS. Для нагруженных серверов, интенсивно использующих системный вызов &man.sendfile.2;, может потребоваться увеличения буферов &man.sendfile.2; с помощью параметра конфигурации ядра - , или изменения значения путем установки + NSFBUFS, или изменения значения путем установки переменной в /boot/loader.conf (обратитесь к &man.loader.8; за подробностями). Общий признак того, что параметр требуется изменить — - состояние процессов sfbufa. + состояние процессов sfbufa. Переменная sysctl kern.ipc.nsfbufs установлена только для чтения. Этот параметр увеличивается вместе с kern.maxusers, хотя может @@ -2020,7 +2140,7 @@ device_probe_and_attach: cbb0 attach returned 12 TCP Bandwidth Delay Product Limiting похоже на - TCP/Vegas в NetBSD. Оно может быть + TCP/Vegas в NetBSD. Оно может быть включено установкой переменной sysctl net.inet.tcp.inflight_enable в 1. Система попытается вычислить задержку @@ -2083,10 +2203,8 @@ device_probe_and_attach: cbb0 attach returned 12 Лучший способ добавить подкачку, конечно, использовать еще один жесткий диск. Вы можете сделать это в любой момент. Если такой способ подходит, прочтите еще раз - информацию по разделу - подкачки из раздела Руководства по первоначальной настройке, + информацию по пространству подкачки в разделе + Руководства, где рассказывается о наилучшем способе организации раздела подкачки. @@ -2273,7 +2391,7 @@ device_probe_and_attach: cbb0 attach returned 12 происходят вне контроля OS. Это означает, что пользователи могут решить проблемы с APM BIOS только путем перепрошивки его ROM; это очень опасная процедура, и если она завершится - неудачно, система может прийти в невосстановимое состояние. + неудачно, система может оказаться в невосстановимом состоянии. В-третьих, реализация технологии APM зависит от поставщика, что означает дублирование усилий и если в BIOS одного из поставщиков будет найдена и исправлена ошибка, ее могли @@ -2281,7 +2399,7 @@ device_probe_and_attach: cbb0 attach returned 12 велик для реализации сложной политики управления питанием, или такой политики, которая может хорошо адаптироваться к потребностям компьютера. - + Plug and Play BIOS (PNPBIOS) был неудобен во многих ситуациях. PNPBIOS это 16-битная технология, поэтому OS требовалось использовать 16-битную эмуляцию для @@ -2362,7 +2480,7 @@ device_probe_and_attach: cbb0 attach returned 12 в байткоде ACPI Machine Language (AML) некоторых материнских плат, незавершенные участки кода в подсистемах ядра &os; и ошибки в - интерпретаторе ACPI-CA. + интерпретаторе &intel; ACPI-CA. Этот раздел предназначен для того, чтобы упростить ваше содействие разработчикам &os; ACPI в @@ -2395,13 +2513,13 @@ device_probe_and_attach: cbb0 attach returned 12 - Вывод dmesg после boot + Вывод &man.dmesg.8; после boot , включая все сообщения, появившиеся при изучении ошибки. - Вывод dmesg после boot + Вывод &man.dmesg.8; после boot с выключенным ACPI, если его отключение помогает решить проблему. @@ -2473,7 +2591,7 @@ device_probe_and_attach: cbb0 attach returned 12 Драйвер ACPI должен прочесть заданные таблицы, реализовать интерпретатор для байткода, модифицировать драйвера устройств и ядро для приема информации от подсистемы - ACPI. Для &os;, Intel предоставила + ACPI. Для &os; &intel; предоставила интерпретатор (ACPI-CA), тот же что для Linux и NetBSD. Исходный код ACPI-CA находится в каталоге @@ -2670,7 +2788,8 @@ device_probe_and_attach: cbb0 attach returned 12 ошибочного!) байткода. Это обычно проявляется появлением консольных сообщений ядра, подобных этому: - ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] (Node 0xc3f6d160), AE_NOT_FOUND + ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\ + (Node 0xc3f6d160), AE_NOT_FOUND Зачастую вы можете разрешить эти проблемы путем обновления BIOS до последней ревизии. Большинство консольных