diff options
Diffstat (limited to 'documentation/content/ru/articles/solid-state/_index.adoc')
-rw-r--r-- | documentation/content/ru/articles/solid-state/_index.adoc | 91 |
1 files changed, 39 insertions, 52 deletions
diff --git a/documentation/content/ru/articles/solid-state/_index.adoc b/documentation/content/ru/articles/solid-state/_index.adoc index 6c95b718bc..19d1fada4f 100644 --- a/documentation/content/ru/articles/solid-state/_index.adoc +++ b/documentation/content/ru/articles/solid-state/_index.adoc @@ -1,13 +1,16 @@ --- -title: FreeBSD и твердотельные устройства authors: - - author: John Kozubik + - + author: 'John Kozubik' email: john@kozubik.com -copyright: 2001, 2009 The FreeBSD Documentation Project +copyright: '2001 - 2021 The FreeBSD Documentation Project' +description: 'Использование твердотельных накопителей (SSD) в FreeBSD' +tags: ["Solid State", "embedded", "FreeBSD"] +title: 'FreeBSD и твердотельные устройства (SSD)' trademarks: ["freebsd", "general"] --- -= FreeBSD и твердотельные устройства += FreeBSD и твердотельные устройства (SSD) :doctype: article :toc: macro :toclevels: 1 @@ -41,7 +44,7 @@ endif::[] [.abstract-title] Аннотация -В этой статье описывается использование твердотельных дисковых устройств для создания встраиваемых систем на основе FreeBSD +В этой статье описывается использование твердотельных дисковых устройств для создания встраиваемых систем на основе FreeBSD. Встраиваемые системы имеют преимущество в повышенной надежности по причине отсутствия в них движущихся частей (жестких дисков). Однако, следует принять во внимание, что системе, как правило, доступно очень малое дисковое пространство и ограниченный объем запоминающего устройства. @@ -71,9 +74,7 @@ toc::[] [.programlisting] .... -options MFS # Memory Filesystem options MD_ROOT # md device usable as a potential root device -pseudo-device md # memory disk .... [[ro-fs]] @@ -102,14 +103,14 @@ varsize=8192 Важно помнить, что файловая система, которая была смонтирована только для чтения при помощи файла [.filename]#/etc/fstab#, в любой момент может быть сделана доступной по чтению и записи выдачей команды: -[source,shell] +[source, shell] .... # /sbin/mount -uw partition .... и может быть возвращена к режиму доступа только для чтения по такой команде: -[source,shell] +[source, shell] .... # /sbin/mount -ur partition .... @@ -123,107 +124,93 @@ varsize=8192 Самым простым способом обойти это ограничение на объем является установка FreeBSD обычным образом на обычный жесткий диск. После окончания установки, обрежьте операционную систему до размера, который помещается на ваш флэш-носитель, а затем полностью заархивируйте файловую систему. Следующие шаги поведут вас через процесс подготовки части флэш-памяти для вашей заархивированной файловой системы. Запомните, что из-за того, что обычная установка не выполнялась, такие операции, как разбиение на разделы, разметка, создание файловой системы и так далее должны быть выполнены вручную. Кроме дискет kern и mfsroot вам также нужно воспользоваться дискетой fixit. [.procedure] +==== . Разбиение вашего флэш-носителя на разделы -+ ++ После загрузки при помощи дискет kern и mfsroot, выберите пункт `custom` из меню установки. Из следующего пункта меню выберите `partition`. В меню работы с разделами вы должны удалить все существующие разделы при помощи клавиши kbd:[d]. После удаления всех имеющихся разделов создайте раздел при помощи клавиши kbd:[c] и согласитесь с предлагаемым по умолчанию размером раздела. Когда вы будете опрошены на предмет типа раздела, удостоверьтесь, что значение типа равно `165`. Теперь запишите эту таблицу разделов на диск, нажав клавишу kbd:[w] (на этом экране эта опция скрыта). Если вы используете компактную флэш-карту, совместимую с ATA, вы должны выбрать FreeBSD Boot Manager. Теперь нажмите клавишу kbd:[q] для выхода из меню работы с разделами. Должно быть выдано еще раз меню для выбора менеджера загрузки - повторите то, что вы выбирали ранее. . Создание файловых систем на вашем устройстве флэш-памяти -+ ++ Выйдите из меню установки custom, и из главного меню установки выберите пункт `fixit`. После входа в режим работы fixit, введите следующую команду: + - -[source,shell] +[source, shell] .... # disklabel -e /dev/ad0c .... - -+ ++ В этот момент вы войдете в редактор vi из-под команды disklabel. Затем, вам нужно добавить строку `a:` в конце файла. Эта строка `a:` должна выглядеть примерно так: + [.programlisting] .... a: 123456 0 4.2BSD 0 0 .... - -+ ++ Здесь _123456_ является числом, в точности совпадающим с тем, что характеризует размер имеющейся записи для `c:`. В общем, вы копируете существующую строку для `c:` для строки `a:`, не забывая определить fstype как `4.2BSD`. Сохраните файл и завершите редактирование. + - -[source,shell] +[source, shell] .... # disklabel -B -r /dev/ad0c # newfs /dev/ad0a .... . Размещение вашей файловой системы на флэш-носителе -+ ++ Смонтируйте только что подготовленный флэш-носитель: + - -[source,shell] +[source, shell] .... # mount /dev/ad0a /flash .... - -+ ++ Подключите эту машину к сети, чтобы можно было перенести наш tar-файл и распаковать его в файловую систему на флэш-носителе. Вот пример того, как это можно сделать: + - -[source,shell] +[source, shell] .... # ifconfig xl0 192.168.0.10 netmask 255.255.255.0 # route add default 192.168.0.1 .... - -+ ++ Теперь, когда машина находится в сети, перепишите ваш tar-файл. Здесь вы можете столкнуться с некоторой проблемой - если объем вашей флэш-памяти равен, к примеру, 128 мегабайтам, а ваш tar-файл превышает 64 мегабайта, то вы не можете одновременно разместить tar-файл на флэш-носителе и распаковать его - вам не хватит места. Одним из решений этой проблемы, если вы используете FTP, является распаковка файла во время его передачи по FTP. Если вы передаете файл именно так, то вы никогда не получите на диске одновременно архивный файл и его содержимое: + - -[source,shell] +[source, shell] .... - ftp> get tarfile.tar "| tar xvf -" .... - -+ ++ Если ваш файл обработан утилитой gzip, вы также можете этого добиться: + - -[source,shell] +[source, shell] .... - ftp> get tarfile.tar "| zcat | tar xvf -" .... - -+ ++ После того, как вы получили содержимое вашей заархивированной файловой системы на файловой системе флэш-памяти, вы можете размонтировать флэш-память и выполнить перезагрузку: + - -[source,shell] +[source, shell] .... # cd / # umount /flash # exit .... - -+ -Полагая, что вы правильно настроили вашу файловую систему при ее построении на обычном диске (с вашей файловой системой, смонтированной в режиме доступа только для чтения, и необходимыми параметрами, присутствующими в ядре) вы должны успешно загрузить вашу встраиваемую систему на основе FreeBSD. ++ +При условии, что вы правильно настроили файловую систему при её создании на обычном жёстком диске (с монтированием файловых систем в режиме только для чтения и с необходимыми опциями, встроенными в ядро), ваша встраиваемая система FreeBSD теперь должна успешно загружаться. +==== [[strategies]] == Стратегии работы с системой для случаев небольших и доступных только для чтения файловых систем В <<ro-fs>> было указано, что файловая система [.filename]#/var#, создаваемая скриптом [.filename]#/etc/rc.d/var#, и наличие корневой файловой системы, доступной только для чтения, приводят к проблемам при работе многих распространенных программных пакетов, используемых во FreeBSD. В этой статье будут даны рекомендации по настройке нормальной работы cron и syslog, установке портов и веб-сервера Apache. -=== cron +=== Cron Во время загрузки содержимое каталогa [.filename]#/var# формируется скриптом [.filename]#/etc/rc.d/var# используя данные из [.filename]#/etc/mtree/BSD.var.dist#, поэтому в нем создается несколько стандартных каталогов, в числе которых - [.filename]#cron#, [.filename]#cron/tabs#, [.filename]#at#. Однако это не решает проблему с сохранением cron-таблиц между перезагрузками. Когда система перезагружается, то файловая система [.filename]#/var#, которая располагается в памяти, будет уничтожена, вместе со всеми cron-таблицами, которые вы могли там иметь. Поэтому одним из решений может стать создание cron-таблиц для пользователей, которым они нужны, монтирование вашей файловой системы [.filename]#/# в режиме чтения и записи, и копирование этих cron-таблиц в безопасное место, например, в [.filename]#/etc/tabs#, и последующее добавление строки в конец скрипта [.filename]#/etc/rc.initdiskless# для копирования этих cron-таблиц в каталог [.filename]#/var/cron/tabs# после его создания во время инициализации системы. Вам может также потребоваться добавить строку, которая изменяет режимы доступа и права на каталоги, которые вы создали, и на файлы, которые вы скопировали в скрипте [.filename]#/etc/rc.initdiskless#. -=== syslog +=== Syslog В файле [.filename]#syslog.conf# задано местоположение некоторых файлов протоколов, которые имеются в каталоге [.filename]#/var/log#. Эти файлы не создаются скриптом [.filename]#/etc/rc.d/var# во время инициализации системы. Поэтому где-нибудь в скрипте [.filename]#/etc/rc.d/var#, после секции, создающей каталоги в [.filename]#/var#, вам нужно добавить нечто вроде следующего: -[source,shell] +[source, shell] .... # touch /var/log/security /var/log/maillog /var/log/cron /var/log/messages # chmod 0644 /var/log/* @@ -231,20 +218,20 @@ ftp> get tarfile.tar "| zcat | tar xvf -" === Установка портов -Перед тем, как обсудить изменения, которые нужно сделать для успешного использования дерева портов, необходимо напомнить о том, что ваши файловые системы на флэш-носителях доступны только для чтения. Поэтому вам нужно временно монтировать их в режиме чтения и записи, используя параметры командной строки, как это показано в <<ro-fs>>. Вы всегда должны перемонтировать эти файловые системы в режим только для чтения после окончания работ - излишние записи на флеш носитель могут значительно сократить его срок эксплуатации. +Перед тем, как обсудить изменения, которые нужно сделать для успешного использования дерева портов, необходимо напомнить о том, что ваши файловые системы на флэш-носителях доступны только для чтения. Поэтому вам нужно временно монтировать их в режиме чтения и записи, используя параметры командной строки, как это показано в crossref:solid-state[ro-fs, Подсистема `rc` и файловые системы в режиме только чтения]. Вы всегда должны перемонтировать эти файловые системы в режим только для чтения после окончания работ - излишние записи на флеш носитель могут значительно сократить его срок эксплуатации. Чтобы можно было войти в каталог с портами и успешно выполнить команду make `install`, необходимо создать каталог для пакаджей в файловой системе, не располагающейся в памяти, где будут храниться пакаджи между перезагрузками. Так как для установки пакаджа в любом случае требуется монтирование ваших файловых систем для чтения и записи, имеет смысл выделить область флэш-носителя также и для записи информации о пакадже. Прежде всего создайте каталог с базой данных о пакаджах. Обычно это каталог [.filename]#/var/db/pkg#, но мы не можем разместить базу именно здесь, так как она исчезнет после перезагрузки системы. -[source,shell] +[source, shell] .... # mkdir /etc/pkg .... Теперь в скрипт [.filename]#/etc/rc.d/var# добавьте строку, которая связывает каталог [.filename]#/etc/pkg# с [.filename]#/var/db/pkg#. Например: -[source,shell] +[source, shell] .... # ln -s /etc/pkg /var/db/pkg .... @@ -264,7 +251,7 @@ ftp> get tarfile.tar "| zcat | tar xvf -" Затем добавьте в скрипт [.filename]#/etc/rc.d/var# после секции создания каталогов такие команды: -[source,shell] +[source, shell] .... # chmod 0774 /var/log/apache # chown nobody:nobody /var/log/apache @@ -272,8 +259,8 @@ ftp> get tarfile.tar "| zcat | tar xvf -" И наконец, удалите существующий каталог [.filename]#apache_install/logs# и замените его ссылкой: -[source,shell] +[source, shell] .... # rm -rf apache_log_dir -# ln -s apache_log_dir +# ln -s /var/log/apache apache_log_dir .... |