编译安装新内核



一: 内核下载:

   内核的官网是:https://www.kernel.org

   这里下载内核的版本是linux-2.6.30.10

[root@localhost ~]# wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.10.tar.bz2

   

二: 准备工作:

   需要安装gcc编译工具、make编译器;并且编译内核时需使用root用户进行。


三: 操作步骤:

   编译安装新内核的步骤为:

   1:将下载的安装包解压到/usr/src目录

   2:为内核目录创建连接。

   3:配置内核     #make menuconfig

   4:编译内核    #make

   5:安装,包括模块安装和内核安装

   6:重启系统,选用新内核


四: 实现过程:

[root@localhost ~]# tar xvf linux-2.6.30.10.tar.bz2 /usr/src/
root@localhost ~]# cd /usr/src/
[root@localhost ~]# ln -sv linux-2.6.30.10/ linux
[root@localhost ~]# cd linux
[root@localhost ~]# make menuconfig   
//会打开一个基于文本的窗口,在里面可以启用或者关闭某个功能:
//        [ ]:不启用此项
//        [*]:直接编译进内核  (使用时方便,但一些不常用的功能会占用内核空间)
          [M]:编译成模块            (使用时要动态装载,效率低)

   

   此文本窗口如下,可根据自己的需求选择行的选取,如果对各个功能不是很了解,可以在网上查一下:

   

编译安装新内核_安装


   

[root@localhost ~]# make     //这一步骤时间会稍长
[root@localhost ~]# make modules
[root@localhost ~]# make modules_install
[root@localhost ~]# make install


   至此,内核编译完成,要想使用新内核,需要重启系统,并选用新内核。

   

编译安装新内核_安装_02





补充:

   1:执行完make menuconfig之后,会在执行命令的目录里生成一个隐藏文件:.config,此文件就是内核的配置信息。

   

[root@localhost linux]# pwd
/usr/src/linux
[root@localhost linux]# ls -a | grep .config
.config

  在配置内核时,如果不是很清楚各项字段的意义,且感觉配置比较复杂,可以复制当前正在使用的内核的.config文件到/usr/src/linux目录下,然后执行make menuconfig命令,配置一下即可。    


   2:执行完make install之后会自动在grub.conf中新增一个内核启动选项:

   

[root@localhost ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,0)
#          kernel /boot/vmlinuz-version ro root=/dev/sda1
#          initrd /boot/initrd-version.img
#boot=/dev/sda
default=1
timeout=5
splashp_w_picpath=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.30.10asange)
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.30.10asange ro root=LABEL=/ rhgb quiet
    initrd /boot/initrd-2.6.30.10asange.img
title Red Hat Enterprise Linux Server (2.6.18-164.el5)
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet
    initrd /boot/initrd-2.6.18-164.el5.img