ubifs filesystem что это

UBIFS

В ядре должна быть включена поддержка UBIFS :

UBIFS file system support

Строка запуска Linux :

CONFIG_CMDLINE=”console=ttyS0,115200 ubi.mtd=rootfs root=ubi:rootfs rootfstype=ubifs rootflags=bulk_read,chk_data_crc rw”

ubifs filesystem что это. Смотреть фото ubifs filesystem что это. Смотреть картинку ubifs filesystem что это. Картинка про ubifs filesystem что это. Фото ubifs filesystem что это

После первого запуска система фиксирует свои параметры во флеш. Если происходит пересборка файловой системы с другими параметрами –c и vol_size, необходимо перед прошивкой полностью очистить флешь. (лучше это делать всегда)

sudo apt-get install git-core

Скачать исходники, находясь в рабочей директории:

git clone git://git.infradead.org/mtd-utils

Инсталировать пакеты для компиляции:

sudo apt-get install liblzo2-dev uuid-dev zlib1g-dev

(для Fedora: проинсталировать zlib-devel, lzo-devel и e2fsprogs-devel)

Сборка образа

Компиляция образа из готовой файловой системы для k9k8g08u0a производится следующим скриптом:

Содержимое файла ubifs.cfg :

• vol_size : минимальный размер создаваемой файловой системы. Должен быть минимум на 3% меньше реального для того, чтобы осталось место хранения информации о плохих секторах;

• vol_name : имя раздела, должно соответствовать имени раздела, заданного в таблице в ядре Linux;

• vol_flags=autoresize : при первом запуске файловая система будет расширена до максимального имеющегося объёма;

Определение параметров

К сожалению, рекомендуемая утилита mtdinfo не даёт требуемой информации, а в документации на Nandflash её может не оказаться, поэтому сначала производится сборка с какими-либо примерно подходящими параметрами.

Например, на данной плате от mtdinfo была получена следующая информация:

Eraseblock size: 131072 bytes, 128.0 KiB

Amount of eraseblocks: 2 (262144 bytes, 256.0 KiB)

Minimum input/output unit size: 2048 bytes

Sub-page size: unknown

Bad blocks are allowed: true

Device is writable: true

Eraseblock size: 131072 bytes, 128.0 KiB

Amount of eraseblocks: 8190 (1073479680 bytes, 1023.8 MiB)

Minimum input/output unit size: 2048 bytes

Sub-page size: unknown

Bad blocks are allowed: true

Device is writable: true

PEB = Physical Erase Block size = Физический размер блока стирания.

LEB = Logical Erase Block size = Логический размер блока стирания.

Erase block size (PEB) берётся из документации на Nandflash, обычно 2048.

• Для других flashes overhead должен быть минимум 2 минимальных I/O units, если размер min. I/O unit больше или равен 64 bytes, и 2-жды по 64 bytes, выровненных к размеру min. I/O unit, если размер min. I/O unit меньше, чем 64 bytes.

Далее производится прошивка.

После запуска проверяется информация:

UBI: physical eraseblock size: 131072 bytes (128 KiB)

UBI: logical eraseblock size: 129024 bytes

UBI: smallest flash I/O unit: 2048

UBI: sub-page size: 512

При необходимости производится пересборка с новыми параметрами.

Использование образа с другой Nandflash или как заставить UBI игнорировать sub-pages

Если ваша NAND flash поддерживает sub-pages, UBI будет использовать их. Но иногда вы можете хотеть сказать UBI, чтобы она игнорировала sub-pages, например, если вы имеете UBI-образ, который был сделан для аналогичной NAND flash, но без sub-pages, или если вы только хотите запретить sub-pages для целей тестирования. Можно сделать это сделав, чтобы UBI насильно читала/писала VID header от/к началу второй страницы, взамен второй sub-page (которая используется по умолчанию). И UBI использует sub-pages только для VID headers, что достаточно.

