Synchronize with FreeBSD Russian Doc Project CVS Repository.

This commit is contained in:
Alexey Zelkin 2000-12-29 14:37:01 +00:00
parent 0d7bd19234
commit 0cc63d201c
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=8580
22 changed files with 7190 additions and 608 deletions

View file

@ -1,6 +1,6 @@
#
# $FreeBSD$
# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/faq/Makefile,v 1.3 2000/10/17 16:55:05 phantom Exp $
# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/faq/Makefile,v 1.4 2000/11/15 17:21:30 phantom Exp $
#
# Build the Russian FreeBSD FAQ
#

View file

@ -1,9 +1,10 @@
<!--
The FreeBSD Russian Documentation Project
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/faq/book.sgml,v 1.39 2000/11/10 12:45:41 phantom Exp $
Original revision: 1.122
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/faq/book.sgml,v 1.41 2000/11/17 15:39:39 andy Exp $
Original revision: 1.124
-->
<!DOCTYPE BOOK PUBLIC "-//FreeBSD//DTD DocBook V3.1-Based Extension//EN" [
@ -714,9 +715,9 @@
</para>
<para>Эта книга касается основ администрирования, в том числе протоколов
TCP/IP, DNS, NFS, SLIP/PPP, sendmail, INN/NNTP, системы печати ит д..
Она сравнительно дорогая (примерно US&#36;45-&#36;55), но
стоит того. К ней прилагается также компакт-диск с исходными
TCP/IP, DNS, NFS, SLIP/PPP, sendmail, INN/NNTP, системы печати и так
далее.. Она сравнительно дорогая (примерно US&#36;45-&#36;55), но
того стоит. К ней прилагается также компакт-диск с исходными
текстами различных утилит; большинство их них, однако, также
присутствуют на диске FreeBSD 2.2.6R (на котором к тому же
часто находятся более свежие версии).</para>
@ -1302,8 +1303,8 @@ File: +DESC (ignored)
<para>Вам нужен персональный компьютер не ниже 386, с 5 или более
мегабайтами ОЗУ и по крайней мере 60Мб свободного пространства на
винчестере. Система может работать с дешёвым графическим адаптером MDA,
но для того, чтобы запустить X11R6, требуется видеокарта стандарта VGA
винчестере. Система может работать с дешёвым графическим адаптером MDA,
но для того, чтобы запустить X11R6, требуется адаптер стандарта VGA
или лучше.</para>
<para>Посмотрите также раздел
@ -1506,7 +1507,7 @@ File: +DESC (ignored)
<answer>
<para>Если вы видите, что как машина зависает или неожиданно
<para>Если вы видите, что машина зависает или неожиданно
перезагружается, когда вы пытаетесь загрузиться с установочной
дискеты, вы должны задать себе три вопроса:-</para>
@ -1841,7 +1842,7 @@ BUSY</literallayout></entry>
<replaceable>N</replaceable> дорожек, 64 головки и 32 сектора на дорожку,
где <replaceable>N</replaceable> - это ёмкость
диска в мегабайтах. Например, 2Гбайтный диск должен иметь 2048
дорожек, 64 головки и 32 сектора а дорожку.</para>
дорожек, 64 головки и 32 сектора на дорожку.</para>
<para>Если трансляция <emphasis>включена</emphasis> (что обычно используется
для преодоления некоторых ограничений MSDOS) и ёмкость диска превышает
@ -2000,7 +2001,7 @@ BUSY</literallayout></entry>
конфигурировать настройки ядра для большинства адаптеров ISA.</para>
<para>Однако рекомендуется, что потом вы всё же построите новое ядро,
содержащее только те драйвера, которые вам нужны, для того,
содержащее только те драйверы, которые вам нужны, для того,
чтобы сэкономить немного ОЗУ, хотя для большинства систем это
больше не является большой необходимостью.</para>
@ -5184,7 +5185,7 @@ disk fd1 at fdc0 drive 1
<para>Файл <filename>/etc/rc.serial</filename> предназначен для инициализации
коммуникационных адаптеров (например, установки характеристик
работы последовательных портов ит д).</para>
работы последовательных портов и тому подобное).</para>
<para>Файл <filename>/etc/rc.i386</filename> предназначен для настройки
специфичных для архитектуры Intel параметров, таких, как эмуляция iBCS2
@ -5356,9 +5357,10 @@ disk fd1 at fdc0 drive 1
<qandaentry>
<question id="rcconf-readonly">
<para>Я сделал ошибку в файле <filename>rc.conf</filename>, и теперь не
могу его отредактировать из-за того, что файловая система находится в
режиме только для чтения. Что мне делать?</para>
<para>Я сделал ошибку в файле <filename>rc.conf</filename> или в каком-то
другом файле начальной загрузки, и теперь не могу его отредактировать
из-за того, что файловая система находится в режиме только для чтения.
Что мне делать?</para>
</question>
<answer>
@ -5673,7 +5675,7 @@ Boot: <userinput>1:da(0,a)/kernel</userinput>
используя <command>boot -v</command> в загрузчике. Перед тем, как
запустится программа установки, ядро выведет параметры, используемые BIOS.
Не волнуйтесь - подождите запуска программы
установки, а затем воспользуйтесь скролингом, чтобы посмотреть
установки, а затем воспользуйтесь скроллингом, чтобы посмотреть
значения этих параметров. Как правило, BIOS нумерует диски в том же
порядке, что и FreeBSD, сначала IDE, затем SCSI.</para>
@ -6874,6 +6876,41 @@ ttyqc none network
</answer>
</qandaentry>
<qandaentry>
<question id="release-candidate">
<para>Я пытался обновить мою систему до последней -STABLE, а получил -RC
или -BETA! Что происходит?</para>
</question>
<answer>
<para>Краткий ответ: это же просто название. RC означает
<quote>Release Candidate</quote>. Это значит, что вскоре
произойдет выход релиза. Во FreeBSD -BETA значит то же самое,
что и -RC.</para>
<para>Подробный ответ: во FreeBSD релизы выпускаются из одного из
двух мест. Крупные релизы, точка-ноль, такие, как
3.0-RELEASE и 4.0-RELEASE, ответвляются от основного потока
разработки, более известного как <link
linkend="current">-CURRENT</link>. Мелкие релизы, такие, как
3.1-RELEASE или 4.2-RELEASE, являются снэпшотами активной ветки
<link linkend="stable">-STABLE</link>.</para>
<para>Когда делается релиз, то ветвь, из которой он выпускается,
подвергается некоторой подготовке. Частью этого процесса
является замораживание кода. Когда инициируется замораживание
кода, то имя ветки изменяется для того, чтобы отразить факт
близости релиза. Например, если ветка называлась 4.0-STABLE, то
её имя будет изменено на 4.1-RC, чтобы указать, что скоро из неё
будет сделан релиз. Как только релиз, а в этом примере это
4.1-RELEASE, будет сделан, ветвь будет переименована в
4.1-STABLE.</para>
</answer>
</qandaentry>
</qandaset>
</chapter>

View file

@ -3,7 +3,7 @@
#
# The FreeBSD Russian Documentation Project
# $FreeBSD$
# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/Makefile,v 1.12 2000/10/11 15:57:22 phantom Exp $
# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/Makefile,v 1.16 2000/11/15 17:21:30 phantom Exp $
# Original version: 1.28
#
@ -16,8 +16,6 @@ FORMATS?= html-split
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
NO_TIDY= YES
#
# SRCS lists the individual SGML files that make up the document. Changes
# to any of these files will force a rebuild
@ -32,24 +30,24 @@ SRCS+= bibliography/chapter.sgml
SRCS+= boot/chapter.sgml
#SRCS+= contrib/chapter.sgml
#SRCS+= cutting-edge/chapter.sgml
#SRCS+= disks/chapter.sgml
SRCS+= disks/chapter.sgml
#SRCS+= eresources/chapter.sgml
#SRCS+= hw/chapter.sgml
SRCS+= install/chapter.sgml
#SRCS+= internals/chapter.sgml
SRCS+= introduction/chapter.sgml
#SRCS+= kernelconfig/chapter.sgml
#SRCS+= kerneldebug/chapter.sgml
#SRCS+= kernelopts/chapter.sgml
SRCS+= kerneldebug/chapter.sgml
SRCS+= kernelopts/chapter.sgml
#SRCS+= l10n/chapter.sgml
SRCS+= linuxemu/chapter.sgml
#SRCS+= mail/chapter.sgml
SRCS+= mail/chapter.sgml
SRCS+= mirrors/chapter.sgml
SRCS+= pgpkeys/chapter.sgml
#SRCS+= policies/chapter.sgml
#SRCS+= ppp-and-slip/chapter.sgml
#SRCS+= printing/chapter.sgml
#SRCS+= security/chapter.sgml
SRCS+= security/chapter.sgml
#SRCS+= serialcomms/chapter.sgml
SRCS+= staff/chapter.sgml
#SRCS+= users/chapter.sgml

View file

@ -2,25 +2,26 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/advanced-networking/chapter.sgml,v 1.5 2000/10/15 13:40:28 andy Exp $
Original revision: 1.29
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/advanced-networking/chapter.sgml,v 1.7 2000/11/17 15:46:38 andy Exp $
Original revision: 1.32
-->
<chapter id="advanced-networking">
<title>Сложные вопросы работы в сети</title>
<title>Сложные вопросы работы в сети</title>
<sect1>
<title>Краткий обзор</title>
<sect1>
<title>Краткий обзор</title>
<para>Последующая глава посвящена некоторым более часто используемым
сетевым службам UNIX-систем. Это, конечно же, будет касаться настройки
указанных служб в Вашей системе FreeBSD.</para>
</sect1>
<para>Последующая глава посвящена некоторым более часто используемым
сетевым службам UNIX-систем. Это, конечно же, будет касаться настройки
указанных служб в Вашей системе FreeBSD.</para>
</sect1>
<sect1 id="routing">
<title>Сетевые шлюзы и маршруты</title>
<para><emphasis>Предоставил &a.gryphon;. 6 октября 1995.</emphasis></para>
<para><emphasis>Предоставил &a.gryphon;, 6 октября 1995.</emphasis></para>
<para>Чтобы некоторая машина могла найти другую, должен иметься механизм
описания того, как добраться от одной машине к другой. Такой механизм
@ -2756,49 +2757,49 @@ lrwxr-xr-x 1 root wheel 14 Nov 8 14:27 /usr/lib/libscrypt.so@ -> libscryp
программы dhclient, и при удачном его выполнении к автоматическому
заданию информации для настройки интерфейса.</para>
<para>Есть две вещи, которые вы должны сделать для того, чтобы ваша
система использовала DHCP при загрузке:</para>
<para>Есть две вещи, которые вы должны сделать для того, чтобы ваша
система использовала DHCP при загрузке:</para>
<itemizedlist>
<listitem>
<para>Убедитесь, что устройство <devicename>bpf</devicename>
включено в компиляцию вашего ядра. Чтобы это сделать, добавьте
строчку <literal>pseudo-device bpf</literal> в конфигурационный
файл ядра и перестройте ядро. Более подробная информация о
построении ядер имеется в разделе <xref
linkend="kernelconfig">.</para>
<itemizedlist>
<listitem>
<para>Убедитесь, что устройство <devicename>bpf</devicename>
включено в компиляцию вашего ядра. Чтобы это сделать, добавьте
строчку <literal>pseudo-device bpf</literal> в конфигурационный
файл ядра и перестройте ядро. Более подробная информация о
построении ядер имеется в разделе <xref
linkend="kernelconfig">.</para>
<para>Устройство <devicename>bpf</devicename> уже является частью
ядра <filename>GENERIC</filename>, которое поставляется вместе с
FreeBSD, так что, если вы не используете другое ядро, то вам и
не нужно его делать для того, чтобы работал DHCP.</para>
<para>Устройство <devicename>bpf</devicename> уже является частью
ядра <filename>GENERIC</filename>, которое поставляется вместе с
FreeBSD, так что, если вы не используете другое ядро, то вам и
не нужно его делать для того, чтобы работал DHCP.</para>
<note>
<para>Те, кто беспокоится о безопасности, должны иметь в виду, что
устройство <devicename>bpf</devicename> является также тем самым
устройством, которое позволяет работать программам-снифферам
пакетов (хотя для этого они должны быть запущены пользователем
root). Наличие устройства <devicename>bpf</devicename>
<emphasis>необходимо</emphasis> для использования DHCP, но если
вы чересчур беспокоитесь о безопасности, то вам нельзя добавлять
устройство <devicename>bpf</devicename> в ядро для того, чтобы
в будущем использовать DHCP.</para>
</note>
</listitem>
<note>
<para>Те, кто беспокоится о безопасности, должны иметь в виду, что
устройство <devicename>bpf</devicename> является также тем самым
устройством, которое позволяет работать программам-снифферам
пакетов (хотя для этого они должны быть запущены пользователем
root). Наличие устройства <devicename>bpf</devicename>
<emphasis>необходимо</emphasis> для использования DHCP, но если
вы чересчур беспокоитесь о безопасности, то вам нельзя добавлять
устройство <devicename>bpf</devicename> в ядро для того, чтобы
в будущем использовать DHCP.</para>
</note>
</listitem>
<listitem>
<para>Отредактируйте ваш файл <filename>/etc/rc.conf</filename>,
включив в него следующее:</para>
<listitem>
<para>Отредактируйте ваш файл <filename>/etc/rc.conf</filename>,
включив в него следующее:</para>
<programlisting>
<programlisting>
ifconfig_fxp0="DHCP"
</programlisting>
</listitem>
</itemizedlist>
</programlisting>
</listitem>
</itemizedlist>
<note>
<para>Обязательно замените <literal>fxp0</literal> именем интерфейса,
который вы хотите настроить динамически.</para>
который вы хотите настроить динамически.</para>
</note>
<para>Если <command>dhclient</command> в вашей системе находится в другом

View file

@ -2,7 +2,7 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/basics/chapter.sgml,v 1.3 2000/10/05 15:34:36 phantom Exp $
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/basics/chapter.sgml,v 1.5 2000/12/17 11:12:42 danfe Exp $
Original revision: 1.17
-->
@ -12,7 +12,7 @@
<sect1>
<title>Краткий обзор</title>
<para><emphasis>Переписано Chris Shumway
<para><emphasis>Переписал Chris Shumway
<email>cshumway@cdrom.com</email>, 10 марта 2000.</emphasis></para>
<para>В этой главе мы попытаемcя раскрыть основные принципы и команды
@ -25,7 +25,7 @@
<para>FreeBSD исторически развивалась из BSD UNIX, и основывается на
некоторых ключевых концепциях UNIX. В первую очередь это, конечно,
тот факт, что FreeBSD -- многопользовательская операционная система.
тот факт, что FreeBSD &ndash; многопользовательская операционная система.
Это означает, что несколько пользователей могут работать одновременно,
решая различные задачи и совершенно не мешая друг другу. На системе
лежит ответственность за правильное разделение и управление такими
@ -147,13 +147,13 @@
<para>Самым важным из всех каталогов является, несомненно, корневой
каталог, обозначаемым символом <literal>/</literal>. Корневой каталог
монтируется самым первым на этапе загрузки, и содержит все
монтируется самым первым на этапе загрузки и содержит все
необходимое, чтобы поднять систему и примонтировать остальные файловые
системы.</para>
<para>Точкой монтирования называется директория, которая будет
соответствовать корню примонтированной файловой системой. Среди
стандартных точки монтирования -- <filename>/usr</filename>,
стандартных точки монтирования &ndash; <filename>/usr</filename>,
<filename>/var</filename>, <filename>/mnt</filename> и
<filename>/cdrom</filename>. Эти директории обычно перечислены в
файле <filename>/etc/fstab</filename>, в котором указаны файловые
@ -177,18 +177,18 @@
операции над файлами и каталогами, редактирование командной строки,
командные макросы и переменные окружения. Вместе с FreeBSD
поставляется несколько командных интерпретаторов, например, sh, или
Bourne Shell, и csh, иначе C-shell. Многие другие, намного более
мощные, например, tcsh или bash, доступны в коллекции портов.</para>
Bourne Shell, и csh, иначе C-shell. Многие другие, более мощные,
например, tcsh или bash, доступны в коллекции портов.</para>
<para>Какой из командных интерпретаторов использовать? Это дело вкуса.
<para>Какой из командных интерпретаторов использовать? Это дело вкуса.
Если Вы программируете на C, то Вам, возможно, понравится tcsh, а если
Вы работали с Linux, то Вам скорее понравится bash. Каждый из
названных интерпретаторов имеет свои особенные свойства, которые
отличат его от других и, возможно, повлияют на Ваши
предпочтения.</para>
Вы работали с Linux, то Вас скорее устроит bash, нежели что-либо
другое. Каждый из названных интерпретаторов имеет свои особенные
свойства, которые отличат его от других и, возможно, повлияют на Ваш
выбор.</para>
<para>Одна из наиболее часто используемых функций командного
интерпретатора -- дополнение частичного имени файла до полного. Вы
интерпретатора &ndash; дополнение частичного имени файла до полного. Вы
можете набрать только первые несколько символов имени файла, нажать
клавишу табуляции (TAB), и командный интерпретатор автоматически
Например, у нас есть два фала, названные <filename>foobar</filename> и
@ -198,7 +198,7 @@
<para>Вы увидите следующее: <command>rm foo[BEEP].bar</command>.</para>
<para>Здесь [BEEP] -- это так называемый консольный звонок,
<para>Здесь [BEEP] &ndash; это так называемый консольный звонок,
сигнализирующий о том, что интерпретатор не в состоянии закончить имя
файла, так как по введенным Вами символам невозможно однозначно
идентифицировать файл. Например, имена файлов
@ -313,7 +313,7 @@
<para>Командный интерпретатор воспринимает некоторые символы, называемые
метасимволами, в качестве управляющих, несущих специальные функции.
Одни из наиболее часто используемых -- символ <literal>*</literal>,
Одни из наиболее часто используемых &ndash; символ <literal>*</literal>,
который заменяет любое количество символов в имени файла, и
<literal>?</literal>, заменяющий один символ. Эти метасимволы
используются для поиска файлов по маске, например, команда
@ -322,7 +322,7 @@
попадают все файлы из текущего каталога (на самом деле, это всегда так
и зависит от командного интерпретатора, например, в bash под маску
<literal>*</literal> не попадут файлы, начинающиеся с точки
<literal>.</literal> -- скрытые файлы).</para>
<literal>.</literal> &ndash; скрытые файлы).</para>
<para>В некоторых ситуациях требуется, чтобы интерпретатор воспринимал
метасимволы как обычные, не несущие специальной смысловой нагрузки.
@ -379,8 +379,8 @@
некоторые из них; в коллекции портов можно найти многие другие.</para>
<para>Самым простым в изучении и использовании, по-видимому, можно
назвать <application>ee</application>, что расшифровывается
&ldquo;easy editor&rdquo;, &ldquo;простой редактор&rdquo;. Чтобы
назвать <application>ee</application>, что расшифровывается как
&ldquo;easy editor&rdquo;, т.е. &ldquo;простой редактор&rdquo;. Чтобы
начать редактировать какой-либо файл, наберите в командной строке
<command>ee filename</command>, где <literal>filename</literal> имя
редактируемого файла. Например, для редактирования файла
@ -418,7 +418,7 @@
<para><command>&prompt.user; man command</command></para>
<para>Здесь<literal>command</literal> -- это команда, про которую Вы
<para>Здесь<literal>command</literal> &ndash; это команда, про которую Вы
хотите получить информацию. Например, для команды
<command>ls</command> наберите:</para>
@ -476,7 +476,7 @@
<para>Эта команда выведет справку об утилите <command>chmod</command>.
По традиции, конкретная секция справочника указывается в скобках
после команды, например, &man.chmod.1; относится к утилите
<command>chmod</command>, а &man.chmod.2; -- к соответствующему
<command>chmod</command>, а &man.chmod.2; &ndash; к соответствующему
системному вызову.</para>
<para>Часто бывает так, что Вы не знаете название команды, но имеете

View file

@ -2,7 +2,7 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/bibliography/chapter.sgml,v 1.2 2000/07/08 13:35:18 phantom Exp $
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/bibliography/chapter.sgml,v 1.3 2000/11/09 03:17:28 danfe Exp $
Original version: 1.21
-->
@ -17,10 +17,10 @@
ĐĎĚŘÚĎ×ÁÔĹĚŃ.</para>
<sect1 id="bibliography-freebsd">
<title>ëÎÉÇÉ É öÕÒÎÁÌÙ óÐÅÃÉÁÌÉÚÉÒÕÀÝÉÅÓÑ ÎÁ FreeBSD</title>
<title>Книги и журналы, специализирующиеся на FreeBSD</title>
<para><emphasis>íÅÖÄÕÎÁÒÏÄÎÙÅ ëÎÉÇÉ É
öÕÒÎÁÌÙ:</emphasis></para>
<para><emphasis>Международные книги и
журналы:</emphasis></para>
<itemizedlist>
<listitem>
@ -66,7 +66,7 @@
</listitem>
</itemizedlist>
<para><emphasis>ëÎÉÇÉ É öÕÒÎÁÌÙ ÎÁ ÁÎÇÌÉÊÓËÏÍ ÑÚÙËÅ:</emphasis></para>
<para><emphasis>Книги и журналы на английском языке:</emphasis></para>
<itemizedlist>
<listitem>
@ -79,7 +79,7 @@
</sect1>
<sect1 id="bibliography-userguides">
<title>òÕËÏ×ÏÄÓÔ×Á ðÏÌØÚÏ×ÁÔÅÌÅÊ</title>
<title>Руководства для пользователей</title>
<itemizedlist>
<listitem>
@ -125,7 +125,7 @@
</sect1>
<sect1 id="bibliography-adminguides">
<title>òÕËÏ×ÏÄÓÔ×Á áÄÍÉÎÉÓÔÒÁÔÏÒÏ×</title>
<title>Руководства для администраторов</title>
<itemizedlist>
<listitem>
@ -180,7 +180,7 @@
</sect1>
<sect1 id="bibliography-programmers">
<title>Programmers' Guides</title>
<title>Руководства для программистов</title>
<itemizedlist>
<listitem>
@ -243,7 +243,7 @@
</sect1>
<sect1 id="bibliography-osinternals">
<title>÷ÎÕÔÒÅÎÎÏÓÔÉ ïÐÅÒÁÃÉÏÎÎÏÊ óÉÓÔÅÍÙ</title>
<title>Внутренности операционной системы</title>
<itemizedlist>
<listitem>
@ -451,7 +451,7 @@
</sect1>
<sect1 id="bibliography-journals">
<title>Magazines and Journals</title>
<title>Прочие издания</title>
<itemizedlist>
<listitem>

View file

@ -2,7 +2,7 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/book.sgml,v 1.16 2000/10/11 15:57:22 phantom Exp $
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/book.sgml,v 1.19 2000/11/10 13:01:50 phantom Exp $
Original revision: 1.89
-->
@ -96,10 +96,12 @@
<!--
&chap.users;
&chap.kernelconfig;
&chap.security;
&chap.printing;
&chap.disks;
-->
&chap.security;
<!--
&chap.printing;
-->
&chap.disks;
&chap.backups;
&chap.x11;
<!--
@ -115,9 +117,7 @@
&chap.ppp-and-slip;
-->
&chap.advanced-networking;
<!--
&chap.mail;
-->
</part>
<part>
@ -126,9 +126,9 @@
&chap.cutting-edge;
&chap.contrib;
&chap.policies;
-->
&chap.kernelopts;
&chap.kerneldebug;
-->
&chap.linuxemu;
<!--
&chap.internals;

View file

@ -2,7 +2,7 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/boot/chapter.sgml,v 1.3 2000/10/10 18:49:31 phantom Exp $
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/boot/chapter.sgml,v 1.4 2000/11/09 03:29:52 danfe Exp $
Original revision: 1.8
-->
@ -19,8 +19,8 @@
строится на функциях предыдущей программы и становится все более
сложной.</para>
<para>Затем стартует ядро, которая выполняет обнаружение устройств и
их инициализацию. После завершения процесса своей загрузки ядро
<para>Затем стартует ядро, которое детектирует устройства и выполняет
их инициализацию. После завершения процесса своей загрузки, ядро
передает управление пользовательскому процессу с именем &man.init.8;,
который выполняет проверку дисков на возможность использования. Затем
&man.init.8; запускает пользовательский процесс настройки ресурсов,
@ -30,7 +30,7 @@
</sect1>
<sect1 id="boot-blocks">
<title>Загрузочные блоки: Этапы начальной загрузки 1 и 2</title>
<title>Загрузочные блоки: первый и второй этапы начальной загрузки</title>
<para><firstterm>Начальная загрузка</firstterm> представляет собой
процесс, в течение которого компьютер распознает и инициализирует свои
@ -129,7 +129,7 @@ boot:
</sect1>
<sect1 id="boot-loader">
<title>Загрузчик: Третий этап процесса начальной загрузки</title>
<title>Загрузчик: третий этап процесса начальной загрузки</title>
<para>Передача управления загрузчику является последним, третьим этапом в
процессе начальной загрузки, а сам загрузчик находится в файловой
@ -375,7 +375,7 @@ boot:
</sect1>
<sect1 id="boot-kernel">
<title>Взаимодействие я ядром во время загрузки</title>
<title>Взаимодействие с ядром во время загрузки</title>
<para>Как только ядро окажется загруженным при помощи <link
linkend="boot-loader">загрузчика</link> (обычный способ) или <link
@ -448,7 +448,7 @@ boot:
</sect1>
<sect1 id="boot-init">
<title>Init: Инициализация управления процессами</title>
<title>Init: инициализация управления процессами</title>
<para>После того, как ядро завершит загрузку, оно передает управление
пользовательскому процессу <command>init</command>, который расположен

View file

@ -0,0 +1,967 @@
<!--
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/disks/chapter.sgml,v 1.4 2000/11/10 12:05:03 phantom Exp $
Original revision: 1.23
-->
<chapter id="disks">
<title>Диски</title>
<sect1 id="disks-synopsis">
<title>Краткий обзор</title>
<para>Эта глава посвящена использованию дисков, как физических, так и
построенных на основе микросхем памяти и сетевых, в системе
FreeBSD.</para>
</sect1>
<sect1 id="disks-bios-numbering">
<title>Нумерация дисков в BIOS</title>
<para>Вам необходимо изучить этот вопрос перед тем, как устанавливать и
настраивать FreeBSD на вашей машине, особенно если у вас имеется
несколько дисков.</para>
<para>В случае PC под управлением DOS или других зависимых от BIOS
операционных систем (WINxxx), BIOS может скрывать обычный порядок
следования дисков, и операционная система не замечает этого. Это
позволяет пользователю загружаться с диска, отличного от так
называемого <quote>основного первичного</quote>. Это особенно удобно
тем пользователям, которые находят, что самый простым и дешевым
способом создания резервных копий является покупка второго винчестера,
идентичного первому, и выполнение регулярных копий первого диска на
второй при помощи программ Ghost или XCOPY. В таком случае, если
первый диск ломается, подвергается атаке вируса или портится из-за
дефекта в операционной системе, он может быть легко восстановлен просто
указанием BIOS логически поменять диски местами. Это похоже на
переключение кабелей на винчестерах, но без разборки корпуса.</para>
<para>Более дорогие системы с контроллерами SCSI часто включают
расширения BIOS, которые точно также позволяют изменить порядок
следования до семи дисков SCSI.</para>
<para>Пользователь, который привык пользоваться этой возможностью, может
быть удивлен результатом попытки ею воспользоваться с FreeBSD.
FreeBSD не использует BIOS и не знает о <quote>логическом
переназначении дисков BIOS</quote>. Это может привести к очень
запутанной ситуации, особенно когда диски идентичны по физическим
параметрам и к тому же являлись клонами друг друга.</para>
<para>При работе с FreeBSD, всегда настраивайте BIOS на естественный
порядок нумерации дисков до установки FreeBSD, и оставляйте эту
настройку. Если вам нужно поменять диски местами, делайте это, но
самым сложным способом, открывая корпус машины и переключая кабели и
перемычки.</para>
<sidebar>
<title>Пример из Удивительных приключений Билла и Фреда:</title>
<para>Билл пожертвовал стареньким Wintel-компьютером под машину FreeBSD
для Фреда. Билл задал единственный винчестер SCSI как устройство
SCSI номер ноль и установил на него FreeBSD.</para>
<para>Фред начал работать с системой, однако после нескольких дней
работы заметил, что старый диск SCSI сообщает о множестве программных
ошибок, и сообщил об этом Биллу.</para>
<para>Спустя еще несколько дней Билл, решив выделить некоторое время на
решение этой проблемы, взял идентичный диск SCSI со "склада"
винчестеров в кладовке. Первичное сканирование поверхности
показало нормальное функционирование, так что Билл устанавливает этот
диск как устройство SCSI номер четыре, и выполняет копирование образа
с диска номер ноль на диск с номером четыре. Теперь, после того, как
новый диск был установлен и начал нормально работать, Билл решает,
что хорошо бы начать использовать его, поэтому он воспользовался
возможность в SCSI BIOS изменить порядок следования дисков для
загрузки системы с устройства SCSI номер четыре. FreeBSD загружается
и работает прекрасно.</para>
<para>Фред продолжает свою работу еще несколько дней, и вскоре Билл и
Фред решают, что пришло время для нового испытания -- обновления до
новой версии FreeBSD. Билл убрал диск SCSI номер ноль, потому что
он был несколько поврежден, и заменил его другим идентичным диском со
"склада". Затем Билл установил новую версию FreeBSD на новый диск
SCSI с номером ноль при помощи волшебных дискет Фреда с поддержкой
FTP через Интернет. Установка прошла нормально.</para>
<para>Фред продолжает использовать новую версию FreeBSD несколько дней и
решает, что она достаточно хороша для использования в инженерном
отделе... самое время скопировать всю его работу со старой версии.
Так что Фред монтирует устройство SCSI номер четыре (самая последняя
копия старой версии FreeBSD). Фред с ужасом обнаруживает, что
никаких следов его работы на диске SCSI номер четыре нет.</para>
<para>Куда же исчезли данные?</para>
<para>Когда Билл делал копию образа исходного диска SCSI номер ноль на
диск SCSI номер четыре, диск номер четыре стал "новым клоном". Когда
Билл изменил порядок следования дисков в SCSI BIOS, чтобы загружаться
с диска SCSI номер четыре, он обманул этим только самого себя.
FreeBSD продолжала работать с диска SCSI номер ноль. Выполнение
подобных изменений в BIOS приведет к тому, что все или некоторые
компоненты кода начальной загрузки будут браться с указанного диска
BIOS, но когда очередь доходит до драйверов ядра FreeBSD, нумерация
дисков BIOS игнорируется, и FreeBSD возвращается обратно к обычной
схеме нумерации дисков. В приведенном примере система продолжала
работать с начальным диском SCSI номер ноль, и все данные Фреда
оставались здесь, а не на устройстве SCSI номер четыре. Тот факт,
что система запускалась с диска SCSI номер четыре, был просто обманом
человеческих ожиданий.</para>
<para>Мы хотим отметить, что при этом феномене не был уничтожен или
утерян ни один байт данных. Старый диск SCSI номер ноль был забран
из мусорки и вся работа Фреда была восстановлена (и теперь Билл
знает, что он умеет считать до нуля).</para>
<para>Хотя в этом примере использовались диски SCSI, общая идея
применима и для устройств IDE.</para>
</sidebar>
</sect1>
<sect1 id="disks-naming">
<title>Именование дисков</title>
<para>Физически диски существуют в двух разновидностях,
<acronym>IDE</acronym> или <acronym>SCSI</acronym>; однако есть диски,
работа с которыми выполняется RAID-контроллерами, представляющие собой
микросхемы памяти и так далее. Так как такие устройства ведут себя
несколько иначе, они имеют собственные драйверы и им соответствуют
другие устройства.</para>
<table id="disk-naming-physical-table">
<title>Соглашения по наименованию физических дисков</title>
<tgroup cols="2">
<thead>
<row>
<entry>Тип устройства</entry>
<entry>Имя, соответствующее устройству</entry>
</row>
</thead>
<tbody>
<row>
<entry>Диски IDE</entry>
<entry><literal>ad</literal> в 4.0-RELEASE,
<literal>wd</literal> до 4.0-RELEASE.</entry>
</row>
<row>
<entry>Приводы IDE CDROM</entry>
<entry><literal>acd</literal>, начиная с 3.1-RELEASE,
<literal>wcd</literal> до 4.0-RELEASE.</entry>
</row>
<row>
<entry>Диски SCSI</entry>
<entry><literal>da</literal>, начиная с 3.0-RELEASE,
<literal>sd</literal> до 3.0-RELEASE.</entry>
</row>
<row>
<entry>Приводы SCSI CDROM</entry>
<entry><literal>cd</literal></entry>
</row>
<row>
<entry>Различные нестандартные приводы CDROM</entry>
<entry><literal>mcd</literal> для Mitsumi CD-ROM,
<literal>scd</literal> для Sony CD-ROM,
<literal>matcd</literal> для Matsushita/Panasonic CD-ROM
</entry>
</row>
<row>
<entry>Дисководы</entry>
<entry><literal>fd</literal></entry>
</row>
<row>
<entry>Ленточные устройства SCSI</entry>
<entry><literal>sa</literal>, начиная с 3.0-RELEASE,
<literal>st</literal> до 3.0-RELEASE.</entry>
</row>
<row>
<entry>Ленточные устройства IDE</entry>
<entry><literal>ast</literal>, начиная с 4.0-RELEASE,
<literal>wst</literal> до 4.0-RELEASE.</entry>
</row>
<row>
<entry>Флэш-диски</entry>
<entry><literal>fla</literal> для устройств флэш-памяти DiskOnChip,
начиная с 3.3-RELEASE.</entry>
</row>
<row>
<entry>Диски RAID</entry>
<entry><literal>myxd</literal> для Mylex и <literal>amrd</literal>
для AMI MegaRAID, <literal>idad</literal> для Compaq Smart RAID,
начиная с 4.0-RELEASE. <literal>id</literal> от 3.2-RELEASE до
4.0-RELEASE.</entry>
</row>
</tbody>
</tgroup>
</table>
<sect2>
<title>Слайсы и разделы</title>
<para>Физические диски обычно разбиты на <firstterm>слайсы</firstterm>,
кроме случаев, когда они подготовлены в режиме <quote>dangerously
dedicated</quote>. Номер слайса следует за именем устройства и
предваряется буквой <literal>s</literal>:
<quote>da0<emphasis>s1</emphasis></quote>.</para>
<para>Слайсы, физические диски, подготовленные для режима
<quote>dangerously dedicated</quote>, и другие диски содержат
<firstterm>разделы</firstterm>, которые обозначаются буквами от
<literal>a</literal> до <literal>h</literal>. Буква
<literal>b</literal> зарезервирована для раздела подкачки, а
<literal>c</literal> для особого раздела, равного по размеру
полному слайсу или диску. Это описано в <xref
linkend="disks-adding" />.</para>
</sect2>
</sect1>
<sect1 id="disks-mounting">
<title>Монтирование и размонтирование файловых систем</title>
<para>Файловую систему лучше всего рассматривать как дерево, корень
которого, как обычно, находится в <filename>/</filename>.
<filename>/dev</filename>, <filename>/usr</filename> и другие каталоги
в корневом каталоге являются ветками, которые могут иметь собственные
ветви, такие, как <filename>/usr/local</filename> и так далее.</para>
<para>Есть несколько причин размещать некоторые из этих каталогов в
раздельных файловых системах. <filename>/var</filename> содержит
журналы, очереди и различные типы временных файлов, поэтому может быть
заполнена до отказа. Заполнение корневой файловой системы
нежелательно, так что отделение <filename>/var</filename> от
<filename>/</filename> зачастую бывает весьма полезно.</para>
<para>Другим общим соображением при размещении отдельных деревьев
каталогов в других файловых системах является их размещение на
отдельных физических дисках или отдельных виртуальных дисках, таких,
как точки монтирования <link linkend="nfs">сетевой файловой
системы</link> или привода CDROM.</para>
<sect2 id="disks-fstab">
<title>Файл fstab</title>
<para>Во время <link linkend="boot">процесса загрузки</link> файловые
системы, перечисленные в <filename>/etc/fstab</filename>, монтируются
автоматически (если при них не указан флаг
<option>noauto</option>).</para>
<para>Файл <filename>/etc/fstab</filename> состоит из строк следующего
формата:</para>
<programlisting>
<replaceable>device</replaceable> <replaceable>/mount-point</replaceable> <replaceable>fstype</replaceable> <replaceable>options</replaceable> <replaceable>dumpfreq</replaceable> <replaceable>passno</replaceable>
</programlisting>
<para><literal>device</literal> являются именем устройства (которое
должно существовать) вида, описанного выше в главе о <link
linkend="disks-naming">соглашениях по именованию
дисков</link>.</para>
<para><literal>mount-point</literal> является каталогом (который должен
существовать), в который будет смонтирована файловая система.</para>
<para><literal>fstype</literal> является типом файловой системы для
передачи в &man.mount.8;. По умолчанию во FreeBSD файловая система
имеет тип <literal>ufs</literal>.</para>
<para>В качестве параметров <literal>options</literal> указывается
<option>rw</option> для файловых систем, доступных по чтению-записи,
или <option>ro</option> для файловых систем, доступных только для
чтения, за которым следует любое количество других параметров, могущих
быть нужными. Часто используемым параметром является опция
<option>noauto</option> для файловых систем, которые обычно
не монтируются во время загрузки. Другие параметры описаны на
странице справочника по &man.mount.8;.</para>
<para><literal>dumpfreq</literal> определяет количество дней для
обязательного создания архивной копии файловой системы, а
<literal>passno</literal> задает номер прохода, при котором
файловая система была смонтирована во время процесса загрузки.</para>
</sect2>
<sect2 id="disks-mount">
<title>Команда mount</title>
<para>Команда &man.mount.8; является тем, что необходимо использовать
для монтирования файловых систем.</para>
<para>В ее самой простой форме она используется так:</para>
<informalexample>
<screen>
&prompt.root; <userinput>mount <replaceable>device</replaceable> <replaceable>mountpoint</replaceable></userinput>
</screen>
</informalexample>
<para>Как отмечено на справочной странице по команде &man.mount.8;, она
имеет массу параметров, но наиболее часто используются
следующие:</para>
<variablelist>
<title>Параметры команды mount</title>
<varlistentry>
<term><option>-a</option></term>
<listitem>
<para>Смонтировать все файловые системы, перечисленные в файле
<filename>/etc/fstab</filename>, с модификациями по параметру
<option>-t</option>, если он задан.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-d</option></term>
<listitem>
<para>Сделать все, кроме собственно монтирования файловой
системы.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-f</option></term>
<listitem>
<para>Принудительно смонтировать файловую систему.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-r</option></term>
<listitem>
<para>Смонтировать файловую систему в режиме только для
чтения.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-t</option>
<replaceable>fstype</replaceable></term>
<listitem>
<para>Смонтировать указанную файловую систему как файловую
систему указанного типа, или смонтировать файловые системы
только указанного типа, если задан параметр
<option>-a</option>.</para>
<para>По умолчанию используется тип файловой системы
<quote>ufs</quote>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-u</option></term>
<listitem>
<para>Обновить параметры монтирования файловой системы.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-v</option></term>
<listitem>
<para>Выдавать подробный журнал.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-w</option></term>
<listitem>
<para>Смонтировать файловую систему в режиме доступа как для
чтения, так и для записи.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Опция <option>-o</option> принимает список разделенных запятыми
параметров, включая следующее:</para>
<variablelist>
<varlistentry>
<term>nodev</term>
<listitem>
<para>Не обрабатывать специальные устройства в файловой системе.
Опция, полезная с точки зрения обеспечения безопасности.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>noexec</term>
<listitem>
<para>Запретить выполнение бинарных файлов на этой файловой
системе. Опция, полезная с точки зрения обеспечения
безопасности.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>nosuid</term>
<listitem>
<para>Не обрабатывать флаги установки выполнения файлов с
привилегиями их владельцев и групп в этой файловой системе.
Опция, полезная с точки зрения обеспечения безопасности.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="disks-umount">
<title>Команда umount</title>
<para>Команда umount воспринимает в качестве параметра либо точку
монтирования, либо имя устройства, либо параметры <option>-a</option>
или <option>-A</option>.</para>
<para>Все формы воспринимают параметр <option>-f</option> для
принудительного размонтирования и <option>-v</option> для вывода
подробного журнала.</para>
<para>Флаги <option>-a</option> и <option>-A</option> используются для
размонтирования всех смонтированных файловых систем, возможно с
учетом типов файловых систем, перечисленных после
<option>-t</option>. Однако при использовании опции
<option>-A</option> не будет предприниматься попытка размонтировать
корневую файловую систему.</para>
</sect2>
</sect1>
<sect1 id="disks-adding">
<title>Добавление дисков</title>
<para><emphasis>Изначальный текст предоставил &a.obrien; 26 апреля
1998 года</emphasis></para>
<para>Предположим, что мы хотим установить новый диск SCSI на машину,
имеющую в данный момент только один диск. Сначала выключим компьютер и
установим диск в компьютер согласно инструкциям к компьютеру,
контроллеру и от производителя диска. Из-за большого разнообразия
этих процедур их рассмотрение выходит за рамки этого документа..</para>
<para>Войдите в систему как пользователь <username>root</username>.
После того, как вы установили диск, просмотрите файл
<filename>/var/run/dmesg.boot</filename>, чтобы убедиться, что новый
диск был найден. Продолжая наш пример, только что добавленный диск
будет называться <filename>da1</filename> и мы хотим смонтировать его
в каталог <filename>/1</filename> (если вы добавляете диск IDE, он
будет называться <filename>wd1</filename> в системах, предшествующих
4.0, и <filename>ad1</filename> в большинстве систем 4.X).</para>
<para>Так как FreeBSD работает на IBM-PC совместимых компьютерах, она
должна принимать во внимание разделы PC BIOS. В этом заключается
отличие от традиционных разделов BSD. Диск PC может иметь до четырех
записей разделов BIOS. Если диск на самом деле будет использоваться
исключительно под FreeBSD, вы можете использовать режим
<emphasis>dedicated</emphasis>. В противном случае FreeBSD будет
располагаться в одном из разделов PC BIOS. Во FreeBSD разделы PC BIOS
называются <emphasis>слайсами</emphasis>, чтобы не путать их с
традиционными разделами BSD. Вы также можете использовать слайсы и с
диском, предназначенным исключительно для FreeBSD, однако используемым
в компьютере, на котором имеется дополнительная операционная система.
Это нужно для того, чтобы не было путаницы с утилитой
<command>fdisk</command> другой операционной системы.</para>
<para>В случае слайсов диск будет добавлен как
<filename>/dev/da1s1e</filename>. Это интерпретируется следующим
образом: диск SCSI, устройство номер 1 (второй диск SCSI), слайс 1
(раздел PC BIOS 1), и раздел BSD <filename>e</filename>. В случае
использования в выделенном режиме диск будет добавлен просто как
<filename>/dev/da1e</filename>.</para>
<sect2>
<title>Использование утилиты sysinstall</title>
<para>Вы можете использовать простые меню утилиты
<command>/stand/sysinstall</command> для разбиения на разделы и
разметки нового диска. Войдите как пользователь
<username>root</username> или воспользуйтесь командой
<command>su</command>. Запустите команду
<command>/stand/sysinstall</command> и войдите в меню
<literal>Configure</literal>. Внутри <literal>FreeBSD Configuration
Menu</literal>, пролистайте и выберите пункт
<literal>Partition</literal>. После этого должен быть выдан список
установленных в вашей системе дисков. Если вы не увидите в списке
<literal>da1</literal>, то вам нужно повторно проверить физическое
подключение и посмотреть вывод команды <command>dmesg</command> в
файле <filename>/var/run/dmesg.boot</filename>.</para>
<para>Выберите <literal>da1</literal>, чтобы войти в <literal>Редактор
разделов FDISK</literal>. Выберите <literal>A</literal> для того,
чтобы использовать под FreeBSD полностью весь диск. Когда будет
задан вопрос о том, хотите ли вы <quote>сохранить совместимость с
другими возможными операционными системами в будущем</quote>,
ответьте <literal>YES</literal>. Запишите изменения на диск при
помощи команды <command>W</command>. А теперь выйдите из редактора
FDISK при помощи команды <command>q</command>. В этот момент вам
будет задан вопрос о главной загрузочной записи. Так как вы
добавляете диск к уже работающей системе, выберите
<literal>None</literal>.</para>
<para>После этого войдите в меню <literal>Disk Label Editor</literal>.
Здесь вы создадите традиционные разделы BSD. На диске может быть
до восьми разделов, имеющих метки a-h. Некоторые из меток разделов
имеют особый смысл. Раздел <literal>a</literal> используется для
размещения корневого раздела (<filename>/</filename>). По этой
причине только ваш системный диск (например, тот, с которого
происходит загрузка), должен иметь раздел <literal>a</literal>.
Раздел <literal>b</literal> используется под раздел подкачки, и вы
можете иметь много дисков с разделами подкачки. Раздел
<literal>c</literal> используется для доступа ко всему диску в
режиме эксклюзивного использования или ко всему слайсу FreeBSD при
работе в режиме с использованием слайсов. Остальные разделы имеют
обычное предназначение.</para>
<para>Редактор метки диска программы sysinstall использует раздел
<literal>e</literal> для некорневого раздела и не для раздела
подкачки. Внутри редактора метки диска создайте отдельную файловую
систему при помощи команды <command>C</command>. Когда будет задан
вопрос о том, будет ли это раздел с файловой системой (FS) или
это будет раздел подкачки, выберите <literal>FS</literal> и укажите
точку монтирования (например, <filename>/mnt</filename>). При
добавлении диска после установки системы, программа sysinstall не
будет автоматически создавать записи в файле
<filename>/etc/fstab</filename>, поэтому точка монтирования не так уж
и важна.</para>
<para>Теперь вы готовы записать новую метку на диск и создать на нем
файловую систему. Сделайте это, нажав клавишу <command>W</command>.
Проигнорируйте ошибки от sysinstall о невозможности смонтировать
новый раздел. Полностью выйдите из редактора метки диска и из
программы sysinstall.</para>
<para>Последний шаг заключается в редактировании файла
<filename>/etc/fstab</filename> и добавлении записи для вашего нового
диска.</para>
</sect2>
<sect2>
<title>Использовании утилит командной строки</title>
<sect3>
<title>* Использование слайсов</title>
<para></para>
</sect3>
<sect3>
<title>Выделенный режим</title>
<para>Если вы не будете использовать новый диск совместно с другой
операционной системой, то вы можете использовать режим
<literal>эксклюзивного</literal> использования. Отметьте, что этот
режим может ввести в заблуждение операционные системы от Microsoft;
однако информацию они не разрушат. А вот OS/2 от фирмы IBM будет
<quote>забирать себе</quote> любой раздел, который она найдет и не
сможет распознать.</para>
<screen>
&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda1 bs=1k count=1</userinput>
&prompt.root; <userinput>disklabel -Brw da1 auto</userinput>
&prompt.root; <userinput>disklabel -e da1</userinput> # create the `e' partition
&prompt.root; <userinput>newfs -d0 /dev/rda1e</userinput>
&prompt.root; <userinput>mkdir -p /1</userinput>
&prompt.root; <userinput>vi /etc/fstab</userinput> # add an entry for /dev/da1e
&prompt.root; <userinput>mount /1</userinput>
</screen>
<para>Альтернативный метод заключается в следующем:</para>
<screen>
&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda1 count=2</userinput>
&prompt.root; <userinput>disklabel /dev/rda1 | disklabel -BrR da1 /dev/stdin</userinput>
&prompt.root; <userinput>newfs /dev/rda1e</userinput>
&prompt.root; <userinput>mkdir -p /1</userinput>
&prompt.root; <userinput>vi /etc/fstab</userinput> # add an entry for /dev/da1e
&prompt.root; <userinput>mount /1</userinput>
</screen>
</sect3>
</sect2>
</sect1>
<sect1 id="disks-virtual">
<title>Виртуальные диски: сетевые, файловые системы в памяти и на основе
файлов
Network, Memory, and File-Based Filesystems</title>
<para>Кроме дисков, которые вы физически устанавливаете в ваш компьютер;
дискеты, компакт-диски, винчестеры и так далее, FreeBSD воспринимает и
другие типы дисков - <firstterm>виртуальные диски</firstterm>.</para>
<para>Сюда могут быть отнесены сетевые файловые системы, такие, как
<link linkend="nfs">Network Filesystem</link> и Coda, а также файловые
системы с организацией в памяти, такие, как <link
linkend="disks-md">md</link> и файловые системы, созданные в файле с
помощью <link linkend="disks-vnconfig">vnconfig</link>.</para>
<sect2 id="disks-vnconfig">
<title>vnconfig: файловая система в файле</title>
<para>&man.vnconfig.8; конфигурирует и позволяет использовать дисковые
устройства на основе псевдо-устройств vnode.
<firstterm>vnode</firstterm> представляет собой файл и отвечает за
работу с файлом. Это означает, что &man.vnconfig.8; использует файлы
для создания и работы с файловой системой. Одним из возможных
способов использования является монтирование образов дискет или
образов компакт-дисков, сброшенных в файлы.</para>
<para>Чтобы смонтировать имеющийся образ файловой системы:</para>
<example>
<title>Использование vnconfig для монтирования имеющегося образа
файловой системы</title>
<screen>
&prompt.root; <userinput>vnconfig vn<replaceable>0</replaceable> <replaceable>diskimage</replaceable></userinput>
&prompt.root; <userinput>mount /dev/vn<replaceable>0</replaceable>c <replaceable>/mnt</replaceable></userinput>
</screen>
</example>
<para>Для создания нового образа файловой системы с помощью
vnconfig:</para>
<example>
<title>Создание нового диска в файле с помощью vnconfig</title>
<screen>
&prompt.root; <userinput>dd if=/dev/zero of=<replaceable>newimage</replaceable> bs=1k count=<replaceable>5</replaceable>k</userinput>
5120+0 records in
5120+0 records out
&prompt.root; <userinput>vnconfig -s labels -c vn<replaceable>0</replaceable> <replaceable>newimage</replaceable></userinput>
&prompt.root; <userinput>disklabel -r -w vn<replaceable>0</replaceable> auto</userinput>
&prompt.root; <userinput>newfs vn<replaceable>0</replaceable>c</userinput>
Warning: 2048 sector(s) in last cylinder unallocated
/dev/rvn0c: 10240 sectors in 3 cylinders of 1 tracks, 4096 sectors
5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g)
super-block backups (for fsck -b #) at:
32
&prompt.root; <userinput>mount /dev/vn<replaceable>0</replaceable>c <replaceable>/mnt</replaceable></userinput>
&prompt.root; <userinput>df <replaceable>/mnt</replaceable></userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/vn0c 4927 1 4532 0% /mnt
</screen>
</example>
</sect2>
<sect2 id="disks-md">
<title>md: Файловая система в памяти</title>
<para>md это простой и эффективный способ создания файловых систем в
оперативной памяти.</para>
<para>Просто возьмите файловую систему, которую вы приготовили при
помощи, скажем, &man.vnconfig.8; и:</para>
<example>
<title>Диск md в памяти</title>
<screen>
&prompt.root; <userinput>dd if=<replaceable>newimage</replaceable> of=/dev/md<replaceable>0</replaceable></userinput>
5120+0 records in
5120+0 records out
&prompt.root; <userinput>mount /dev/md<replaceable>0c</replaceable> <replaceable>/mnt</replaceable></userinput>
&prompt.root; <userinput>df <replaceable>/mnt</replaceable></userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0c 4927 1 4532 0% /mnt</screen>
</example>
</sect2>
</sect1>
<sect1 id="quotas">
<title>Квотирование дискового пространства</title>
<para>Квоты - это опциональная возможность операционной системы, которая
позволяет ограничивать объем дискового пространства и/или количество
файлов для конкретного пользователя или членов определенной группы
в рамках одной файловой системы. Чаще всего эта возможность
используется в системах разделения времени, когда желательно ограничить
количество ресурсов, которые может использовать один пользователь или
группа пользователей. Это позволит не допустить ситуации, когда
один пользователь заполняет все доступное дисковое пространство.</para>
<sect2>
<title>Настройка вашей системы на использование дисковых квот</title>
<para>Перед тем, как попытаться использовать дисковые квоты, необходимо
убедиться, что квоты включены в вашем ядре. Это делается добавлением
следующей строки в конфигурационный файл вашего ядра:</para>
<programlisting>
options QUOTA
</programlisting>
<para>В стандартном ядре <filename>GENERIC</filename> это по умолчанию
не включено, так что для использования дисковых квот вам нужно будет
настроить, откомпилировать и установить собственное ядро.
Пожалуйста, обратитесь к разделу <link
linkend="kernelconfig">Настройка ядра FreeBSD</link> за
дополнительной информацией о настройке ядра.</para>
<para>Затем вам потребуется включить квотирование дисков в файле
<filename>/etc/rc.conf</filename>. Это делается добавление такой
строчки:</para>
<programlisting>
enable_quotas=<quote>YES</quote>
</programlisting>
<para>Для более полного контроля над запуском квотирования имеется
дополнительная переменная для настройки. Как правило, при загрузке
целостность квот каждой файловой системы проверяется программой
<command>quotacheck</command>. При работе программы
<command>quotacheck</command> проверяется точное соответствие данных
в базе данных квот данным в файловой системе. Это весьма долгий
процесс, что отражается на времени загрузки системы. Если вам
захочется пропустить этот шаг, то для этого предназначена специальная
переменная:</para>
<programlisting>
check_quotas=<quote>NO</quote>
</programlisting>
<para>Если вы работаете с FreeBSD версий до 3.2-RELEASE, то настройка
делается проще, и она состоит только из одной переменной. Задайте
следующее в вашем файле <filename>/etc/rc.conf</filename>:</para>
<programlisting>
check_quotas=<quote>YES</quote>
</programlisting>
<para>Наконец, вам потребуется отредактировать файл
<filename>/etc/fstab</filename> для включения дисковых квот на
уровне файловых систем. Это то место, где вы можете включить квоты
для пользователей, для групп или для обеих этих категорий для всех
ваших файловых систем.</para>
<para>Для включения пользовательских квот для файловой системы,
добавьте параметр <literal>userquota</literal> в поле параметров
файловой системы, на которой вы хотите включить квотирование, в файле
<filename>/etc/fstab</filename>. Например:</para>
<programlisting>
/dev/da1s2g /home ufs rw,userquota 1 2
</programlisting>
<para>Подобным же образом для включения квотирования на уровне групп,
воспользуйтесь параметром <literal>groupquota</literal> вместо
ключевого слова <literal>userquota</literal>. Чтобы включить
квотирование как для пользователей, так и для групп, измените
строчку следующим образом:</para>
<programlisting>
/dev/da1s2g /home ufs rw,userquota,groupquota 1 2
</programlisting>
<para>По умолчанию файлы квот хранятся в корневом каталоге файловой
системы в файлах с именами <filename>quota.user</filename> и
<filename>quota.group</filename> соответственно для пользовательских
и групповых квот. Для получения подробной информации обратитесь к
команде <command>man fstab</command>. Хотя эта страница справочника
утверждает, что вы можете указать другое местоположение файлов с
квотами, этого делать не рекомендуется, потому что различные утилиты
для работы с квотами не могут нормально работать в такой
ситуации.</para>
<para>На этом этапе вы должны перезагрузить вашу систему с новым ядром.
Скрипт <filename>/etc/rc</filename> автоматически запустит
соответствующие команды для создания начальных файлов для всех квот,
которые вы создали в файле <filename>/etc/fstab</filename>, так что
нет нужды вручную создавать никаких файлов квот нулевой длины.</para>
<para>При нормальной работе вам не потребуется вручную запускать
программы <command>quotacheck</command>, <command>quotaon</command>
или <command>quotaoff</command>. Однако вам нужно хотя бы прочесть
страницы справочника просто чтобы ознакомиться с их функциями.</para>
</sect2>
<sect2>
<title>Установка квот</title>
<para>Как только вы настроили вашу систему на использование квот,
проверьте, что они действительно были задействованы. Простым
способом сделать это является запуск такой команды:</para>
<screen>
&prompt.root; <userinput>quota -v</userinput>
</screen>
<para>Вы должны увидеть однострочную информацию, отражающую
использование диска и текущие ограничения для каждой файловой
системы, на которой включено квотирование.</para>
<para>Теперь вы действительно готовы задавать ограничения при помощи
команды <command>edquota</command>.</para>
<para>У вас есть несколько вариантов того, как приводить в действие
ограничения по объему дискового пространства, который могут занимать
пользователь или группа, а также по количеству файлов, которые они
могут создать. Вы можете ограничивать размещение ресурсов на основе
объема дискового пространства (квотирование блоков), количества
файлов (квотирование inode) или их комбинации. Каждое из этих
ограничений, в свою очередь, делится на две категории; мягкие и
жесткие ограничения.</para>
<para>Жесткое ограничение не может быть превышено. Как только
пользователь достиг своих ограничений, ресурсы соответствующей
файловой системы ему больше выделяться не будут. Например, если
пользователь имеет жесткое ограничение в 500 блоков на файловой
системе и в текущий момент он использует 490 блоков, то
пользователь может получить дополнительно еще 10 блоков. Попытка
получить еще 11 блоков окончится неудачно.</para>
<para>С другой стороны, мягкие ограничения могут быть превышены в
течении некоторого периода времени. Этот период времени также
называют периодом отсрочки, который по умолчанию равен одной неделе.
Если пользователь превышает свое мягкое ограничение в течении периода
времени, превышающего отсрочку, то это мягкое ограничение становится
жестким и последующее выделение ресурсов будет запрещено. Когда
пользователь вернется обратно к отметке, меньшей, чем мягкое
ограничение, то период отсрочки будет сброшен.</para>
<para>Далее приводится пример того, что вы можете наблюдать при
запуске команды <command>edquota</command>. Когда вызывается команда
<command>edquota</command>, вы оказываетесь в редакторе, заданном
переменной переменной окружения <envar>EDITOR</envar>, или в
редакторе <command>vi</command>, если переменная
<envar>EDITOR</envar> не задана, и можете редактировать квоты.</para>
<screen>
&prompt.root; <userinput>edquota -u test</userinput>
</screen>
<programlisting>
Quotas for user test:
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: blocks in use: 0, limits (soft = 50, hard = 75)
inodes in use: 0, limits (soft = 50, hard = 60)
</programlisting>
<para>Для каждой файловой системы, на которой включено квотирование,
вы должны увидеть две строки. В одной строке приведены ограничения
на блоки, а в другой на количество inode. Например, чтобы увеличить
ограничения на количество блоков для пользователей с мягкого
ограничения в 50 и жесткого ограничения в 75, на мягкое ограничение
в 500 и жесткое ограничение в 600, измените:</para>
<programlisting>
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
</programlisting>
<para>на:</para>
<programlisting>
/usr: blocks in use: 65, limits (soft = 500, hard = 600)
</programlisting>
<para>Новые ограничения вступят в силу после выхода из
редактора.</para>
<para>Иногда желательно установить ограничения квот на некоторый
диапазон идентификаторов пользователей. Это можно сделать при
помощи параметра <option>-p</option> в команде
<command>edquota</command>. Во-первых, установите желаемое
ограничение для пользователя, а затем запустите команду
<command>edquota -p protouser startuid-enduid</command>. Например,
если пользователь <username>test</username> имеет желаемые
ограничения, то для дублирования этих ограничений на пользователей с
идентификаторами от 10000 до 19999 может быть использована такая
команда:</para>
<screen>
&prompt.root; <userinput>edquota -p test 10000-19999</userinput>
</screen>
<para>Обратитесь к <command>man edquota</command> за более подробной
информацией.</para>
</sect2>
<sect2>
<title>Проверка ограничений и использования диска</title>
<para>Для проверки квот и использования дисков вы можете использовать
команды <command>quota</command> или <command>repquota</command>.
Команда <command>quota</command> может быть использована для проверки
квот отдельных пользователей, групп, а также использования дисков.
Только администратор системы может проверять квоты и использование
диска другими пользователями и группами. Команду
<command>repquota</command> можно использовать для получения
суммарной статистики всех квот и использования дисков для файловых
систем с включенными квотами.</para>
<para>Далее приведен пример вывода команды <command>quota -v</command>
для пользователя, который имеет ограничения на двух файловых
системах.</para>
<programlisting>
Disk quotas for user test (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/usr 65* 50 75 5days 7 50 60
/usr/var 0 50 75 0 50 60
</programlisting>
<para>В этом примере для файловой системы <filename>/usr</filename>
пользователь превысил свое мягкое ограничение в 50 блоков на 15
блоков и имеет 5 дней до истечения отсрочки. Отметьте знак
звездочки <literal>*</literal>, который указывает на превышение
пользователем своего ограничения.</para>
<para>Как правило, файловые системы, на которых пользователь не
занимает дискового пространства, не показываются в выводе команды
<command>quota</command>, даже если они ему выделена квота на
этой файловой системе. При использовании параметра
<option>-v</option> эти файловые системы выводятся, как, например,
файловая система <filename>/usr/var</filename> в примере выше.</para>
</sect2>
<sect2>
<title>Квоты в NFS NFS</title>
<para>Квоты определяются подсистемой квот на сервере NFS. Даемон
&man.rpc.rquotad.8; предоставляет информацию о квотах для программы
&man.quota.1; на клиентах NFS, позволяя пользователям на этих машинах
смотреть свою статистику о квотах.</para>
<para>Включите <command>rpc.rquotad</command> в файле
<filename>/etc/inetd.conf</filename> следующим образом:</para>
<programlisting>
rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad
</programlisting>
<para>Теперь перезапустите <command>inetd</command>:</para>
<screen>
&prompt.root; <userinput>kill -HUP `cat /var/run/inetd.pid`</userinput>
</screen>
</sect2>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../book.sgml" "part" "chapter")
End:
-->

View file

@ -2,14 +2,14 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/install/chapter.sgml,v 1.7 2000/10/05 15:37:42 phantom Exp $
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/install/chapter.sgml,v 1.9 2000/10/24 10:45:19 danfe Exp $
Original revision: 1.36
-->
<chapter id="install">
<title>Инсталляция FreeBSD</title>
<para><emphasis>Реструктурировано, исправлено и частично переписано
<para><emphasis>Реструктурировал, исправил и частично переписал
&a.jim;, январь 2000 г.</emphasis></para>
<sect1>
@ -79,7 +79,7 @@
<itemizedlist>
<listitem>
<para>Если Вы хотите инсталлировать с MS-DOS-партиции, то сначала скачайте программу
<para>Если Вы хотите инсталлировать с MS-DOS раздела, то сначала скачайте программу
<ulink
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/tools/fdimage.exe">fdimage.exe</ulink>
(при установке с компакт-диска она лежит в директории
@ -89,7 +89,7 @@
<screen><prompt>E:\&gt;</prompt> <userinput>tools\fdimage floppies\kern.flp a:</userinput></screen>
<para>Программа <emphasis>fdimage</emphasis> отформатирует
дискету в дисководе<devicename>A:</devicename> и затем
дискету в дисководе <devicename>A:</devicename> и затем
перенесет на нее <filename>kern.flp</filename>
(предполагается, что Вы находитесь непосредственно в
директории в дистрибутивом FreeBSD и образа дискет лежат в
@ -142,7 +142,7 @@
<para>Если же Ваша система поддерживает загрузку с компакт-дисков, и
компакт-диск является загрузочным в соответствии со стандартом El
Torito (обратите внимание, что многие старые системы
<emphasis>НЕ</emphasis>) поддерживают загрузку с CDROM), то просто
<emphasis>НЕ</emphasis> поддерживают загрузку с CDROM), то просто
вставьте первый из набора дисков с FreeBSD в привод CDROM и
перезагрузите Ваш компьютер. Вы попадете в меню инсталляции
непосредственно с компакт-диска.</para>
@ -358,7 +358,7 @@ ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent</programlisting>
можно найти в списке <link linkend="install-hw">поддерживаемого
оборудования</link>. Если у Вас одна из PCMCIA ethernet карточек,
которая поддерживается FreeBSD, проследите, чтобы она была
воткнута <emphasis>прежде</emphasis> чем Вы включите свой
вставлена <emphasis>прежде</emphasis> чем Вы включите свой
компьютер. К сожалению, в настоящее время FreeBSD не поддерживает
вставку PCMCIA карточек <quote>на лету</quote>.</para>

View file

@ -2,21 +2,21 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/introduction/chapter.sgml,v 1.2 2000/10/11 17:13:25 phantom Exp $
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/introduction/chapter.sgml,v 1.5 2000/12/17 10:56:34 danfe Exp $
Original revision: 1.32
-->
<chapter id="introduction">
<title>Введение</title>
<para><emphasis>Исправлено, реорганизовано и переписано
<para><emphasis>Исправил, реорганизовал и частично переписал
&a.jim;, 17 января 2000.</emphasis></para>
<sect1>
<title>Краткий обзор</title>
<para>Спасибо Вам за ваш интерес к FreeBSD! Следующая глава
рассказывает о некоторых аспектах проекта FreeBSD, таких как история,
<para>Мы благодарим Вас за Ваш интерес к FreeBSD! Следующая глава
расскажет Вам о некоторых аспектах проекта FreeBSD, таких как история,
цели, модель разработки, и прочее.</para>
<para>FreeBSD, базирующаяся на операционной системе 4.4BSD-Lite2,
@ -31,7 +31,7 @@
</sect1>
<sect1 id="nutshell">
<title>Добро пожаловать в FreeBSD!</title>
<title>Добро пожаловать во FreeBSD!</title>
<para>Если Вы до сих пор читаете это, возможно Вы хотите узнать что
такое FreeBSD и что это может сделать для Вас. Если Вы впервые
@ -354,7 +354,7 @@
<quote>386BSD Interim</quote>.</para>
<para>386BSD была операционной системой Била Джоилца, который
на тот момент находился строго говоря в состоянии полного
на тот момент находился строго говоря, в состоянии полного
пренебрежения к ней. Так как patchkit разрастался и его
поддержание становилось более неудобным день от дня, мы
пришли к единодушному соглашению что что-то нужно делать
@ -364,7 +364,7 @@
у проекта без любых ясных комментариев, что должно быть
сделано вместо этого.</para>
<para>Нам не потребовалось много времени, чтоб прийти к решению
<para>Нам потребовалось немного времени, чтоб прийти к решению
продолжать следовать той цели, даже без поддержки Била,
и мы приняли имя <quote>FreeBSD</quote> приобретенное Дэвидом
Гринмэном. Наши начальные цели были установлены после консультаций
@ -379,7 +379,7 @@
Walnut Creek CDROM, в то время полностью неизвестный проект,
вряд ли FreeBSD зашел далеко и так быстро, как сегодня.</para>
<para>Первым дистрибутивом, распространяемым как на CDROM, как и в сети,
<para>Первым дистрибутивом, распространяемым как на CDROM, так и в сети,
стал FreeBSD 1.0, выпущенный в декабре 1993 года. Эта версия была
выполнена на основе ленты 4.3BSD-Lite (<quote>Net/2</quote>)
из Калифорнийского Университета в Беркли, с многочисленными
@ -421,7 +421,7 @@
<para>Мы выпустили FreeBSD 2.1.5 в августе 1996, и она стала достаточно
популярной среди большого количества ISP и коммерческих производителей, но
и другие версии из ветки 2.1-STABLE также заслуживаю этого. Это была
и другие версии из ветки 2.1-STABLE также заслуживают этого. Это была
FreeBSD 2.1.7.1, вышедшая в феврале 1997 и завершившая главную
нить разработки 2.1-STABLE. Сейчас в режиме поддержки, только
безопасные расширения и прочие критические исправления ошибок
@ -449,7 +449,7 @@
&rel.current;-RELEASE.</para>
<para>Долговременные разработки и проекты продолжаются в ветке
5.0-CURRENT, и по ходу разработки будут доступны СНЭПшот релизы
5.0-CURRENT, и по ходу разработки будут доступны снэпшот-релизы
5.0 на CDROM (и, конечно, в сети).</para>
</sect2>

View file

@ -0,0 +1,682 @@
<!--
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/kerneldebug/chapter.sgml,v 1.2 2000/11/10 11:53:52 phantom Exp $
Original revision: 1.25
-->
<chapter id="kerneldebug">
<title>Отладка ядра</title>
<para><emphasis>Текст предоставили &a.paul; и &a.joerg;</emphasis></para>
<sect1>
<title>Отладка аварийных образов ядра при помощи
<command>kgdb</command></title>
<para>Вот некоторые указания по работе с отладкой ядра с аварийными
образами памяти. При этом предполагается, что у вас достаточно места
на разделе подкачки для аварийного образа памяти. Если у вас есть
несколько разделов подкачки и первый слишком мал для размещения образа
памяти, вы можете настроить ядро на использование другого устройства
для сброса образа памяти (в строке <literal>config kernel</literal> или
указать его при помощи команды &man.dumpon.8;. Лучше всего
использовать &man.dumpon.8;, задав переменную
<literal>dumpdev</literal> в файле <filename>/etc/rc.conf</filename>.
Как правило, вам нужно будет задать одно из устройств подкачки,
перечисленных в файле <filename>/etc/fstab</filename>. Сброс образов
памяти на устройства, не являющиеся устройствами подкачки, напрмер,
ленты, в данный момент не поддерживаются. Настройте ваше ядро при
помощи команды <command>config -g</command>. Обратитесь к разделу
<link linkend="kernelconfig">Настройка ядра</link> за более подробной
информацией о настройке ядра FreeBSD.</para>
<para>Используйте команду &man.dumpon.8; для указания ядру места, куда
нужно помещать образ памяти (отметьте, что это будут сделано после
настройки соответствующего раздела как раздел подкачки через
&man.swapon.8;). Обычно это делается через
<filename>/etc/rc.conf</filename> и <filename>/etc/rc</filename>.
Либо вы можете задать устройство для сброса образа памяти явно через
параметр <literal>dump</literal> в строке <literal>config</literal>
конфигурационного файла вашего ядра. Такой способ использовать не
рекомендуется и он должен использоваться, только если вы хотите
получать аварийные образы памяти ядра, которое аварийно завершает свою
работу при загрузке.</para>
<note>
<para>Далее термин <command>kgdb</command> означает утилиту
<command>gdb</command>, которая запущена в <quote>режиме отладки
ядра</quote>. Этот режим достигается либо при запуске
<command>gdb</command> с параметром <option>-k</option>, либо
компоновкой и запуском его под именем <command>kgdb</command>. По
умолчанию этого, однако, не делается и эта идея, в общем-то, не
поддерживается, потому что разработчикам GNU не нравится, когда их
утилиты работают по-другому, будучи вызванными по другому имени. В
будущих релизах такая возможность может исчезнуть.</para>
</note>
<tip>
<para>Если вы используете FreeBSD версии 3 или более раннюю, вы должны
выполнить усечение отладочного ядра командой strip, а не
устанавливать большое отладочное ядро:</para>
<screen>
&prompt.root; <userinput>cp kernel kernel.debug</userinput>
&prompt.root; <userinput>strip -g kernel</userinput>
</screen>
<para>Этот шаг не так уж и необходим, но рекомендуем. (Во FreeBSD 4
и более поздних релизах этот шаг выполняется автоматически в конце
процесса построения ядра <command>make</command>.) Когда ядро
усечено, автоматически или при помощи команд выше, вы можете
установить его обычным образом, набрав <command>make
install</command>.</para>
<para>Заметьте, что в старых версиях FreeBSD (до 3.1, не включая этот
релиз), используется ядра в формате a.out, поэтому их таблицы
символов должны располагаться постоянно в памяти. С большой таблицей
символов в не усеченном отладочном ядре это излишняя трата. Последние
релизы FreeBSD используют ядра в формате ELF, где это не является
проблемой.</para>
</tip>
<para>Если вы тестируете новое ядро, скажем, набирая имя нового ядра в
приглашении загрузчика, но вам нужно загружать и работать с другим
ядром, чтобы снова вернуться к нормальному функционированию, загружайте
его только в однопользовательском режиме при помощи флага
<option>-s</option>, указываемого при загрузке, а затем выполните такие
шаги:</para>
<screen>
&prompt.root; <userinput>fsck -p</userinput>
&prompt.root; <userinput>mount -a -t ufs</userinput> # so your file system for /var/crash is writable
&prompt.root; <userinput>savecore -N /kernel.panicked /var/crash</userinput>
&prompt.root; <userinput>exit</userinput> # ...to multi-user
</screen>
<para>Эта последовательность указывает программе &man.savecore.8; на
использование другого ядра для извлечения символических имен. Иначе
она будет использовать ядро, работающее в данный момент и, скорее
всего, ничего не сделает, потому что аварийный образ памяти и символы
ядра будут отличаться.</para>
<para>А теперь, после сброса аварийного дампа, перейдите в каталог
<filename>/sys/compile/WHATEVER</filename> и запустите команду
<command>kgdb</command>. Из программы <command>kgdb</command> сделайте
вот что:
<screen>
<userinput>symbol-file kernel.debug</userinput>
<userinput>exec-file /var/crash/kernel.0</userinput>
<userinput>core-file /var/crash/vmcore.0</userinput>
</screen>
и вуаля - вы можете отлаживать аварийный дамп, используя исходные
тексты ядра точно также, как вы это делаете с любой другой
программой.</para>
<para>Вот журнал команд сеанса работы <command>kgdb</command>,
иллюстрирующий эту процедуру. Длинные строки были разорваны для
улучшения читабельности и для удобства строки были пронумерованы.
Все остальное является трассировкой ошибки, реально возникнувшей во
время работы над драйвером консоли pcvt.</para>
<screen>
1:Script started on Fri Dec 30 23:15:22 1994
2:&prompt.root; <userinput>cd /sys/compile/URIAH</userinput>
3:&prompt.root; <userinput>kgdb kernel /var/crash/vmcore.1</userinput>
4:Reading symbol data from /usr/src/sys/compile/URIAH/kernel
...done.
5:IdlePTD 1f3000
6:panic: because you said to!
7:current pcb at 1e3f70
8:Reading in symbols for ../../i386/i386/machdep.c...done.
9:<prompt>(kgdb)</prompt> <userinput>where</userinput>
10:#0 boot (arghowto=256) (../../i386/i386/machdep.c line 767)
11:#1 0xf0115159 in panic ()
12:#2 0xf01955bd in diediedie () (../../i386/i386/machdep.c line 698)
13:#3 0xf010185e in db_fncall ()
14:#4 0xf0101586 in db_command (-266509132, -266509516, -267381073)
15:#5 0xf0101711 in db_command_loop ()
16:#6 0xf01040a0 in db_trap ()
17:#7 0xf0192976 in kdb_trap (12, 0, -272630436, -266743723)
18:#8 0xf019d2eb in trap_fatal (...)
19:#9 0xf019ce60 in trap_pfault (...)
20:#10 0xf019cb2f in trap (...)
21:#11 0xf01932a1 in exception:calltrap ()
22:#12 0xf0191503 in cnopen (...)
23:#13 0xf0132c34 in spec_open ()
24:#14 0xf012d014 in vn_open ()
25:#15 0xf012a183 in open ()
26:#16 0xf019d4eb in syscall (...)
27:<prompt>(kgdb)</prompt> <userinput>up 10</userinput>
28:Reading in symbols for ../../i386/i386/trap.c...done.
29:#10 0xf019cb2f in trap (frame={tf_es = -260440048, tf_ds = 16, tf_\
30:edi = 3072, tf_esi = -266445372, tf_ebp = -272630356, tf_isp = -27\
31:2630396, tf_ebx = -266427884, tf_edx = 12, tf_ecx = -266427884, tf\
32:_eax = 64772224, tf_trapno = 12, tf_err = -272695296, tf_eip = -26\
33:6672343, tf_cs = -266469368, tf_eflags = 66066, tf_esp = 3072, tf_\
34:ss = -266427884}) (../../i386/i386/trap.c line 283)
35:283 (void) trap_pfault(&amp;frame, FALSE);
36:<prompt>(kgdb)</prompt> <userinput>frame frame-&gt;tf_ebp frame-&gt;tf_eip</userinput>
37:Reading in symbols for ../../i386/isa/pcvt/pcvt_drv.c...done.
38:#0 0xf01ae729 in pcopen (dev=3072, flag=3, mode=8192, p=(struct p\
39:roc *) 0xf07c0c00) (../../i386/isa/pcvt/pcvt_drv.c line 403)
40:403 return ((*linesw[tp-&gt;t_line].l_open)(dev, tp));
41:<prompt>(kgdb)</prompt> <userinput>list</userinput>
42:398
43:399 tp-&gt;t_state |= TS_CARR_ON;
44:400 tp-&gt;t_cflag |= CLOCAL; /* cannot be a modem (:-) */
45:401
46:402 #if PCVT_NETBSD || (PCVT_FREEBSD >= 200)
47:403 return ((*linesw[tp-&gt;t_line].l_open)(dev, tp));
48:404 #else
49:405 return ((*linesw[tp-&gt;t_line].l_open)(dev, tp, flag));
50:406 #endif /* PCVT_NETBSD || (PCVT_FREEBSD >= 200) */
51:407 }
52:<prompt>(kgdb)</prompt> <userinput>print tp</userinput>
53:Reading in symbols for ../../i386/i386/cons.c...done.
54:$1 = (struct tty *) 0x1bae
55:<prompt>(kgdb)</prompt> <userinput>print tp-&gt;t_line</userinput>
56:$2 = 1767990816
57:<prompt>(kgdb)</prompt> <userinput>up</userinput>
58:#1 0xf0191503 in cnopen (dev=0x00000000, flag=3, mode=8192, p=(st\
59:ruct proc *) 0xf07c0c00) (../../i386/i386/cons.c line 126)
60: return ((*cdevsw[major(dev)].d_open)(dev, flag, mode, p));
61:<prompt>(kgdb)</prompt> <userinput>up</userinput>
62:#2 0xf0132c34 in spec_open ()
63:<prompt>(kgdb)</prompt> <userinput>up</userinput>
64:#3 0xf012d014 in vn_open ()
65:<prompt>(kgdb)</prompt> <userinput>up</userinput>
66:#4 0xf012a183 in open ()
67:<prompt>(kgdb)</prompt> <userinput>up</userinput>
68:#5 0xf019d4eb in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi =\
69: 2158592, tf_esi = 0, tf_ebp = -272638436, tf_isp = -272629788, tf\
70:_ebx = 7086, tf_edx = 1, tf_ecx = 0, tf_eax = 5, tf_trapno = 582, \
71:tf_err = 582, tf_eip = 75749, tf_cs = 31, tf_eflags = 582, tf_esp \
72:= -272638456, tf_ss = 39}) (../../i386/i386/trap.c line 673)
73:673 error = (*callp-&gt;sy_call)(p, args, rval);
74:<prompt>(kgdb)</prompt> <userinput>up</userinput>
75:Initial frame selected; you cannot go up.
76:<prompt>(kgdb)</prompt> <userinput>quit</userinput>
77:&prompt.root; <userinput>exit</userinput>
78:exit
79:
80:Script done on Fri Dec 30 23:18:04 1994
</screen>
<para>Комментарии к вышеприведенному журналу:</para>
<variablelist>
<varlistentry>
<term>строка 6:</term>
<listitem>
<para>Это дамп, взятый при помощи DDB (смотри ниже), поэтому
комментарий к аварийному останову имеет именно вид <quote>because
you said to!</quote> и трассировка стека глубока; однако
изначальной причиной перехода в DDB была аварийная остановка при
возникновению ошибки страницы памяти.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>строка 20:</term>
<listitem>
<para>Это местонахождение функции <function>trap()</function> в
трассировке стека.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>строка 36:</term>
<listitem>
<para>Принудительное использование новой границы стека; теперь это
не нужно. Теперь предполагается, что границы стека указывают на
правое расположение, даже в случае аварийного останова. (У меня
нет под рукой новый аварийный дамп &lt;g&gt;, с моим ядром
аварийная ситуация не случалась давно.) Глядя на строку
исходного кода 403, можно сказать, что весьма вероятно, что либо
виноват доступ по указателю <quote>tp</quote>, либо был выход за
границы массива.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>строка 52:</term>
<listitem>
<para>Похоже, что виноват указатель, но он является допустимым
адресом.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>строка 56:</term>
<listitem>
<para>Однако, очевидно, что он указывает на мусор, так что мы нашли
нашу ошибку! (Для тех, кто не знаком с этой частью кода:
<literal>tp-&gt;t_line</literal> служит для хранения режима
канала консольного устройства, и это должно быть достаточно
маленькое целое число.)</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1>
<title>Отладка аварийного дампа с помощью DDD</title>
<para>Возможно также и исследование аварийного дампа ядра при помощи
такого графического отладчика, как <command>ddd</command>. Добавьте
флаг <option>-k</option> к командной строке <command>ddd</command>,
которую вы обычно используете для его вызова. Например;</para>
<screen>
&prompt.root; <userinput>ddd -k /var/crash/kernel.0 /var/crash/vmcore.0</userinput>
</screen>
<para>После этого у вас должно получиться исследование аварийного дампа
при помощи графического интерфейса <command>ddd</command>.</para>
</sect1>
<sect1>
<title>Посмертный анализ дампа</title>
<para>Что делать, если ядро аварийно завершает работу, хотя этого вы не
хотели и поэтому командой <command>config -g</command> его не
компилировали? Здесь не все еще потеряно. Не паникуйте!</para>
<para>Конечно, вам нужно включить создание аварийных дампов. Смотрите
выше, что вы должны для этого сделать.</para>
<para>Перейдите в каталог конфигурации ядра
(<filename>/usr/src/sys/<replaceable>arch</replaceable>/conf</filename>)
и отредактируйте ваш конфигурационный файл. Раскомментируйте (или
добавьте, если она не существует) такую строку</para>
<programlisting>
makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols
</programlisting>
<para>Перестройте ядро. Из-за изменения метки времени в Makefile будут
перестроены некоторые другие объектные файлы, например,
<filename>trap.o</filename>. К некоторому счастью, добавление опции
<option>-g</option> не изменит все и вся в генерируемом коде, так что
в конце концов вы получите новое ядро с тем же кодом, что и сбоящее
ядро, за исключением наличия отладочной информации. По крайней мере,
вы можете сравнить старый и новый размеры ядер командой &man.size.1;.
Если они не совпадают, то вам придется отказаться от вашей
затеи.</para>
<para>Исследуйте дамп так, как это описано выше. Отладочной информации
может не хватать в некоторых местах, как это можно видеть в трассировке
стека примера выше, когда некоторые функции выводятся без номеров строк
и списка аргументов. Если вам нужно больше отладочной информации,
удалите соответствующие объектные файлы и повторите сеанс работы с
<command>kgdb</command>, пока не получите достаточно подробную
информацию.</para>
<para>Не гарантируется, что все это будет работать, однако в большинстве
случаев все работает прекрасно.</para>
</sect1>
<sect1>
<title>Отладка ядра в режиме реального времени с помощью DDB</title>
<para>Хотя <command>kgdb</command> является отладчиком не реального
времени с высокоуровневым пользовательским интерфейсом, есть несколько
вещей, которые он сделать не сможет. Самыми важными из них являются
точки останова и пошаговое выполнение кода ядра.</para>
<para>Если вам нужно выполнять низкоуровневую отладку вашего ядра, то на
этот случай имеется отладчик реального времени, который называется DDB.
Он позволяет устанавливать точки останова, выполнять функции ядра по
шагам, исследовать и изменять переменные ядра и прочее. Однако он не
может использовать исходные тексты ядра и имеет доступ только к
глобальным и статическим символам, а не ко всей отладочной информации,
как <command>kgdb</command>.</para>
<para>Чтобы отконфигурировать ваше ядро для включения DDB, добавьте
строчку с параметром
<programlisting>
options DDB
</programlisting>
в ваш конфигурационный файл, и перестройте ядро. (Обратитесь к разделу
о <link linkend="kernelconfig">конфигурации ядра</link> для выяснения
деталей конфигурации ядра FreeBSD.</para>
<note>
<para>Заметьте, что, если у вас устаревшая версия загрузочных блоков,
то отладочная информация может оказаться не загруженной. Обновите
блоки загрузки; самые новые загружают символы для DDB
автоматически.)</para>
</note>
<para>После того, как ядро с DDB запущено, есть несколько способов войти
в DDB. Первый, и самый простой, способ заключается в наборе флага
загрузки <option>-d</option> прямо в приглашении загрузчика. Ядро
будет запущено в режиме отладки и войдет в DDB до выполнения процедуры
распознавания каких бы то ни было устройств. Поэтому вы можете
выполнить отладку даже функций распознавания/присоединения
устройств.</para>
<para>Второй способ - это особая комбинация клавиш на клавиатуре, как
правило, Ctrl-Alt-ESC. Для системной консоли syscon это может быть
переопределено; некоторые из поставляемых раскладок это выполняют, так
что присмотритесь. Для последовательных консолей имеется параметр,
позволяющий использовать последовательность BREAK на канале консоли для
входа в DDB (<literal>options BREAK_TO_DEBUGGER</literal> в
конфигурационном файле ядра). По умолчанию этого не делается, так как
существует множество паршивых последовательных адаптеров, которые
генерируют последовательность BREAK, к примеру, при вытягивании
кабеля.</para>
<para>Третий способ заключается во входе в DDB при возникновении
любой аварийной ситуации, если ядро его использует. По этой причине
не очень умно конфигурировать ядро с DDB для машины, которая работает
без присмотра.</para>
<para>Команды DDB примерно повторяют некоторые команды
<command>gdb</command>. Первым делом вам, наверное, нужно задать точку
останова:</para>
<screen>
<userinput>b function-name</userinput>
<userinput>b address</userinput>
</screen>
<para>Значения по умолчанию воспринимаются в шестнадцатиричном виде, но
чтобы отличать их от имен символов; шестнадцатиричные числа,
начинающиеся с букв <literal>a-f</literal>, должны предваряться
символами <literal>0x</literal> (это опционально для других чисел).
Разрешены простые выражения, например:
<literal>function-name + 0x103</literal>.</para>
<para>Чтобы продолжить работу прерванного ядра, просто наберите:</para>
<screen><userinput>c</userinput></screen>
<para>Чтобы получить трассировку стека, задайте:</para>
<screen><userinput>trace</userinput></screen>
<note>
<para>Заметьте, что при входе в DDB по специальной комбинации, ядро
в данный момент обслуживает прерывание, так что трассировка стека
может не дать много информации.</para>
</note>
<para>Если вы хотите убрать точку останова, введите</para>
<screen>
<userinput>del</userinput>
<userinput>del address-expression</userinput>
</screen>
<para>В первом варианте команда будет исполнена сразу же по достижении
точки останова, а текущая точка останова будет удалена. Во второй
форме можно удалить любую точку останова, однако вам нужно будет
указать ее точный адрес; его можно получить из:</para>
<screen><userinput>show b</userinput></screen>
<para>Чтобы выполнить один шаг ядра, попробуйте:</para>
<screen><userinput>s</userinput></screen>
<para>При этом будет осуществляться пошаговое выполнение функций, однако
вы можете трассировать их с помощью DDB, пока не будет достигнуто
соответствие возвращаемому значению:</para>
<screen><userinput>n</userinput></screen>
<note>
<para>Это отличается от команды <command>next</command> отладчика
<command>gdb</command>; это похоже на команду <command>gdb</command>
<command>finish</command>.</para>
</note>
<para>Чтобы выводить значения в памяти, используйте, (к примеру):
<screen>
<userinput>x/wx 0xf0133fe0,40</userinput>
<userinput>x/hd db_symtab_space</userinput>
<userinput>x/bc termbuf,10</userinput>
<userinput>x/s stringbuf</userinput>
</screen>
для доступа к данным типа слово/полуслово/байт и вывода в
шестнадцатиричном/десятичном/символьном виде. Число после запятой
означает счетчик объектов. Чтобы вывести следующие 0x10 объектов,
просто укажите:</para>
<screen><userinput>x ,10</userinput></screen>
<para>Подобным же образом используйте
<screen><userinput>x/ia foofunc,10</userinput></screen>
для дизассемблирования и вывода первых 0x10 инструкций функции
<function>foofunc</function> вместе с их адресом относительно
начала <function>foofunc</function>.</para>
<para>Чтобы изменить значения в памяти, используйте команду write:</para>
<screen>
<userinput>w/b termbuf 0xa 0xb 0</userinput>
<userinput>w/w 0xf0010030 0 0</userinput>
</screen>
<para>Модификатор команды
(<literal>b</literal>/<literal>h</literal>/<literal>w</literal>)
указывает на размер записываемых данных, первое следующее за ним
выражение является адресом для записи, а оставшаяся часть
интерпретируется как данные для записи в доступные области
памяти.</para>
<para>Если вам нужно узнать текущее содержимое регистров,
используйте:</para>
<screen><userinput>show reg</userinput></screen>
<para>Альтернативно вы можете вывести содержимое одного регистра по
команде, скажем,
<screen><userinput>p $eax</userinput></screen>
и изменить его по:</para>
<screen><userinput>set $eax new-value</userinput></screen>
<para>Если вам нужно вызвать некоторую функцию ядра из DDB, просто
укажите:</para>
<screen><userinput>call func(arg1, arg2, ...)</userinput></screen>
<para>Будет выведено возвращаемое значение.</para>
<para>Для вывода суммарной статистики по всем работающим процессам в
стиле команды &man.ps.1; воспользуйтесь такой командой:</para>
<screen><userinput>ps</userinput></screen>
<para>Теперь вы узнали, почему ядро работает с ошибками и хотите
выполнить перезагрузку. Запомните, что в зависимости от влияния
предыдущих ошибок, не все части ядра могут работать так, как ожидается.
Выполните одно из следующих действий для закрытия и перезагрузки вашей
системы:</para>
<screen><userinput>panic</userinput></screen>
<para>Это приведет к созданию дампа ядра и перезагрузке, так что позже
вы можете проанализировать дамп на более высоком уровне при помощи
kgdb. Как правило, эта команда должна следовать за другой командой
<command>continue</command>.</para>
<screen><userinput>call boot(0)</userinput></screen>
<para>Это может оказаться хорошим способом для корректного закрытия
работающей системы, <function>sync()</function> для всех дисков и
напоследок перезагрузка. Пока интерфейсы диска и файловой системы
в ядре не повреждены, это может быть самым правильным способом закрытия
системы.</para>
<screen><userinput>call cpu_reset()</userinput></screen>
<para>самый последнее средство при аварии и практически то же самое, что
нажатие Большой Красной Кнопки.</para>
<para>Если вам нужен краткий справочник по командам, просто
наберите:</para>
<screen><userinput>help</userinput></screen>
<para>Однако настоятельно рекомендуем отпечатать копию страницы
справочника по &man.ddb.4; при подготовке к сеансу отладки. Помните,
что трудно читать онлайновое руководство при пошаговом выполнении
ядра.</para>
</sect1>
<sect1>
<title>Отладка ядра в режиме реального времени при помощи удаленного
GDB</title>
<para>Эта возможность поддерживается во FreeBSD начиная с версии 2.2,
и она на самом деле очень удобна.</para>
<para>В GDB уже давно имеется поддержка <emphasis>удаленной
отладки</emphasis>. Это делается при помощи весьма простого протокола
по последовательному каналу. В отличие от других методов, описанных
выше, для этого вам требуется наличие двух машин. Одна из них является
хостом, предоставляющим ресурсы для отладки, включая все исходные
тексты и копию ядра со всеми символами в нем, а другая является целевой
машиной, на которой запущена та же копия того же ядра (но без
отладочной информации).</para>
<para>Вы должны настроить исследуемое ядро при помощи команды
<command>config -g</command>, включить <option>DDB</option> в
конфигурацию и откомпилировать его обычным образом. Это даст большой
объем получаемого бинарного файла из-за отладочной информации.
Скопируйте это ядро на целевую машину, усеките отладочную информацию
командой <command>strip -x</command> и загрузите это ядро с
использованием параметра загрузки <option>-d</option>. Подключите
последовательный канал целевой машины, имеющий установленные флаги
"flags 080" на соответствующем устройстве sio к любому
последовательному каналу отладочного хоста. А теперь на отладочной
машине перейдите в каталог компиляции целевого ядра и запустите
gdb:</para>
<screen>
&prompt.user; <userinput>gdb -k kernel</userinput>
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.16 (i386-unknown-freebsd),
Copyright 1996 Free Software Foundation, Inc...
<prompt>(kgdb)</prompt>
</screen>
<para>Проинициализируйте сеанс удаленной отладки (предполагается, что
используется первый последовательный порт) такой командой:</para>
<screen>
<prompt>(kgdb)</prompt> <userinput>target remote /dev/cuaa0</userinput>
</screen>
<para>Теперь на целевом хосте (тот, который перешел в DDB даже до
начала процесса обнаружения устройств) наберите:</para>
<screen>
Debugger("Boot flags requested debugger")
Stopped at Debugger+0x35: movb $0, edata+0x51bc
<prompt>db&gt;</prompt> <userinput>gdb</userinput>
</screen>
<para>DDB ответит следующим:</para>
<screen>Next trap will enter GDB remote protocol mode</screen>
<para>Каждый раз, когда вы будете набирать <command>gdb</command>, режим
будет меняться между удаленным GDB и локальным DDB. Чтобы немедленно
вызвать следующее прерывание, просто наберите <command>s</command>
(step). Ваш хостирующий GDB получит управление над целевым
ядром:</para>
<screen>
Remote debugging using /dev/cuaa0
Debugger (msg=0xf01b0383 "Boot flags requested debugger")
at ../../i386/i386/db_interface.c:257
<prompt>(kgdb)</prompt>
</screen>
<para>Вы можете работать в этом сеансе точно также, как и в любом другом
сеансе GDB, включая полный доступ к исходным текстам, запуск его в
режиме gud-mode внутри окна Emacs (что дает вам автоматический вывод
исходного кода в другом окне Emacs) и тому подобное.</para>
<para>Удаленный GDB также может использоваться для отладки модулей LKM.
Сначала откомпилируйте LKM с отладочной информацией:</para>
<screen>
&prompt.root; <userinput>cd /usr/src/lkm/linux</userinput>
&prompt.root; <userinput>make clean; make COPTS=-g</userinput>
</screen>
<para>Затем установите эту версию модуля на целевой машине, загрузите его
и воспользуйтесь командой <command>modstat</command> для определения
того, куда он был загружен:</para>
<screen>
&prompt.root; <userinput>linux</userinput>
&prompt.root; <userinput>modstat</userinput>
Type Id Off Loadaddr Size Info Rev Module Name
EXEC 0 4 f5109000 001c f510f010 1 linux_mod
</screen>
<para>Возьмите адрес загрузки модуля и добавьте к нему 0x20 (для размера
заголовка a.out). Получится адрес, куда был перемещен код модуля.
Воспользуйтесь командой <command>add-symbol-file</command> в GDB для
указания отладчику на модуль:</para>
<screen>
<prompt>(kgdb)</prompt> <userinput>add-symbol-file /usr/src/lkm/linux/linux_mod.o 0xf5109020</userinput>
add symbol table from file "/usr/src/lkm/linux/linux_mod.o" at
text_addr = 0xf5109020? (y or n) <userinput>y</userinput>
<prompt>(kgdb)</prompt>
</screen>
<para>Теперь вы имеете доступ ко всем символам в LKM.</para>
</sect1>
<sect1>
<title>Отладка драйвера консоли</title>
<para>Так как для работы DDB вам требуется драйвер консоли, то в случае
неисправностей самого драйвера консоли все становится гораздо сложнее.
Вы можете вспомнить об использовании последовательной консоли (либо с
исправленными загрузочными блоками, либо при указании флага
<option>-h</option> в приглашении <prompt>Boot:</prompt>) и подключить
обычный терминал к первому последовательному порту. DDB работает с
любым отконфигурированным драйвером консоли, в том числе, конечно же,
и с последовательной консолью.</para>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../book.sgml" "part" "chapter")
End:
-->

