Ubifs how to
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