Если вы не используете ubiattach и взамен определяете устройства MTD для подключения, используя kernel boot parameters, то вы можете задать смещение VID header после имени или номера устройства MTD. Например:

это подключит устройство MTD с именем «rootfs» (или устройство MTD номер 3) и заставит UBI читать/писать заголовки VID от/к смещению 2048, то есть во вторую страницу NAND.

Аналогично, если используется module load parameters, попробуйте

$ modprobe ubi mtd=rootfs,2048

$ modprobe ubi mtd=3,2048

Источник

УБИФС

Разработчики)Nokia с помощью Университета Сегеда
Полное имяНесортированная файловая система блочного изображения
Введено2008 ; 13 лет назад с ядром Linux 2.6.27 ( 2008 )
Структуры
Содержимое каталогаB + деревья
Пределы
Допустимые символы в именах файловЛюбой байт, кроме NUL и косой черты «/»
Функции
Вилкида
Атрибутыда
Разрешения файловой системыPOSIX
Прозрачное сжатиеда
Другой
Поддерживаемые операционные системыLinux

UBIFS хранит индексы во флеш-памяти, тогда как JFFS2 хранит индексы файловой системы в памяти. Это напрямую влияет на масштабируемость JFFS2, поскольку таблицы необходимо перестраивать каждый раз при монтировании тома. Кроме того, таблицы JFFS2 могут потреблять достаточно системной оперативной памяти, поэтому некоторые изображения могут оказаться непригодными для использования.

СОДЕРЖАНИЕ

Fastmap

В Linux 3.7 UBI был дополнен поддержкой fastmap. Fastmap поддерживает дисковую версию информации, ранее созданной в памяти, путем сканирования всего флеш-устройства. Код возвращается к предыдущему механизму полного сканирования сбоев, а старые системы UBI просто игнорируют информацию fastmap.

Источник

Русские Блоги

Файловая система Ubifs и использование mkfs.ubifs и инструмента ubinize

Ubifs фон:

Несортированная файловая система блочных образов (Unsorted Block Image File System, UBIFS) используется на твердотельных накопителях на жестком диске и конкурирует с LogFS как одна из последующих файловых систем JFFS2. Настоящая разработка началась в 2007 году, и стабильная версия была добавлена ​​в ядро ​​Linux версии 2.6.27 впервые в октябре 2008 года.

UBIFS был впервые разработан инженерами IBM и Nokia Томасом Гляйкснером и Артемом Битюцким в 2006 году специально для устранения узких мест, с которыми столкнулось устройство MTD (Memory Technology). Из-за стремительного роста Nand Flash, YAFFS и другие больше не могут контролировать пространство Nand Flash. UBIFS обрабатывает действия с устройством MTD через подсистему UBI. Как и JFFS2, UBIFS построен на устройстве MTD, поэтому он не совместим с обычными блочными устройствами. JFFS2 работает на устройствах MTD, тогда как UBIFS может работать только на томах UBI. Можно также сказать, что UBIFS включает три подсистемы:

1.MTD Subsystem:

Подсистема MTD обеспечивает доступ к флэш-чипу. Подсистема MTD обеспечивает концепцию устройства MTD, например / dev / mtdx, MTD можно рассматривать как необработанную флэш-память.

2.UBI subsystem:

Предоставляет функции выравнивания износа и управления громкостью для флэш-устройств; UBI работает на устройствах MTD и предоставляет тома UBI; UBI представляет собой высокоуровневое представление устройств MTD, защищая верхний уровень от некоторых проблем, с которыми приходится сталкиваться MTD, таких как износ и Плохое управление блоками.

3.UBIFS filesystem

Файловая система UBIFS, работающая на UBI.

ubifs filesystem что это. Смотреть фото ubifs filesystem что это. Смотреть картинку ubifs filesystem что это. Картинка про ubifs filesystem что это. Фото ubifs filesystem что это

Использование mkfs.ubifs

ubinize использования

