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介绍

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

时间: 2024-10-03 14:03:46

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

EasyARM i.mx28学习笔记——开箱试用总结

0 前言 本月初(2014年8月)购买了周立功的EasyARM开发板,主控为EasyARM i.mx287.出于下面几个理由购买了该开发板. [1]主要原因,有人约我一起学习一起使用该开发板. [2]该开发板性价比較高,到手300元以内,比2440/2410开发板稍廉价些. [3]该开发板的CAN功能是一个特色. [4]通过学习EasyARM i.mx287,比較和树莓派的开发的不同.     [建议] 假设亲爱的读者Linux的基础比較薄弱的话,请优先考虑树莓派.假设从此类ARM开发板入手,可

EasyARM i.mx28学习笔记——开箱使试用总结

0 前言 本月初(2014年8月)购买了周立功的EasyARM开发板,主控为EasyARM i.mx287.出于以下几个理由购买了该开发板. [1]主要原因,有人约我一起学习一起使用该开发板. [2]该开发板性价比较高,到手300元以内,比2440/2410开发板稍便宜些. [3]该开发板的CAN功能是一个特色. [4]通过学习EasyARM i.mx287,比较和树莓派的开发的不同. [建议] 如果亲爱的读者Linux的基础为0的话,请优先考虑树莓派.如果从此类ARM开发板入手,可能会搞不清楚

EasyARM i.mx28学习笔记——安装和使用tftp

0 前言 前段时间购买了周立功的EasyARM i.mx287开发板,加之前3个月工作内容也和linux有关,就借助周立功的EasyARM总结Linux开发过程中的若干注意点. 本文说明在ubuntu中安装tftp服务器的详细步骤,在ubuntu中编写一个让LED闪烁的脚本,使用串口登录EasyARM,在EasyARM中通过busybox的tftp指令获得主机中的脚本文件,增加可执行权之后运行,最终LED灯间隔闪烁. 1 安装tftp [1]新建目录,并修改权限 在用户目录中新建一个名为tftp

EasyARM i.mx28学习笔记——minicom配置和使用

0 前言 在windows中有很多串口调试软件,例如putty.而ubuntu中也有很多串口调试软件,其中最简单实用的便是minicom了. 本文说明虚拟机中如何使用minicom进行串口调试,具体内容包括虚拟机中载入USB设备,查看USB设备是否存在,minicom端口号,波特率等配置. 为了在虚拟机更好的进行嵌入式Linux开发,建议安装Vmware Tool,这样便可方便的在虚拟机和主机中复制粘贴文件. [Linux学习笔记--虚拟机中安装VMware Tools] 1 在虚拟机中载入设备

EasyARM i.mx28学习笔记——通过modbus tcp控制GPIO

0 前言 本文使用freemodbus协议栈,在EasyARM i.mx287上实现了modbus tcp从机.在该从机中定义了线圈寄存器,其中线圈寄存器地址较低的4位和EasyARM的P2.4至P2.5关联,通过modbus指令可控制GPIO的输出.本文修改自freemodbus 示例LINUXTCP,经过简单的修改也可用于其他Linux开发板. [相关博文] [EasyARM i.mx28学习笔记--文件IO方式操作GPIO] [EasyARM i.mx28学习笔记--安装和使用tftp]

EasyARM i.mx28学习笔记——文件IO方式操作GPIO

0 前言 本文描述如果通过文件IO sysfs方式控制EasyARM GPIO端口.通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction和value等,direction控制GPIO方向,而value可控制GPIO输出或获得GPIO输入. Linux学习可从应用出发,先不纠结Linux驱动编写,先把Linux给玩起来. [相关博文] [EasyARM

Linux学习笔记——根文件系统

文件系统结构及根目录介绍: Rootfs :根文件系统 / 分区: [[email protected] /]# ls bin   dev  home  lib64       media  opt   root  selinux  sys  usr boot  etc  lib   lost+found  mnt    proc  sbin  srv      tmp  var /bin:二进制可执行文件 ,用户命令,如ls ,rm ,echo ,grep ,awk 等 ,普通用户也有执行权限

制作根文件系统、使用NFS烧写、编译使用驱动程序(2)

1.制作根文件系统 1.1 先解压文件系统,/wok/nfs_root 目录下是已经构造好的各种文件系统:① fs_mini.tar.bz2 是最小的根文件系统,里面的设备节点是事先建立好的:② fs_mini_mdev.tar.bz2 是最小的根文件系统,里面的设备节点是等系统启动后使用mdev 自动建立的:③ fs_qtopia.tar.bz2 是 JZ2440 使用的支持触摸屏的根文件系统:④ fs_xwindow.tar.bz2 是书上的基于 X 的根文件系统. 执行

EasyARM i.mx287学习笔记——通过modbus tcp控制GPIO

0 前言 本文使用freemodbus协议栈,在EasyARM i.mx287上实现了modbus tcp从机. 在该从机中定义了线圈寄存器.当中线圈寄存器地址较低的4位和EasyARM的P2.4至P2.5关联,通过modbus指令可控制GPIO的输出.本文改动自freemodbus 演示样例LINUXTCP.经过简单的改动也可用于其它Linux开发板. [相关博文] [EasyARM i.mx28学习笔记--文件IO方式操作GPIO] [EasyARM i.mx28学习笔记--安装和使用tft