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