Быстро поднятое не считается упавшим. Повышаем отказоустойчивость встраиваемых систем / Хабр

Расширение .ubi

1 расширения(ы) и 0 псевдоним(ы) в нашей базе данных

Ниже вы можете найти ответы на следующие вопросы:

  • Что такое .ubi файл?
  • Какая программа может создать .ubi файл?
  • Где можно найти описание .ubi формат?
  • Что может конвертировать .ubi файлы в другой формат?
  • Какие MIME-тип связан с .ubi расширение?

Другие типы файлов могут также использовать .ubi расширение файла. Если у вас есть полезная информация о .ubi расширение, написать нам!

Расширение .ubi

Возможно ли, что расширение файла с ошибками?

Мы нашли следующие похожие расширения в нашей базе:

.ui

QT User Interface File

.ubl

TI DaVinci User Boot Loader

.bi

OpenEdge ABL Before Image

.uni

MikMod UniMOD Music Module

.hbi

Handy Backup Index File

.ufi

UFOCapture V2 Settings

.ubi Расширение файла часто дается неправильно!

Согласно поисках на нашем сайте, эти опечатки были наиболее распространенными в прошлом году:

bi (8), uni (8), ui (6), ufi (6), ubl (6), ugi (4), jbi (4), hbi (3), ubj (2), ub (1), ubu (1), ubk (1), kbi (1), ibi (1)

Не удается открыть .ubi файл?

Если вы хотите открыть .ubi файл на вашем компьютере, вам просто необходимо иметь соответствующие программы установлены. Если ubi Ассоциации установлены неправильно, вы можете получить следующее сообщение об ошибке:

Не удалось открыть этот файл:

файла: Например.ubi

Чтобы открыть этот файл, Windows необходимо знать, какую программу вы хотите использовать, чтобы открыть его. Окна могут выходить в интернет, чтобы искать его автоматически, или вы можете вручную выбрать из списка программ, установленных на вашем компьютере.

Чтобы изменить ассоциации файлов:

  • Щелкните правой кнопкой мыши файл с расширением чье сотрудничество вы хотите изменить, а затем нажмите Открыть с.
  • В Открыть с помощью диалоговое окно, выберите программу ти котором вы хотите, чтобы открыть файл, или нажмите Обзор, чтобы найти программу, которую вы хотите.
  • Выберите Всегда использовать выбранную программу, чтобы открыть такой файл флажок.

Поддерживаемые операционные системы

Windows Server 2003/2008/2012, Windows 7, Windows 8, Linux, FreeBSD, NetBSD, OpenBSD, Mac OS X, iOS, Android

Оцените эту страницу

4 / 5 на основе 24 оценки пользователей.

.ubi

UBI Filesystem Image

UBI file is an UBI Filesystem Image. UBI stands for "Unsorted Block Images". UBIFS is a flash file system, which means it is designed to work with flash devices.

Описание ссылки

Категория: Образ диска файлы

Область применения:Linux Kernel

Название программы: —

MIME-тип: application/octet-stream

Магия байт (HEX): —

Магия строки (ASCII): —

Синонимы:

ubifs

Ссылки:

Расширения, связанные с:

.ext2

EXT2 Filesystem Image

.ext3

EXT3 Filesystem Image

.ext4

EXT4 Filesystem Image

Форум русскоязычного сообщества Ubuntu

Загрузка ядра и фс из юбут.

Юбут после исполнения должен передать управление ядру линукс, которое в свую очередь после загрузки должно подмонтировать корневую файловую систему.

За то где распологается ядро линункс и корневая файловая система отвечают такие переменные юбута как bootargs и bootcmd.

Обычно в готовых устройствах образ ядра линукс в формате uImage и образ ФС распологаются на флешке.

Тогда для варианта загрузки с nand-flash и использования ubifs, переменные юбута будут иметь следующий вид:

set bootargs ‘console=ttyS0,115200 ubi.mtd=2 root=ubi0:rootfsU rootfstype=ubifs init=/etc/preinit’ set bootcmd ‘nand read.e $(loadaddr) kernel; bootm $(loadaddr)’

Пример скрипта для формирования ubi образа:

#!/bin/sh mkfs.ubifs -q -r $WORKING_DIR/openWrtSMV628/build_dir/target-arm_v5te_uClibc-0.9.33.2_eabi/root-smv628 -m 2048 -e 129024 -c 2047 -o ubifs.img ubinize -o /home/dima/Tftpboot/mrv/brd6282/ubi.img -m 2048 -p 128KiB -s 512 ubinize.cfg

Для варианта с nor-flash и файловой системы в формате jffs2 переменные юбут выглядят так:

