Инструменты пользователя

Инструменты сайта


rorootfs

Адаптация Linux для Flash-карт (readonly root fs)

Введение

Для применения Linux во встраиваемых системах разумно корневую ФС сделать доступной только для чтения. При этом возможны по крайней мере 2 варианта:

  • создание законченного компактного образа read-only root fs для встраиваемых задач,
  • адаптация существующей root fs для работы на флеш-накопителе в режиме read-only с возможностью непосредственного обновления и настройки системы через временное перемонтирование в режим read-write.

В данном документе рассмотрен второй вариант.

Обнаружение фактов и инициаторов операций записи в раздел root

Включаем режим дампа операций на блочных устройствах:

# echo 1 > /proc/sys/vm/block_dump

Смотрим число операций чтения и записи с root-раздела (в данном примере mmcblk0p1):

$ vmstat -p /dev/mmcblk0p1

Эту же информацию можно получить из файла /proc/diskstats.

Мониторим (лучше в отдельном терминале) факты записи:

$ dmesg -w | grep WRITE

Основными «писателями» могут быть треды ядра kworker и jbd2. Смотреть:

Чтобы узнать файл по номеру блока: http://superuser.com/questions/490787/reverse-lookup-of-inode-file-from-offset-in-raw-device-on-linux-and-ext3-4

Изменяемые файлы и каталоги

Основные системные файлы и каталоги

Ниже приведен список файлов и каталогов, которые могут быть изменены в процессе работы системы. В последнем столбце таблицы указано возможное решение для организации read-only режима для корневого раздела. Информация приведена для ArchLinux 3.10.104-9 (2017-02) (armv7l).

Системные каталоги

Объект ТипОписание Решение
/etc/adjtime fКорректировка RTC symlink to /var/local/adjtime
/var/cache dКеш ro
/var/lib/* dОстальные каталоги ro
/var/log dКаталог журналов tmpfs
/var/ d

Каталог пользователя (/home)

Midnight Commander

Отключить автоматическое сохранение конфигурации.

systemd

Службы systemd используют каталог /var/lib/systemd. Отключить или куда-нибудь перенести файлы /var/lib/systemd/random-seed.

systemctl disable systemd-random-seed.service

Сервисы systemd могут требовать доступ на запись в /var/tmp. Каталог /var/tmp предназначен для временных файлов или каталогов, которые должны сохраняться между перезагрузками системы. Следовательно, данные, хранящиеся в /var/tmp, являются более постоянными, чем данные в /tmp [http://rus-linux.net/MyLDP/file-sys/fhs-2.2-rus/fhs-5.15.html].

К числу таких служб относятся:

  1. systemd-resolved.service
  2. systemd-timesyncd.service

resolv.conf

Проверить, что файл /etc/resolv.conf представляет собой symlink на /run/systemd/resolve/resolv.conf. Используется службой systemd-resolved.service.

X.org

X.org создает обычно лог-файлы в каталоге /var/log/.

Добавить опцию -logfile /tmp/Xorg.log при старте X в файле /etc/X11/xinit/xserverrc. Но это может и не работать.

Изменение /etc/fstab

Согласно предложенному решению, в файл /etc/fstab необходимо добавить строки:

tmpfs /var/log tmpfs defaults 0 0

Изменение параметров ядра Linux

Для ArchLinux на Odroid-C1+:

В файле /boot/boot.ini в строке

setenv bootargs "console=tty0 ..."

заменить root=/dev/mmcblk0p1 rootwait rw … на root=/dev/mmcblk0p1 rootwait ro ….

Источники

rorootfs.txt · Последние изменения: 2017/02/23 11:41 — reug