Файловая система OpenWRT

OpenWrt использует комбинацию из двух файловых систем SquashFS и JFFS2, причем ядро Linux не находится ни в одной из них; вместо этого в процессе генерации прошивки его исполняемый файл сжимается с помощью алгоритма LZMA, после чего получившийся файл сжимается с помощью алгоритма gzip и записывается в область постоянной памяти без использования какой-либо файловой системы.

Обе файловые системы, и SquashFS и JFFS2, используют алгоритм сжатия LZMA. Файловая система SquashFS предназначена для использования в режиме только для чтения, JFFS2 - в режиме чтения и записи с поддержкой журнала. В процессе разработки прошивки основные программные компоненты помещаются в файловую систему SquashFS, в то же время, пользователю предоставляется возможность установки дополнительных компонентов в файловую систему JFFS2. При этом пользователь не видит границ между упомянутыми файловыми системами - файлы просто копируются в файловую систему JFFS2 при их изменении.

Вообще, данный подход не лишен недостатков. Один из них заключается в том, что при изменении прошивки меняется позиция раздела с файловой системой JFFS2, что приводит к повреждению данных в нем. По этой причине при каждой смене прошивки устройства раздел с файловой системой JFFS2 создается по новой. Для этого используется специальное значение 0xdeadc0de; если оно появляется в разделе с файловой системой JFFS2, весь раздел очищается и в нем создается новая файловая система. Поэтому значение 0xdeadc0de в конце файла прошивки превращается в начало раздела с файловой системой JFFS2.

Еще один недостаток связан с менеджером пакетов. Хотя opkg и может устанавливать пакеты на раздел с файловой системой JFFS2, он не может удалять пакеты с раздела с файловой системой SquashFS. При этом opkg не может рассчитать точное количество оставшегося после установки свободного места на разделе с файловой системой JFFS2, так как она использует сжатие, и устанавливает пакеты в любом случае вплоть до ее заполнения. Ну а при заполнении этой файловой системы может случиться так, что opkg не сможет удалить какой-либо пакет, поэтому не стоит злоупотреблять дополнительными пакетами.

А это пример файловой системы.

Файловая система и памятÑÂÂÂÂŒ OpenWRT
Файловая система и память OpenWRT