Buildroot可以从LinuxKernel的官网()下载并编译内核,也可以使用用户自己的多样化内核。
使用官方内核
使用官方的内核建立系统十分简单,事实上,mini2440_defconfig就是采用官方的内核进行完善的。
makemenuconfig-->Kernel-->KernelVersion中qq for linux,你可以选择LatestVersion也就是最新版本的内核进行完善(目前是4.5.4)linux内核定制,也可以选择CustomerVersion也就是先前的稳定版进行完善。
通常会选择一个CustomerVersion的稳定版本。mini2440选择的是3.0.4这个比较旧的版本。
注意图2中的Defconfigname选项sogou pinyin linux,这儿填写了mini2440,这是由于mini2440实际上是在Linux官方的源代码树中被维护的,Linuxkernel官方的源代码里就有mini2440的配置文件linux内核定制,所以这儿选上mini2440,内核编译时,会直接使用mini2440在LinuxKernel源码树中的配置文件进行编译。
Figure1配置LinuxKernel的来源
Figure2mini2440的官方内核版本配置参数
配置完成后,保存退出。直接makelinux,buildroot能够从Linuxkernel官网下载编译你所需的内核就好。
建立多样化的内核
好多时侯,我们须要持续维护和开发自己的Linux内核定制版本,而不是直接到官网下一个内核来用。像友善Tiny4412开发板提供的订制版Linux-3.5内核,经过了大量的补丁和更改,兼容Linux和Android两套系统,部份源代码也不公开,接出来就以tiny4412多样化的Linux-3.5内核为例,介绍怎样在Buildroot中建立多样化的内核。
我使用的是linux-3.5-20151029.tgz这个官方提供的Linux内核压缩包。建立步骤如下:
1.在makemenuconfig-->Kernel中,KernelVersion选择CustomGitrepository,即采用git库房来维护管理多样化的LinuxKernel源代码。其实,这个方式默认你懂得怎样使用git工具。倘若不想用git的方式来维护,你也可以选择LocalDirectory等方式,这样应当是用file的方式把LinuxKernl源代码cp到Buildroot中,具体可以自己尝试。
采用git库房的方式,urlofcustomerepository即git库房的链接地址自然要选上,图中是我本地git库房的地址,这个读者依照须要进行更改。
Version由你要建立的多样化Linux内核的gittag号决定,我这儿填master,则表示buildroot会去本地LinuxKernel的git库房master分支取最新版本的源代码进行编译。
Configurationfilepath即Buildroot中保存的一份LinuxKernel配置文件的储存位置,由于Buidroot在下层可以在编译时把这份配置文件传递给LinuxKernel,LinuxKernel目录下的.config文件进行配置。通常这份配置文件我们都置于Buildroot的board/文件夹上面,tiny4412是arm构架的,因此须要在board/arm/文件夹下边创建tiny4412文件夹,之后将友善官方在Linux内核目录中保存的tiny4412_linux_defconfig这份配置文件储存在board/arm/tiny4412/文件夹下。编译的时侯,Buildroot会去这儿取配置文件,我们也可以在这儿作为下层更改维护内核的配置。
Figure3多样化LinuxKernel的menuconfig-->Kernel配置
2.尽然采用的是git库房的方式管理多样化LinuxKernel的源代码,则须要在本地创建git库房保存和管理真正的源代码。
a)gitinit--bare/mnt/sdb/git_repo/linux-3.5-tiny4412创建本地的git库房
b).之后在一个空文件夹中,gitclone/mnt/sdb/git_repo/linux-3.5-tiny4412
c).再把官方给的linux-3.5-20151029.tgz中的源代码,解压到空文件夹中
d).之后gitadd–A,gitcommit-m”addcode”,gitpushoriginmaster.
这样就可以把LinuxKernel源代码备份到本地的git库房中来维护,buildroot也可以在这儿领到Linux源代码
3.更改配置文件和建立脚本。实际上Linux内核Config变量选项早已默认选上了,不须要更改了,若果你还要多样化一些配置选项,可以渐渐学习更改linux/linux.mk的建立脚本。
经过以上更改,makelinux能够编译建立你的多样化Linux内核了。