set bootargs ‘console=ttyS0,115200 root=/dev/mtdblock2 rootfstype=jffs2 loglevel=7 init=/etc/preinit’ set bootcmd ‘bootm 0xf8100000’

Пример скрипта для формирования jffs2 образа:

#!/bin/sh $WORKING_DIR/openWrtSMV628/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2 \ -x lzma rtime —squash -e0x40000 \ -d $WORKING_DIR/openWrtSMV628/build_dir/target-arm_v5te_uClibc-0.9.33.2_eabi/root-smv628 \ -o /home/dima/Tftpboot/mrv/brd6282/rootfs.jffs2

Еще одним вариантом загрузки может быть когда файловая система распологается на внешней usb-флешке.

set bootargs ‘console=ttyS0,115200 root=/dev/sda1 rootwait rw loglevel=8 init=/etc/preinit’

При этом здесь важно наличие параметра rootwait, который полволяет дождаться момента инициализации usb-флешки ядром линукс.

Очень часто, когда проект находится в стадии отладке и регулярная прошивка устройства отнимает кучу времени, то можно использовать загрузку по сети с использованием протокола tftp:

set bootargs ‘console=ttyS0,115200 root=/dev/ram rw loglevel=8 init=/etc/preinit’ set bootcmd ‘set ethact egiga0; tf $(loadaddr) mrv/brd6282/uImage;tf 0x3000000 mrv/brd6282/ramdisk.img;bootm $(loadaddr) 0x3000000’

При этом файловая система представлена в образе рамдиска.

Для создания рамдиска из дерева ФС можно использовать следующий скрипт(где RFS это файловая система):

#!/bin/sh rm -f /tmp/ramdisk.img rm -f /tmp/ramdisk.img.gz rm -f /tmp/ramdisk_with_title.img RDSIZE=220000 BLKSIZE=1024 dd if=/dev/zero of=/tmp/ramdisk.img bs=$BLKSIZE count=$RDSIZE mke2fs -F -m 0 -b $BLKSIZE /tmp/ramdisk.img $RDSIZE sudo mount /tmp/ramdisk.img /mnt/initrd -t ext2 -o loop sudo cp -R ./RFS/* /mnt/initrd sudo umount /mnt/initrd gzip -9 /tmp/ramdisk.img mkimage -A arm -C none -O linux -T ramdisk -a 0x0000000 -e 0x0000000 -n LinuxRamDisk -d /tmp/ramdisk.img.gz /tmp/ramdisk_with_title.img cp /tmp/ramdisk_with_title.img /home/dima/Tftpboot/mrv/brd6282/ramdisk.img

Рамдиск может распологаться и на флешке.

Тогда переменные будут выглядеть так:

set bootargs ‘console=ttyS0,115200 root=/dev/ram rw loglevel=8 init=/etc/preinit’ set bootcmd ‘nand read.e $(loadaddr) kernel; nand read.e 0x3000000 0x00600000 0x300000;bootm $(loadaddr) 0x3000000’

Также возможно комбинирование. Например ядро по tftp, фс с флешки:

set bootargs ‘console=ttyS0,115200 ubi.mtd=2 root=ubi0:rootfsU rootfstype=ubifs init=/etc/preinit’ set bootcmd ‘set ethact egiga1; tf $(loadaddr) mrv/brd6282/uImage; bootm $(loadaddr)’

Когда размер файловой системы мегабайты,или десятки мегабайт то загрузка по тфтп является удобным, но если размер фс сотни мегабайт то и сама загрузка будет не быстрой и оперативаная память должна позволять вмещать такие размеры. Для этого случая можно использовать загрузку с использованием NFS:

setenv bootargs ‘console=ttyS0,115200 root=/dev/nfs rw nfsroot=192.168.1.10:/home/dima/Nfsboot/fsl ip=192.168.1.100:192.168.1.10:192.168.1.10:255.255.255.0::eth0: loglevel=7’ setenv bootcmd ‘tf 1000000 mrv/brd6282/uImage; bootm 1000000’

В данном примере ядро загружается через tftp, а фс подмонтируется через nfs.

Еще один пример использования альтернативного способа загрузки. Мне он был полезен когда есть устройство, для которого у меня не было исходников юбута и по этой причине не хотелось вносить изменения в заводские переменные юбута.
Для этого создаются временные переменные и устройство загружается через вызов команды: run new_boot

set newBootArgs ‘set bootargs console=ttyS0,115200 root=/dev/ram rw loglevel=8 init=/etc/preinit’ set newBootCmd ‘set ethact egiga1;tf $(loadaddr) mrv/brd6282/uImage;tf 0x3000000 mrv/brd6282/ramdisk.img;bootm $(loadaddr) 0x3000000’ set new_boot ‘run newBootArgs; run newBootCmd;’