View file

@ -0,0 +1,177 @@
<!--
The FreeBSD Russian Documentation Project
$FreeBSD: doc/en_US.ISO_8859-1/books/handbook/kernelopts/chapter.sgml,v 1.16 2000/06/14 00:47:36 jim Exp $
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/kernelopts/chapter.sgml,v 1.2 2000/11/10 11:55:24 phantom Exp $
-->
<chapter id="kernelopts">
<title>Добавление новых параметров конфигурации ядра</title>
<para><emphasis>Предоставил &a.joerg;</emphasis></para>
<note>
<para>Перед тем, как читать этот раздел, вы должны усвоить материал
раздела о <link linkend="kernelconfig">конфигурации ядра</link>.</para>
</note>
<sect1>
<title>Что же такое <emphasis>параметр ядра</emphasis>, в конце
концов?</title>
<para>Использование параметров ядра в основном описано в разделе о <link
linkend="kernelconfig-options">конфигурации ядра</link>. Там же
имеется описание <quote>устаревших</quote> и параметров <quote>в новом
стиле</quote>. Конечной целью является постепенный перевод всех
поддерживаемых параметров ядра к новому стилю, так чтобы для тех, кто
корректно выполняют команду <command>make depend</command> в каталоге
компиляции ядра после запуска &man.config.8;, процесс построения
автоматически принимал модифицированные параметры и
перекомпилировал только те файлы, которые необходимы. Удаление старого
каталога компиляции при каждом перезапуске &man.config.8;, как это
еще происходит сейчас, затем может быть убрано.</para>
<para>В своей основе параметр ядра является не более чем определение
макроса препроцессора C для процесса компиляции ядра. Чтобы сделать
построение полностью настраиваемым через опции процессом,
соответствующая часть исходных текстов ядра (или файла
<filename>.h</filename> ядра) должна быть написана с упором на
концепцию параметров, то есть чтобы значения, используемые по
умолчанию, могли быть переопределены параметрами конфигурации. Это
обычно делается примерно так:</para>
<programlisting>
#ifndef THIS_OPTION
#define THIS_OPTION (некоторое значение по умолчанию)
#endif /* THIS_OPTION */
</programlisting>
<para>Этим способом администратор, задающий другое значение для параметра
в своем конфигурационном файле, избегает использования значения по
умолчанию и заменяет его новым значением. Более того, новое значение
будет подставлено в исходный код во время работы препроцессора, так что
это должно быть правильное выражение языка C в контексте использования
значения по умолчанию.</para>
<para>Также возможно создание параметров, которые не принимают
определенного значения, а просто включают или выключают некоторую часть
кода, обрамляя его в</para>
<programlisting>
#ifdef THAT_OPTION
[здесь ваш код]
#endif
</programlisting>
<para>Простое упоминание <literal>THAT_OPTION</literal> в
конфигурационном файле (со значением или без него) приведет к включению
соответствующего кода.</para>
<para>Те, кто знаком с языком C, могут сказать, что все может считаться
как <quote>config option</quote>, там где есть по крайней мере одна
строчка <literal>#ifdef</literal>... Однако вряд ли многие будут
писать</para>
<programlisting>
options notyet,notdef
</programlisting>
<para>в своих конфигурационных файлах и потом удивляться, почему
компиляция ядра не проходит. <!-- smiley -->:-)</para>
<para>Более точно, использование уникальных имен для параметров делает
очень трудным отслеживание их использования в дереве исходных текстов
ядра. В использовании схемы параметров в <emphasis>новом
стиле</emphasis> имеется рациональное зерно, когда каждый параметр
помещается в отдельный файл <filename>.h</filename> в каталоге
компиляции ядра, который по соглашению называется
<filename>opt_<replaceable>foo</replaceable>.h</filename>. Таким
образом, могут быть применены обычные зависимости в Makefile, и утилита
<command>make</command> может определить, что нужно перекомпилировать
при изменении определенного параметра.</para>
<para>Параметры при использовании механизма в старом стиле имеют одно
преимущество для локальных изменений или для экспериментальных
параметров, которые имеют короткий срок жизни: так как весьма легко
добавить новую строку <literal>#ifdef</literal> к исходному коду ядра,
то это уже превращается в параметр конфигурации ядра. В таком случае
администратор, использующий параметры таким образом, несет
ответственность за знание влияния этого параметра (и может быть, за
принудительную перекомпиляцию вручную частей ядра). Как только перевод
всех поддерживаемых опций будет сделан, программа &man.config.8; будет
выдавать предупреждение о не поддерживаемой опции, появившейся в
конфигурационном файле, однако она будет включать ее в файл Makefile
ядра.</para>
</sect1>
<sect1>
<title>И что я должен для этого сделать?</title>
<para>Во-первых, отредактируйте файл
<filename>sys/conf/options</filename> (или
<filename>sys/<replaceable>&lt;arch&gt;</replaceable>/conf/options.<replaceable>&lt;arch&gt;</replaceable></filename>,
например <filename>sys/i386/conf/options.i386</filename>), и выберите
файл <filename>opt_<replaceable>foo</replaceable>.h</filename>,
в котором лучше всего поместить вашу новую опцию.</para>
<para>Если имеется что-то, уже похожее на предназначение новой опции,
выберите это. Например, опции, изменяющие общее поведение подсистемы
SCSI, могут быть помещены в
<filename>opt_scsi.h</filename>. По умолчанию простое упоминание опции
в соответствующем файле опций, скажем, <literal>FOO</literal>, приводит
к тому, что ее значение помещается в соответствующий файл
<filename>opt_foo.h</filename>. Это может быть переопределено в
правой части правила указанием другого имени файла.</para>
<para>Если файла
<filename>opt_<replaceable>foo</replaceable>.h</filename> для
предполагаемой новой опции еще нет, придумайте новое имя. Сделайте его
значимым и прокомментируйте новый раздел в файле
<filename>options[<replaceable>.&lt;arch&gt;</replaceable>]</filename>.
Утилита &man.config.8; автоматически воспримет изменения и создаст
этот файл при следующем своем запуске. Большинство опций должно
оказаться в заголовочном файле..</para>
<para>Размещение слишком большого количества опций в одном файле
<filename>opt_<replaceable>foo</replaceable>.h</filename> приведет к
перестроению слишком большого количества файлов ядра при изменении
одной из опций в конфигурационном файле.</para>
<para>Наконец, определите, какие файлы ядра зависят от новой опции. Если
только вы не только что придумали вашу опцию и она еще нигде не
упоминается, то команда
<screen>
&prompt.user; <userinput>find /usr/src/sys -type f | xargs fgrep NEW_OPTION</userinput>
</screen>
вам поможет ее найти. Сделайте это и отредактируйте все эти файлы, а
также добавьте <programlisting>#include "opt_foo.h"</programlisting>
<emphasis>вверху</emphasis> до всех строк
<literal>#include &lt;xxx.h&gt;</literal>. Эта последовательность
очень важна, так как опции могут переопределять значения по умолчанию
из обычных включаемых файлов, если эти значения по умолчанию даются в
форме <programlisting> #ifndef NEW_OPTION #define NEW_OPTION (что-то)
#endif</programlisting> в обычном заголовке.</para>
<para>Добавление опции, которая переопределяет что-то в системном
заголовочном файле (то есть файле, находящемся в каталоге
<filename>/usr/include/sys/</filename>), практически всегда ошибочно.
<filename>opt_<replaceable>foo</replaceable>.h</filename> не может быть
включен в те файлы, потому что это изменит заголовки более серьезно,
но если он не включен, то в местах его включения может получиться
рассогласованность значений для этой опции. Да, такие прецеденты имеют
место и сейчас, но это их не оправдывает.</para>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../book.sgml" "part" "chapter")
End:
-->

