- MFen: solid-state/article.sgml 1.13 --> 1.18

- fix a few typos

PR: docs/145361

Approved by: maxim (mentor), marck (mentor)
This commit is contained in:
Taras Korenko 2010-07-12 11:13:30 +00:00
parent 100a0f21e3
commit fecf40468e
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=35994

View file

@ -33,7 +33,7 @@
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/solid-state/article.sgml,v 1.7 2006/03/28 16:20:06 gad Exp $
Original revision: 1.13
Original revision: 1.18
-->
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
@ -61,12 +61,12 @@
<copyright>
<year>2001</year>
<year>2009</year>
<holder>The FreeBSD Documentation Project</holder>
</copyright>
<legalnotice id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.m-systems;
&tm-attrib.general;
</legalnotice>
@ -74,22 +74,22 @@
<abstract>
<para>В этой статье описывается использование твердотельных дисковых
устройств для создания встраиваемых систем на основе FreeBSD.</para>
устройств для создания встраиваемых систем на основе &os;</para>
<para>Встраиваемые системы имеют преимущество в повышенной надежности
по причине отсутствия в них движущихся частей (жестких дисков). Однако
по причине отсутствия в них движущихся частей (жестких дисков). Однако,
следует принять во внимание, что системе, как правило, доступно очень
малое дисковое пространство и ограниченный объем запоминающего
устройства.</para>
<para>К отдельно рассматриваемым вопросам относятся типы и характеристики
твердотельных носителей, подходящих для использования в качестве дисков
во FreeBSD, параметры ядра, которые представляют интерес в таких
условиях, механизмы <filename>rc.diskless</filename>, автоматизирующие
во &os;, параметры ядра, которые представляют интерес в таких
условиях, механизмы <filename>rc.initdiskless</filename>, автоматизирующие
инициализацию таких систем и удовлетворяющие требованиям файловых
систем, доступных только для чтения, а также построение файловых систем
с нуля. Статья заканчивается описанием некоторых общих стратегий для
случаев малых систем FreeBSD и работ в режиме только для чтения.</para>
случаев малых систем &os; и работ в режиме только для чтения.</para>
</abstract>
</articleinfo>
@ -118,23 +118,13 @@
могут зависеть от температуры рабочей среды.</para>
<para>В частности, мы обсудим компактные модули флэш-памяти, совместимые со
стандартом ATA и модули флэш-памяти &diskonchip; компании M-Systems.
Совместимые с ATA компактные флэш-карты весьма популярны в качестве
стандартом ATA, которые стали весьма популярными в качестве
носителя данных для цифровых камер. Особый интерес представляет тот
факт, что они соответствуют шине IDE по контактам и совместимы с набором
команд ATA. Таким образом, при помощи очень простого и дешевого адаптера
такие устройства могут подключаться непосредственно к шине IDE
компьютера. Если поступить таки образом, то такие операционные системы,
как FreeBSD, распознают диск как обычный винчестер (весьма маленький).
Продукт M-Systems &diskonchip; основан на той же самой технологии
флэш-памяти, как и совместимые с ATA компактные флэш-карты, но отличаются
форм-фактором DIP и не совместимы с ATA. Для использования такого
устройства, вы не только должны установить его на материнскую плату с
разъемом &diskonchip;, но также встроить драйвер `fla` во все ядра
FreeBSD, с которыми хотите его использовать. Более того, в загрузочном
секторе этого устройства находится критичные данные, так что бы не должны
устанавливать загрузчик FreeBSD (и вообще какой-либо другой загрузчик)
при его использовании.</para>
компьютера. Если поступить таким образом, то такие операционные системы,
как &os;, распознают диск как обычный винчестер (весьма маленький).</para>
<para>Существуют и другие решения для твердотельных дисков, но их
стоимость, безвестность и сравнительная сложность использования выводят
@ -144,10 +134,10 @@
<sect1 id="kernel">
<title>Параметры ядра</title>
<para>Для тех. кто создает встраиваемую систему FreeBSD, интерес
<para>Для тех, кто создает встраиваемую систему &os;, интерес
представляют несколько параметров ядра.</para>
<para>Во-первых, все встраиваемые системы FreeBSD, которые используют
<para>Все встраиваемые системы &os;, которые используют
флэш-память в качестве системного диска, заинтересованы в использовании
дисков в памяти и файловых систем в памяти. Из-за ограниченного
количества циклов записи, которые можно выполнить с флэш-памятью, диск
@ -156,7 +146,7 @@
<filename>/tmp</filename> и <filename>/var</filename> монтируются как
файловые системы в памяти для того, чтобы позволить системе создать
журналы и обновить счетчики и временные файлы. Файловые системы в памяти
являются критическим компонентом успешной работы FreeBSD на твердотельных
являются критическим компонентом успешной работы &os; на твердотельных
устройствах.</para>
<para>Вы должны удостовериться, что в конфигурационном файле вашего ядра
@ -167,71 +157,43 @@ options MFS # Memory Filesystem
options MD_ROOT # md device usable as a potential root device
pseudo-device md # memory disk
</programlisting>
<para>Во-вторых, если вы будете использовать продукт M-Systems
&diskonchip;, вы должны также включить такую строку:</para>
<programlisting>device fla0 at isa?</programlisting>
</sect1>
<sect1 id="ro-fs">
<title><filename>rc.diskless</filename> файловые системы в режиме только
<title>Подсистема <literal>rc</literal> и файловые системы в режиме только
чтения</title>
<para>Инициализация встраиваемой системы FreeBSD после загрузки управляется
<filename>/etc/rc.diskless2</filename>
(<filename>/etc/rc.diskless1</filename> для бездисковой загрузки
посредством BOOTP). Этот начальный скрипт вызывается, если поместить
в файл <filename>/etc/rc.conf</filename> такую строку:</para>
<para>Инициализация встраиваемой системы &os; после загрузки управляется
<filename>/etc/rc.initdiskless</filename>.</para>
<programlisting>diskless_mount=/etc/rc.diskless2</programlisting>
<para><filename>rc.diskless2</filename> монтирует
<para><filename>/etc/rc.d/var</filename> монтирует
<filename>/var</filename> как файловую систему в памяти, создает
указываемый список каталогов в <filename>/var</filename> при помощи
команды &man.mkdir.1;, изменяет режимы доступа на некоторые из этих
каталогов и помещает целый набор файлов устройств копированием на
доступный для записи (опять же, это файловая система в памяти) раздел
<filename>/dev</filename>. В процессе выполнения
<filename>/etc/rc.diskless2</filename>, задействуется еще одна переменная
<filename>rc.conf</filename> - <literal>varsize</literal>. Скрипт
<filename>/etc/rc.diskless2</filename> создает раздел
каталогов. В процессе выполнения
<filename>/etc/rc.d/var</filename> задействуется еще одна переменная
<filename>rc.conf</filename> &ndash; <literal>varsize</literal>. Скрипт
<filename>/etc/rc.d/var</filename> создает раздел
<filename>/var</filename> на основе значения этой переменной из
<filename>rc.conf</filename>:</para>
<programlisting>varsize=8192</programlisting>
<para>Запомните, что это значение указано в секторах. Создание раздела
<filename>/dev</filename> при помощи
<filename>/etc/rc.diskless2</filename>, однако, ограничено
предопределенным значением в 4096 секторов. Легко изменить это значение
непосредственно в файле <filename>/etc/rc.diskless2</filename>, хотя
для каталога <filename>/dev</filename> вряд ли вам понадобится больше
дискового пространства.</para>
<para>Запомните, что по умолчанию это значение указано в секторах.</para>
<para>Важно помнить, что скрипт <filename>/etc/rc.diskless2</filename>
предполагает, что вы уже удалили ваш обычный раздел
<filename>/tmp</filename> и заменили его символической ссылкой на
<filename>/var/tmp</filename>. Так как <filename>tmp</filename> является
одним из каталогов, создаваемых в <filename>/var</filename> скриптом
<filename>/etc/rc.diskless2</filename> и <filename>/var</filename>
является файловой системой в памяти (которая монтируется с правами чтения
и записи), то <filename>/tmp</filename> будет каталогом, также доступным
для чтения и записи.</para>
<para>Тот факт, что <filename>/var</filename> и <filename>/dev</filename>
являются файловыми системами, доступными для чтения и записи, является
<para>Факт использования файловой системы <filename>/var</filename>
в режиме чтения и записи является
важным признаком, так как раздел <filename>/</filename> (и любые другие
разделы, которые могут находиться на флэш-носителе) должен монтироваться
в режиме только для чтения. Вспомните, что <xref linkend="intro"> мы
в режиме только для чтения. Вспомните, что в <xref linkend="intro"> мы
касались ограничений флэш-памяти - особенно ограничений, касающихся
возможностей записи. Важно не монтировать файловые системы на
флэш-носителях в режимах чтения и записи, и важность отказа от файла
подкачки не может быть переоценена. Файл подкачки на загруженной системе
может пережечь кусок флэш-носителя менее чем за год. Частое
журналирование и создание временных файлов приводят к тому же результату.
Поэтому, кроме удаления записей <literal>swap</literal> и
<literal>/proc</literal> из вашего файла <filename>/etc/fstab</filename>,
Поэтому, кроме удаления записи <literal>swap</literal>
из вашего файла <filename>/etc/fstab</filename>,
вы должны также изменить поле параметров каждой файловой системы на
<literal>ro</literal> таким образом:</para>
@ -241,15 +203,13 @@ pseudo-device md # memory disk
</programlisting>
<para>В результате этих изменений в среднестатистической системе несколько
приложений немедленно перестанут работать. Например, порты не будут
устанавливаться из дерева портов из-за отсутствия файла
<filename>/var/db/port.mkversion</filename>, cron не будет нормально
приложений немедленно перестанут работать. Например, cron не будет нормально
запускаться в результате отсутствия таблиц для него в каталоге
<filename>/var</filename>, созданном
<filename>/etc/rc.diskless2</filename>, а syslog и dhcp будут испытывать
<filename>/etc/rc.d/var</filename>, а syslog и dhcp будут испытывать
проблемы из-за доступа файловой системы только для чтения, а также
отсутствия записей в <filename>/var</filename>, который был создан
скриптом <filename>/etc/rc.diskless2</filename>. Хотя эти проблемы
скриптом <filename>/etc/rc.d/var</filename>. Хотя эти проблемы
являются временными и обсуждаются вместе с решением проблем с запуском
распространенных программных пакетов, в <xref
linkend="strategies">.</para>
@ -275,14 +235,11 @@ pseudo-device md # memory disk
<title>Создание файловой системы с нуля</title>
<para>Так как совместимые с ATA компактные флэш-карты распознаются во
FreeBSD как обычные жесткие диски IDE, как это происходит с продуктом
M-Systems &diskonchip; (когда вы запускаете ядро с встроенным драйвером
fla), то теоретически вы можете установить FreeBSD по сети при помощи
дискет kern и mfsroot или с компакт-диска. Кроме того, что вам не нужно
записывать какой бы то ни было начальный загрузчик на устройство
M-Systems, никаких дополнительных инструкций не требуется.</para>
&os; как обычные жесткие диски IDE,
то теоретически вы можете установить &os; по сети при помощи
дискет kern и mfsroot или с компакт-диска.</para>
<para>Однако даже маленькая установка FreeBSD при помощи обычных процедур
<para>Однако даже маленькая установка &os; при помощи обычных процедур
установки может привести к созданию системы размером, превышающим 200
мегабайт. Так как большинство людей используют устройства флэш-памяти
меньшего размера (128 мегабайт считается весьма большим - 32 или даже 16
@ -291,7 +248,7 @@ pseudo-device md # memory disk
установки.</para>
<para>Самым простым способом обойти это ограничение на объем является
установка FreeBSD обычным образом на обычный жесткий диск. После
установка &os; обычным образом на обычный жесткий диск. После
окончания установки, обрежьте операционную систему до размера, который
помещается на ваш флэш-носитель, а затем полностью заархивируйте файловую
систему. Следующие шаги поведут вас через процесс подготовки части
@ -299,11 +256,7 @@ pseudo-device md # memory disk
из-за того, что обычная установка не выполнялась, такие операции, как
разбиение на разделы, разметка, создание файловой системы и так далее
должны быть выполнены вручную. Кроме дискет kern и mfsroot вам также
нужно воспользоваться дискетой fixit. Если вы используете M-Systems
&diskonchip;, то ядро с дискеты kern должно иметь вкомпилированный
параметр <literal>fla</literal>, описываемый в <xref linkend="kernel">.
Пожалуйста, обратитесь к <xref linkend="kern.flp"> для получения указаний
по созданию нового ядра для <filename>kern.flp</filename>.</para>
нужно воспользоваться дискетой fixit.</para>
<procedure>
<step>
@ -319,9 +272,7 @@ pseudo-device md # memory disk
опрошены на предмет типа раздела, удостоверьтесь, что значение типа
равно <literal>165</literal>. Теперь запишите эту таблицу разделов
на диск, нажав клавишу <keycap>w</keycap> (на этом экране эта опция
скрыта). Находясь в меню выбора менеджера загрузки, обратите
внимание на выбор <literal>None</literal>, если вы используете
M-Systems &diskonchip;. Если вы используете компактную флэш-карту,
скрыта). Если вы используете компактную флэш-карту,
совместимую с ATA, вы должны выбрать FreeBSD Boot Manager. Теперь
нажмите клавишу <keycap>q</keycap> для выхода из меню работы с
разделами. Должно быть выдано еще раз меню для выбора менеджера
@ -333,38 +284,13 @@ pseudo-device md # memory disk
<para>Выйдите из меню установки custom, и из главного меню установки
выберите пункт <literal>fixit</literal>. После входа в режим работы
fixit, введите следующие команды:</para>
fixit, введите следующую команду:</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry align="center">Совместимые с ATA</entry>
<entry align="center">&diskonchip;</entry>
</row>
</thead>
<tbody>
<row>
<entry><para><screen>&prompt.root; <userinput>mknod /dev/ad0a c 116 0</userinput>
&prompt.root; <userinput>mknod /dev/ad0c c 116 2</userinput>
&prompt.root; <userinput>disklabel -e /dev/ad0c</userinput></screen></para></entry>
<entry><para><screen>&prompt.root; <userinput>mknod /dev/fla0a c 102 2</userinput>
&prompt.root; <userinput>mknod /dev/fla0c c 102 2</userinput>
&prompt.root; <userinput>disklabel -e /dev/fla0c</userinput></screen></para></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<screen>&prompt.root; <userinput>disklabel -e /dev/ad0c</userinput></screen>
<para>В этот момент вы войдете в редактор vi из-под команды disklabel.
Если вы используете &diskonchip;, то первым шагом будет изменение
значения типа около начала файла с <literal>ESDI</literal> на
<literal>DOC2K</literal>. Затем, вне зависимости от того,
используете ли вы &diskonchip; или совместимый с ATA компактный
флэш-носитель, вам нужно добавить строку <literal>a:</literal> в конце файла. Эта
Затем, вам нужно добавить строку <literal>a:</literal> в конце файла.
Эта
строка <literal>a:</literal> должна выглядеть примерно так:</para>
<programlisting>
@ -378,27 +304,8 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
не забывая определить fstype как <literal>4.2BSD</literal>.
Сохраните файл и завершите редактирование.</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry align="center">Совместимые с ATA</entry>
<entry align="center">&diskonchip;</entry>
</row>
</thead>
<tbody>
<row>
<entry><para><screen>&prompt.root; <userinput>disklabel -B -r /dev/ad0c</userinput>
&prompt.root; <userinput>newfs /dev/ad0a</userinput></screen></para></entry>
<entry><para><screen>&prompt.root; <userinput>disklabel -B -r /dev/fla0c</userinput>
&prompt.root; <userinput>newfs /dev/fla0a</userinput></screen></para></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<screen>&prompt.root; <userinput>disklabel -B -r /dev/ad0c</userinput>
&prompt.root; <userinput>newfs /dev/ad0a</userinput></screen>
</step>
<step>
@ -406,24 +313,7 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
<para>Смонтируйте только что подготовленный флэш-носитель:</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry align="center">Совместимые с ATA</entry>
<entry align="center">&diskonchip;</entry>
</row>
</thead>
<tbody>
<row>
<entry><para><screen>&prompt.root; <userinput>mount /dev/ad0a /flash</userinput></screen></para></entry>
<entry><para><screen>&prompt.root; <userinput>mount /dev/fla0a /flash</userinput></screen></para></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<screen>&prompt.root; <userinput>mount /dev/ad0a /flash</userinput></screen>
<para>Подключите эту машину к сети, чтобы можно было перенести наш
tar-файл и распаковать его в файловую систему на флэш-носителе. Вот
@ -467,114 +357,52 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
<para>Полагая, что вы правильно настроили вашу файловую систему при
ее построении на обычном диске (с вашей файловой системой,
смонтированной в режиме доступа только для чтения и необходимыми
смонтированной в режиме доступа только для чтения, и необходимыми
параметрами, присутствующими в ядре) вы должны успешно загрузить вашу
встраиваемую систему на основе FreeBSD.</para>
встраиваемую систему на основе &os;.</para>
</step>
</procedure>
</sect1>
<sect1 id="kern.flp">
<title>Построение установочной дискеты <filename>kern.flp</filename> с
драйвером fla</title>
<note>
<para>Этот раздел статьи предназначен только тем, кто использует
флэш-носители M-Systems &diskonchip;.</para>
</note>
<para>Возможно, что на загрузочная дискете <filename>kern.flp</filename>
нет ядра со встроенным драйвером <devicename>fla</devicename>, который
необходим для работы системы с &diskonchip;. Если вы загрузились с
установочных дискет и оказалось, что диски не были обнаружены, то,
вероятно, в вашем ядре отсутствует драйвер
<devicename>fla</devicename>.</para>
<para>После построения вами ядра с поддержкой <devicename>fla</devicename>,
которое имеет объем, меньший, чем 1.4 мегабайт, вы можете создать
собственный образ дискеты <filename>kern.flp</filename> с этим ядром
с помощью следующей последовательности действий:</para>
<procedure>
<step>
<para>Возьмите существующий файл образа kern.flp</para>
</step>
<step>
<para>
<screen>
&prompt.root; <userinput>vnconfig vn0c kern.flp</userinput>
</screen>
</para>
</step>
<step>
<para>
<screen>
&prompt.root; <userinput>mount /dev/vn0c /mnt</userinput>
</screen>
</para>
</step>
<step>
<para>Перепишите ваш файл ядра в каталог <filename>/mnt</filename>,
заместив при этом уже находящееся там ядро</para>
</step>
<step>
<para>
<screen>
&prompt.root; <userinput>vnconfig -d vn0c</userinput>
</screen>
</para>
</step>
</procedure>
<para>Теперь в вашем файле <filename>kern.flp</filename> находится новое
ядро.</para>
</sect1>
<sect1 id="strategies">
<title>Стратегии работы с системой для случаев небольших и доступных
только для чтения файловых систем</title>
<para>В <xref linkend="ro-fs"> было указано, что файловая система
<filename>/var</filename>, создаваемая скриптом
<filename>/etc/rc.diskless2</filename> и наличие корневой файловой
<filename>/etc/rc.d/var</filename>, и наличие корневой файловой
системы, доступной только для чтения, приводят к проблемам при работе
многих распространенных программных пакетов, используемых во FreeBSD.
многих распространенных программных пакетов, используемых во &os;.
В этой статье будут даны рекомендации по настройке нормальной работы
cron и syslog, установке портов и веб-сервера Apache.</para>
<sect2>
<title>cron</title>
<para>В файле <filename>/etc/rc.diskless2</filename> имеется переменная
<literal>var_dirs</literal>. Эта переменная задает список каталогов,
разделенных запятыми, которые будут созданы в каталоге
<filename>/var</filename> после его монтирования как файловой системы
в памяти. <filename>cron</filename> и <filename>cron/tabs</filename>
в этот список не входят, а без этих каталогов cron нормально работать
не будет. Включив <literal>cron</literal>,
<literal>cron/tabs</literal> и, может быть, даже <literal>at</literal>
и <literal>at/jobs</literal> в качестве элементов этой переменной, вы
обеспечите работу даемонов &man.cron.8; и &man.at.1;.</para>
<para>Во время загрузки содержимое каталогa
<filename class="directory">/var</filename> формируется скриптом
<filename>/etc/rc.d/var</filename> используя данные из
<filename>/etc/mtree/BSD.var.dist</filename>, поэтому в нем создается
несколько стандартных каталогов, в числе которых &mdash;
<filename class="directory">cron</filename>,
<filename class="directory">cron/tabs</filename>,
<filename class="directory">at</filename>.</para>
<para>Однако это все же не решит проблему с сохранением cron-таблиц
<para>Однако это не решает проблему с сохранением cron-таблиц
между перезагрузками. Когда система перезагружается, то файловая
система <filename>/var</filename>, которая располагается в памяти,
будет уничтожена, вместе со всеми cron-таблицами, которые вы могли там
иметь. Поэтому одним из решений может стать создание cron-таблиц для
пользователей, которым они нужны, монтирование вашей файловой системы
<filename>/</filename> в режиме чтения и записи и копирование этих
<filename>/</filename> в режиме чтения и записи, и копирование этих
cron-таблиц в безопасное место, например,
<filename>/etc/tabs</filename> и последующее добавление строки в
конец скрипта <filename>/etc/rc.diskless2</filename> для копирования
в <filename>/etc/tabs</filename>, и последующее добавление строки в
конец скрипта <filename>/etc/rc.initdiskless</filename> для копирования
этих cron-таблиц в каталог <filename>/var/cron/tabs</filename> после
его создания во время инициализации системы. Вам может также
потребоваться добавить строку, которая изменяет режимы доступа и
права на каталоги, которые вы создали и на файлы, которые вы
скопировали в скрипте <filename>/etc/rc.diskless2</filename>.</para>
права на каталоги, которые вы создали, и на файлы, которые вы
скопировали в скрипте <filename>/etc/rc.initdiskless</filename>.</para>
</sect2>
<sect2>
@ -583,8 +411,8 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
<para>В файле <filename>syslog.conf</filename> задано местоположение
некоторых файлов протоколов, которые имеются в каталоге
<filename>/var/log</filename>. Эти файлы не создаются скриптом
<filename>/etc/rc.diskless2</filename> во время инициализации системы
Поэтому где-нибудь в скрипте <filename>/etc/rc.diskless2</filename>,
<filename>/etc/rc.d/var</filename> во время инициализации системы.
Поэтому где-нибудь в скрипте <filename>/etc/rc.d/var</filename>,
после секции, создающей каталоги в <filename>/var</filename>, вам нужно
добавить нечто вроде следующего:</para>
@ -592,10 +420,6 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
&prompt.root; <userinput>touch /var/log/security /var/log/maillog /var/log/cron /var/log/messages</userinput>
&prompt.root; <userinput>chmod 0644 /var/log/*</userinput>
</screen>
<para>Вам также потребуется добавить каталог с протоколами работы к
списку каталогов, создаваемых скриптом
<filename>/etc/rc.diskless2</filename>.</para>
</sect2>
<sect2>
@ -603,7 +427,7 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
<para>Перед тем, как обсудить изменения, которые нужно сделать для
успешного использования дерева портов, необходимо напомнить о том,
что ваши файловые системе на флэш-носителях доступны только для чтения.
что ваши файловые системы на флэш-носителях доступны только для чтения.
Поэтому вам нужно временно монтировать их в режиме чтения и записи,
используя параметры командной строки, как это показано в
<xref linkend="ro-fs">. Вы всегда должны перемонтировать эти файловые
@ -612,9 +436,8 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
срок эксплуатации.</para>
<para>Чтобы можно было войти в каталог с портами и успешно выполнить
команду <command>make install</command>, необходимо наличие файла
<filename>/var/db/port.mkversion</filename>, в котором записана
правильная дата. Затем мы должны создать каталог для пакаджей в
команду <command>make</command> <maketarget>install</maketarget>,
необходимо создать каталог для пакаджей в
файловой системе, не располагающейся в памяти, где будут храниться
пакаджи между перезагрузками. Так как для установки пакаджа в любом
случае требуется монтирование ваших файловых систем для чтения и
@ -628,7 +451,7 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
<screen>&prompt.root; <userinput>mkdir /etc/pkg</userinput></screen>
<para>Теперь в скрипт <filename>/etc/rc.diskless2</filename> добавьте
<para>Теперь в скрипт <filename>/etc/rc.d/var</filename> добавьте
строку, которая связывает каталог <filename>/etc/pkg</filename> с
<filename>/var/db/pkg</filename>. Например:</para>
@ -636,25 +459,11 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
&prompt.root; <userinput>ln -s /etc/pkg /var/db/pkg</userinput>
</screen>
<para>Добавьте в скрипт <filename>/etc/rc.diskless2</filename> еще одну
строку, которая создает и копирует
<filename>/var/db/port.mkversion</filename></para>
<screen>
&prompt.root; <userinput>touch /var/db/port.mkversion</userinput>
&prompt.root; <userinput>chmod 0644 /var/db/port.mkversion</userinput>
&prompt.root; <userinput>echo <replaceable>20010412</replaceable> >> /var/db/port.mkversion</userinput>
</screen>
<para>где <replaceable>20010412</replaceable> является датой,
соответствующей вашей версии FreeBSD.</para>
<para>Теперь каждый раз при монтировании ваших файловых систем для чтения
и записи и установки пакаджа, команда <command>make install</command>
будет работать, потому что найдет подходящий файл
<filename>/var/db/port.mkversion</filename>, а информация о пакадже
и записи и установки пакаджа, команда <command>make</command> <maketarget>install</maketarget>
будет работать, а информация о пакадже
будет успешно записана в каталог <filename>/etc/pkg</filename> (так как
файловая система будут в это время смонтирована для чтения и записи),
файловая система будет в это время смонтирована для чтения и записи),
который всегда будет доступным операционной системе как
<filename>/var/db/pkg</filename>.</para>
</sect2>
@ -662,22 +471,34 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
<sect2>
<title>Веб-сервер Apache</title>
<para>Apache хранит pid-файлы и протоколы в каталоге
<filename><replaceable>apache_install</replaceable>/logs</filename>.
Так как этот каталог, без сомнения, располагается на файловой системе,
доступной только для чтения, то это работать не будет. Необходимо
добавить новый каталог к списку каталогов из
<filename>/etc/rc.diskless2</filename> для их создания в каталоге
<note>
<para>Шаги, описанные в этой части статьи, необходимо выполнить лишь
в том случае, если Apache настроен сохранять свой pid или лог файл
вне каталога <filename class="directory">/var</filename>.
С настройками по умолчанию Apache формирует свой pid файл в <filename
class="directory">/var/run/httpd.pid</filename>, а лог файлы &mdash;
в <filename class="directory">/var/log</filename>.</para>
</note>
<para>Далее в статье подразумевается,
что Apache сохраняет свои лог файлы в каталог <filename
class="directory"><replaceable>apache_log_dir</replaceable></filename>
вне каталога <filename class="directory">/var</filename>.
Когда этот каталог расположен на файловой системе, смонтированной
в режиме только для чтения, Apache не сможет сохранять лог файлы, что
в свою очередь может вызывать проблемы в работе веб-сервера. В таком случае необходимо
добавить новый каталог к списку каталогов из
<filename>/etc/rc.d/var</filename> для их создания в каталоге
<filename>/var</filename> и связать
<filename><replaceable>apache_install</replaceable>/logs</filename> с
<filename class="directory"><replaceable>apache_log_dir</replaceable></filename> с
<filename>/var/log/apache</filename>. Нужно также задать права доступа
и владельца нового каталога.</para>
<para>Сначала добавьте каталог <literal>log/apache</literal> к списку
каталогов, создаваемых скриптом
<filename>/etc/rc.diskless2</filename>.</para>
<filename>/etc/rc.d/var</filename>.</para>
<para>Затем добавьте в скрипт <filename>/etc/rc.diskless2</filename>
<para>Затем добавьте в скрипт <filename>/etc/rc.d/var</filename>
после секции создания каталогов такие команды:</para>
<screen>
@ -686,12 +507,12 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
</screen>
<para>И наконец, удалите существующий каталог
<filename><replaceable>apache_install</replaceable>/logs</filename> и
<filename class="directory"><replaceable>apache_install</replaceable>/logs</filename> и
замените его ссылкой:</para>
<screen>
&prompt.root; <userinput>rm -rf (apache_install)/logs</userinput>
&prompt.root; <userinput>ln -s /var/log/apache (apache_install)/logs</userinput>
&prompt.root; <userinput>rm -rf <filename class="directory"><replaceable>apache_log_dir</replaceable></filename></userinput>
&prompt.root; <userinput>ln -s <filename class="directory"><replaceable>apache_log_dir</replaceable></filename></userinput>
</screen>
</sect2>
</sect1>