Объединённое монтирование (оверлеи)
В версии 0.5.1 дистрибутива Tibbo на основе Ubuntu для LTPP3(G2) появилась поддержка объединённого монтирования (union mount).
Объединённое монтирование позволяет наложить разделы с чтением и записью поверх корневой файловой системы только для чтения, в которой находится базовая установка. Оверлеи служат временным хранилищем для ваших приложений: сами приложения находятся в основном разделе и изменены быть не могут, поэтому всегда остаются в рабочем состоянии.
Допустим, временные данные приложения хранятся в оверлее. Сброс или выключение и повторное включение питания устройства очищает оверлей, и приложение возвращается к исходной конфигурации, готовое начать заново. Благодаря этому вернуться в рабочее состояние быстро и просто, независимо от того, разрабатываете вы или эксплуатируете устройство.
Настройка разделов
Разделы оверлея нужно настроить до создания образа. Для этого есть интерактивный скрипт, включённый в наш контейнер Docker.
Если вы ещё не использовали контейнер Docker от Tibbo для настройки образа, как начать, показано в нашем обучающем видео: https://youtu.be/e0b5b6HtLbg.
Перед запуском make для создания образа выполните скрипт tb_overlayfs.sh, чтобы задать размеры разделов.
./tb_overlayfs.sh

Скрипт предложит ввести нужные размеры разделов rootfs и overlay. Чтобы принять рекомендуемое значение по умолчанию, просто нажмите enter.
Если после создания разделов rootfs и overlay в хранилище eMMC остаётся свободное место, можно создать дополнительные разделы. Скрипт предложит задать имя каждого раздела, а затем его размер. Чтобы не создавать дополнительные разделы, введите s.
Примечания:
- В именах разделов допускаются буквы, цифры и символ подчёркивания («_»).
- Если задать слишком маленький размер раздела, сборка завершится с ошибкой. Если общий размер всех разделов превышает ёмкость eMMC, процесс установки завершится с ошибкой.
Обратите внимание: скрипт не включает объединённое монтирование. Иначе вы не смогли бы обновлять систему и установленные пакеты. Как включить оверлей, когда корневая файловая система будет окончательно готова, описано в следующем разделе.
Позже, когда вы запустите make для создания образа, в конце вывода будет показан список разделов, которые создаются в хранилище eMMC вашего устройства.

Включение оверлея
После создания раздела оверлея нужно настроить систему на использование объединённого монтирования и защитить корневую файловую систему от записи. Это делается двумя переменными, значения которых задаются в окружении U-Boot после установки образа.
| Имя переменной | Описание |
| tb_overlay | Сообщает установщику расположение оверлея (например, /dev/mmcblk0p9). Это включает оверлей и объединённо монтирует его в корень («/»). Учтите, что сам оверлей монтируется в /overlay - будьте осторожны и не используйте этот каталог. |
| tb_rootfs_ro | Если установлено значение true, раздел оверлея очищается при каждой перезагрузке системы или повторном включении питания. |
Пошаговая инструкция
Прежде чем включать оверлеи, убедитесь, что ваша установка настроена на использование объединённого монтирования. Имейте в виду, что обновления systemd, скорее всего, изменят конфигурацию.
Для этого понадобится доступ к последовательной консоли.
1. Загрузите LTPP3(G2) и войдите в систему.
2. Убедитесь, что скрипт init указывает на tb_init.sh:
sudo ln -sfn /sbin/tb_init.sh /sbin/initls sbin/init -l -a
3. Перезагрузите устройство и прервите запуск нажатием любой клавиши. Вы окажетесь в приглашении U-Boot.
4. Введите следующие команды:
=> printenv b_c b_c=console=tty1 console=ttyS0,115200 earlyprintk=> setenv b_c $b_c tb_overlay=/dev/mmcblk0p9 tb_rootfs_ro=true=> setenv emmc_root root=/dev/mmcblk0p8 r rootwait=> saveenv
В результате должно появиться следующее сообщение:
Saving Environment to MMC... Writing to redundant MMC(0)... OK
5. Перезагрузите устройство или выключите и снова включите питание.