- "dirty" formatting changes ( space->tab substitutions,

trailing white space skips, white spaces within several
      <screen></screen> and <programlisting></programlisting>
      elements have been hit, too)

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

View file

@ -71,25 +71,25 @@
</legalnotice> </legalnotice>
&legalnotice; &legalnotice;
<abstract> <abstract>
<para>В этой статье описывается использование твердотельных дисковых <para>В этой статье описывается использование твердотельных дисковых
устройств для создания встраиваемых систем на основе &os;</para> устройств для создания встраиваемых систем на основе &os;</para>
<para>Встраиваемые системы имеют преимущество в повышенной надежности <para>Встраиваемые системы имеют преимущество в повышенной надежности
по причине отсутствия в них движущихся частей (жестких дисков). Однако, по причине отсутствия в них движущихся частей (жестких дисков).
следует принять во внимание, что системе, как правило, доступно очень Однако, следует принять во внимание, что системе, как правило, доступно
малое дисковое пространство и ограниченный объем запоминающего очень малое дисковое пространство и ограниченный объем запоминающего
устройства.</para> устройства.</para>
<para>К отдельно рассматриваемым вопросам относятся типы и характеристики <para>К отдельно рассматриваемым вопросам относятся типы и характеристики
твердотельных носителей, подходящих для использования в качестве дисков твердотельных носителей, подходящих для использования в качестве дисков
во &os;, параметры ядра, которые представляют интерес в таких во &os;, параметры ядра, которые представляют интерес в таких условиях,
условиях, механизмы <filename>rc.initdiskless</filename>, автоматизирующие механизмы <filename>rc.initdiskless</filename>, автоматизирующие
инициализацию таких систем и удовлетворяющие требованиям файловых инициализацию таких систем и удовлетворяющие требованиям файловых
систем, доступных только для чтения, а также построение файловых систем систем, доступных только для чтения, а также построение файловых систем
с нуля. Статья заканчивается описанием некоторых общих стратегий для с нуля. Статья заканчивается описанием некоторых общих стратегий для
случаев малых систем &os; и работ в режиме только для чтения.</para> случаев малых систем &os; и работ в режиме только для чтения.</para>
</abstract> </abstract>
</articleinfo> </articleinfo>
@ -118,13 +118,13 @@
могут зависеть от температуры рабочей среды.</para> могут зависеть от температуры рабочей среды.</para>
<para>В частности, мы обсудим компактные модули флэш-памяти, совместимые со <para>В частности, мы обсудим компактные модули флэш-памяти, совместимые со
стандартом ATA, которые стали весьма популярными в качестве стандартом ATA, которые стали весьма популярными в качестве носителя
носителя данных для цифровых камер. Особый интерес представляет тот данных для цифровых камер. Особый интерес представляет тот факт, что они
факт, что они соответствуют шине IDE по контактам и совместимы с набором соответствуют шине IDE по контактам и совместимы с набором команд ATA.
команд ATA. Таким образом, при помощи очень простого и дешевого адаптера Таким образом, при помощи очень простого и дешевого адаптера такие
такие устройства могут подключаться непосредственно к шине IDE устройства могут подключаться непосредственно к шине IDE компьютера.
компьютера. Если поступить таким образом, то такие операционные системы, Если поступить таким образом, то такие операционные системы, как &os;,
как &os;, распознают диск как обычный винчестер (весьма маленький).</para> распознают диск как обычный винчестер (весьма маленький).</para>
<para>Существуют и другие решения для твердотельных дисков, но их <para>Существуют и другие решения для твердотельных дисков, но их
стоимость, безвестность и сравнительная сложность использования выводят стоимость, безвестность и сравнительная сложность использования выводят
@ -132,7 +132,7 @@
</sect1> </sect1>
<sect1 id="kernel"> <sect1 id="kernel">
<title>Параметры ядра</title> <title>Параметры ядра</title>
<para>Для тех, кто создает встраиваемую систему &os;, интерес <para>Для тех, кто создает встраиваемую систему &os;, интерес
представляют несколько параметров ядра.</para> представляют несколько параметров ядра.</para>
@ -152,11 +152,9 @@
<para>Вы должны удостовериться, что в конфигурационном файле вашего ядра <para>Вы должны удостовериться, что в конфигурационном файле вашего ядра
присутствуют следующие строки:</para> присутствуют следующие строки:</para>
<programlisting> <programlisting>options MFS # Memory Filesystem
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>
</sect1> </sect1>
<sect1 id="ro-fs"> <sect1 id="ro-fs">
@ -171,7 +169,7 @@ pseudo-device md # memory disk
указываемый список каталогов в <filename>/var</filename> при помощи указываемый список каталогов в <filename>/var</filename> при помощи
команды &man.mkdir.1;, изменяет режимы доступа на некоторые из этих команды &man.mkdir.1;, изменяет режимы доступа на некоторые из этих
каталогов. В процессе выполнения каталогов. В процессе выполнения
<filename>/etc/rc.d/var</filename> задействуется еще одна переменная <filename>/etc/rc.d/var</filename> задействуется еще одна переменная
<filename>rc.conf</filename> &ndash; <literal>varsize</literal>. Скрипт <filename>rc.conf</filename> &ndash; <literal>varsize</literal>. Скрипт
<filename>/etc/rc.d/var</filename> создает раздел <filename>/etc/rc.d/var</filename> создает раздел
<filename>/var</filename> на основе значения этой переменной из <filename>/var</filename> на основе значения этой переменной из
@ -192,26 +190,22 @@ pseudo-device md # memory disk
подкачки не может быть переоценена. Файл подкачки на загруженной системе подкачки не может быть переоценена. Файл подкачки на загруженной системе
может пережечь кусок флэш-носителя менее чем за год. Частое может пережечь кусок флэш-носителя менее чем за год. Частое
журналирование и создание временных файлов приводят к тому же результату. журналирование и создание временных файлов приводят к тому же результату.
Поэтому, кроме удаления записи <literal>swap</literal> Поэтому, кроме удаления записи <literal>swap</literal> из вашего файла
из вашего файла <filename>/etc/fstab</filename>, <filename>/etc/fstab</filename>, вы должны также изменить поле параметров
вы должны также изменить поле параметров каждой файловой системы на каждой файловой системы на <literal>ro</literal> таким образом:</para>
<literal>ro</literal> таким образом:</para>
<programlisting> <programlisting># Device Mountpoint FStype Options Dump Pass#
# Device Mountpoint FStype Options Dump Pass# /dev/ad0s1a / ufs ro 1 1</programlisting>
/dev/ad0s1a / ufs ro 1 1
</programlisting>
<para>В результате этих изменений в среднестатистической системе несколько <para>В результате этих изменений в среднестатистической системе несколько
приложений немедленно перестанут работать. Например, cron не будет нормально приложений немедленно перестанут работать. Например, cron не будет
запускаться в результате отсутствия таблиц для него в каталоге нормально запускаться в результате отсутствия таблиц для него в каталоге
<filename>/var</filename>, созданном <filename>/var</filename>, созданном <filename>/etc/rc.d/var</filename>,
<filename>/etc/rc.d/var</filename>, а syslog и dhcp будут испытывать а syslog и dhcp будут испытывать проблемы из-за доступа файловой системы
проблемы из-за доступа файловой системы только для чтения, а также только для чтения, а также отсутствия записей в <filename>/var</filename>,
отсутствия записей в <filename>/var</filename>, который был создан который был создан скриптом <filename>/etc/rc.d/var</filename>. Хотя эти
скриптом <filename>/etc/rc.d/var</filename>. Хотя эти проблемы проблемы являются временными и обсуждаются вместе с решением проблем
являются временными и обсуждаются вместе с решением проблем с запуском с запуском распространенных программных пакетов, в <xref
распространенных программных пакетов, в <xref
linkend="strategies">.</para> linkend="strategies">.</para>
<para>Важно помнить, что файловая система, которая была смонтирована <para>Важно помнить, что файловая система, которая была смонтирована
@ -219,25 +213,20 @@ pseudo-device md # memory disk
любой момент может быть сделана доступной по чтению и записи выдачей любой момент может быть сделана доступной по чтению и записи выдачей
команды:</para> команды:</para>
<screen> <screen>&prompt.root; <userinput>/sbin/mount -uw <replaceable>partition</replaceable></userinput></screen>
&prompt.root; <userinput>/sbin/mount -uw <replaceable>partition</replaceable></userinput>
</screen>
<para>и может быть возвращена к режиму доступа только для чтения по такой <para>и может быть возвращена к режиму доступа только для чтения по такой
команде:</para> команде:</para>
<screen> <screen>&prompt.root; <userinput>/sbin/mount -ur <replaceable>partition</replaceable></userinput></screen>
&prompt.root; <userinput>/sbin/mount -ur <replaceable>partition</replaceable></userinput>
</screen>
</sect1> </sect1>
<sect1> <sect1>
<title>Создание файловой системы с нуля</title> <title>Создание файловой системы с нуля</title>
<para>Так как совместимые с ATA компактные флэш-карты распознаются во <para>Так как совместимые с ATA компактные флэш-карты распознаются во &os;
&os; как обычные жесткие диски IDE, как обычные жесткие диски IDE, то теоретически вы можете установить &os;
то теоретически вы можете установить &os; по сети при помощи по сети при помощи дискет kern и mfsroot или с компакт-диска.</para>
дискет kern и mfsroot или с компакт-диска.</para>
<para>Однако даже маленькая установка &os; при помощи обычных процедур <para>Однако даже маленькая установка &os; при помощи обычных процедур
установки может привести к созданию системы размером, превышающим 200 установки может привести к созданию системы размером, превышающим 200
@ -248,15 +237,15 @@ pseudo-device md # memory disk
установки.</para> установки.</para>
<para>Самым простым способом обойти это ограничение на объем является <para>Самым простым способом обойти это ограничение на объем является
установка &os; обычным образом на обычный жесткий диск. После установка &os; обычным образом на обычный жесткий диск. После окончания
окончания установки, обрежьте операционную систему до размера, который установки, обрежьте операционную систему до размера, который помещается
помещается на ваш флэш-носитель, а затем полностью заархивируйте файловую на ваш флэш-носитель, а затем полностью заархивируйте файловую систему.
систему. Следующие шаги поведут вас через процесс подготовки части Следующие шаги поведут вас через процесс подготовки части флэш-памяти
флэш-памяти для вашей заархивированной файловой системы. Запомните, что для вашей заархивированной файловой системы. Запомните, что из-за того,
из-за того, что обычная установка не выполнялась, такие операции, как что обычная установка не выполнялась, такие операции, как разбиение
разбиение на разделы, разметка, создание файловой системы и так далее на разделы, разметка, создание файловой системы и так далее должны быть
должны быть выполнены вручную. Кроме дискет kern и mfsroot вам также выполнены вручную. Кроме дискет kern и mfsroot вам также нужно
нужно воспользоваться дискетой fixit.</para> воспользоваться дискетой fixit.</para>
<procedure> <procedure>
<step> <step>
@ -264,45 +253,42 @@ pseudo-device md # memory disk
<para>После загрузки при помощи дискет kern и mfsroot, выберите пункт <para>После загрузки при помощи дискет kern и mfsroot, выберите пункт
<literal>custom</literal> из меню установки. Из следующего пункта <literal>custom</literal> из меню установки. Из следующего пункта
меню выберите <literal>partition</literal>. В меню работы с меню выберите <literal>partition</literal>. В меню работы с
разделами вы должны удалить все существующие разделы при помощи разделами вы должны удалить все существующие разделы при помощи
клавиши <keycap>d</keycap>. После удаления всех имеющихся разделов клавиши <keycap>d</keycap>. После удаления всех имеющихся разделов
создайте раздел при помощи клавиши <keycap>c</keycap> и согласитесь создайте раздел при помощи клавиши <keycap>c</keycap> и согласитесь
с предлагаемым по умолчанию размером раздела. Когда вы будете с предлагаемым по умолчанию размером раздела. Когда вы будете
опрошены на предмет типа раздела, удостоверьтесь, что значение типа опрошены на предмет типа раздела, удостоверьтесь, что значение типа
равно <literal>165</literal>. Теперь запишите эту таблицу разделов равно <literal>165</literal>. Теперь запишите эту таблицу разделов
на диск, нажав клавишу <keycap>w</keycap> (на этом экране эта опция на диск, нажав клавишу <keycap>w</keycap> (на этом экране эта опция
скрыта). Если вы используете компактную флэш-карту, скрыта). Если вы используете компактную флэш-карту, совместимую
совместимую с ATA, вы должны выбрать FreeBSD Boot Manager. Теперь с ATA, вы должны выбрать FreeBSD Boot Manager. Теперь нажмите
нажмите клавишу <keycap>q</keycap> для выхода из меню работы с клавишу <keycap>q</keycap> для выхода из меню работы с разделами.
разделами. Должно быть выдано еще раз меню для выбора менеджера Должно быть выдано еще раз меню для выбора менеджера загрузки -
загрузки - повторите то, что вы выбирали ранее.</para> повторите то, что вы выбирали ранее.</para>
</step> </step>
<step> <step>
<title>Создание файловых систем на вашем устройстве флэш-памяти</title> <title>Создание файловых систем на вашем устройстве флэш-памяти</title>
<para>Выйдите из меню установки custom, и из главного меню установки <para>Выйдите из меню установки custom, и из главного меню установки
выберите пункт <literal>fixit</literal>. После входа в режим работы выберите пункт <literal>fixit</literal>. После входа в режим работы
fixit, введите следующую команду:</para> fixit, введите следующую команду:</para>
<screen>&prompt.root; <userinput>disklabel -e /dev/ad0c</userinput></screen> <screen>&prompt.root; <userinput>disklabel -e /dev/ad0c</userinput></screen>
<para>В этот момент вы войдете в редактор vi из-под команды disklabel. <para>В этот момент вы войдете в редактор vi из-под команды disklabel.
Затем, вам нужно добавить строку <literal>a:</literal> в конце файла. Затем, вам нужно добавить строку <literal>a:</literal> в конце файла.
Эта Эта строка <literal>a:</literal> должна выглядеть примерно так:</para>
строка <literal>a:</literal> должна выглядеть примерно так:</para>
<programlisting> <programlisting>a: <replaceable>123456</replaceable> 0 4.2BSD 0 0</programlisting>
a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
</programlisting>
<para>Здесь <replaceable>123456</replaceable> является числом, в <para>Здесь <replaceable>123456</replaceable> является числом, в
точности совпадающим с тем, что характеризует размер имеющейся точности совпадающим с тем, что характеризует размер имеющейся записи
записи для <literal>c:</literal>. В общем, вы копируете существующую для <literal>c:</literal>. В общем, вы копируете существующую
строку для <literal>c:</literal> для строки <literal>a:</literal>, строку для <literal>c:</literal> для строки <literal>a:</literal>,
не забывая определить fstype как <literal>4.2BSD</literal>. не забывая определить fstype как <literal>4.2BSD</literal>.
Сохраните файл и завершите редактирование.</para> Сохраните файл и завершите редактирование.</para>
<screen>&prompt.root; <userinput>disklabel -B -r /dev/ad0c</userinput> <screen>&prompt.root; <userinput>disklabel -B -r /dev/ad0c</userinput>
&prompt.root; <userinput>newfs /dev/ad0a</userinput></screen> &prompt.root; <userinput>newfs /dev/ad0a</userinput></screen>
@ -316,50 +302,42 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
<screen>&prompt.root; <userinput>mount /dev/ad0a /flash</userinput></screen> <screen>&prompt.root; <userinput>mount /dev/ad0a /flash</userinput></screen>
<para>Подключите эту машину к сети, чтобы можно было перенести наш <para>Подключите эту машину к сети, чтобы можно было перенести наш
tar-файл и распаковать его в файловую систему на флэш-носителе. Вот tar-файл и распаковать его в файловую систему на флэш-носителе. Вот
пример того, как это можно сделать:</para> пример того, как это можно сделать:</para>
<screen> <screen>&prompt.root; <userinput>ifconfig xl0 192.168.0.10 netmask 255.255.255.0</userinput>
&prompt.root; <userinput>ifconfig xl0 192.168.0.10 netmask 255.255.255.0</userinput> &prompt.root; <userinput>route add default 192.168.0.1</userinput></screen>
&prompt.root; <userinput>route add default 192.168.0.1</userinput>
</screen>
<para>Теперь, когда машина находится в сети, перепишите ваш tar-файл. <para>Теперь, когда машина находится в сети, перепишите ваш tar-файл.
Здесь вы можете столкнуться с некоторой проблемой - если объем вашей Здесь вы можете столкнуться с некоторой проблемой - если объем вашей
флэш-памяти равен, к примеру, 128 мегабайтам, а ваш tar-файл флэш-памяти равен, к примеру, 128 мегабайтам, а ваш tar-файл
превышает 64 мегабайта, то вы не можете одновременно разместить превышает 64 мегабайта, то вы не можете одновременно разместить
tar-файл на флэш-носителе и распаковать его - вам не хватит места. tar-файл на флэш-носителе и распаковать его - вам не хватит места.
Одним из решений этой проблемы, если вы используете FTP, является Одним из решений этой проблемы, если вы используете FTP, является
распаковка файла во время его передачи по FTP. Если вы передаете распаковка файла во время его передачи по FTP. Если вы передаете
файл именно так, то вы никогда не получите на диске одновременно файл именно так, то вы никогда не получите на диске одновременно
архивный файл и его содержимое:</para> архивный файл и его содержимое:</para>
<screen> <screen><prompt>ftp></prompt> <userinput>get tarfile.tar "| tar xvf -"</userinput></screen>
<prompt>ftp></prompt> <userinput>get tarfile.tar "| tar xvf -"</userinput>
</screen>
<para>Если ваш файл обработан утилитой gzip, вы также можете этого <para>Если ваш файл обработан утилитой gzip, вы также можете этого
добиться:</para> добиться:</para>
<screen> <screen><prompt>ftp></prompt> <userinput>get tarfile.tar "| zcat | tar xvf -"</userinput></screen>
<prompt>ftp></prompt> <userinput>get tarfile.tar "| zcat | tar xvf -"</userinput>
</screen>
<para>После того, как вы получили содержимое вашей заархивированной <para>После того, как вы получили содержимое вашей заархивированной
файловой системы на файловой системе флэш-памяти, вы можете файловой системы на файловой системе флэш-памяти, вы можете
размонтировать флэш-память и выполнить перезагрузку:</para> размонтировать флэш-память и выполнить перезагрузку:</para>
<screen> <screen>&prompt.root; <userinput>cd /</userinput>
&prompt.root; <userinput>cd /</userinput>
&prompt.root; <userinput>umount /flash</userinput> &prompt.root; <userinput>umount /flash</userinput>
&prompt.root; <userinput>exit</userinput> &prompt.root; <userinput>exit</userinput></screen>
</screen>
<para>Полагая, что вы правильно настроили вашу файловую систему при <para>Полагая, что вы правильно настроили вашу файловую систему при
ее построении на обычном диске (с вашей файловой системой, ее построении на обычном диске (с вашей файловой системой,
смонтированной в режиме доступа только для чтения, и необходимыми смонтированной в режиме доступа только для чтения, и необходимыми
параметрами, присутствующими в ядре) вы должны успешно загрузить вашу параметрами, присутствующими в ядре) вы должны успешно загрузить вашу
встраиваемую систему на основе &os;.</para> встраиваемую систему на основе &os;.</para>
</step> </step>
</procedure> </procedure>
</sect1> </sect1>
@ -389,82 +367,78 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
<filename class="directory">at</filename>.</para> <filename class="directory">at</filename>.</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.initdiskless</filename> для копирования конец скрипта <filename>/etc/rc.initdiskless</filename> для копирования
этих cron-таблиц в каталог <filename>/var/cron/tabs</filename> после этих cron-таблиц в каталог <filename>/var/cron/tabs</filename> после
его создания во время инициализации системы. Вам может также его создания во время инициализации системы. Вам может также
потребоваться добавить строку, которая изменяет режимы доступа и потребоваться добавить строку, которая изменяет режимы доступа и
права на каталоги, которые вы создали, и на файлы, которые вы права на каталоги, которые вы создали, и на файлы, которые вы
скопировали в скрипте <filename>/etc/rc.initdiskless</filename>.</para> скопировали в скрипте <filename>/etc/rc.initdiskless</filename>.</para>
</sect2> </sect2>
<sect2> <sect2>
<title>syslog</title> <title>syslog</title>
<para>В файле <filename>syslog.conf</filename> задано местоположение <para>В файле <filename>syslog.conf</filename> задано местоположение
некоторых файлов протоколов, которые имеются в каталоге некоторых файлов протоколов, которые имеются в каталоге
<filename>/var/log</filename>. Эти файлы не создаются скриптом <filename>/var/log</filename>. Эти файлы не создаются скриптом
<filename>/etc/rc.d/var</filename> во время инициализации системы. <filename>/etc/rc.d/var</filename> во время инициализации системы.
Поэтому где-нибудь в скрипте <filename>/etc/rc.d/var</filename>, Поэтому где-нибудь в скрипте <filename>/etc/rc.d/var</filename>,
после секции, создающей каталоги в <filename>/var</filename>, вам нужно после секции, создающей каталоги в <filename>/var</filename>, вам нужно
добавить нечто вроде следующего:</para> добавить нечто вроде следующего:</para>
<screen> <screen>&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></screen>
&prompt.root; <userinput>chmod 0644 /var/log/*</userinput>
</screen>
</sect2> </sect2>
<sect2> <sect2>
<title>Установка портов</title> <title>Установка портов</title>
<para>Перед тем, как обсудить изменения, которые нужно сделать для <para>Перед тем, как обсудить изменения, которые нужно сделать для
успешного использования дерева портов, необходимо напомнить о том, успешного использования дерева портов, необходимо напомнить о том,
что ваши файловые системы на флэш-носителях доступны только для чтения. что ваши файловые системы на флэш-носителях доступны только для чтения.
Поэтому вам нужно временно монтировать их в режиме чтения и записи, Поэтому вам нужно временно монтировать их в режиме чтения и записи,
используя параметры командной строки, как это показано в используя параметры командной строки, как это показано в
<xref linkend="ro-fs">. Вы всегда должны перемонтировать эти файловые <xref linkend="ro-fs">. Вы всегда должны перемонтировать эти файловые
системы в режим только для чтения после окончания работ - системы в режим только для чтения после окончания работ -
излишние записи на флеш носитель могут значительно сократить его излишние записи на флеш носитель могут значительно сократить его
срок эксплуатации.</para> срок эксплуатации.</para>
<para>Чтобы можно было войти в каталог с портами и успешно выполнить <para>Чтобы можно было войти в каталог с портами и успешно выполнить
команду <command>make</command> <maketarget>install</maketarget>, команду <command>make</command> <maketarget>install</maketarget>,
необходимо создать каталог для пакаджей в необходимо создать каталог для пакаджей в файловой системе, не
файловой системе, не располагающейся в памяти, где будут храниться располагающейся в памяти, где будут храниться пакаджи между
пакаджи между перезагрузками. Так как для установки пакаджа в любом перезагрузками. Так как для установки пакаджа в любом случае требуется
случае требуется монтирование ваших файловых систем для чтения и монтирование ваших файловых систем для чтения и записи, имеет смысл
записи, имеет смысл выделить область флэш-носителя также и для записи выделить область флэш-носителя также и для записи информации
информации о пакадже.</para> о пакадже.</para>
<para>Прежде всего создайте каталог с базой данных о пакаджах. Обычно <para>Прежде всего создайте каталог с базой данных о пакаджах. Обычно
это каталог <filename>/var/db/pkg</filename>, но мы не можем разместить это каталог <filename>/var/db/pkg</filename>, но мы не можем разместить
базу именно здесь, так как она исчезнет после перезагрузки базу именно здесь, так как она исчезнет после перезагрузки
системы.</para> системы.</para>
<screen>&prompt.root; <userinput>mkdir /etc/pkg</userinput></screen> <screen>&prompt.root; <userinput>mkdir /etc/pkg</userinput></screen>
<para>Теперь в скрипт <filename>/etc/rc.d/var</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>
<screen> <screen>&prompt.root; <userinput>ln -s /etc/pkg /var/db/pkg</userinput></screen>
&prompt.root; <userinput>ln -s /etc/pkg /var/db/pkg</userinput>
</screen>
<para>Теперь каждый раз при монтировании ваших файловых систем для чтения <para>Теперь каждый раз при монтировании ваших файловых систем для чтения
и записи и установки пакаджа, команда <command>make</command> <maketarget>install</maketarget> и записи и установки пакаджа, команда <command>make</command>
будет работать, а информация о пакадже <maketarget>install</maketarget> будет работать, а информация о пакадже
будет успешно записана в каталог <filename>/etc/pkg</filename> (так как будет успешно записана в каталог <filename>/etc/pkg</filename> (так как
файловая система будет в это время смонтирована для чтения и записи), файловая система будет в это время смонтирована для чтения и записи),
который всегда будет доступным операционной системе как который всегда будет доступным операционной системе как
<filename>/var/db/pkg</filename>.</para> <filename>/var/db/pkg</filename>.</para>
</sect2> </sect2>
@ -483,37 +457,33 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
<para>Далее в статье подразумевается, <para>Далее в статье подразумевается,
что Apache сохраняет свои лог файлы в каталог <filename что Apache сохраняет свои лог файлы в каталог <filename
class="directory"><replaceable>apache_log_dir</replaceable></filename> class="directory"><replaceable>apache_log_dir</replaceable></filename>
вне каталога <filename class="directory">/var</filename>. вне каталога <filename class="directory">/var</filename>. Когда этот
Когда этот каталог расположен на файловой системе, смонтированной каталог расположен на файловой системе, смонтированной в режиме только
в режиме только для чтения, Apache не сможет сохранять лог файлы, что для чтения, Apache не сможет сохранять лог файлы, что в свою очередь
в свою очередь может вызывать проблемы в работе веб-сервера. В таком случае необходимо может вызывать проблемы в работе веб-сервера. В таком случае
добавить новый каталог к списку каталогов из необходимо добавить новый каталог к списку каталогов из
<filename>/etc/rc.d/var</filename> для их создания в каталоге <filename>/etc/rc.d/var</filename> для их создания в каталоге
<filename>/var</filename> и связать <filename>/var</filename> и связать
<filename class="directory"><replaceable>apache_log_dir</replaceable></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.d/var</filename>.</para> <filename>/etc/rc.d/var</filename>.</para>
<para>Затем добавьте в скрипт <filename>/etc/rc.d/var</filename>
после секции создания каталогов такие команды:</para>
<screen> <para>Затем добавьте в скрипт <filename>/etc/rc.d/var</filename>
&prompt.root; <userinput>chmod 0774 /var/log/apache</userinput> после секции создания каталогов такие команды:</para>
&prompt.root; <userinput>chown nobody:nobody /var/log/apache</userinput>
</screen> <screen>&prompt.root; <userinput>chmod 0774 /var/log/apache</userinput>
&prompt.root; <userinput>chown nobody:nobody /var/log/apache</userinput></screen>
<para>И наконец, удалите существующий каталог <para>И наконец, удалите существующий каталог
<filename class="directory"><replaceable>apache_install</replaceable>/logs</filename> и <filename class="directory"><replaceable>apache_install</replaceable>/logs</filename>
замените его ссылкой:</para> и замените его ссылкой:</para>
<screen> <screen>&prompt.root; <userinput>rm -rf <filename class="directory"><replaceable>apache_log_dir</replaceable></filename></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>
&prompt.root; <userinput>ln -s <filename class="directory"><replaceable>apache_log_dir</replaceable></filename></userinput>
</screen>
</sect2> </sect2>
</sect1> </sect1>
</article> </article>