Описание файла конфигурации
INI-file format.
The input configuration ini-file describes all the volumes which have to
be included to the output UBI image. Each volume is described in its own
section which may be named arbitrarily. The section consists on
«key=value» pairs, for example:

* size in vol_size might be specified kilobytes (KiB), megabytes (MiB), gigabytes (GiB) or bytes (no modifier);
* if «vol_size» key is absent, the volume size is assumed to be equivalent to the size of the image file (defined by «image» key);
* if the «image» is absent, the volume is assumed to be empty;

* volume alignment must not be greater than the logical eraseblock size;
* one ini file may contain arbitrary number of sections, the utility will put all the volumes which are described by these section to the output UBI image file.

Используя mkfs.ubifs и ubinize два инструмента, вы можете сделать зеркало UBIFS, выполнив следующие шаги:

1. С помощью команды mkfs.ubifs создайте папку как образ UBIFS. Конкретные команды:

Образ файловой системы UBIFS, созданный этой командой, может быть записан на NAND FLASH с помощью команды ubiwrite под u-boot.

Источник

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

UBIFS (Unsorted Block Image File System)

UBIFS (Unsorted Block Image File System)

Полное названиеUnsorted Block Image File System
Содержимое каталогаB+ trees
Limits
Разрешенные символы
в именах файлов
Any byte except NUL and forward slash «/» [ citation needed ]
Features
ВилкаYes
ПризнакиYes
Разрешения файловой системыPOSIX
Другие
Операционная системаLinux

Файловая система JFFS2 работает поверх устройств MTD, но UBIFS работает поверх томов UBI и не может работать поверх устройств MTD. Другими словами, есть 3 участвующих подсистемы:

Содержание

Особенности

Параметры монтирования

ubifs filesystem что это. Смотреть фото ubifs filesystem что это. Смотреть картинку ubifs filesystem что это. Картинка про ubifs filesystem что это. Фото ubifs filesystem что это

UBI (Unsorted Block Images) это слой управления блоком стирания для устройств flash-памяти. UBI выполняет две задачи, отслеживание блокировки flash-памяти NAND и обеспечивание выравнивания износа. Выравнивание износа распространяется на все стирания и записи на всем устройстве flash-памяти. UBI представляет логические блоки для более высоких уровней и сопоставляет их с физическими flash-блоками. UBI был написан специально для UBIFS, так что он не должен иметь дело с выравниванием износа и плохими блоками. Однако, UBI может также быть полезным с squashfs и NAND flash; Squashfs не знает о плохих блоках NAND flash. [source 1]

Документация UBI объясняет, что это не полный flash transport layer (FTL). Хотя FTL также обрабатывает плохие блоки и выравнивание износа, интерфейс, предоставляемый FTL, является блочным устройством с небольшими (обычно 512-байтовыми) секторами, которые могут быть записаны полностью независимо. Напротив, интерфейс UBI напрямую предоставляет блоки и программируемые страницы (которые имеют разные размеры и намного больше, чем типичные сектора блоков), а файловые системы, использующие UBI, должны быть осведомлены о размерах и ограничениях того, как должны быть удалены блоки до того, как они будут записаны. [source 1]

Fastmap

Настройка

Для начала нужно включить UBI и UBIFS:

Нам необходимо для работы получить пакет mtd-utils:

Операции UBIFS

Как смонтировать UBIFS

Для того чтобы смонтировать UBIFS на UBI том пишем:

монтирует том 0 на UBI устройство 1 в /mnt/ubifs, и

монтирует «rootfs» том UBI устройства 0 в /mnt/ubifs («rootfs» имя тома). Этот способ указания тома UBI является более предпочтительным, поскольку он не зависит от номера тома.

Создание UBIFS образа

Создание изображений UBIFS может быть немного сложнее, чем создание изображений JFFS2. Прежде всего, вы должны понимать, что UBIFS работает поверх UBI, который работает на вершине или MTD, который в основном представляет вашу сырую память. Это означает, что если вам нужно создать изображение, которое должно быть основано на сырой памяти, вы должны сначала создать изображение UBIFS, а затем изображение UBI. Другими словами, процесс имеет 2 шага. [source 2]

Итак, эти 2 шага представлены командами:

где ubinize.cfg включает в себя:

Некоторые пояснения команд и параметров:

Монтирование пустых томов

Для монтирования пустых томов UBI на устройстве MTD нам нужно очистить его. Мы могли бы использовать flash_eraseall, но мы не хотим терять счетчики стирания:

Загружаем модуль UBI:

Также можно уничтожить существующий том UBIFS, представленный /dev/ubi0_0, используя следующую команду:

Пример видео монтирования пустого тома ubi на mtd устройство на ОС Debian Jessie. Важное примечание: иногда невозможно замаунтить устройство к папке, так как его размер слишком мал. Как показано в примере, придется выделить раздел с большим объемом памяти.

Почему нам нужно использовать ubiformat

Первая очевидная причина заключается в том, что ubiformat сохраняет счетчики стирания, поэтому вы не теряете информацию об уровне износа при создании новых изображений. [source 2]

Другая причина более тонкая и специфическая для памяти NAND, которая имеет алгоритм вычисления ECC, который создает код ECC, не эквивалентный всем байтам 0xFF, если страница NAND содержит только байты 0xFF. Рассмотрим пример.

Как использовать mkfs.ubifs

Утилита mkfs.ubifs требует библиотеки zlib, lzo и uuid. Первые два используются для сжатия данных, а второй используется для создания универсально уникального идентификатора для файловой системы. В Fedora устанавливаются zlib-devel, lzo-devel и libuuid-devel. В старых дистрибутивах Fedora (Fedora 11 и ранее) библиотека uuid была установлена в пакете e2fsprogs-devel. В Debian устанавливайте пакеты zlib1g-dev, liblzo2-dev и uuid-dev. [source 2]

UBIFS становится медленнее, когда он заполнен?

Да, UBIFS пишет (но не читает) медленнее, когда заполнен или близок к заполнению. Есть две основные причины этого:

Как получить данные из образов UBI/UBIFS

К сожалению, на данный момент нет пользовательских инструментов, которые могут разворачивать изображения UBI и UBIFS. UBIFS нельзя также монтировать с обратной связью, потому что он не работает с блочными устройствами.

Тем не менее существуют модули ядра, которые позволяют вам создать виртуальный MTD, на который может быть смонтирован UBIFS. У вас есть два варианта:

Источник

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

UBIFS (Unsorted Block Image File System)

UBIFS (Unsorted Block Image File System)

Полное названиеUnsorted Block Image File System
Содержимое каталогаB+ trees
Limits
Разрешенные символы
в именах файлов
Any byte except NUL and forward slash «/» [ citation needed ]
Features
ВилкаYes
ПризнакиYes
Разрешения файловой системыPOSIX
Другие
Операционная системаLinux

Файловая система JFFS2 работает поверх устройств MTD, но UBIFS работает поверх томов UBI и не может работать поверх устройств MTD. Другими словами, есть 3 участвующих подсистемы:

Содержание

Особенности

Параметры монтирования

ubifs filesystem что это. Смотреть фото ubifs filesystem что это. Смотреть картинку ubifs filesystem что это. Картинка про ubifs filesystem что это. Фото ubifs filesystem что это

UBI (Unsorted Block Images) это слой управления блоком стирания для устройств flash-памяти. UBI выполняет две задачи, отслеживание блокировки flash-памяти NAND и обеспечивание выравнивания износа. Выравнивание износа распространяется на все стирания и записи на всем устройстве flash-памяти. UBI представляет логические блоки для более высоких уровней и сопоставляет их с физическими flash-блоками. UBI был написан специально для UBIFS, так что он не должен иметь дело с выравниванием износа и плохими блоками. Однако, UBI может также быть полезным с squashfs и NAND flash; Squashfs не знает о плохих блоках NAND flash. [source 1]

