linux内核编译

 

一、内核简介
  内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
为什么编译内核
Linux 作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的 bug ,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。
为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:
1 、自己定制编译的内核运行更快(具有更少的代码)
2 、系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
3 、不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞
4 、将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些
二、 Yum 客户端的配置
vim /etc/yum.repos.d/rhel-debuginfo.repo
 
[rhel-server]                                    ## 描述光盘上的仓库                      
name=Red Hat Enterprise Linux server        ## 仓库的名字
baseurl=file:///mnt/cdrom/Server                  ## 本地 yum 源的位置
enabled=1                                      ## 启用该仓库
gpgcheck=1                                   ## 启用签名检测
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release ## 检测钥匙文件
 
[rhel-vt]
name=Red Hat Enterprise Linux vt               ## 虚拟化
baseurl=file:///mnt/cdrom/VT                  
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
 
[rhel-cluster]
name=Red Hat Enterprise Linux cluster
baseurl=file:///mnt/cdrom/Cluster                   ## 集群
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
 
[rhel-clusterstorage]
name=Red Hat Enterprise Linux clusterstorage      ## 集群文件系统支持
baseurl=file:///mnt/cdrom/ClusterStorage
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
将压缩的内核的压缩文件解压
tar -jxvf linux-2.6.25.19.tar.bz2 -C /usr/src/kernels/ ## 解压内核到 /usr/src/kernels /
进入解压的目录,进行内核的配置
cd /usr/src/kernels/linux-2.6.25.19/
三、内核编译
执行编译的指令有四种
#make config     基于文本的最为传统的配置界面,不推荐使用
#make menuconfig 基于文本选单的配置界面,字符终端下推荐使用
#make xconfig    基于图形窗口模式的配置界面, Xwindow 下推荐使用
#make oldconfig  如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦
在此我以 make menuconfig 为例演示内核编译的过程,值得注意的是在编译之前最好确认是否安装 X 软件开发、开发工具、开发库和传统软件开发,以此来保证安装的正确性。

/usr/src/kernels/linux-2.6.25.19/ 在此目录下执行make menuconfig 弹出菜单界面

在此,把几个比较常用选项分别加以介绍

1Code maturity level options   代码成熟等级

2. Loadable module support      对模块的支持

3. Processor type and features    CPU类型

4. General setup              最基本的属性的设置

5. Memory Technology DeviceMTD  MTD设备支持

6. Parallel port support          串口支持

7. Plug and Play configuration    即插即用的支持

8. Block devices               块设备

9. Networking options          网络选项

10. Telephony Support          电话支持

11. ATA/IDE/MFM/RLL support 有关各种接口的硬盘/光驱/磁带/软盘的信息

12. SCSI support              SCSI设备的支持

13. ISDN subsystem           ISDN上网

14. Character devices          字符设备

15. File systems               文件系统

16. Console drivers            控制台驱动

17. Sound                   声卡驱动

18. USB support              USB支持

 

*表示内置在内核之中的,编译在vmlinuz-2.6.25.19之中,特点是速度很快

M表示将该功能编译成可以在需要时动态插入到内核中的模块,特点是速度慢  但是模块灵活,用户可以根据自己的环境来选择合适的模块

Y表示将该功能编译进内核

N表示不将该功能编译进内核

  

在编译内核之前我们可以把boot目录下的config-2.2.6.28-164.e15.config拷贝到/usr/src/kernels/linux-2.6.25.19/目录下并命名为.config的参照文件,这样做可以参照原来的内核配置,无需自己一一选择

cp /boot/config-2.6.18-164.el5 .config

[root@localhost linux-2.6.25.19]# ll –a         ##注意.config是隐藏文件

总计 480

drwxrwxr-x 21 root root  4096 08-04 21:22 .

drwxr-xr-x  4 root root  4096 08-04 20:56 ..

drwxrwxr-x 26 root root  4096 2008-10-23 arch

drwxrwxr-x  2 root root  4096 2008-10-23 block

-rw-r--r--  1 root root 68663 08-04 21:23 .config

我选择iprange作为模块,以利于以后在linux平台下使用iptables对地址范围过滤,也选择time作为模块,可以实现对时间访问的限制,当然了,用户完全可以根据自己的需要来选择模块或者直接编译到内核

完成选择设置之后可以看到产生新的.config  原来拷贝过来的文件的变成了.config.old文件,也可以进入.config文件看看自己选择配置

[root@localhost linux-2.6.25.19]# ll -a

总计 560

drwxrwxr-x 21 root root  4096 08-04 21:37 .

drwxr-xr-x  4 root root  4096 08-04 20:56 ..

drwxrwxr-x 26 root root  4096 2008-10-23 arch

drwxrwxr-x  2 root root  4096 2008-10-23 block

-rw-r--r--  1 root root 73984 08-04 21:37 .config

-rw-r--r--  1 root root 68663 08-04 21:23 .config.old

然后开始做最后的编译工作,大概历时一个小时左右,你也可以去小憩一会了

make                                                编译内核

make  modules_install                    编译模块

make install                                        安装

/etc/grub.conf修改启动内核

vim /etc/grub.conf

default=0                   ##1改为0,表示启动的内核版本选择成2.6.25

timeout=5                  ##5秒之后默认启动第一个内核版本

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title Red Hat Enterprise Linux Server (2.6.25.19)

        root (hd0,0)

        kernel /vmlinuz-2.6.25.19 ro root=LABEL=/ rhgb quiet

        initrd /initrd-2.6.25.19.img

title Red Hat Enterprise Linux Server (2.6.18-164.el5)

        root (hd0,0)

        kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet

        initrd /initrd-2.6.18-164.el5.img

四、安装完成

重启系统,系统已经内核编译成功

查看内核版本

 

你可能感兴趣的:(linux,模块,yum,内核,编译)