Ubifs how to

From Ability
Jump to: navigation, search

Ubi è un filesystem pensato per le NAND, ha una gestione intera per il Bad Block Managment, Wear Leveling e permette la creazione di immagini facilmente installabili.

Preparare una partizione UBIFS

Formattare la partizione mtd desiderata. Le partizioni mtd vegono esportate dal kernel che le riconosce in base ai parametri passati sulla cmdline. Le partizioni mtd sono raw e non hanno la gestione dei Bad Block:

ubiformat -e 0 /dev/mtd2

Eseguire l'attach della partizione UBI sulla partizione MTD precedentemente formattata. Dopo questo comando verrà creato un nuovo device /dev/ubi0:

ubiattach -p /dev/mtd2

Creare un volume all'interno del device ubi0. Dopo questo comando verrà creato un nuovo device UBIFS /dev/ubi0_0:

ubimkvol /dev/ubi0 -m -N top

Montare il device UBIFS:

mount -t ubifs /dev/ubi0_0 /mnt/


Creare e installare una immagine UBI

Estrarre i file e creare una immagine UBIFS. Per impostare min-io-size (2048) e leb-size (124KiB) usare mtdinfo e/o ubinfo. max-leb-cnt invece deve essere proporzionato alla dimensione della partizione:

mkfs.ubifs -r /mnt/rootfs1 -m 2048 -e 124KiB -c 440 --compr=zlib /tmp/ubifs1.img

Creare l'immagine UBI. Per impostare min-io-size (2048) e peb-size (128KiB) e sub-pages (2048) usare mtdinfo e/o ubinfo:

ubinize -o /tmp/ubi1.img -m 2048 -p 128KiB -s 2048 /tmp/ubi1.cfg

Il file di configurazione deve contenere:

[ubifs]
mode=ubi
image=ubifs1.img
vol_id=0
vol_size=67MiB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize

Installare una immagine UBI:

ubiformat /dev/mtd2 -f /tmp/ubi1.img -O 2048

Eseguire il boot da UBI

Per eseguire il boot da UBI è necessario che il kernel riconosca la partizione mtd su cui è installato il filesystem. La cmdline deve contenere anche i seguenti parametri:

ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs