-
Для начала, необходимо загрузиться с внешнего носителя.
Для модуля Compulab CM-T35x процесс сетевой загрузки выглядит примерно так:
- Подключаем RS232 к консоли модуля. Запускаем терминальную программу;
- Например: minicom –con –D /dev/ttyUSB0 или putty в MS Windows
- Объединяем в локальную сеть модуль и HOST машину;
- Включаем питание. И в терминале нажимаем на любую клавишу;
- В командной строке u-boot пишем:
> dhcp; setenv serverip 192.168.1.100; saveenv; tftp 80400000 bootscr.img && source 80400000
где 192.168.1.100 ip адрес HOST машины с настроенной tftp и NFS шарой.
Причем содержимое паки tftp-шары должно быть следующим:
$ ls /tftpboot
bootscr.img kernel.img ramdisk.img
- После чего логинимся под root'ом.
-
Необходимо примонтировать раздел с rootfs.
В отлчии от традиционных файловых систем для ubifs дынный процесс происходит в несколько этапов.
Пусть rootfs развернуто на NAND в разделе mtd4.
Приаттачим mtd4 в ubi0 (должно появится /dev/ubi0 и /dev/ubi0_4 )
$ ubiattach /dev/ubi_ctrl -m 4 -O 2048
НА экране получим примерно следующее
UBI: attaching mtd4 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 126976 bytes
UBI: smallest flash I/O unit: 2048
UBI: sub-page size: 512
UBI: VID header offset: 2048 (aligned 2048)
UBI: data offset: 4096
UBI: attached mtd4 to ubi0
UBI: MTD device name: "rootfs"
UBI: MTD device size: 505 MiB
UBI: number of good PEBs: 4041
UBI: number of bad PEBs: 2
UBI: max. allowed volumes: 128
UBI: wear-leveling threshold: 4096
UBI: number of internal volumes: 1
UBI: number of user volumes: 1
UBI: available PEBs: 0
UBI: total number of reserved PEBs: 4041
UBI: number of PEBs reserved for bad PEB handling: 40
UBI: max/mean erase counter: 57/2
UBI: image sequence number: 0
UBI: background thread "ubi_bgt0d" started, PID 1776
UBI device number 0, total 4041 LEBs (513110016 bytes, 489.3 MiB),
available 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)
Запомним параметр: total 4041 и LEB size 126976 bytes
Теперь можно монтировать файловую систему
$ mkdir fs
$ mount -t ubifs ubi0_4 ./fs
-
Необходимо примонтировать сетевую папку для сохранения образа
$ mount -n 192.168.1.100:/nfsshare /mnt/net
-
С помощью mkfs.ubifs создаем ubifs образа
$ mkfs.ubifs -r ./fs -m 2048 -e 126976 -c 4041 -o /mnt/net/ubifs.img
где -e =LEB size, -c =total
Если в сетевом образе ОС нет утилиты mkfs.ubifs
можно сделать финт ушами и запустить ее из rootfs
на NAND:
$ export LD_LIBRARY_PATH=/home/root/fs/usr/lib
$ /home/root/fs/usr/bin/mkfs.ubifs -r ./fs -m 2048 -e 126976 -c 4041 -o /mnt/net/ubifs.img
После нескольких минут ожидания ubifs образ создан. Можно выключать питание.
Теперь для записи данного образа на другие платы необходимо из полученного ubifs образа создать ubi образ.
-
Для этого на HOST машине должны быть установлены mtd-utils.
Если таковых нет, то под Ubuntu их можно поставить:
$ sudo apt-get install mtd-utils
-
Создаем в директории с ubifs.img файл cfg.ini следующего содержания:
[rootfs]
mode=ubi
image=ubifs.img
vol_id=4
vol_type=dynamic
vol_name=cm-t35-rootfs
vol_flags=autoresize
-
Создаем ubi.img образ:
$ ubinize -o ubi.img -m 2048 -p 128KiB -s 512 -O 2048 -v cfg.ini
Всё, данный образ можно разворачивать на других платах.
Комментариев нет:
Отправить комментарий