微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

阅读说明

该系列文章,基于的平台均为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://www.jb51.cc/article/p-geabknbh-bhx.html

==>>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每次只能启动一次内核的问题。

原文地址:https://www.jb51.cc/ubuntu/351439.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