Определить, если раздел MTD отформатирован в UBI

Есть ли надежный способ узнать, был ли раздел MTD (например, /dev/mtd0) уже отформатирован в UBI? Я намерен провести такой тест в скрипте запуска (bash), который вызывает ubiattach только для разделов MTD, которые отформатированы в UBI. Для меня "blkid", похоже, не дает никакой информации о разделах mtd. Также я не смог найти соответствующую запись для этого в "/sys/class/mtd/".

2 ответа

Если у вас естьfileкоманда доступна, вы можете сказать ей игнорировать, что/dev/mtdXэто специальное устройство (-sфлаг) и посмотрите на содержимое. Например, загрузчик u-boot или ядро ​​(образ FIT)*:

      $ file -s /dev/mtd0
/dev/mtd0: data
$ file -s /dev/mtd1
/dev/mtd1: data

загрузочный скрипт u-boot:

      $ file -s /dev/mtd2
/dev/mtd2: u-boot legacy uImage, Boot Script, Linux/ARM, Script File (Not compressed), 2050 bytes, Wed Jun 15 20:58:22 2022, Load Address: 0x00000000, Entry Point: 0x00000000, Header CRC: 0xD0B28CF0, Data CRC: 0x7EBACC8D

и раздел MTD в формате UBI :

      $ file -s /dev/mtd3
/dev/mtd3: UBI image, version 1

* использоватьcat ${DEVICE} > /tmp/tmp.img; dumpimage -l /tmp/tmp.imgисследовать изображения FIT

Вы можете использовать mtdinfo для проверки типа MTD:

# mtdinfo /dev/mtd0
mtd0
Name:                           40000000.flash
Type:                           nor
Eraseblock size:                262144 bytes, 256.0 KiB
Amount of eraseblocks:          512 (134217728 bytes, 128.0 MiB)
Minimum input/output unit size: 1 byte
Sub-page size:                  1 byte
Character device major/minor:   90:0
Bad blocks are allowed:         false
Device is writable:             true

# mtdinfo /dev/mtd2
mtd2
Name:                           rootfs
Type:                           ubi
Eraseblock size:                262016 bytes, 255.9 KiB
Amount of eraseblocks:          257 (67338112 bytes, 64.2 MiB)
Minimum input/output unit size: 1 byte
Sub-page size:                  1 byte
Character device major/minor:   90:4
Bad blocks are allowed:         false
Device is writable:             true

Как показывает пример, /dev/mtd2 это уби!

И вы можете скачать форму mtd-utils http://www.linux-mtd.infradead.org/

mtdinfo находится в пакете, и вам нужно собрать его.

Другие вопросы по тегам