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

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

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

  1. 准备工作:执行make mrproper命令清除原先此目录下残留的.config和.o(object文件),当然,我们是第一次下载源码,所以可以省略这一步,但如果是多次编译过,这一步是很必要的,不然会出现这样那样的问题的!
  2. 内核配置:这可是最难的一步啊!搞不好系统就无法启动的!当然有必要先介绍一下Linux内核的配置方法了。总的来说可以分为如下几类:
    1. 基于命令解释器(文本格式):make config, make oldconfig       //容易出错,请配置复杂,如果配置中给出了错误的选项,那就只能ctrl+C了。make oldconfig是在现有的内核配置文件基础上建立一个新的配置文件,只会向用户提问有关新内核特性的问题,在内核升级的过程中特别有用。还有其他一些配置方式,如make defconfig(按照默认配置文件对内核进行配置), make allyesconfig(尽可能的使用'y'选项进行配置), make allmodconfig(尽可能的使用'm'设置选项进行配置)等。                                                        make config 的效果如图所示,这种方式为每种内核特性向用户提问。
      • 如果用户回答y,则该特性编译进内核;
      • m: 作为模块进行编译
      • n: 不支持该特性。
    2. 基于菜单的方式: make menuconfig      //提供了文本模式的图形用户界面,但必须安装ncurses库                                                               然后进入下面的配置界面:    我们可以通过光标对特性进行选择。                        
    3. 基于X Windows的方式: make xconfig,make gconfig //提供漂亮的配置界面,但必须在X Server上使用root用户运行X程序时才能使用,他依赖于QT库。make gconfig类似,只是依赖于GTK库。我们仅以make xconfig为例,下面是配置界面: 那么都包含那些编译选项哪?为了保持不偏离主题,我们将配置选项的介绍在“Linux 内核学习(3)——内核配置选项”一文中进行介绍。

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

     3. 内核编译与安装:

  1. 编译内核:make。 可以使用-j<n>参数加快编译过程,其中n=2*CPU个数,就编译的总线程数目。编译将花费较长时间。编译程序会在/usr/src/linux-3.18.6/arch/x86/boot生成一个名叫bzImage的内核映像文件。 
  2. 编译模块:make modules                                                                                                                                                                                                             
  3. 安装内核模块:make modules_install。系统会在/lib/modules目录下生成一个3.18.6子目录,里面存放着新内核的所有可加载模块。                                                                                                                                                                                                                                                                                                                                                    安装完成后,在/lib/modules目录下就会显示相应的模块了。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  其中3.18.6目录就是我们刚刚安装的模块文件,3.10.*目录是CentOS7安装后自带的模块目录
  4. 安装内核: make install。该过程将新生成的内核影像bzImag文件复制到/boot目录并重新命名为vmlinuz-<kernel-version>,生成initd-<kernel-version>.img文件以及配置引导程序(GRUB/LILO)等。例如CentOS 7的/boot目录如下:                                                              make install效果如下:                                  
  5. reboot,进入新内核!enjoy!    其中最上面的一行CentOS Linux (3.18.6) 7 (Core) 就是我们刚刚安装的新内核了!选择进入就可以享受新内核带来的快乐了!如图,我们的内核已经从CentOS7默认的3.10的内核变为我们新安装的3.18的内核了: 当然,如果配置有错误,则就是痛苦了!不过没有关系,出错了,再修改,也是一个很好的学习过程了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值