内核编译-02

本文详细介绍了如何在Ubuntu系统中搭建NFS网络服务器,包括检查和重启服务、移植根文件系统、配置交叉编译环境、为公板配置U-Boot以及Linux内核的下载、配置和编译过程,解决遇到的问题如版本兼容和编译错误。
摘要由CSDN通过智能技术生成

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】

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值