ARM9 imx283/287根文件系统制作实践

1.下载busybox
下载地址:http://www.busybox.net/(当前最新的稳定版本busybox-1.22.1)
解压busybox-1.22.1.tar.bz2

2.配置编译busybox
1)进入busybox解压后的目录
2)修改Makefile
CROSS_COMPILE= arm-fsl-linux-gnueabi-
ARCH = arm
3)make menuconfig
Busybox Settings —>Build Options —>
BuildBusyBox as a static binary (no shared libs) //这里编译成静态.(静态和动态的区别?)
Busybox Settings —>Build Options —> () Cross Compiler prefix //这里可以指定编译器arm-fsl-linux-gnueabi-,由于我们在makefile写死了,这里就不需要填。
Busybox Settings —>Build Options —> InstallationOptions (“make install” behavior) —> (./_install) BusyBoxinstallation prefix //这里填写根文件安装的路径,默认是当前文件夹下的_install
BusyboxSettings —> GeneralConfiguration —>
Don’t use /usr
Busybox Settings —>Busybox Library Tuning —>
Username completion //用户名,环境变量相关
Fancy shell prompts
4)make
5)make install //拷贝制作好的根文件到安装目录,可以看到生成3个文件目录。
ls _install
bin linuxrc sbin
bin 和sbin目录下生成的是常用shell命令和工具等,linuxrc 是启动文件。

3.创建根文件目录
cd root
mkdir rootfs
cd rootfs
mkdir bin dev etc libproc sbin sys usr mnt tmp var root
mkdir usr/bin usr/libusr/sbin lib/modules

4.拷贝busybox编译生成的3个文件目录到rootfs (busybox只生成3个文件目录 bin linuxrc sbin)
cp –rf _install/* /root/rootfs

5.拷贝c运行库
拷贝我们开发板的交叉编译工具lib目录:
cd gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/arm-fsl-linux-gnueabi/multi-libs/lib

cp *so* /root/rootfs/lib -d //-d 表示把链接关系原封不动拷贝

6.剪裁链接库的大小。去除LIB的符号表。
cd /root/rootfs/lib
arm-fsl-linux-gnueabi-strip *.so

7.在rootfs/dev/下创建设备节点,这2个设备节点是初始化必须的设备:
mknod -m 660 null c 1 3
mknod -m 660 console c 5 1
(busybox-1.22.1好像不需要这一步)

8. rootfs/etc/的初始化配置脚本修改
1)拷贝busybox-1.22.1/examples/bootfloopy/etc/*到当前目录下
cp -r busybox-1.22.1/examples/bootfloopy/etc/* /root/rootfs/etc
包括文件:fstab init.d inittab profile

2)修改iniitab文件:
vi etc/inittab
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::ctrlaltdel:/bin/umount-a -r

3)修改etc/fstab文件
proc/proc proc defaults 0 0
tmpfs/tmp tmpfs defaults 0 0
sysfs/sys sysfs defaults 0 0
tmpfs/dev tmpfs defaults 0 0

4)修改init.d/rcS文件
#! /bin/sh
ifconfig eth0 192.168.2.201
/bin/mount -a
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev –s

5)修改profile文件
这里可以配置用户名等信息,不是必须的,暂时不配。

9.根文件系统基本制作完成。可以通过nfs挂载了验证是否正确。
这里我们通过tftp升级uImage,nfs网络文件系统挂载rootfs.
前提,确保配置好了nfs,和 tftp
MX28 U-Boot > setenv serverip 192.168.2.200
MX28 U-Boot > setenv ipaddr 192.168.2.201
MX28 U-Boot >setenv bootargs root=/dev/nfs nfsroot=192.168.2.200:/root/rootfsip=192.168.2.201 init=/sbin/init console=ttyAM0,115200n8
MX28 U-Boot > run settftpboot
MX28 U-Boot > saveenv

重启,成功后即可看到自己的文件系统啦!

Print Friendly, PDF & Email
Tagged with: , , , , , , , ,

发表评论