Just Do It

制作根文件系统镜像(ubifs)

裁减lib库
arm-none-linux-gnueabi-strip lib/*.so

在 uboot 命令行输入指令查看得到需要参数:

MX28 U-Boot > mtdparts default
MX28 U-Boot > ubi part rootfs
Creating 1 MTD partitions on "nand0":
0xf800004106bde8-0x4f8000000000000 : ""
UBI: attaching mtd1 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
<span style="color: #ff0000;">UBI: logical eraseblock size: 126976 bytes</span>
<span style="color: #ff0000;">UBI: smallest flash I/O unit: 2048</span>
UBI: VID header offset: 2048 (aligned 2048)
UBI: data offset: 4096
UBI: attached mtd1 to ubi0
UBI: MTD device name: "mtd=5"
UBI: MTD device size: 274877906945 MiB
<span style="color: #ff0000;">UBI: number of good PEBs: 512</span>
<span style="color: #ff0000;">UBI: number of bad PEBs: 0</span>
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: 512
UBI: number of PEBs reserved for bad PEB handling: 5
UBI: max/mean erase counter: 2/1

这是一个在页面大小为 2K 字节,块大小为 128K 字节的 NAND FLASH 上创建了一个
64M 字节大小 UBI 分区后得到的信息,从信息我们可获得制作 ubifs 镜像所需要的 3 个关键
参数:
逻辑擦除块 LEB 大小——126976, 0x1F000
物理擦除块 PEB 数目——512
NAND 页面大小——2048, 0x800
Linux 下制作 ubifs 镜像文件的命令为 mkfs.ubifs,结合前面的参数,得到将 myrootfs 制
作成 ubifs 镜像的命令如下:

sudo mkfs.ubifs -d rootfs -e 0x1f000 -c 512 -m 0x800 -x lzo -o rootfs.ubifs

-d”指定根文件系统目录,“-x lzo”表示
用 LZO 压缩算法,这是 ubifs 的默认压缩算法,如果不压缩,可指定为“none”; -o 表示输
出的根文件系统镜像文件名

制作时报错Error: max_leb_cnt too low (687 needed)
这是由于文件系统过大导致,查看是不是有些垃圾文件没有删除,或者删除一些自己不需要的文件

制作完成后会生成一个rootfs.ubifs烧录进nand,设置bootargs,成功运行

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注