FreeBSD и твердотельные устройства
Пред. |  | След.

# 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>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.