您的位置:首页 > 运维架构 > Linux

Linux 内核学习(2)——内核配置与编译

2015-02-08 09:34 274 查看
本文是学习内核配置与编译的过程中的慢慢完善的,因此,内容会随着学习的深入进行修改完善!不足之处还请指正!

 我们在前面的工作中已经从内核的官网下载了最新的稳定版内核(3.18.6)并解压到了/usr/src/linux-3.18.6目录下。

准备工作:执行make mrproper命令。清除原先此目录下残留的.config和.o(object文件),当然,我们是第一次下载源码,所以可以省略这一步,但如果是多次编译过,这一步是很必要的,不然会出现这样那样的问题的!
内核配置:这可是最难的一步啊!搞不好系统就无法启动的!当然有必要先介绍一下Linux内核的配置方法了。总的来说可以分为如下几类:
基于命令解释器(文本格式):make config, make oldconfig       //容易出错,请配置复杂,如果配置中给出了错误的选项,那就只能ctrl+C了。make oldconfig是在现有的内核配置文件基础上建立一个新的配置文件,只会向用户提问有关新内核特性的问题,在内核升级的过程中特别有用。还有其他一些配置方式,如make
defconfig(按照默认配置文件对内核进行配置), make allyesconfig(尽可能的使用'y'选项进行配置), make allmodconfig(尽可能的使用'm'设置选项进行配置)等。

 
                                                      make config 的效果如图所示,这种方式为每种内核特性向用户提问。
如果用户回答y,则该特性编译进内核;
m: 作为模块进行编译
n: 不支持该特性。

基于菜单的方式: make menuconfig      //提供了文本模式的图形用户界面,但必须安装ncurses库    

 
                                                         然后进入下面的配置界面:

 
  我们可以通过光标对特性进行选择。                        
基于X Windows的方式: make xconfig,make
gconfig //提供漂亮的配置界面,但必须在X Server上使用root用户运行X程序时才能使用,他依赖于QT库。make gconfig类似,只是依赖于GTK库。我们仅以make xconfig为例,下面是配置界面:

 那么都包含那些编译选项哪?为了保持不偏离主题,我们将配置选项的介绍在“Linux
内核学习(3)——内核配置选项”一文中进行介绍。

          实际上,内核配置的目的就是生产.config文件,进行了配置以后,我们将会在内核源码的顶层目录下找到生产的.config文件,部分内容如下:                                                                        
    


     3. 内核编译与安装:

编译内核:make。 可以使用-j<n>参数加快编译过程,其中n=2*CPU个数,就编译的总线程数目。编译将花费较长时间。编译程序会在/usr/src/linux-3.18.6/arch/x86/boot生成一个名叫bzImage的内核映像文件。 


编译模块:make modules                                                                                                                                
4000
     
                                                                      


安装内核模块:make modules_install。系统会在/lib/modules目录下生成一个3.18.6子目录,里面存放着新内核的所有可加载模块。
                                                                          

 
                                                                                                                                                                                                                                                               
       安装完成后,在/lib/modules目录下就会显示相应的模块了。                                                                                                                                                                                                                        

 
                                                                                                                                                                                                                                                               
                                        其中3.18.6目录就是我们刚刚安装的模块文件,3.10.*目录是CentOS7安装后自带的模块目录
安装内核: make install。该过程将新生成的内核影像bzImag文件复制到/boot目录并重新命名为vmlinuz-<kernel-version>,生成initd-<kernel-version>.img文件以及配置引导程序(GRUB/LILO)等。例如CentOS
7的/boot目录如下:

                                                         
    make install效果如下:                                  


reboot,进入新内核!enjoy!

 
  其中最上面的一行CentOS Linux (3.18.6) 7 (Core) 就是我们刚刚安装的新内核了!选择进入就可以享受新内核带来的快乐了!如图,我们的内核已经从CentOS7默认的3.10的内核变为我们新安装的3.18的内核了:

 当然,如果配置有错误,则就是痛苦了!不过没有关系,出错了,再修改,也是一个很好的学习过程了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: