- "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

@ -77,15 +77,15 @@
устройств для создания встраиваемых систем на основе &os;</para>
<para>Встраиваемые системы имеют преимущество в повышенной надежности
по причине отсутствия в них движущихся частей (жестких дисков). Однако,
следует принять во внимание, что системе, как правило, доступно очень
малое дисковое пространство и ограниченный объем запоминающего
по причине отсутствия в них движущихся частей (жестких дисков).
Однако, следует принять во внимание, что системе, как правило, доступно
очень малое дисковое пространство и ограниченный объем запоминающего
устройства.</para>
<para>К отдельно рассматриваемым вопросам относятся типы и характеристики
твердотельных носителей, подходящих для использования в качестве дисков
во &os;, параметры ядра, которые представляют интерес в таких
условиях, механизмы <filename>rc.initdiskless</filename>, автоматизирующие
во &os;, параметры ядра, которые представляют интерес в таких условиях,
механизмы <filename>rc.initdiskless</filename>, автоматизирующие
инициализацию таких систем и удовлетворяющие требованиям файловых
систем, доступных только для чтения, а также построение файловых систем
с нуля. Статья заканчивается описанием некоторых общих стратегий для
@ -118,13 +118,13 @@
могут зависеть от температуры рабочей среды.</para>
<para>В частности, мы обсудим компактные модули флэш-памяти, совместимые со
стандартом ATA, которые стали весьма популярными в качестве
носителя данных для цифровых камер. Особый интерес представляет тот
факт, что они соответствуют шине IDE по контактам и совместимы с набором
команд ATA. Таким образом, при помощи очень простого и дешевого адаптера
такие устройства могут подключаться непосредственно к шине IDE
компьютера. Если поступить таким образом, то такие операционные системы,
как &os;, распознают диск как обычный винчестер (весьма маленький).</para>
стандартом ATA, которые стали весьма популярными в качестве носителя
данных для цифровых камер. Особый интерес представляет тот факт, что они
соответствуют шине IDE по контактам и совместимы с набором команд ATA.
Таким образом, при помощи очень простого и дешевого адаптера такие
устройства могут подключаться непосредственно к шине IDE компьютера.
Если поступить таким образом, то такие операционные системы, как &os;,
распознают диск как обычный винчестер (весьма маленький).</para>
<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">
@ -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>
@ -272,11 +261,11 @@ pseudo-device md # memory disk
опрошены на предмет типа раздела, удостоверьтесь, что значение типа
равно <literal>165</literal>. Теперь запишите эту таблицу разделов
на диск, нажав клавишу <keycap>w</keycap> (на этом экране эта опция
скрыта). Если вы используете компактную флэш-карту,
совместимую с ATA, вы должны выбрать FreeBSD Boot Manager. Теперь
нажмите клавишу <keycap>q</keycap> для выхода из меню работы с
разделами. Должно быть выдано еще раз меню для выбора менеджера
загрузки - повторите то, что вы выбирали ранее.</para>
скрыта). Если вы используете компактную флэш-карту, совместимую
с ATA, вы должны выбрать FreeBSD Boot Manager. Теперь нажмите
клавишу <keycap>q</keycap> для выхода из меню работы с разделами.
Должно быть выдано еще раз меню для выбора менеджера загрузки -
повторите то, что вы выбирали ранее.</para>
</step>
<step>
@ -290,16 +279,13 @@ pseudo-device md # memory disk
<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>c:</literal> для строки <literal>a:</literal>,
не забывая определить fstype как <literal>4.2BSD</literal>.
Сохраните файл и завершите редактирование.</para>
@ -319,10 +305,8 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
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-файл.
Здесь вы можете столкнуться с некоторой проблемой - если объем вашей
@ -334,26 +318,20 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
файл именно так, то вы никогда не получите на диске одновременно
архивный файл и его содержимое:</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>
<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>
<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>Полагая, что вы правильно настроили вашу файловую систему при
ее построении на обычном диске (с вашей файловой системой,
@ -416,10 +394,8 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
после секции, создающей каталоги в <filename>/var</filename>, вам нужно
добавить нечто вроде следующего:</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>
@ -437,12 +413,12 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
<para>Чтобы можно было войти в каталог с портами и успешно выполнить
команду <command>make</command> <maketarget>install</maketarget>,
необходимо создать каталог для пакаджей в
файловой системе, не располагающейся в памяти, где будут храниться
пакаджи между перезагрузками. Так как для установки пакаджа в любом
случае требуется монтирование ваших файловых систем для чтения и
записи, имеет смысл выделить область флэш-носителя также и для записи
информации о пакадже.</para>
необходимо создать каталог для пакаджей в файловой системе, не
располагающейся в памяти, где будут храниться пакаджи между
перезагрузками. Так как для установки пакаджа в любом случае требуется
монтирование ваших файловых систем для чтения и записи, имеет смысл
выделить область флэш-носителя также и для записи информации
о пакадже.</para>
<para>Прежде всего создайте каталог с базой данных о пакаджах. Обычно
это каталог <filename>/var/db/pkg</filename>, но мы не можем разместить
@ -455,13 +431,11 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
строку, которая связывает каталог <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>
будет работать, а информация о пакадже
и записи и установки пакаджа, команда <command>make</command>
<maketarget>install</maketarget> будет работать, а информация о пакадже
будет успешно записана в каталог <filename>/etc/pkg</filename> (так как
файловая система будет в это время смонтирована для чтения и записи),
который всегда будет доступным операционной системе как
@ -483,16 +457,16 @@ 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> к списку
каталогов, создаваемых скриптом
@ -501,19 +475,15 @@ a: <replaceable>123456</replaceable> 0 4.2BSD 0 0
<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>
<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>