Документация UBI объясняет, что это не полный flash transport layer (FTL). Хотя FTL также обрабатывает плохие блоки и выравнивание износа, интерфейс, предоставляемый FTL, является блочным устройством с небольшими (обычно 512-байтовыми) секторами, которые могут быть записаны полностью независимо. Напротив, интерфейс UBI напрямую предоставляет блоки и программируемые страницы (которые имеют разные размеры и намного больше, чем типичные сектора блоков), а файловые системы, использующие UBI, должны быть осведомлены о размерах и ограничениях того, как должны быть удалены блоки до того, как они будут записаны. [source 1]

Fastmap

Настройка

Для начала нужно включить UBI и UBIFS:

Нам необходимо для работы получить пакет mtd-utils:

Операции UBIFS

Как смонтировать UBIFS

Для того чтобы смонтировать UBIFS на UBI том пишем:

монтирует том 0 на UBI устройство 1 в /mnt/ubifs, и

монтирует «rootfs» том UBI устройства 0 в /mnt/ubifs («rootfs» имя тома). Этот способ указания тома UBI является более предпочтительным, поскольку он не зависит от номера тома.

Создание UBIFS образа

Создание изображений UBIFS может быть немного сложнее, чем создание изображений JFFS2. Прежде всего, вы должны понимать, что UBIFS работает поверх UBI, который работает на вершине или MTD, который в основном представляет вашу сырую память. Это означает, что если вам нужно создать изображение, которое должно быть основано на сырой памяти, вы должны сначала создать изображение UBIFS, а затем изображение UBI. Другими словами, процесс имеет 2 шага. [source 2]

Итак, эти 2 шага представлены командами:

где ubinize.cfg включает в себя:

Некоторые пояснения команд и параметров:

Монтирование пустых томов

Для монтирования пустых томов UBI на устройстве MTD нам нужно очистить его. Мы могли бы использовать flash_eraseall, но мы не хотим терять счетчики стирания:

Загружаем модуль UBI:

Также можно уничтожить существующий том UBIFS, представленный /dev/ubi0_0, используя следующую команду:

Пример видео монтирования пустого тома ubi на mtd устройство на ОС Debian Jessie. Важное примечание: иногда невозможно замаунтить устройство к папке, так как его размер слишком мал. Как показано в примере, придется выделить раздел с большим объемом памяти.

Почему нам нужно использовать ubiformat

Первая очевидная причина заключается в том, что ubiformat сохраняет счетчики стирания, поэтому вы не теряете информацию об уровне износа при создании новых изображений. [source 2]

Другая причина более тонкая и специфическая для памяти NAND, которая имеет алгоритм вычисления ECC, который создает код ECC, не эквивалентный всем байтам 0xFF, если страница NAND содержит только байты 0xFF. Рассмотрим пример.

Как использовать mkfs.ubifs

Утилита mkfs.ubifs требует библиотеки zlib, lzo и uuid. Первые два используются для сжатия данных, а второй используется для создания универсально уникального идентификатора для файловой системы. В Fedora устанавливаются zlib-devel, lzo-devel и libuuid-devel. В старых дистрибутивах Fedora (Fedora 11 и ранее) библиотека uuid была установлена в пакете e2fsprogs-devel. В Debian устанавливайте пакеты zlib1g-dev, liblzo2-dev и uuid-dev. [source 2]

UBIFS становится медленнее, когда он заполнен?

Да, UBIFS пишет (но не читает) медленнее, когда заполнен или близок к заполнению. Есть две основные причины этого:

Как получить данные из образов UBI/UBIFS

К сожалению, на данный момент нет пользовательских инструментов, которые могут разворачивать изображения UBI и UBIFS. UBIFS нельзя также монтировать с обратной связью, потому что он не работает с блочными устройствами.

Тем не менее существуют модули ядра, которые позволяют вам создать виртуальный MTD, на который может быть смонтирован UBIFS. У вас есть два варианта:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *