首页 > 代码库 > EasyARM i.mx28学习笔记——根文件系统rootfs修改和烧写

EasyARM i.mx28学习笔记——根文件系统rootfs修改和烧写

0 前言
    本文详细说明如何修改和制作根文件系统,包括修改根文件系统中的配置文件;在根文件系统中加入可执行文件,最后通过uboot tftp方式烧录根文件系统和镜像。
    【相关博文】
    【EasyARM i.mx28学习笔记——文件IO方式操作GPIO】
    【EasyARM i.mx28学习笔记——安装和使用tftp】
    【EasyARM i.mx28学习笔记——minicom配置和使用】
    【EasyARM i.mx28学习笔记——通过modbus tcp控制GPIO】

1 准备
    若使用uboot tftp方式烧写,需要在tftp根目录中准备两个文件——uImage、rootfs.ubifs。uImage为Linux内核镜像,rootfs.ubifs为保存在Nand Flash中根文件系统。rootfs.ubifs由rootfs文件夹制作而来,制作rootfs.ubifs需要build_rootfs.sh脚本和ubinize.cfg配置文件
    在tftpboot目录中,应包含uImage和rootfs.ubifs文件。
    由于没有修改Linux内核,可先把uImage文件复制到tftp根目录,然后新建一个文件夹——例如EasyARM-rootfs。把rootfs文件夹、build_rootfs.sh和ubinize.cfg放置于该目录下,并修改build_rootfs.sh可执行权限,build_rootfs.sh脚本把rootfs文件夹中的内容制作成rootfs.ubifs文件,并复制到tftp根目录中。

图1 制作根文件系统相关文件

2 修改rootfs文件夹中相关内容
    【修改配置】
    例如rootfs目录中/etc/rc.d/init.d/start_userapp文件,增加固定IP地址的设置——例如ifconfig eth0 192.168.1.211
#!/bin/sh
ifconfig eth0 hw ether 02:00:92:B3:C4:A8
#ifconfig eth0 down

#you can add your app start_command three
# 增加部分 EasyARM设置为固定IP地址
ifconfig eth0 192.168.1.211

    【增加可执行文件】
    在rootfs文件夹中增加一个可执行文件test-gpio,该可执行文件来自【EasyARM i.mx28学习笔记——文件IO方式操作GPIO】,test-gpio复制到rootfs文件夹中root子目录中。增加test-gpio的可执行权限:
    chmod a+x test-gpio

图2 增加可执行文件

3 制作烧写文件
    运行build_rootfs.sh便可制作rootfs.ubifs文件,并复制到tftpboot目录中,build_rootfs.sh的具体内容如下:
#!/bin/bash
mkfs.ubifs -r rootfs -m 2048 -e 126976 -c 1900 -o ubifs.img
ubinize -o ubi.img -m 2048 -p 128KiB -s 512 ubinize.cfg
mv ubifs.img rootfs.ubifs
cp -av rootfs.ubifs ~/tftpboot

    mkfs.ubifs和ubinize两工具已经包含在周立功提供的ubuntu ISO文件中,不需要重复安装。运行build_rootfs.sh即可制作根文件。
    ./build_rootfs.sh
    mkfs.ubifs和ubinize指令的具体用法请参考【UBIFS介绍】

4 使用uboot烧写
    【重启开发板】
    若看到控制台中输出Hit any Key to stop autoboot,按下空格键(或任意键)进入uboot指令模式。

图3 进入Uboot模式

    【确定uboot IP地址和PC机IP地址】
    setenv ipaddr 192.168.1.212
    setenv serverip 192.168.1.106
    saveenv
    需要保证PC机IP地址准确,uboot IP地址和PC机IP地址在同一个网段中,此时虚拟机IP地址为192.168.1.106,uboot IP地址为192.168.1.211

    【简单验证】——在uboot中尝试ping PC机IP
ping 192.168.1.106
# 返回结果
Using FEC0 device
host 192.168.1.106 is alive

    【烧写内核镜像与文件系统】——在uboot中运行 run upsystem

5 必要的验证
    【IP配置成功】——运行ifconfig,查看IP地址是否配置成功
ifconfig 
eth0 Link encap:Ethernet HWaddr 02:00:92:B3:C4:A8 
inet addr:192.168.1.211 Bcast:192.168.1.255 Mask:255.255.255.0 
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
RX packets:5 errors:0 dropped:0 overruns:0 frame:0 
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:1000 
RX bytes:434 (434.0 B) TX bytes:378 (378.0 B)

    【test-gpio运行成功】——运行test-gpio,观察GPIO口输出情况
./test-gpio
LED Blink 
LED Blink 
LED Blink 
LED Blink 
LED Blink 
LED Blink 
LED Blink 
LED Blink 
LED Blink 
LED Blink

6 参考资料
【1】UBIFS介绍