最近在做基于arm和linux的指纹识别系统,把一开始的linux的系统移植方法写下来和大家一起交流讨论:)
开发环境:虚拟机redhat5(tftp等环境配置已配置好)、友善之臂arm9开发板S3C2451、PC、烧写工具MiniTools
1.烧写bootloader
(1)arm板与PC机搭建连接,成功后MiniTools界面在左下角出现字样。
(2)将ubooot烧入开发板NandFlash
(Superboot是友善之臂自己开发的一个Uboot)
2.对linux-3.6内核进行裁剪
#make distclean
#make menuconfig
#make uImage
编译后生成新的uImage内核,注意配置前要make distclean一下,从而保证生成的.o文件在.c文件后
3.生成根文件系统
/tftpboot/rootfs
4.arm板与redhat搭建串口连接
(1)在虚拟机中查看虚拟机IP
#ifconfig查看虚拟机网络端口信息
#ifconfig eth0 192.168.1.114 设置我的虚拟机ip为192.168.1.114
因为虚拟机每次重启或者被挂起IP可能会改变,所以设置静态IP会方便些,方法如下:
#vim /etc/sysconfig/network-scripts/ifconfg-eth0
在文本中修改BOOTPROTO=static
(2)在串口中设置板子IP
#setenv ipaddr 192.168.1.20 设置板子ip和虚拟机ip在同一网段
#printenv 查看板子信息
#saveenv 保存设置
(3)板子ping虚拟机
注意如果ping不通虚拟机,需要断开无线,保证以太网正常使用。虚拟机不能反过来Ping板子(即板子只能主动去ping)
5.移植内核和根文件系统
(1)在虚拟机中设置根文件系统的路径
#vim /etc/exports
在文本中i编辑
/tftpboot/roofts *(rw,insecure,no_root_squash,no_subtree_check)
之前存放的根文件路径 任意IP
(2)在虚拟机中重启NFS
#/etc/init.d/nfs restart
(3)在串口中设置内核启动参数
#set bootcmd tftp '0x30000000 192.168.1.114:uImage;bootm'
若之前set serverip 192.168.1.114则可以简写为
#set bootcmd tftp '0x30000000 uImage;bootm'
(4)设置内核传递参数,用内核去挂载文件系统
#setenv bootargs 'root=/dev/nfs nfsroot=虚拟机ip:/tftpboot/rootfs ip=板子ip:虚拟机Ip:网卡ip:子网掩码::eth0:off console=ttySAC0,115200 init=/linuxrc lcd=P43'
(5)重启板子就自动加载内核,挂上文件系统啦