运维开发网

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

运维开发网 https://www.qedev.com 2020-04-01 13:45 出处:网络 作者:运维开发网整理
阅读说明 该系列文章,基于的平台均为Tiny4412SDK 1312;4G EMMC; 1G DDR3 带@lamar: 前缀的表示终端里面的命令带@tiny4412: 前缀的表示开发板终端里的命令

阅读说明

该系列文章,基于的平台均为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卡挂到哪一个设备上):

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

创建完分区之后,需要关机重启,对各个分区进行格式化。其中,kernel分区格式化城fat32;文件系统格式化成ext2。使用如下命令即可:

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

==>>2. busybox编译事项

@lamar: tar xvf busybox-1.22.1.tar

@lamar: cd busybox-1.22.1; make menuconfig

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

1) 配置动态链接库和设置编译器前缀

进入Busybox Setting菜单后进入Build Options菜单

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

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

这里编译器是arm-Linux-gcc,所以前缀填arm-Linux-,这里选择动态链接库,链接的是arm-Linux-gcc的库,后面要从安装arm-Linux-gcc的地方考出要用到的库。

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

2) 配置安装路径

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

在这里面,可以选择相对路径或者绝对路径

3) 配置模块命令

进入Linux Module Utilities

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

这边需要注意,先去掉 Simplified modutils 选项,然后选择 insmod, rmmod, lsmod, modprobe

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

4) 保存配置

进入Save Configuration to an Alternate File菜单

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

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

最后使用如下命令,进行编译即可:

@lamar: make -j; make install;

该配置过程,参考出处

http://www.voidcn.com/article/p-geabknbh-bhx.html

==>>3. 完善基本的配置文件并拷贝根文件系统

编译之后,会在你之前设置的安装路径下,生成如下产物:

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

接下来我们,需要配置一些基本的文件,让内核能够正常引导根文件系统。

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~):

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

在此之后,我们就可以在此基础上,最一些有针对性的功能开发。

该配置过程,参考出处

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

0

精彩评论

暂无评论...
验证码 换一张
取 消