环境搭建
1.uboot
1.解压官方源码,注意这里是u-boot-1.1.6
2.使用补丁包
3.配置并编译
tar xjf u-boot-1.1.6.tar.bz2
cd u-boot-1.1.6/
patch -p1 <../u-boot-1.1.6_jz2440.patch
make 100ask24x0_config
make
制作好了uboot.bin文件
a.烧录
b.备份下补丁文件(压缩打包)
注释:
patch -pn <补丁文件
-pn: 忽略补丁文件前的n个'/'
2.Kernel
1.解压
tar xjf linux-2.6.22.6.tar.bz2
2.打补丁
patch -p1 < linux-2.6.22.6_jz2440.patch
3.打包下生产的文件
tar cjvf linux2.6.22_ok.tar.bz2 linux-2.6.22.6
4.配置
方法一:自己配置
make menuconfig
方法二:使用厂家提供配置
cp config_ok .config
make menuconfig
5.编译
make uImage
6.烧录内核
在uboot下,输入k进入烧写,使用dnw烧写程序
3.Root Filesystem
1.在u-boot下输入y,下载文件系统fs_mini.yaffs2,然后启动.
4.busybox
1.解压,源码包在busybox-1.7.0.tar.bz2
tar xjf busybox-1.7.0.tar.bz2
cd busybox-1.7.0/
2.设置下交叉编译工具为arm-linux-,修改顶层Makefile
CROSS_COMPILE ?=arm-linux-
3.修改配置项目,增加tab补全功能,busybox settings ---busybox libry tuning ----tab completion,输入y选择.其余模块的使能一般在Linux Module Utilities --->中
4.make
5.设置安装路径make CONFIG_PREFIX=~/stu/first_fs install
查看说明文档INSTALL,注意不能直接使用make install,这样会安装到pc上,破坏pc.应该要使用make CONFIG_PREFIX=xxx目录 install
6.可以看到文件链接到busybox,也就是说bin下面有个busybox的程序,其他ls等都链接到它
ls -l
5.NFS网络文件系统
先挂载了FLASH的文件系统,然后挂载另一个文件系统
设置主机
1.启动NFS服务,使得主机上的文件夹允许被单板访问挂载.NFS服务在/etc/exports上配置,在该文件上增加新建的文件系统的路径sudo vi /etc/exports,添加内容,其中*表示允许所有文件
/work *(rw,sync,no_root_squash,no_subtree_check)
/home/book/stu/fs/5th *(rw,sync,no_root_squash,no_subtree_check)
2.重启主机NFS, sudo /etc/init.d/nfs-kernel-server restart
3.showmount -e 即可查看已经声明过的可被挂载的目录
4.尝试使用主机自己挂载自己的NFS文件夹,主机自身ip为192.168.5.107,然后可以在mnt下看到文件
book@100ask:~/stu/fs$ sudo mount -t nfs 192.168.76.135:/home/book/stu/fs/5th /mnt
book@100ask:~/stu/fs$ ls /mnt
bin dev etc lib linuxrc proc sbin sys usr
设置单板
1.查询设置ip
ifconfig eth0 up
ifconfig eth0 192.168.5.200
2.新建mnt文件夹,尝试挂载
mkdir /mnt
mount -t nfs -o nolock 192.168.5.222:/home/book/stu/fs/5th /mnt
mount :挂载命令
nfs :使用的协议
nolock :不阻塞
IP : NFS服务器的IP(NFS服务器运行在哪个系统上,就是哪个系统的IP)
/work/nfs: 要挂载的目录(Ubuntu的目录)
/mnt : 要挂载到的目录(开发板上的目录,注意挂载成功后,/mnt下原有数据将会被隐藏,无法找到)
3.注意看下etc/init.d/rcS 里面是否有ip配置,如果有,可以删除或者改成对的.光盘的文件有设置这个,如果复制过来需要修改
使用NFS文件系统为根文件系统
NFS启动
1.查看之前的启动参数bootargs,修改省略hostname
# 原来的
# bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.5.222:/home/book/stu/fs/5th ip=192.168.5.200:192.168.5.222:192.168.5.222:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
2.可以在主机直接使用arm-linux-gcc编译,产生的程序直接在单板运行
eg:
set bootargs noinitrd root=/dev/nfs nfsroot=10.255.16.10:/home/book/stu/first_fs ip=10.255.16.50:10.255.16.10:10.255.16.5:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
使用:只需要把需要挂载的文件拷贝到目标文件夹中即可
eg:
cp firstdrvtest /work/nfs_root/first_fs