View file

@ -2,14 +2,14 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml,v 1.2 2000/10/05 15:38:51 phantom Exp $
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml,v 1.3 2000/10/26 00:44:43 danfe Exp $
Original revision: 1.32
-->
<chapter id="linuxemu">
<title>òÁÂÏÔÁ Ó ÐÒÉÌÏÖÅÎÉÑÍÉ, ÎÁÐÉÓÁÎÎÙÍÉ ÄÌÑ Linux</title>
<para><emphasis>Реструктурировано, и частично дополнено &a.jim;, 22 марта
<para><emphasis>òÅÓÔÒÕËÔÕÒÉÒÏ×ÁÌ É ÞÁÓÔÉÞÎÏ ÄÏÐÏÌÎÉÌ &a.jim;, 22 ÍÁÒÔÁ
2000. ïÒÉÇÉÎÁÌØÎÁÑ ×ÅÒÓÉÑ &a.handy; É &a.rich;</emphasis></para>
<sect1>

View file

@ -0,0 +1,473 @@
<!--
The FreeBSD Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/mail/chapter.sgml,v 1.5 2000/11/10 11:57:28 phantom Exp $
Original revision: 1.20
-->
<chapter id="mail">
<title>Электронная почта</title>
<para><emphasis>Переписал &a.jim;, 2 декабря 1999 г. Оригинальная
версия: &a.wlloyd;.</emphasis></para>
<sect1>
<title>Краткий обзор</title>
<para>Электронная почта является на сегодняшний день одним из самых
популярных средств связи. Миллионы людей используют ее каждый день, и
их число растет. И если Вы читаете этот текст, то, вероятно, тоже
пользуетесь услугами электронной почты, и у Вас даже не один почтовый
ящик.</para>
<para>Настройке электронной почты посвящено немало страниц многочисленных
<link linkend="bibliography">системных руководств</link>, так что у
Вас не должно возникнуть проблем с настройкой почтового сервера.</para>
<para>Возможно, при настройке сервера Вам понадобится также настроить
сервер доменных имен (Domain Name Server, DNS). В этом случае,
обязательно прочитайте файл <filename>/etc/namedb</filename> и
страницу руководства по команде &man.named.8;.</para>
</sect1>
<sect1 id="mail-using">
<title>Использование электронной почты</title>
<para>За отправку/получение почты отвечают четыре программы (сервиса):
<link linkend="mail-mua">пользовательский почтовый клиент</link>,
<link linkend="mail-mta">почтовый сервер (демон)</link>, <link
linkend="mail-dns">сервер DNS</link>, <link linkend="mail-receive">POP
или IMAP демон</link>.</para>
<sect2 id="mail-mua">
<title>Пользовательский почтовый клиент</title>
<para>Обычно, это программа типа <application>mutt</application>,
<application>pine</application>, <application>elm</application>, и
<application>mail</application>, а также программы с графическим
интерфейсом, такие, как <application>balsa</application> или
<application>xfmail</application>, или интегрированные приложения
(например, какой-либо WWW браузер типа Netscape). Все эти программы
общаются с локальным <link linkend="mail-host">почтовым
сервером</link>, вызывая какой-либо демон, или напрямую по протоколу
TCP.</para>
</sect2>
<sect2 id="mail-mta">
<title>Почтовый демон</title>
<para>Обычно это <application>sendmail</application> (поставляется
вместе с FreeBSD), однако, им может быть любая из нижеперечисленных
программ: <application>qmail</application>,
<application>postfix</application> или
<application>exim</application>. Остальные менее
распространены.</para>
<para>Почтовый демон выполняет только две функции: принимает входящую
почту и отправляет исходящую. Чтобы забирать/отправлять почту по
протоколам POP или IMAP, нужен специальный дополнительный <link
linkend="mail-receive">демон</link>.</para>
<para>Имейте ввиду, что старые версии
<application>sendmail</application> имели серьезные проблемы с
безопасностью, поэтому старайтесь всегда использовать последнюю
версию. Это правило, кстати, справедливо в отношении практически
любых программных продуктов.</para>
</sect2>
<sect2 id="mail-dns">
<title>Email и DNS</title>
<para>Служба имен доменов (Domain Name System, DNS) и соответствующий
ей демон <command>named</command> играют важную роль в доставке
почты. DNS содержит базу данных соответствия между именем домена и
IP адресом, и между именем домена и почтовым сервером. IP адрес
задается в записи A. Запись MX (Mail eXchanger) указывает
компьютер, который обрабатывает корреспонденцию для данного домена.
Если для Вашего хоста запись MX отсутствует, почта будет
доставляться непосредственно на Ваш хост.</para>
</sect2>
<sect2 id="mail-receive">
<title>Получение почты</title>
<para>Полученную корреспонденцию почтовый сервер сохраняет для
последующего чтения. Вы можете читать почту непосредственно на
сервере, или забирать ее по протоколам POP или IMAP.</para>
<para>Чтобы настроить POP или IMAP сервер, нужно сделать две
вещи:</para>
<procedure>
<step>
<para>Поставить POP или IMAP сервер из <ulink
url="../ports/mail.html">коллекции портов</ulink>.</para>
</step>
<step>
<para>Прописать в файле <filename>/etc/inetd.conf</filename>
POP или IMAP демон.</para>
</step>
</procedure>
</sect2>
</sect1>
<sect1 id="mail-trouble">
<title>Поиск и устранение неисправностей</title>
<para>Вот несколько часто задаваемых вопросов и ответов на них, взятых,
в основном, из <ulink url="../FAQ/">FAQ</ulink>.</para>
<qandaset>
<qandaentry>
<question>
<para>Почему я должен использовать FQDN для хостов вне моей подсети?</para>
</question>
<answer>
<para>Вы, видимо, обнаружили, что хост, к которому Вы обратились,
оказался на самом деле в другом домене; например, если Вы
находитесь в домене <hostid role="fqdn">foo.bar.edu</hostid> и
хотите обратиться к хосту <hostid>mumble</hostid> в домене <hostid
role="domainname">bar.edu</hostid>, то должны указать его полное
доменное имя, <hostid role="fqdn">mumble.bar.edu</hostid>, а не
просто <hostid>mumble</hostid>.</para>
<para>Традиционно, ресолверы (распознаватели) BSD BIND позволяли это
делать. Однако, текущая версия <application>BIND</application>,
поставляемая с FreeBSD, больше не добавляет имена доменов,
отличающихся от того, в котором Вы находитесь, для не полностью
указанных имен хостов. То есть, имя <hostid>mumble</hostid> будет
опознан как <hostid role="fqdn">mumble.foo.bar.edu</hostid> или
будет искаться в корневом домене.</para>
<para>Это отличается от предыдущего поведения, при котором поиск
продолжался в доменах <hostid
role="domainname">mumble.bar.edu</hostid> и <hostid
role="domainname">mumble.edu</hostid>. Если Вам интересны причины
объявления такого поведения плохой практикой и даже ошибкой в
безопасности, обратитесь к RFC 1535.</para>
<para>Хорошим решением будет поместить строку
<programlisting>
search foo.bar.edu bar.edu</programlisting>
вместо ранее используемой:
<programlisting>
domain foo.bar.edu</programlisting>
в файл <filename>/etc/resolv.conf</filename>. Однако
удостоверьтесь, что порядок поиска не нарушает <quote>границ
полномочий между локальным и внешним администрирования</quote>, в
терминологии RFC 1535.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Sendmail выдает ошибку <errorname>mail loops back to
myself</errorname></para>
</question>
<answer>
<para>В FAQ по sendmail дан следующий ответ:</para>
<programlisting>
* Выдаются сообщения <quote>Local configuration error</quote>, например:
553 relay.domain.net config error: mail loops back to myself
554 &lt;user@domain.net&gt;... Local configuration error
Как можно решить эту проблему?
Согласно записям MX, почта для домена <hostid
role="domainname">domain.net</hostid> перенаправляется на хост
<hostid>relay.domain.net</hostid>, однако последний не распознается как
<hostid role="domainname">domain.net</hostid>. Добавьте <hostid
role="domainname">domain.net</hostid> в файл
<filename>/etc/sendmail.cw</filename> (если Вы используете
FETURE(use_cw_file)) или добавьте <quote>Cw domain.net</quote> в файл
<filename>/etc/sendmail.cf</filename>.</programlisting>
<para>Текущая версия этого FAQ больше не поставляется вместе с
sendmail. Однако, этот документ регулярно помещается в
конференциях comp.mail.sendmail, comp.mail.misc, comp.mail.smail,
comp.answers и news.answers. Вы можете получить копию по
электронной почте, послав запрос, содержащий команду <quote>send
usenet/news.answers/mail/sendmail-faq</quote> в теле письма, по
адресу <email>mail-server@rtfm.mit.edu</email>.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Как работать с электронной почтой при коммутируемом соединении
с Интернет?</para>
</question>
<answer>
<para>Вы можете подключить к Интернет FreeBSD машину в локальной
сети, которая будет <quote>промежуточным звеном</quote> в доставке
Вашей почты. Для этого существует по крайней мере два способа.
Или, в качестве альтернативы, Вы можете воспользоваться
UUCP.</para>
<para>Прежде всего, Вам необходимо убедиться, что провайдер
обеспечивает дополнительный MX-сервис для Вашего домена,
например:</para>
<programlisting>
bigco.com. MX 10 bigco.com.
MX 20 smalliap.com.</programlisting>
<para>Только один хост должен быть указан в качестве последнего
получателя (добавьте запись <literal>Cw bigco.com</literal> в файл
<filename>/etc/sendmail.cf</filename> на машине
<hostid>bigco.com</hostid>).</para>
<para>Когда программа <command>sendmail</command> (со стороны
отправителя) <quote>захочет</quote> доставить почту, она
попытается установить Интернет-соединение через модем. Скорее
всего, ей это не удастся (в произвольный момент времени Вы,
вероятнее всего, не будете подключены к Интернет), и она
автоматически перейдет ко второму серверу, т.е. Вашему провайдеру
Интернет, который, в свою очередь, будет пытаться установить
соединение в Вашим компьютером каждые (<literal>sendmail_flags =
-bd -q15m</literal> в файле <filename>/etc/rc.conf</filename>) 15
минут, чтобы доставить почту.</para>
<para>Вы можете воспользоваться следующим сценарием, чтобы забирать
почту каждый раз, когда Вы входите в систему.</para>
<programlisting>
#!/bin/sh
# Put me in /usr/local/bin/pppbigco
( sleep 60 ; /usr/sbin/sendmail -q ) &amp;
/usr/sbin/ppp -direct pppbigco</programlisting>
<para>Если же Вы хотите написать отдельный пользовательский скрипт,
лучше воспользоваться командой <command>sendmail
-qRbigco.com</command> вместо вышеприведенного сценария, так как в
этом случае вся почта в очереди для хоста
<hostid>bigco.com</hostid> будет обработана немедленно.</para>
<para>Рассмотрим эту ситуацию подробнее.</para>
<para>Вот пример сообщения от &a.isp;.</para>
<programlisting>
&gt; мы предоставляем вторичный MX для наших клиентов. Вы соединяетесь
&gt; с нашим сервером несколько раз в день чтобы забрать почту для Вашего
&gt; первичного (главного) MX (мы не соединяемся с ним каждый раз, когда
&gt; приходит новая почта для его доменов). Далее, sendmail отправляет
&gt; почту, находящуюся в очереди каждые 30 минут, и клиент должен быть
&gt; подключен к Интернет в течении 30 минут, чтобы удостовериться, что
&gt; вся почта <quote>ушла</quote> на основной MX-сервер.
&gt;
&gt; Может быть, есть какая-либо команда, которая заставит sendmail
&gt; немедленно отправить все почту, находящуюся в очереди? Естественно,
&gt; пользователи не обладают какими-либо повышенными привилегиями на
&gt; нашем сервере.
В секции <quote>privacy flags</quote> файла
<filename>sendmail.cf</filename>, определяется опция
<option>Opgoaway,restrictqrun</option>
Уберите <literal>restrictqrun</literal>, чтобы разрешить рядовым
пользователям инициировать работу с очередью. Вам также может понадобиться
изменить порядок MX-серверов. Так, если Вы являетесь первым (основным) MX-сервером, укажите:
# If we are the best MX for a host, try directly instead of generating
# local config error.
OwTrue
Таким образом, удаленный хост будет доставлять почту непосредственно к Вам,
не пытаясь установить соединение с клиентом. Затем уже Вы, в свою очередь,
отсылаете ее клиенту. Удостоверьтесь, что в DNS есть записи про
<quote>customer.com</quote> и <quote>hostname.customer.com</quote>. Просто
добавьте запись A в DNS для <quote>customer.com</quote>.</programlisting>
</answer>
</qandaentry>
</qandaset>
</sect1>
<sect1 id="mail-advanced">
<title>Настройка почтового сервера для обслуживания всего домена</title>
<sect2 id="mail-config">
<title>Базовая конфигурация</title>
<para>Изначально, Вы можете отправлять почту <quote>во внешний
мир</quote> если у Вас правильно составлен файл
<filename>/etc/resolv.conf</filename> или у Вас запущен свой сервер
имен. Если Вы хотите, чтобы почта, предназначенная для хоста в
Вашем домене, доставлялась по назначению, есть два пути:</para>
<itemizedlist>
<listitem>
<para>Запустите свой собственный сервер DNS, тем самым организовав
собственный домен, например, <hostid
role="domainname">FreeBSD.org</hostid></para>
</listitem>
<listitem>
<para>Удостоверьтесь, что Вы получаете почту, предназначенную для
Вашего хоста. То есть, почта должна приходить на доменное имя
Вашей машины. Например, <hostid
role="fqdn">example.FreeBSD.org</hostid>.</para>
</listitem>
</itemizedlist>
<para>В любом случае, чтобы почта всегда приходила на Ваш хост, Вам
нужно иметь постоянный (статический) IP адрес (а не, например,
PPP-соединение). Если Вы находитесь за брандмауэром, то последний
должен пропускать SMTP-пакеты.</para>
<para>Если Вы хотите, чтобы почта приходила непосредственно на Ваш
хост:</para>
<itemizedlist>
<listitem>
<para>Удостоверьтесь, что запись MX в DNS соответствует IP адресу
Вашего хоста хоста.</para>
</listitem>
<listitem>
<para>Или для Вашего хоста вообще отсутствует MX-запись.</para>
</listitem>
</itemizedlist>
<para>Выполнение любого из перечисленных условий обеспечит доставку
почты для Вашего хоста.</para>
<para>Попробуйте это:</para>
<screen>&prompt.root; <userinput>hostname</userinput>
example.FreeBSD.org
&prompt.root; <userinput>host example.FreeBSD.org</userinput>
example.FreeBSD.org has address 204.216.27.XX</screen>
<para>Если Вы это видите, то можно без проблем посылать почту на
<email>yourlogin@example.FreeBSD.org</email>.</para>
<para>Однако, если Вы видите это:</para>
<screen>&prompt.root; <userinput>host example.FreeBSD.org</userinput>
example.FreeBSD.org has address 204.216.27.XX
example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org</screen>
<para>то вся почта, посланная на <hostid
role="fqdn">example.FreeBSD.org</hostid> будет собираться на
<hostid>hub</hostid> (для того же пользователя), вместо того, чтобы
быть отосланной непосредственно на Ваш хост.</para>
<para>Эта информация обрабатывается Вашим DNS сервером. Соответствующая
запись DNS, указывающая, через какой хост будет проходить Ваша
почта, называется MX (от англ. <emphasis>M</emphasis>ail
e<emphasis>X</emphasis>changer). Если для хоста отсутствует такая
запись, почта будет прихоть прямо на этот хост.</para>
<para>Допустим, что запись MX для хоста <hostid
role="fqdn">freefall.FreeBSD.org</hostid> в какой-то момент
выглядела так:</para>
<programlisting>
freefall MX 30 mail.crl.net
freefall MX 40 agora.rdrop.com
freefall MX 10 freefall.FreeBSD.org
freefall MX 20 who.cdrom.com</programlisting>
<para>Вы видите, что для хоста <hostid>freefall</hostid> существуют
несколько MX-записей. Запись с наименьшим номером соотвествует
хосту, на который в конце-концов попадет почта для
<hostid>freefall</hostid>; другие будут временно сохранять почту для
<hostid>freefall</hostid>, если тот по какой-либо причине
недоступен.</para>
<para>Чтобы альтернативные MX-хосты использовались наиболее
эффективно, они должны быть независимо подключены к Интернет. Ваш
провайдер (или дружественный сайт) скорее всего без проблем сможет
оказать подобные услуги.</para>
</sect2>
<sect2 id="mail-domain">
<title>Почта для Вашего домена</title>
<para>Вам может понадобиться создать почтовый сервер, который будет
<quote>перехватывать</quote> почту, адресованную рабочим станциям в
Вашем домене. Затем пользователи будут забирать почту либо
непосредственно с сервера, либо по протоколам POP или IMAP.</para>
<para>Чтобы облегчить себе (и другим) жизнь, создайте на обеих машинах
аккаунты с одинаковыми именами пользователей, например, с помощью
команды <command>adduser</command>.</para>
<para>Сервер, который Вы будете использовать в качестве почтового,
должен быть объявлен таковым для каждой машины в домене. Вот
фрагмент примерной конфигурации:</para>
<programlisting>
example.FreeBSD.org A 204.216.27.XX ; Рабочая станция
MX 10 hub.FreeBSD.org ; Почтовый шлюз</programlisting>
<para>Таким образом, вся корреспонденция, адресованная рабочей
станции, будет обрабатываться Вашим почтовым сервером, независимо от
того, что указано в A-записи.</para>
<para>Все это можно реализовать только в том случае, если Вы
используете сервер DNS. Если Вы по каким-либо причинам не имеете
возможности установить свой собственный сервер имен, Вам нужно
поговорить с Вашим провайдером услуг Интернет о предоставлении
сервиса DNS для Вас.</para>
<para>Если Вы хотите поддерживать несколько виртуальных почтовых
серверов, Вам может пригодиться следующая информация. Допустим, что
Ваш клиент зарезервировал домен, например, <hostid
role="domainname">customer1.org</hostid>, и Вам требуется, чтобы
почта, предназначенная для <hostid
role="domainname">customer1.org</hostid> приходила на Ваш хост,
например, <hostid role="fqdn">mail.myhost.com</hostid>. В таком
случае, DNS должен выглядеть так:</para>
<programlisting>
customer1.org MX 10 mail.myhost.com</programlisting>
<para>Заметьте, что если Вам требуется только получать почту для
домена, соответствующая A-запись <emphasis>не</emphasis>
нужна.</para>
<note>
<para>Помните, что если Вы попытаетесь каким-либо образом обратиться
к хосту <hostid role="domainname">customer1.org</hostid>, у Вас
вряд ли что-либо получится, если нет A-записи для этого
хоста.</para>
</note>
<para>Последнее, что Вы должны сделать &ndash; это сказать программе
<application>sendmail</application>, для каких доменов и/или хостов
она должна принимать почту. Это можно сделать несколькими
способами:</para>
<itemizedlist>
<listitem>
<para>Добавьте названия этих хостов в файл
<filename>/etc/sendmail.cw</filename>, если Вы используете
<literal>FEATURE(use_cw_file)</literal>. Если у Вас sendmail
версии 8.10 или выше, то можно отредактировать файл
<filename>/etc/mail/local-host-names</filename>.</para>
</listitem>
<listitem>
<para>Добавьте строку <literal>Cwyour.host.com</literal> в файл
<filename>/etc/sendmail.cf</filename> или
<filename>/etc/mail/sendmail.cf</filename> (если у Вас sendmail
версии 8.10 или более поздней).</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
</chapter>

