首页 > 代码库 > 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 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)
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-gpioLED Blink
LED Blink
LED Blink
LED Blink
LED Blink
LED Blink
LED Blink
LED Blink
LED Blink
LED Blink
LED Blink
LED Blink
LED Blink
LED Blink
LED Blink
LED Blink
LED Blink
LED Blink
LED Blink
6 参考资料
【1】UBIFS介绍
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。