7-Linux内核配置编译及安装

学习了一下Linux内核配置、安装及编译,为了防止忘记,写在博客里

1、Linux源代码下载

下载源代码最好去官网下载,地址为:https://www.kernel.org/

如果需要下载历史版本,点击网页上的https://www.kernel.org/pub/,然后选择Linux,kernel即可,比较简单。

 

2、配置Linux内核

把源代码拷到Linux电脑里,解压,这里我下载的是linux-4.11.tar.xz,解压输入

#tar xvJf  linux-4.11.tar.xz

 

如果是tar.gz结尾的文件用tar xvzf  linux-4.11.tar.gz命令解压

 

解压之后开始配置内核模块,选择自己芯片的硬件架构,选择自己需要哪些驱动模块等等,配置为指令make config或者 make menuconfig,前者是基于问答式的配置,使用不方便,后者是菜单式的配置,较为直观和方便,这里使用后者,输入

#make menuconfig

 

然后根据自己的需要,用上下左右键移动选择项,用空格选择是否配置该项。另外还可以选择现有的配置文件来达到目的,在源代码下面的arch/$cpu/configs下有许多现成的配置文件,输入

#ls arch/arm/configs

可以查看arm芯片的内核配置,同时还可以使用本机的配置文件,这里使用本机的配置文件,在/boot目录下,复制/boot下的配置文件 config-2.6.32-279.el6.i686 到上述解压后目录里,输入

#cp /boot/config-2.6.32-279.el6.i686 ./

开始配置内核

#make menuconfig

选择后面的load加载配置文件,输入上面文件的名字,点ok,然后再点击保存,保存文件名为.config,输入

#ls -a

可以看到这个文件

 

3、编译内核

编译内核需要生成映像文件和模块文件,映像文件由配置中的选择为<*>的文件编译链接而成,开机后直接加载在内存中运行

模块文件将选择为的文件编译成.o文件,放在磁盘中,以备后来要用到,先配置映像文件,输入

#make bzImage

开始生成bzImage映像文件,需要10多分钟左右,正常情况下不会有什么问题,编译完成后提示bzImage文件在 arch/x86/boot 目录下

 

然后编译模块文件,输入

#make modules

大概需要50分钟左右,应该也不会有什么问题,可能会有一些警告,可以忽视,然后把散落在各个文件夹下的.o文件组装起来,输入

#make modules_install

组装完成后,会把文件放在/lib/modules/ 下,文件名为对应的版本号,查看可以输入

#ls /lib/modules

可以看到对应版本的文件夹

然后把存放模块文件的目录打包成一个文件,使用mkinitrd命令,输入(主要后者不要输入成/lib/modules/4.11.0)

#mkinitrd  rd-4.11.0  4.11.0

前者为生成文件的名字,后者为模块文件存在的目录,需要几分钟,这样文件包rd-4.11.0就在当前文件目录上产生了。

 

4、安装内核

安装内核之前需要把生成的bzImage和模块文件包rd-4.11.0拷贝到/boot目录下,这样启动的时候才能够选择这个内核启动

先拷贝bzImage,输入(如#cp   arch/$cpu/boot/bzImage  /boot/vmlinux-$version   )

#cp arch/x86/boot/bzImage  /boot/vmlinuz-4.11.0

 

然后拷贝模块文件包,输入cp rd-$version  /boot/,version为对应版本号

#cp  rd-4.11.0  /boot/

 

然后修改/etc/grub.conf,才可以在启动时选择这个新内核,输入

#vi  /etc/grub.conf

赋值倒数后面的4行,输入4yy,然后拷贝到最后,输入p,修改成如下的样子

 

7-Linux内核配置编译及安装_第1张图片

主要修改3个地方,第一个是括号里的,修改成4.11.0,这是启动选择内核时版本的名称

还有映像文件名字和模块文件名字,修改成对应版本,修改后保存退出。

 

5、启动

输入重启,然后在开机倒计时的时候按下回车,选择新的版本,启动的时候有点久。

这样就成功的把内核升级了,虽然在操作的时候好像没什么变化,可以查看当前的内核版本,输入

#uname -r

显示的应该是最新的版本号,这样内核就升级成功了,对应的开发板的内核制作也是和这个差不多。

 

6、内核清理

如果需要把内核编译的文件删掉,包括镜像文件和.o文件,输入

#make distclean

 

如果仅仅需要删除.o文件,输入

#make clean

 

更多Linux资料及视频教程点击这里

你可能感兴趣的:(Linux驱动开发)