【Tiny4412--4】基于busybox的简单根文件系统构建

本文详细介绍了如何为Tiny4412开发板搭建根文件系统的过程,包括SD卡分区与格式化、busybox编译配置、基本配置文件创建及拷贝、bootargs环境变量配置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阅读说明

该系列文章,基于的平台均为Tiny4412SDK 1312;4G EMMC; 1G DDR3

带@lamar: 前缀的表示终端里面的命令
带@tiny4412: 前缀的表示开发板终端里的命令

准备

  1. tiny4412 开发板
  2. ubuntu 12.04
  3. busybox源码包:busybox-1.22.1.tar
  4. SD卡、串口线

开始

==>>1. SD卡分区和格式化
主要分出两个分区,一个分区用来存放内核的zImage镜像文件;另一个分区用来存放文件系统,也就是本文提到的主角。
分区创建如下(需要注意自己的SD卡挂到哪一个设备上):
这里写图片描述
创建完分区之后,需要关机重启,对各个分区进行格式化。其中,kernel分区格式化城fat32;文件系统格式化成ext2。使用如下命令即可:
这里写图片描述
==>>2. busybox编译事项
@lamar: tar xvf busybox-1.22.1.tar
@lamar: cd busybox-1.22.1; make menuconfig
这里写图片描述
1) 配置动态链接库和设置编译器前缀
进入Busybox Setting菜单后进入Build Options菜单
这里写图片描述
这里写图片描述
这里编译器是arm-linux-gcc,所以前缀填arm-linux-,这里选择动态链接库,链接的是arm-linux-gcc的库,后面要从安装arm-linux-gcc的地方考出要用到的库。
这里写图片描述

2) 配置安装路径
这里写图片描述
在这里面,可以选择相对路径或者绝对路径

3) 配置模块命令
进入Linux Module Utilities
这里写图片描述

这边需要注意,先去掉 Simplified modutils 选项,然后选择 insmod, rmmod, lsmod, modprobe
这里写图片描述

4) 保存配置
进入Save Configuration to an Alternate File菜单
这里写图片描述
这里写图片描述

最后使用如下命令,进行编译即可:
@lamar: make -j; make install;

该配置过程,参考出处
http://blog.youkuaiyun.com/liudijiang/article/details/50555429

==>>3. 完善基本的配置文件并拷贝根文件系统
编译之后,会在你之前设置的安装路径下,生成如下产物:
这里写图片描述
接下来我们,需要配置一些基本的文件,让内核能够正常引导根文件系统。
1) @lamar: cd ../root_fs; mkdir dev etc sys proc mnt tmp; //创建基本的目录结构

//创建rcS文件
2) @lamar: cat > etc/init.d/rcS << EOF (rcS:run command Start)
mount -t ramfs none /dev
mount -t sysfs none /sys
mount -t proc none /proc
mount -t tmpfs none /tmp
/sbin/mdev -s
EOF

3) @lamar: mknod dev/console c 5 1 //设置终端结点

//创建inittab文件
4) @lamar: cat > etc/inittab << EOF
::sysinit:/etc/init.d/rcS
ttySAC0::askfirst:-/bin/sh #/bin/sh前面的-表示sh会默认加载/etc/profile
EOF

//创建profile文件
5) @lamar: cat > etc/profile << EOF
export PS1=”[lamar@root \W]# ” #设置命令提示前面的那段文字
EOF

6) @lamar: mkdir lib; cp /toolschain/4.5.1/arm-none-linux-gnueabi/lib/* lib //拷贝支持busybox的编译库,一般就是本地的编译lib库
7) @lamar: chmod 777 -R root_fs/ //修改文件权限
8) @lamar: mount /dev/sdb3 /mnt //挂载需要存放根文件系统的SD卡分区
9) @lamar: cp -rf root_fs/* /mnt //文件拷贝
10) @lamar: umount /mnt //卸载

==>>4. 配置bootargs环境变量
做完了以上所有的步骤,现在我们就可以在板子上进行验证了。首先我们需要配置bootargs,进入uboot,配置如下:
@tiny4412: set bootargs “root=/dev/mmcblk0p3 console=ttySAC0,115200 lcd=S70” //mmcblk0p3表示的mmc0的第三块分区,这一个根据你之前的分区情况来决定。
最后的效果如下(perfect~):
这里写图片描述
在此之后,我们就可以在此基础上,最一些有针对性的功能开发。

该配置过程,参考出处
http://www.mamicode.com/info-detail-503943.html

补充

==>>内核镜像的拷贝和设置开机bootcmd
1) 如上,已经对SD卡进行了分区和格式化(注意内核的分区是格式化成mkfs.vfat); 同样的,我们只需要挂载设备,然后,拷贝内核到挂载的目录即可。
2)配置bootcmd
@tiny4412: set bootcmd “fatload mmc 0:2 0x40008000 zImage;bootm 0x40008000” //mmc 0:2 表示mmc0上第二块分区
@tiny4412: save
通过以上配置,就可以实现每次开机之后,系统自动去SD卡里启动内核。改善了DNW每次只能启动一次内核的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值