3. rc.diskless файловые системы в режиме только чтения

Инициализация встраиваемой системы FreeBSD после загрузки управляется /etc/rc.diskless2 (/etc/rc.diskless1 для бездисковой загрузки посредством BOOTP). Этот начальный скрипт вызывается, если поместить в файл /etc/rc.conf такую строку:

diskless_mount=/etc/rc.diskless2

rc.diskless2 монтирует /var как файловую систему в памяти, создает указываемый список каталогов в /var при помощи команды mkdir(1), изменяет режимы доступа на некоторые из этих каталогов и помещает целый набор файлов устройств копированием на доступный для записи (опять же, это файловая система в памяти) раздел /dev. В процессе выполнения /etc/rc.diskless2, задействуется еще одна переменная rc.conf - varsize. Скрипт /etc/rc.diskless2 создает раздел /var на основе значения этой переменной из rc.conf:

varsize=8192

Запомните, что это значение указано в секторах. Создание раздела /dev при помощи /etc/rc.diskless2, однако, ограничено предопределенным значением в 4096 секторов. Легко изменить это значение непосредственно в файле /etc/rc.diskless2, хотя для каталога /dev вряд ли вам понадобится больше дискового пространства.

Важно помнить, что скрипт /etc/rc.diskless2 предполагает, что вы уже удалили ваш обычный раздел /tmp и заменили его символической ссылкой на /var/tmp. Так как tmp является одним из каталогов, создаваемых в /var скриптом /etc/rc.diskless2 и /var является файловой системой в памяти (которая монтируется с правами чтения и записи), то /tmp будет каталогом, также доступным для чтения и записи.

Тот факт, что /var и /dev являются файловыми системами, доступными для чтения и записи, является важным признаком, так как раздел / (и любые другие разделы, которые могут находиться на флэш-носителе) должен монтироваться в режиме только для чтения. Вспомните, что Разд. 1 мы касались ограничений флэш-памяти - особенно ограничений, касающихся возможностей записи. Важно не монтировать файловые системы на флэш-носителях в режимах чтения и записи, и важность отказа от файла подкачки не может быть переоценена. Файл подкачки на загруженной системе может пережечь кусок флэш-носителя менее чем за год. Частое журналирование и создание временных файлов приводят к тому же результату. Поэтому, кроме удаления записей swap и /proc из вашего файла /etc/fstab, вы должны также изменить поле параметров каждой файловой системы на ro таким образом:

# Device    Mountpoint  FStype Options   Dump Pass#
/dev/ad0s1a    /    ufs  ro    1  1
 

В результате этих изменений в среднестатистической системе несколько приложений немедленно перестанут работать. Например, порты не будут устанавливаться из дерева портов из-за отсутствия файла /var/db/port.mkversion, cron не будет нормально запускаться в результате отсутствия таблиц для него в каталоге /var, созданном /etc/rc.diskless2, а syslog и dhcp будут испытывать проблемы из-за доступа файловой системы только для чтения, а также отсутствия записей в /var, который был создан скриптом /etc/rc.diskless2. Хотя эти проблемы являются временными и обсуждаются вместе с решением проблем с запуском распространенных программных пакетов, в Разд. 6.

Важно помнить, что файловая система, которая была смонтирована только для чтения при помощи файла /etc/fstab, в любой момент может быть сделана доступной по чтению и записи выдачей команды:

# /sbin/mount -uw partition
 

и может быть возвращена к режиму доступа только для чтения по такой команде:

# /sbin/mount -ur partition
 

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.

Обновлено: 12.03.2015