Выбор кабачков для RFS
Наш продукт имеет следующую конфигурацию, процессор iMx6, 2 ГБ eMMC, 512 МБ ОЗУ, пару портов Ethernet и порты USART. Это будет 24/7 365 рабочих дней.
Мы планируем создать минимальный образ Linux (Kernel + RFS) размером от 7 до 10 МБ, оставить наше основное приложение и пользовательский драйвер ядра в отдельном разделе squashfs размером 2 МБ (поскольку именно это мы будем часто обновлять в поле мы хотим, чтобы этот раздел был отдельным и маленьким).
Другой ext4 раздел чтения / записи данных для хранения наших постоянных данных. За исключением раздела данных, мы хотим, чтобы все остальные разделы были доступны только для чтения.
Мои запросы
Поскольку у нас есть образ ОС Linux меньшего размера (ядро + RFS), можем ли мы иметь весь RFS в качестве initramfs?
Имеет ли RFS как initramfs какое-либо значение? (ОЗУ будет израсходовано больше, я думаю, около 20–30 МБ не более, учитывая, какой объем ОЗУ у нас есть, я считаю, что это не должно быть проблемой)
Другое решение - использовать RFS в качестве squashfs, это экономит место. Имеет ли вышесказанное какие-либо другие преимущества перед initramfs?
Если у нас есть squashfs, тогда нам нужно также объединить монтирование, чтобы монтировать раздел приложения только для чтения и раздел чтения / записи данных вместе.
Если мы пойдем с initramfs, то я думаю, нам не нужно реализовывать объединение монтирования. Это понимание правильно?
Это наш первый проект в Linux, поэтому я хотел бы получить отзывы от опытных людей, которые использовали такие RFS
2 ответа
@ все мы смогли достичь решения без использования unionfs или union mount. Хотя мы использовали файловую систему squashfs (только для чтения RFS), когда мы монтировали раздел ext4 в /run, он позволяет нам читать и писать. Linux обнаружил, что смонтированный раздел является разделом R/W и позволяет нам выполнять соответствующие операции, даже если RFS является файловой системой только для чтения. Я считаю, что вы должны использовать unionFS или union mount только в том случае, если вы хотите обновить части содержимого RFS только для чтения.
Я думаю, что если вы хотите поместить некоторые части RFS в оперативную память, вы должны очень тщательно продумать, что именно вы там поместите (например, для ведения журнала используется каталог /var/log/, который будет уменьшать объем оперативной памяти каждый раз, когда любой файл журнала будет быть написано).
Кроме того, насколько я помню, существует множество решений для встраиваемых систем, которые имеют такую архитектуру, как ваша: например, взгляните на системы без сохранения состояния или, возможно, вы хотите использовать UnionFS для своих целей.