Linux内核源码的配置和编译

目录

Linux内核的安装与加载

配置交叉编译工具链

读README

配置内核源码支持当前的硬件平台

驱动配置

内核编译

编译:

问题:

解决问题的方法:

测试内核

总结:

kernel-uImage 


Linux内核的安装与加载

产品阶段:Linux内核、根文件系统、uboot全部存储到硬盘内

研发阶段:研发阶段因为需要反复调试,所以需要将根文件系统放到NFS内使用共享的方式,Linux内核放到tftp下进行传输,uboot最好使用SD卡的方式。详情见实验手册中实验五,需要注意实验五中的第一个目的是为了练习使用tftp加载文件,这里不会正常进入linux系统。

配置交叉编译工具链

打开内核源码顶层目录的Makefile

hq@Ubuntu:~/fs6818_uboot/kernel-3.4.39$ vi Makefile

195 ARCH        ?= 

196 CROSS_COMPILE   ?= 

修改为:

195 ARCH        ?= arm

196 CROSS_COMPILE   ?= arm-none-linux-gnueabi- 

读README

拿到内核源码之后,应该先清除,内核源码中的中间文件

make clean 

make distclean 

make mrproper  --》清除更干净

配置内核源码支持当前的硬件平台

方法1:

make help 

得到以下信息:

fs6818_defconfig         - Build for fs6818

Linux内核源码的配置和编译_第1张图片

Linux内核源码的配置和编译_第2张图片

方法2:

  进入arch/arm/configs/目录 

  发现以下文件fs6818_defconfig ,所以PLATFORM=fs6818.

 让当前的内核支持自己的硬件平台,应该执行make fs6818_defconfig

驱动配置

执行命令:make menuconfig 

实际开发中随内核进行菜单选项的配置,都是使用make menuconfig命令

Linux内核源码的配置和编译_第3张图片 ESC退出,↑↓←→ 选择内容 ,enter键进入

问题1:

第一次使用make menuconfig 需要安装图形化界面的工具

配置之前需要安装图形图(make meuconfig):

sudo apt-get install libncurses5-dev 

问题2:

出现以下错误:

cripts/kconfig/mconf Kconfig

Your display is too small to run Menuconfig!

It must be at least 19 lines by 80 columns.

make[1]: *** [menuconfig] Error 1

make: *** [menuconfig] Error 2 

原因:终端的字体太大,缩小一点

内核编译

编译:

make uImage 

time make uImage -jx

-time:回显编译的时间

-jx:使用多线程的方式进行编译,x可以是2,4,6,8

问题:

在编译的过程中可能出现如下错误:

"mkimage" command not found - U-Boot images will not be built

 make[1]: *** [arch/arm/boot/uImage] Error 1

 make: *** [uImage] Error 2

错误的原因:找不到mkimage命令,根据提示分析出来mkimage应该存在uboot源码目录中

uboot源码必须进行编译之后才会有mkimage可执行程序

Linux内核源码的配置和编译_第4张图片

解决问题的方法:

将uboot源码的tools目录下的mkimage,

相对路径:sudo cp mkimage   /usr/bin

拷贝到到ubuntu的/use/bin目录下:绝对路径

sudo  cp  ./tools/mkimage    /usr/bin      

 uboot目录         ubuntu目录

再次对内核源码进行编译即可通过。

测试内核

将arch/arm/boot/目录下的uImage拷贝到tftpboot目录下,

测试uImage是否可以正常启动,并且挂载根文件系统(重启开发板,自动方式:先将uImage下载到内存里面,然后bootcmd启动内核,然后给内核传递参数。

总结:

kernel-uImage 

1、把linux内核源码放到虚拟机中

2、解压并进入顶层目录

3、make fs6818_defconfig

4、配置、裁剪Linux内核  make menuconfig  

      图形化界面:*(编译到内核中 )

                           空格 (不编译)

                           m  (编译为独立模块)

5、make uImage(编译整个内核)   make moudles (编译驱动模块)

 

你可能感兴趣的:(linux,arm开发,运维)