一、开发板配置
(使用secureCRT)
首先确保开发板完成以下配置:
主机IP:
set ipaddr192.168.1.10
服务器IP:
set serverip 192.168.1.141
网关:
set gatewayip 192.168.1.1
子网掩码:
set netmask 255.255.255.0
内核驱动设置:
set bootcmd 'tftp 30008000 zImage; bootm 30008000'
bootargs配置:
set bootargs root=/dev/nfs nfsroot=192.168.1.141:/root/rootfs/x210_bsp ip=192.168.1.10:192.168.1.141:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200
最后输入save保存一下,这样开发板的网络和内核配置就设置好了
二、了解rootfs
rootfs的两种表现形式:
1、nfs方式启动的文件夹形式的rootfs(主机)
2、用来烧录的镜像形式rootfs(开发板)
三、虚拟机文件配置
1.目录配置
首先我们需要root进入超级用户模式,在虚拟机的root目录下再次创建以下两个目录:
rootfs x210_bsp
这时候我们需要知道这两个文件夹下有什么:
- x210_bsp:用于uboot烧录和配置
- rootfs:用于挂载开发板根文件系统
2.x210_bsp配置
首先进入到该目录下,并将文件qt_x210v3s_160307.tar.bz2复制到该目录下解压
以上是解压qt_x210v3s_160307.tar.bz2内的文件内容,后面会说到这个目录如何使用
3.rootfs配置
首先我们需要在该目录下继续创建一个名为x210_rootfs的文件夹,并且进入到该文件夹下,将我们上面提到的busybox文件复制到此目录下并解压
以上是解压busybox-1.24.1(这是我选择的busybox版本)的全部文件
4.make menuconfig
进入x210_bsp/kernel 目录下,输入命令:make menuconfig进入图形化菜单
这里我们按下面操作完成网络配置
[*]Networking support ---> Networking options --->
网络文件系统设置
File systems ---> [*]Networking File Systems --->
有需要把开发板作为服务器端的也可以选择把NFS server support
设置打开,这里我们仅实验客户端
以上配置结束后输入命令make
编译,至此开发板uboot的网络和文件系统部分配置结束。
四、busybox的移植实战
1、了解busybox
busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.我们平时用的那些linux命令就好比是分立式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍。
2、busybox源码获取
注意:我们在文件系统构建中,内核编译和文件系统的程序编译都必须是使用的统一交叉编译器。(选择将虚拟机中的交叉编译文件复制一份到开发板构建的文件系统下)
3、busybox配置
(1)修改Makefile
首先进入~/rootfs/x210_rootfs/busybox-1.24.1
目录下
输入命令vi Makefile
进入脚本进行以下修改
173行:CROSS_COMPILE=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-
注意:此处的交叉编译链需要对照自己电脑的交叉编译链
191行:ARCH=arm
(2)make menuconfig配置
Tip:此处的图形化菜单需要ncurses库(联网下载),由于之前博主自己在这里没有很深的基础知识,走了很多弯路。
因为后面的文件系统的挂载需要虚拟机切换网络状态为桥接模式,但是我的虚拟机桥接网络总是会反复重连,所以建议先将该库下载好,方便后续使用。
make menuconfig
Busybox Settings---> Build Options---> [*]Build BusyBox as a static binary(no shared libs) Busybox Library Tuning---> [*]vi-style line editing commands [*]Fancy shell prompts Linux Module Utilities---> [ ]Simplified modutils [*]insmod [*]rmmod [*]lsmod [*]modprobe [*]depmod Linux System Utilities--->[*]mdev [*]Support /etc/mdev.conf [*]Support subdirs/symlinks [*]Support regular expressions substitutions when renaming dev [*]Support command execution at device addition/removal [*]Support loading of firmwares
大家学习使用的时候跟着上面的进行配置即可
配置完成后,输入以下命令:
make -j4
(4代表我主机的内核数)
无报错继续下一步:
make install
解释:在Linux系统中安装软件的一般步骤:下载-配置-编译-安装,所以上面的make -j4就代表编译,make install代表安装
(3)设置busybox安装路径
make menuconfig
Busybox Settings ---> Installation Options ("make install" behavior) ---> (./)BusyBox installation prefix) //这里设置安装路径
(4)解决方案
在虚拟机的配置中,由于代码的复杂性时常让我们不能很全面清晰的看到自己所做的改变,有时候就会出现各种各样的状况。
make -j4编译可能遇到的问题:
sync.c(text.sync_main+0x78):undefined reference to 'syncfs'
分析:
可能是gcc和当前busybox版本不兼容造成的,我们只需要将其禁用即可。
解决方法:
make menuconfig
点击/进入搜索,输入SYNC,根据提示禁用SYNC
最后再make -j4编译一下即可
其实还可以选择在源代码中解决这个问题,过程有些繁琐就不赘述,动手能力强的可以一试。
(5)make install简述
- 默认安装位置:./_install
- 文件包含有:bin linuxrc sbin usr
ls -l可以看到: linuxrc -> bin/busybox //这个linuxrc其实就是个符号链接
这里也不难发现,bin下的所有的符号链接都指向了busybox
(6)make menuconfig更改NFS挂载目录到/root/rootfs/x210_rootfs下
make menuconfig Busybox Settings —> Installation Options (“make install” behavior) —> (/root/rootfs/x210_rootfs)BusyBox installation prefix
执行make install
后,回到被挂载的目录下,可以发现这四个文件已经生成。