1【nfs】
1.1【nfs】简介
【nfs】:网络服务器
1.2【nfs】搭建流程
由于安装的【ubuntu】系统中已经搭建好了【nfs】系统,所以这里只需要检查【nfs】能否正常工作即可。具体操作如下:
如果没有【nfs】,则新建一个【nfs】目录:
1.2.1检查【nfs】工作状态
方法1:重启【nfs】网络服务
【sudo /etc/init.d/nfs-kernel-server restart】
补充:
【sudo netstat -anp|less】:查看网络端口占用情况
方法2:查看日志
【sudo /etc/init.d/nfs-kernel-server status】
2移植根文件系统
【nfs】搭建完成,接下来就是移植根文件目录:将根文件系统移植到【nfs】文件夹
(1)进入【nfs】,并解压根文件目录至压缩包
(2)解压完成,更改配置文件
(3)配置开发板环境变量(mini2440)
更改u-boot环境变量,并保存更改结果
补充:
(1)【bootargs】变量释义:
bootargs变量内部又是由若干键值对组成的,主要成员
含义如下:
【root=/dev/nfs】:表示根文件系统是nfs即网络文件系统,如果使用nand-flash作为根文件系统载体,则【root=/dev/mtdblockx】
【nfsroot=192.168.1.100:/home/linux/nfs/rootfs】:表示网络文件系统挂载的具体位置
【ip=192.168.1.105】:linux启动以后的ip地址
【console=ttySAC0,115200】:linux系统启动以后控制台是串口0,波特率115200
【init=/linuxrc】:linux系统启动后的第一个进程在根文件系统中的位置
重新启动开发板,并检查环境变量,已完成修改
重新下载内核
【nfs】
问题1:
nfs重启失败:
查看网络进程状态
问题2:
问题描述:
问题原因:Ubuntun的nfs版本过高,开发板nfs不支持,导致无法挂载
解决方法:
打开配置文件:【sudo vi /etc/default/nfs-kernel-server】
修改配置文件:
重启网络服务:【sudo /etc/init.d/nfs-kernel-server restart】
2配置交叉编译环境
(1)确认交叉编译工具版本信息
【arm-linux-gcc -v】:对arm文件进行编译的专用工具
(2)更改配置文件:
(3)让配置文件生效
3为公板配置【u-boot】
此时移植【u-boot】不像之前移植【u-boot】一样,需要通过【J-LINK】渠道。
(1)创建目录:【mkdir s3c2440】
(2)移植与公板相应的【u-boot】
(3)编译配置文件,并产生【u-boot.bin】:
至此,【u-boot】移植完成。
补充:
(1)【u-boot】源码分析:
【vim u-boot.lds】
经过分析,需要去箭头指向的路径分析【u-boot】源码:
【vim arch/arm/cpu/arm920t/start.S】
【u-boot】部分源码如下图所示:
4移植【Linux】内核
(1)下载并解压【linux】内核文件:
【tar xvf linux-2.6.32.2-mini2440-20150709.tgz】
(2)移植对应的配置文件
【cp ./config_mini2440_td35 ./.config】
(3)更改配置:
【make menuconfig】:这里采用菜单的形式进行配置。
5编译【Linux】内核
(1)编译:
【make uImage】
编译成功,结果如图:
每次将编译完成的镜像文件拷贝至【~/tftpboot/】覆盖旧的镜像文件:
【cp arch/arm/boot/uImage ~/tftpboot/】
问题(1):编译过程中报错
问题描述:
问题溯源:
解决方式:
【vi kernel/timeconst.pl +373】
配置完成之后:重新编译镜像文件
问题(2):编译优化
更改【Makefile】配置
【vi arch/arm/boot/Makefile】
【64byte=40】:跳过64字节
再次编译镜像文件
6运行【Linux】内核
在开发板上加载【linux】内核镜像文件:
至此,【u-boot】移植->【linux】内核移植->根文件系统,整个【linux】驱动环境搭建完成!
其它问题:
问题1:
编译工具版本不对
问题2:
函数跳转到定义的配置:
问题3:
解决方式:
安装相关工具:【sudo apt-get install u-boot-tools】