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