http://www.linux-mtd.infradead.org/faq/ubifs.html#L_mkfubifs

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

http://97.74.126.48/plugwiki/index.php/Enabling_UBIFS

 

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

 

Device Drivers  —>

   <*> Memory Technology Device (MTD) support  —>

       UBI — Unsorted block images  —>

             <*> Enable UBI

 

File systems  —>

   [*] Miscellaneous filesystems (NEW)  —>

       <*>   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”

 

После первого запуска система фиксирует свои параметры во флеш.

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

 

Сборка утилит

Установить git:

 

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)

 

Собрать утилиты.

 

cd mtd-utils

make

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

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

 

#!/bin/sh

 

mkfs.ubifs -e 0x1F800 -c 65536 -m 2048 -x lzo -r root-fs -o rootfs.ubifs 

ubinize -p 128KiB -m 2048 -s 512 -o rootfs_ubi.bin ubifs.cfg

rm -f rootfs.ubifs

 

 

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

 

[ubifs]

mode=ubi

image=rootfs.ubifs

vol_id=0

vol_size=32MiB

vol_type=dynamic

vol_name=rootfs

vol_flags=autoresize

 

Файл для прошивки: rootfs_ubi.bin.

 

•-r root-fs: говорит mkfs.ubifs создать UBIFS-образ, который был бы идентичен содержимому локальной директории rootfs;

•-m 2048: говорит mkfs.ubifs, что минимальный размер единицы ввода/вывода flash этого  UBIFS-образа создаётся 2048 байт (NAND page в этом случае);

•-e 0x1F800: размер логического eraseblock этого UBI раздела для которого создаётся образ;

•-c 65536: определяет максимальный размер файловой системы в логических eraseblocks; это означает, что будет возможно использовать результирующую файловую систему на разделах до этого размера (меньше или равно); так что в этом частном случае, результирующая FS может быть до примерно 8GiB (129024 умножить на 65536);

•-p 128KiB: говорит ubinize, что размер физического eraseblock микросхемы flash этого UBI-образа создается для 128KiB (128 * 1024 bytes);

•-s 512: говорит ubinize, что эта flash поддерживает sub-pages и размер sub-page равен 512 байт; ubinize возьмёт это в расчёт и установит этот VID заголовок, чтобы установить NAND;

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

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

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

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

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

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

 

mtd0

Name:                           Partition 1

Type:                           nand

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

 

mtd1

Name:                           Partition 2

Type:                           nand

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.

Значение параметра -е (LEB):

•В случае NOR flash, которая имеет минимальный размер единицы ввода/вывода 1 byte, LEB = PEB — 128;

•В случае NAND flash, которая не имеет sub-pages (например, MLC NAND), O = 2 NAND pages, т.е.

4KiB в случае 2KiB NAND page и 1KiB в случае 512 bytes NAND page;  NAND flash with 2048 byte NAND page and no sub-page: LEB = PEB — 4096. В случае  NAND flash, которая имеет sub-pages, UBI оптимизирует это на уровне flash и помещает заголовки EC и VID в той же самой NAND page, но разных sub-pages; в этом случае O равно только одной NAND page;

•NAND flash with 512 byte NAND page and 265 byte sub-page: LEB = PEB — 512;

•NAND flash with 2048 byte NAND page and 512 byte sub-page: LEB = PEB — 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, что достаточно.

Если вы подключаете устройства MTD используя ubiattach tool – просто используйте опцию —vid-hdr-offset и определите смещение второй страницы. Например, если вы имеете 2048-byte NAND pages, используйте —vid-hdr-offset 2048.

Все примеры ниже подразумевают 2048-byte NAND pages.

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

 

$ ubi.mtd=rootfs,2048

$ ubi.mtd=3,2048

 

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

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

 

$ modprobe ubi mtd=rootfs,2048

$ modprobe ubi mtd=3,2048

 

И конечно, если используется партиция MTD, которая уже отформатирована так, чтобы использовать sub-pages, уже использована, что означает, что все заголовки VID уже установлены по смещению 512 (вторая sub-page 2048-байта NAND-страницы), невозможно заставить UBI остановить использование sub-pages (это будет приводить к падению). Разрешается делать это только если подключается пустой раздел MTD или если flash уже форматирована так, что все заголовки VID имеют смещение 2048. Это означает, что если используется ubinize, необходимо воздержаться от использования параметра -s.

См. также

http://www.linux-mtd.infradead.org/doc/ubi.html#L_overhead

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

Закрыть меню