View file

@ -2,8 +2,8 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/mirrors/chapter.sgml,v 1.3 2000/10/05 15:40:54 phantom Exp $
Original revision: 1.62
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/mirrors/chapter.sgml,v 1.4 2000/11/10 14:42:32 phantom Exp $
Original revision: 1.66
-->
<appendix id="mirrors">
@ -774,6 +774,11 @@
<para><ulink
url="ftp://ftp4.uk.FreeBSD.org/pub/FreeBSD/">ftp://ftp4.uk.FreeBSD.org/pub/FreeBSD/</ulink></para>
</listitem>
<listitem>
<para><ulink
url="ftp://ftp5.uk.FreeBSD.org/pub/FreeBSD/">ftp://ftp5.uk.FreeBSD.org/pub/FreeBSD/</ulink></para>
</listitem>
</itemizedlist>
</listitem>
</varlistentry>
@ -1481,6 +1486,12 @@
<para>cvsup7.FreeBSD.org (ÏÔ×ÅÔÓÔ×ÅÎÎÙÊ
<email>jdp@FreeBSD.org</email>), ÛÔÁÔ ÷ÁÛÉÎÇÔÏÎ</para>
</listitem>
<listitem>
<para>cvsup8.FreeBSD.org (maintainer
<email>hostmaster@bigmirror.com</email>), Washington
state</para>
</listitem>
</itemizedlist>
</listitem>
</varlistentry>
@ -1512,6 +1523,19 @@
Ë ÜËÓÐÏÒÔÕ ÉÚ óûá.</para>
<variablelist>
<varlistentry>
<term>äÁÎÉÑ</term>
<listitem>
<itemizedlist>
<listitem>
<para>cvsup.dk.FreeBSD.org (ÏÔ×ÅÔÓÔ×ÅÎÎÙÊ
<email>jesper@skriver.dk</email>)</para>
</listitem>
</itemizedlist>
</listitem>
</varlistentry>
<varlistentry>
<term>çÅÒÍÁÎÉÑ</term>
@ -1529,6 +1553,29 @@
</itemizedlist>
</listitem>
</varlistentry>
<varlistentry>
<term>United Kingdom</term>
<listitem>
<itemizedlist>
<listitem>
<para>cvsup.uk.FreeBSD.org (maintainer
<email>joe@pavilion.net</email>)</para>
</listitem>
<listitem>
<para>cvsup2.uk.FreeBSD.org (maintainer
<email>brian@FreeBSD.org</email>)</para>
</listitem>
<listitem>
<para>cvsup3.uk.FreeBSD.org (maintainer
<email>ftp-admin@plig.net</email>)</para>
</listitem>
</itemizedlist>
</listitem>
</varlistentry>
</variablelist>
<para>óÌÅÄÕÀÝÉÅ <application>CVSup</application> ÓÅÒ×ÅÒÁ ÓÐÅÃÉÁÌØÎÏ

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,431 @@
<!--
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/policies/chapter.sgml,v 1.1 2000/11/12 13:32:19 andy Exp $
Original revision: 1.18
-->
<chapter id="policies">
<title>Рекомендации и требования к исходному коду</title>
<para><emphasis>Текст предоставил &a.phk;.</emphasis></para>
<para>В этой главе описываются различные рекомендации и требования, которые
должны соблюдаться в дереве исходных текстов FreeBSD.</para>
<sect1 id="policies-maintainer">
<title><makevar>MAINTAINER</makevar> в make-файлах</title>
<para>Июнь 1996.</para>
<para>Если некоторая часть дистрибутива FreeBSD поддерживается некоторым
человеком или группой людей, они могут сообщить об этом миру, добавив
строчку
<programlisting>
MAINTAINER= email-addresses</programlisting>
в файл <filename>Makefile</filename>, соответствующий этой части
исходного кода.</para>
<para>Смысл этого в следующем:</para>
<para>Сопровождающий владеет кодом и отвечает за него. Это означает, что
он несет ответственность за исправление ошибок и закрывает сообщения о
проблемах, имеющих отношение к этой части кода, а в случае программного
обеспечения, взятого из третьих источников, соответственно отвечает за
отслеживание новых версий.</para>
<para>Изменения в каталогах, для которых известен сопровождающий, прежде
чем они будут внесены, должны быть посланы ему на рассмотрение. Только
если сопровождающий не отвечает в течение достаточно большого периода
времени на несколько посланий по электронной почте, разрешается внести
изменения без участия сопровождающего. Однако рекомендуется, чтобы вы
попытались передать изменения на рассмотрение кому-либо еще, если это
вообще возможно.</para>
<para>Конечно же, нельзя назначать человека или группу лиц
сопровождающими, если они не согласны выполнять эту работу. С другой
стороны, необязательно это должен быть конкретный коммиттер, это может
быть и группа людей.</para>
</sect1>
<sect1 id="policies-contributed">
<title>Программное обеспечение третьих сторон</title>
<para><emphasis>Текст предоставили &a.phk; и &a.obrien;. </emphasis></para>
<para>Июнь 1996.</para>
<para>Некоторые части дистрибутива FreeBSD состоят из программного
обечпечения, которое сопровождается вне проекта FreeBSD. По
историческим причинам мы называем такое программное обеспечение
<emphasis>контрибуцированным</emphasis> (contributed), или третьих
сторон. Примерами этого могут служить утилиты perl, gcc и
patch.</para>
<para>За последние несколько лет для работы с таким программным
обеспечением использовались различные методы, и все они имели свои
достоинства и недостатки. Абсолютно подходящего метода так и не
нашлось.</para>
<para>По этой причине после некоторых дебатов был выбран и признан
<quote>официальным</quote> один из этих методов, который необходимо
применять в будущем при импортировании такого рода программного
обеспечения. Более того, настоятельно рекомендуется с течением времени
перевести существующее программное обеспечение третьих сторон на этот
метод, так как он имеет значительные преимущества перед старым методом,
включая возможность легкого получения diff-файлов относительно
<quote>официальных</quote> версий исходных текстов кем угодно (даже
не имеющим доступа к cvs). Это делает данный метод гораздо проще
в использовании при необходимости выдачи изменений изначальным
разработчикам такого программного обеспечения.</para>
<para>В конце концов, однако, это касается тех, кто делает реальную
работу. Если использование этой модели в конкретном случае не подходит
для пакета, с которым работает человек, могут быть сделаны и
исключения только с согласия основной команды разработчиков и при общем
одобрении других разработчиков. Возможность сопровождения пакета в
будущем будет являться ключевым моментом при принятии решений.</para>
<note>
<para>Из-за досадных ограничений в дизайне формата файлов RCS и
использовании веток поставщика в CVS, мелкие, тривиальные и/или
косметические изменения <emphasis>сильно не рекомендуется</emphasis>
в файлах, которые все еще отслеживаются в ветке поставщика. Это
касается и <quote>исправления орфографических ошибок</quote> как
относящихся к категории <quote>косметических</quote> и избегаемых
для файлов с версиями 1.1.x.x. Рост объема хранилища, вызванный
изменением в один символ, может оказаться весьма большим.</para>
</note>
<para>В качестве примера того, как работает эта модель, будем
использовать встраиваемый язык программирования
<application>TCL</application>:</para>
<para>Каталог <filename>src/contrib/tcl</filename> содержит исходные
тексты пакета в том виде, в котором они распространяются его
создателями. Части, которые полностью не применимы во FreeBSD, могут
быть удалены. В случае Tcl подкаталоги <filename>mac</filename>,
<filename>win</filename> и <filename>compat</filename> были удалены
перед операцией импортирования</para>
<para>Каталог <filename>src/lib/libtcl</filename> содержит только файл
<filename>Makefile</filename> "в стиле bmake", который использует
стандартные правила <filename>bsd.lib.mk</filename> make-файла для
построения библиотеки и установки документации.</para>
<para>В каталоге <filename>src/usr.bin/tclsh</filename> размещаются
make-файлы в стиле bmake, которые отвечают за построение и установку
программы <command>tclsh</command> и связанных с ней справочных
страниц при помощи стандартных правил из
<filename>bsd.prog.mk</filename>.</para>
<para>Каталог <filename>src/tools/tools/tcl_bmake</filename> содержит
несколько shell-скриптов, которые могут помочь при обновлении
программного обеспечения tcl. Они не являются частью строящегося и
исталлируемого программного обеспечения.</para>
<para>Здесь важно то, что каталог <filename>src/contrib/tcl</filename>
создавался в соответствии с правилами: Предполагается, что он содержит
исходнве тексты в том виде, в котором они распространяются (в
соответствующей ветви поставщика CVS и без расширения ключевых слов
RCS) с максимально малым количеством изменений, специфичных для
FreeBSD. Утилита 'easy-import' на машине freefall поможет в
импортировании, но если есть сомнения по поводу выполнения этой
операции, то обязательно спросите совета и не действуйте слепо в
расчете на то, что <quote>все сработает</quote>. CVS не прощает ошибок
импортирования и для ликвидации последствий больших ошибок требуются
значительные усилия.</para>
<para>Из-за ранее отмеченных ограничений дизайна веток поставщиков в CVS
требуется, чтобы <quote>официальные</quote> патчи от разработчика
были сначала применены к распространяемым исходным текстам, а затем
результат снова импортирован в ветку поставщика. Официальные патчи
никогда не должны применяться к версии, извлеченной из хранилища
FreeBSD, а затем "коммититься", так как это привдет к рассинхронизации
дерева производителя и усложнит импортирование будущих версий, так как
возникнут конфликты.</para>
<para>Так как многие пакеты содержат файлы, имеющие значение при
обеспечении совместимости с другими, отличными от FreeBSD архитектурами
и окружениями, то разрешается удалять части дистрибутивного дерева,
не представляющие интереса для FreeBSD в целях уменьшения занимаемого
дискового пространства. Файлы, содержащие замечания о юридических
правах и информацию о релизе, касающуюся остальных файлов, удаляться
<emphasis>не</emphasis> должны.</para>
<para>Если это видится легким, то файлы <filename>Makefile</filename> в
стиле <command>bmake</command> могут быть сгенерированы из
дистрибутивного дерева автоматически некоторой утилитой, чем-то, что
позволит еще проще обновляться до новой версии. Если это будет
сделано, то обязательно поместите эту утилиту (если необходимо) в
каталог <filename>src/tools</filename> вместе с самим портом, чтобы
она была доступна будущим сопровождающим лицам.</para>
<para>В каталог <filename>src/contrib/tcl</filename> должен быть добавлен
файл <filename>FREEBSD-upgrade</filename>, в котором нужно перечислить
такие вещи:</para>
<itemizedlist>
<listitem>
<para>Какие файлы были оставлены</para>
</listitem>
<listitem>
<para>Где был взят оригинальный дистрибутив и/или на каком основном
официальном сайте он находится.</para>
</listitem>
<listitem>
<para>Куда посылать патчи для разработчиков пакета</para>
</listitem>
<listitem>
<para>Возможно, обзор сделанных изменений, специфичных для
FreeBSD.</para>
</listitem>
</itemizedlist>
<para>Однако, пожалуйста, не импортируйте
<filename>FREEBSD-upgrade</filename> вместе с исходными текстами
этого программного обеспечения. Вместо этого вы должны выполнить
команды <command>cvs add FREEBSD-upgrade ; cvs ci</command> после
первоначального импортирования. Ниже дается пример описания из
каталога <filename>src/contrib/cpio</filename>:</para>
<programlisting>
This directory contains virgin sources of the original distribution files
on a "vendor" branch. Do not, under any circumstances, attempt to upgrade
the files in this directory via patches and a cvs commit. New versions or
official-patch versions must be imported. Please remember to import with
"-ko" to prevent CVS from corrupting any vendor RCS Ids.
For the import of GNU cpio 2.4.2, the following files were removed:
INSTALL cpio.info mkdir.c
Makefile.in cpio.texi mkinstalldirs
To upgrade to a newer version of cpio, when it is available:
1. Unpack the new version into an empty directory.
[Do not make ANY changes to the files.]
2. Remove the files listed above and any others that don't apply to
FreeBSD.
3. Use the command:
cvs import -ko -m 'Virgin import of GNU cpio v&lt;version&gt;' \
src/contrib/cpio GNU cpio_&lt;version&gt;
For example, to do the import of version 2.4.2, I typed:
cvs import -ko -m 'Virgin import of GNU v2.4.2' \
src/contrib/cpio GNU cpio_2_4_2
4. Follow the instructions printed out in step 3 to resolve any
conflicts between local FreeBSD changes and the newer version.
Do not, under any circumstances, deviate from this procedure.
To make local changes to cpio, simply patch and commit to the main
branch (aka HEAD). Never make local changes on the GNU branch.
All local changes should be submitted to "cpio@gnu.ai.mit.edu" for
inclusion in the next vendor release.
obrien@FreeBSD.org - 30 March 1997
</programlisting>
</sect1>
<sect1 id="policies-encumbered">
<title>Нежелательные файлы</title>
<para>Иногда может быть необходимо включить некоторый нежелатеьный для
нас файл в дерево исходных текстов FreeBSD. Например, если устройство
требует загрузки в него некоторого маленького двоичного кода перед тем,
как устройство заработает, и мы не имеем исходных текстов этого кода,
то говорится, что двоичный файл является нежелательным. Для включения
нежелательных файлов в дерево исходных текстов FreeBSD имеются
следующие соглашения.</para>
<orderedlist>
<listitem>
<para>Любой файл, интерпретируемый или выполняемый системным(и) CPU,
не в форме исходного кода, является нежелательным.</para>
</listitem>
<listitem>
<para>Любой файл с лицензией, ограничивающей более, чем BSD или GNU,
является нежелательным.</para>
</listitem>
<listitem>
<para>Файл, содержащий загружаемые двоичные данные, используемые
аппаратным обеспечением, не являются нежелательными, если только
к нему не применимы условия (1) или (2). Он должен быть сохранен в
нейтральном к архитектуре формате ASCII (рекомендуется применить
утилиты file2c или uuencode).</para>
</listitem>
<listitem>
<para>Люой нежелательный файл требует особое согласие со стороны
<link linkend="staff-core">основной команды разработчиков</link> до
того, как он будет добавлен в хранилище CVS.</para>
</listitem>
<listitem>
<para>Нежелательные файлы помещаются в каталог
<filename>src/contrib</filename> или
<filename>src/sys/contrib</filename>.</para>
</listitem>
<listitem>
<para>Части одного модуля должны храниться вместе. Нет необходимости
разбивать их, если только нет совместного использования с кодом,
не являющимся нежелательным.</para>
</listitem>
<listitem>
<para>Объектные файлы именуются
<filename><replaceable>arch</replaceable>/<replaceable>filename</replaceable>.o.uu></filename>.</para>
</listitem>
<listitem>
<para>Файлы ядра;</para>
<orderedlist>
<listitem>
<para>Должны всегда упоминаться в
<filename>conf/files.*</filename> (для упрощения
построения).</para>
</listitem>
<listitem>
<para>Должны всегда присутствовать в <filename>LINT</filename>,
но <link linkend="staff-core">основная команда
разработчиков</link> решает в каждом конкретном случае, должны
ли они быть раскомментированы или нет. Конечно, позже <link
linkend="staff-core">основная команда разработчиков</link>
может изменить свое решение.</para>
</listitem>
<listitem>
<para>Вопрос о вхождении в состав релиза решается <link
linkend="staff-who">инженером, ответственным за
релиз</link>.</para>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Файлы уровня пользователя;</para>
<orderedlist>
<listitem>
<para><link linkend="staff-core">Основная команда
разработчиков</link> решает, должен ли код стать частью
выполнения команды <command>make world</command>.</para>
</listitem>
<listitem>
<para><link linkend="staff-who">Релиз-инженер</link> решает,
войдут ли они в релиз.</para>
</listitem>
</orderedlist>
</listitem>
</orderedlist>
</sect1>
<sect1 id="policies-shlib">
<title>Динамические библиотеки</title>
<para><emphasis>Текст предоставили &a.asami;, &a.peter;, и &a.obrien; 9
декабря 1996.</emphasis></para>
<para>Если вы добавляете поддержку динамических библиотек к порту или
другой части программного обеспечения, которая этой возможностью не
обладает, то номера версий должны назначаться по нижеследующим
правилам. Как правило, получающиеся номера не имеют ничего общего с
номером релиза программного обеспечения.</para>
<para>При построении динамической библиотеки используются три
принципа:</para>
<itemizedlist>
<listitem>
<para>Начинаем с <literal>1.0</literal></para>
</listitem>
<listitem>
<para>Если есть изменение, которое имеет обратную совместимость,
увеличиваем младший номер версии (заметьте, что системы ELF его
игнорируют)</para>
</listitem>
<listitem>
<para>Если есть изменение, не соблюдающее совместимость, увеличиваем
старший номер версии</para>
</listitem>
</itemizedlist>
<para>К примеру, добавление функций и исправление ошибок приводит к
увеличению младшего номера версии, а удаление функций, изменение
синтаксиса вызова функции и тому подобные изменения приводят к
изменению старшего номера версии.</para>
<para>Следуйте схеме нумерации версий в форме старший.младший
(<replaceable>x</replaceable>.<replaceable>y</replaceable>). Наш
динамический загрузчик формата a.out не умеет нормально работать с
номерами версий в форме
<replaceable>x</replaceable>.<replaceable>y</replaceable>.<replaceable>z</replaceable>.
Любой номер версии после <replaceable>y</replaceable> (то есть третье
число) полностью игнорируется при сравнении номеров версий динамических
библиотек для определения того, с какой библиотекой осуществлять
компоновку. Если есть две динамические библиотеки, отличающиеся только
<quote>микро</quote>-номером версии, то <command>ld.so</command> будет
осуществлять компоновку с наибольшим номером. Другими словами: если
вы компонуете с <filename>libfoo.so.3.3.3</filename>, то компоновщик
запишет в заголовках только <literal>3.3</literal> и будет выполнять
компоновку с любой библиотекой, начинающейся с
<replaceable>libfoo.so.3</replaceable>.<replaceable>(все, что &gt;=
3)</replaceable>.<replaceable>(наибольшее из
доступного)</replaceable>.</para>
<note>
<para><command>ld.so</command> всегда будет использовать наибольшую
<quote>младшую</quote> версию. Иными словами: он будет предпочитать
использовать <filename>libc.so.2.2</filename>, а не
<filename>libc.so.2.0</filename>, даже если программа изначально была
скомпонована с <filename>libc.so.2.0</filename>.</para>
</note>
<para>Вдобавок наш динамический компоновщик ELF совсем не работает с
младшими версиями. Однако все же нужно указывать старший и младший
номер версии, а наши файлы <filename>Makefile</filename> "сделают все
как нужно" в зависимости от типа системы.</para>
<para>Для библиотек не в составе портов, имеется наше соглашение на
изменение номера версии динамической библиотеки только один раз между
релизами. Кроме того, есть договоренность на изменение старшего
номера динамической библиотеки только один раз между главными релизами
ОС. А именно: X.0 на (X+1).0. Когда вы делаете изменение в системной
библиотеке, которое требует увеличения номера версии, посмотрите
журналы коммитов изменений в файле <filename>Makefile</filename>.
Коммиттер отвечает за то, что первое такое изменение с момента релиза
приведет к обновлению номера версии динамической библиотеки в файле
<filename>Makefile</filename>, а при других последующих изменениях
этого бы не делалось.</para>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../book.sgml" "part" "chapter")
End:
-->

File diff suppressed because it is too large Load diff

View file

@ -2,8 +2,8 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/staff/chapter.sgml,v 1.4 2000/10/05 15:59:18 phantom Exp $
Original revision: 1.114
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/staff/chapter.sgml,v 1.9 2000/11/23 17:33:22 phantom Exp $
Original revision: 1.178
-->
<!--
@ -20,8 +20,8 @@
<sect1 id="staff-core">
<title>Core çÒÕÐÐÁ FreeBSD</title>
<para>Core çÒÕÐÐÁ FreeBSD ÐÒÅÄÓÔÁ×ÌÑÅÔ ÓÏÂÏÊ &ldquo;óÏ×ÅÔ
äÉÒÅËÔÏÒÏ×&rdquo;, ÏÔ×ÅÔÓÔ×ÅÎÎÙÈ ÚÁ ÒÅÛÅÎÉÅ ×ÏÐÒÏÓÏ× Ó×ÑÚÁÎÎÙÈ
<para>Core çÒÕÐÐÁ FreeBSD ÐÒÅÄÓÔÁ×ÌÑÅÔ ÓÏÂÏÊ <quote>óÏ×ÅÔ
äÉÒÅËÔÏÒÏ×</quote>, ÏÔ×ÅÔÓÔ×ÅÎÎÙÈ ÚÁ ÒÅÛÅÎÉÅ ×ÏÐÒÏÓÏ× Ó×ÑÚÁÎÎÙÈ
ÏÂÝÉÍÉ ÃÅÌÑÍÉ ÐÒÏÅËÔÁ É ÅÇÏ ÒÕËÏ×ÏÄÓÔ×ÏÍ É ÒÕËÏ×ÏÄÓÔ×Ï <link
linkend="staff-who">ÏÔÄÅÌØÎÙÈ ÎÁÐÒÁ×ÌÅÎÉÊ</link> ÒÁÚ×ÉÔÉÑ ÐÒÏÅËÔÁ
FreeBSD.</para>
@ -33,22 +33,6 @@
<para>&a.asami;</para>
</listitem>
<listitem>
<para>&a.jmb;</para>
</listitem>
<listitem>
<para>&a.ache;</para>
</listitem>
<listitem>
<para>&a.bde;</para>
</listitem>
<listitem>
<para>&a.gibbs;</para>
</listitem>
<listitem>
<para>&a.dg;</para>
</listitem>
@ -58,19 +42,11 @@
</listitem>
<listitem>
<para>&a.phk;</para>
<para>&a.grog;</para>
</listitem>
<listitem>
<para>&a.rich;</para>
</listitem>
<listitem>
<para>&a.gpalmer;</para>
</listitem>
<listitem>
<para>&a.jdp;</para>
<para>&a.imp;</para>
</listitem>
<listitem>
@ -78,22 +54,22 @@
</listitem>
<listitem>
<para>&a.sos;</para>
<para>&a.msmith;</para>
</listitem>
<listitem>
<para>&a.rwatson;</para>
</listitem>
<listitem>
<para>&a.peter;</para>
</listitem>
<listitem>
<para>&a.wollman;</para>
</listitem>
<listitem>
<para>&a.joerg;</para>
</listitem>
</itemizedlist>
</sect1>
<!--
This list is sorted by last name, not by entity or tenure.
-->
<sect1 id="staff-committers">
<title>òÁÚÒÁÂÏÔÞÉËÉ FreeBSD</title>
@ -103,18 +79,30 @@
þÌÅÎÙ Core çÒÕÐÐÙ ÔÁËÖÅ Ñ×ÌÑÀÔÓÑ ÒÁÚÒÁÂÏÔÞÉËÁÍÉ.</para>
<itemizedlist>
<listitem>
<para>&a.akiyama;</para>
</listitem>
<listitem>
<para>&a.jmas;</para>
</listitem>
<listitem>
<para>&a.will;</para>
<para>&a.will;</para>
</listitem>
<listitem>
<para>&a.ugen;</para>
</listitem>
<listitem>
<para>&a.toshi;</para>
</listitem>
<listitem>
<para>&a.babkin;</para>
</listitem>
<listitem>
<para>&a.dbaker;</para>
</listitem>
@ -122,11 +110,15 @@
<listitem>
<para>&a.jhb;</para>
</listitem>
<listitem>
<para>&a.mbarkah;</para>
</listitem>
<listitem>
<para>&a.dougb;</para>
</listitem>
<listitem>
<para>&a.stb;</para>
</listitem>
@ -142,31 +134,51 @@
<listitem>
<para>&a.jb;</para>
</listitem>
<listitem>
<para>&a.nbm;</para>
</listitem>
<listitem>
<para>&a.jmb;</para>
</listitem>
<listitem>
<para>&a.torstenb;</para>
</listitem>
<listitem>
<para>&a.wilko;</para>
</listitem>
<listitem>
<para>&a.jake;</para>
</listitem>
<listitem>
<para>&a.dburr;</para>
</listitem>
<listitem>
<para>&a.adrian;</para>
</listitem>
<listitem>
<para>&a.charnier;</para>
</listitem>
<listitem>
<para>&a.jon;</para>
</listitem>
<listitem>
<para>&a.luoqi;</para>
</listitem>
<listitem>
<para>&a.ache;</para>
</listitem>
<listitem>
<para>&a.ejc;</para>
</listitem>
@ -176,17 +188,17 @@
</listitem>
<listitem>
<para>&a.gclarkii;</para>
<para>&a.cjh;</para>
</listitem>
<listitem>
<para>&a.archie;</para>
</listitem>
<listitem>
<para>&a.chris;</para>
</listitem>
<listitem>
<para>&a.alc;</para>
</listitem>
@ -195,6 +207,10 @@
<para>&a.cracauer;</para>
</listitem>
<listitem>
<para>&a.dec;</para>
</listitem>
<listitem>
<para>&a.adam;</para>
</listitem>
@ -202,15 +218,23 @@
<listitem>
<para>&a.bsd;</para>
</listitem>
<listitem>
<para>&a.jwd;</para>
</listitem>
<listitem>
<para>&a.dillon;</para>
</listitem>
<listitem>
<para>&a.mdodd;</para>
</listitem>
<listitem>
<para>&a.gad;</para>
</listitem>
<listitem>
<para>&a.dufault;</para>
</listitem>
@ -247,6 +271,10 @@
<para>&a.se;</para>
</listitem>
<listitem>
<para>&a.bde;</para>
</listitem>
<listitem>
<para>&a.jasone;</para>
</listitem>
@ -256,17 +284,21 @@
</listitem>
<listitem>
<para>&a.jedgar;</para>
<para>&a.jedgar;</para>
</listitem>
<listitem>
<para>&a.green;</para>
<para>&a.green;</para>
</listitem>
<listitem>
<para>&a.fenner;</para>
</listitem>
<listitem>
<para>&a.lioux;</para>
</listitem>
<listitem>
<para>&a.jfieber;</para>
</listitem>
@ -284,21 +316,21 @@
</listitem>
<listitem>
<para>&a.dirk;</para>
<para>&a.dirk;</para>
</listitem>
<listitem>
<para>&a.shige;</para>
<para>&a.shige;</para>
</listitem>
<listitem>
<para>&a.billf;</para>
</listitem>
<listitem>
<para>&a.gallatin;</para>
<para>&a.gallatin;</para>
</listitem>
<listitem>
<para>&a.patrick;</para>
</listitem>
@ -307,20 +339,24 @@
<para>&a.tg;</para>
</listitem>
<listitem>
<para>&a.gibbs;</para>
</listitem>
<listitem>
<para>&a.brandon;</para>
</listitem>
<listitem>
<para>&a.gioria;</para>
</listitem>
<listitem>
<para>&a.gioria;</para>
</listitem>
<listitem>
<para>&a.graichen;</para>
</listitem>
<listitem>
<para>&a.cg;</para>
<para>&a.cg;</para>
</listitem>
<listitem>
@ -343,6 +379,10 @@
<para>&a.mharo;</para>
</listitem>
<listitem>
<para>&a.dannyboy;</para>
</listitem>
<listitem>
<para>&a.thepish;</para>
</listitem>
@ -379,16 +419,24 @@
<para>&a.pho;</para>
</listitem>
<listitem>
<para>&a.horikawa;</para>
</listitem>
<listitem>
<para>&a.hosokawa;</para>
</listitem>
<listitem>
<para>&a.jeh;</para>
</listitem>
<listitem>
<para>&a.hsu;</para>
</listitem>
<listitem>
<para>&a.foxfair;</para>
<para>&a.foxfair;</para>
</listitem>
<listitem>
@ -398,11 +446,7 @@
<listitem>
<para>&a.mph;</para>
</listitem>
<listitem>
<para>&a.imura;</para>
</listitem>
<listitem>
<para>&a.shin;</para>
</listitem>
@ -419,6 +463,10 @@
<para>&a.mjacob;</para>
</listitem>
<listitem>
<para>&a.keith;</para>
</listitem>
<listitem>
<para>&a.gj;</para>
</listitem>
@ -427,10 +475,22 @@
<para>&a.nsj;</para>
</listitem>
<listitem>
<para>&a.trevor;</para>
</listitem>
<listitem>
<para>&a.phk;</para>
</listitem>
<listitem>
<para>&a.joe;</para>
</listitem>
<listitem>
<para>&a.cokane;</para>
</listitem>
<listitem>
<para>&a.kato;</para>
</listitem>
@ -438,7 +498,11 @@
<listitem>
<para>&a.kris;</para>
</listitem>
<listitem>
<para>&a.kiri;</para>
</listitem>
<listitem>
<para>&a.andreas;</para>
</listitem>
@ -456,11 +520,11 @@
</listitem>
<listitem>
<para>&a.reg;</para>
<para>&a.alex;</para>
</listitem>
<listitem>
<para>&a.grog;</para>
<para>&a.reg;</para>
</listitem>
<listitem>
@ -474,15 +538,15 @@
<listitem>
<para>&a.lile;</para>
</listitem>
<listitem>
<para>&a.kevlo;</para>
</listitem>
<listitem>
<para>&a.imp;</para>
<para>&a.scottl;</para>
</listitem>
<listitem>
<para>&a.ade;</para>
</listitem>
@ -496,7 +560,11 @@
</listitem>
<listitem>
<para>&a.gehenna;</para>
<para>&a.bmah;</para>
</listitem>
<listitem>
<para>&a.dwmalone;</para>
</listitem>
<listitem>
@ -516,19 +584,27 @@
</listitem>
<listitem>
<para>&a.tedm;</para>
<para>&a.sanpei;</para>
</listitem>
<listitem>
<para>&a.bmilekic;</para>
</listitem>
<listitem>
<para>&a.non;</para>
</listitem>
<listitem>
<para>&a.jim;</para>
</listitem>
<listitem>
<para>&a.marcel;</para>
</listitem>
<listitem>
<para>&a.dan;</para>
<para>&a.dan;</para>
</listitem>
<listitem>
@ -539,6 +615,10 @@
<para>&a.markm;</para>
</listitem>
<listitem>
<para>&a.rich;</para>
</listitem>
<listitem>
<para>&a.knu;</para>
</listitem>
@ -571,10 +651,26 @@
<para>&a.danny;</para>
</listitem>
<listitem>
<para>&a.okazaki;</para>
</listitem>
<listitem>
<para>&a.ljo;</para>
</listitem>
<listitem>
<para>&a.onoe;</para>
</listitem>
<listitem>
<para>&a.marko;</para>
</listitem>
<listitem>
<para>&a.gpalmer;</para>
</listitem>
<listitem>
<para>&a.fsmp;</para>
</listitem>
@ -583,6 +679,10 @@
<para>&a.smpatel;</para>
</listitem>
<listitem>
<para>&a.cp;</para>
</listitem>
<listitem>
<para>&a.wpaul;</para>
</listitem>
@ -591,14 +691,22 @@
<para>&a.alfred;</para>
</listitem>
<listitem>
<para>&a.roam;</para>
</listitem>
<listitem>
<para>&a.wes;</para>
</listitem>
<listitem>
<para>&a.cpiazza;</para>
</listitem>
<listitem>
<para>&a.jdp;</para>
</listitem>
<listitem>
<para>&a.bp;</para>
</listitem>
@ -656,21 +764,29 @@
</listitem>
<listitem>
<para>&a.asmodai;</para>
<para>&a.asmodai;</para>
</listitem>
<listitem>
<para>&a.ps;</para>
<para>&a.ps;</para>
</listitem>
<listitem>
<para>&a.sada;</para>
</listitem>
<listitem>
<para>&a.hrs;</para>
</listitem>
<listitem>
<para>&a.wsanchez;</para>
</listitem>
<listitem>
<para>&a.sos;</para>
</listitem>
<listitem>
<para>&a.nsayer;</para>
</listitem>
@ -688,21 +804,45 @@
</listitem>
<listitem>
<para>&a.simokawa;</para>
<para>&a.gshapiro;</para>
</listitem>
<listitem>
<para>&a.simokawa;</para>
</listitem>
<listitem>
<para>&a.vanilla;</para>
</listitem>
<listitem>
<para>&a.shafeeq;</para>
</listitem>
<listitem>
<para>&a.demon;</para>
</listitem>
<listitem>
<para>&a.msmith;</para>
</listitem>
<listitem>
<para>&a.ben;</para>
</listitem>
<listitem>
<para>&a.benno;</para>
</listitem>
<listitem>
<para>&a.des;</para>
</listitem>
<listitem>
<para>&a.sobomax;</para>
</listitem>
<listitem>
<para>&a.dcs;</para>
</listitem>
@ -720,21 +860,17 @@
</listitem>
<listitem>
<para>&a.karl;</para>
<para>&a.sumikawa;</para>
</listitem>
<listitem>
<para>&a.sumikawa;</para>
<para>&a.murray;</para>
</listitem>
<listitem>
<para>&a.murray;</para>
</listitem>
<listitem>
<para>&a.gsutter;</para>
</listitem>
<listitem>
<para>&a.unfurl;</para>
</listitem>
@ -771,6 +907,10 @@
<para>&a.ume;</para>
</listitem>
<listitem>
<para>&a.rv;</para>
</listitem>
<listitem>
<para>&a.hoek;</para>
</listitem>
@ -779,12 +919,20 @@
<para>&a.nectar;</para>
</listitem>
<listitem>
<para>&a.jayanth;</para>
</listitem>
<listitem>
<para>&a.swallace;</para>
</listitem>
<listitem>
<para>&a.rwatson;</para>
<para>&a.takawata;</para>
</listitem>
<listitem>
<para>&a.assar;</para>
</listitem>
<listitem>
@ -795,21 +943,38 @@
<para>&a.nate;</para>
</listitem>
<listitem>
<para>&a.wollman;</para>
</listitem>
<listitem>
<para>&a.joerg;</para>
</listitem>
<listitem>
<para>&a.kbyanc;</para>
</listitem>
<listitem>
<para>&a.yokota;</para>
</listitem>
<listitem>
<para>&a.andy;</para>
</listitem>
<listitem>
<para>&a.phantom;</para>
</listitem>
<listitem>
<para>&a.jmz;</para>
</listitem>
<listitem>
<para>&a.issei;</para>
</listitem>
</itemizedlist>
</sect1>
@ -895,6 +1060,8 @@
</listitem>
</varlistentry>
<![ %not.published; [
<varlistentry>
<term>òÅÄÁËÔÏÒ óÐÉÓËÁ éÚÍÅÎÅÎÉÊ Web ÓÅÒ×ÅÒÁ</term>
@ -903,6 +1070,8 @@
</listitem>
</varlistentry>
]]>
<varlistentry>
<term>òÅÄÁËÔÏÒ ÓÐÉÓËÁ çÒÕÐÐ ðÏÌØÚÏ×ÁÔÅÌÅÊ</term>
@ -941,14 +1110,6 @@
<title>ëÔÏ ÚÁ þÔÏ ïÔ×ÅÔÓÔ×ÅÎÅÎ</title>
<variablelist>
<varlistentry>
<term>ðÒÉÎÃÉÐÉÁÌØÎÁÑ áÒÈÉÔÅËÔÕÒÁ FreeBSD</term>
<listitem>
<para>&a.dg;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><ulink
url="http://www.FreeBSD.org/ru/docproj/docproj.html">òÕËÏ×ÏÄÉÔÅÌØ
@ -972,6 +1133,7 @@
<listitem>
<para>&a.dcs;</para>
<para>&a.jhb;</para>
</listitem>
</varlistentry>
@ -983,14 +1145,6 @@
</listitem>
</varlistentry>
<varlistentry>
<term>óÅÔÅ×ÁÑ ÐÏÄÄÅÒÖËÁ</term>
<listitem>
<para>&a.wollman;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><link linkend="eresources-mail">Postmaster</link></term>
@ -1020,7 +1174,7 @@
âÅÚÏÐÁÓÎÏÓÔÉ</ulink></term>
<listitem>
<para>&a.imp;</para>
<para>&a.kris;</para>
</listitem>
</varlistentry>
@ -1032,8 +1186,6 @@
<para>&a.peter;</para>
<para>ðÏÍÏÛÎÉË: &a.jdp;</para>
<para>íÅÖÄÕÎÁÒÏÄÎÙÊ (óÒÅÄÓÔ×Á ûÉÆÒÏ×ÁÎÉÑ): &a.markm;</para>
</listitem>
</varlistentry>
@ -1046,6 +1198,14 @@
</listitem>
</varlistentry>
<varlistentry>
<term>óÔÁÎÄÁÒÔÙ</term>
<listitem>
<para>&a.wollman;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ðÒÅÄÓÔÁ×ÉÔÅÌØ XFree86 Project, Inc.</term>
@ -1084,29 +1244,30 @@
<sect1 id="staff-ru-committers">
<title>ïÆÉÃÉÁÌØÎÙÅ ÕÞÁÓÔÎÉËÉ ðÒÏÅËÔÁ òÕÓÓËÏÊ äÏËÕÍÅÎÔÁÃÉÉ FreeBSD</title>
<para>.üÔÏ ÌÀÄÉ, ËÏÔÏÒÙÅ ÉÍÅÀÔ ÐÒÁ×Á ÄÏÓÔÕÐÁ Ë òÅÐÏÚÉÔÏÒÉÀ ðÒÏÅËÔÁ
<para>üÔÏ ÌÀÄÉ, ËÏÔÏÒÙÅ ÉÍÅÀÔ ÐÒÁ×Á ÄÏÓÔÕÐÁ Ë òÅÐÏÚÉÔÏÒÉÀ ðÒÏÅËÔÁ
òÕÓÓËÏÊ äÏËÕÍÅÎÔÁÃÉÉ FreeBSD É ÚÁÎÉÍÁÀÔÓÑ ÐÅÒÅ×ÏÄÏÍ ÓÕÝÅÓÔ×ÕÀÝÅÊ
ÄÏËÕÍÅÎÔÁÃÉÉ ÎÁ ÒÕÓÓËÉÊ ÑÚÙË.</para>
<para>(× ÁÌÆÁ×ÉÔÎÏÍ ÐÏÒÑÄËÅ, ÏÔÓÏÒÔÉÒÏ×ÁÎÏ ÐÏ ÆÁÍÉÌÉÉ):</para>
<itemizedlist>
<listitem>
<para>&a.ru.andy;</para>
</listitem>
<listitem>
<para>&a.ru.danfe;</para>
</listitem>
<listitem>
<para>&a.ru.phantom;</para>
</listitem>
<listitem>
<para>&a.ru.ru;</para>
</listitem>
<listitem>
<para>&a.ru.andy;</para>
</listitem>
<listitem>
<para>&a.ru.phantom;</para>
</listitem>
</itemizedlist>
</sect1>
</appendix>

View file

@ -1,6 +1,6 @@
#
# $FreeBSD: doc/ru_RU.KOI8-R/books/porters-handbook/Makefile,v 1.1 2000/10/17 17:25:01 phantom Exp $
# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/porters-handbook/Makefile,v 1.2 2000/09/17 15:15:41 phantom Exp $
# $FreeBSD$
# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/porters-handbook/Makefile,v 1.3 2000/11/15 17:21:30 phantom Exp $
#
# Build the FreeBSD Porter's Handbook.
#

View file

@ -2,7 +2,8 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/porters-handbook/book.sgml,v 1.38 2000/10/16 15:47:03 andy Exp $
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/porters-handbook/book.sgml,v 1.41 2000/11/15 17:00:03 phantom Exp $
Original revision: 1.124
-->
@ -365,8 +366,8 @@ lib/X11/oneko/mouse.xpm
программного обеспечения, оказавшегося в нем.</para>
</note>
<para>Мы посмотрим на ваш порт, вернет его обратно, если это будет
нужно, и включим его в дерево. Ваше имя также появится в списке
<para>Мы посмотрим на ваш порт, при необходимости вернём его обратно, а
затем включим порт в наше дерево. Ваше имя также появится в списке
&ldquo;Людей, внесших свой вклад&rdquo; в Руководстве и других
файлах. Это ли не круто?!? <!-- smiley -->:-)</para>
@ -3671,7 +3672,7 @@ CFLAGS = -Wall -Werror
<para>Пожалуйста, не создавайте дополнительных копий лицензии GNU
General Public License в нашей системе.</para>
<para>Будьте внимательны с юридическими вопросами! Не делайте из на
<para>Будьте внимательны с юридическими вопросами! Не делайте из нас
нелегальных распространителей ПО!</para>
</sect1>