cnetos 6.7 内核编译

简介

    Linux内核的体积结构是单内核的,但充分借鉴了微内核设计体系的优点,为内核引入模块化机制,使得虽然是单内核、但工作在模块化的方式下、并且这个模块可以动态装载或卸载;Linux负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。如是我们在了解Linux内核的基础上根据自己的需要、量身定制一个更高效,更稳定的内核,就需要我们手动去编译和配置内核里的各项相关的参数和信息。

一 编译内核之前的准备

  前提:

    1.获取当前内核版本信息,我这里的内核版本是2.6.32-573.el6.x86_64

     blob.png  

    2.获取内核源代码,建议直接去官方网站(www.kernel.org)下载. 我这里准备的是linux-3.10.96.tar.xz的版本,尽量不要直接编译最新版本的内核,可能会造成不兼容等问题。

       blob.png

    3.准备好开发环境,包组(CentOS 6): Server Platform Development 和 Development Tools

     yum groupinstall -y Server Platform Development  Development Tools

      blob.png

    4.配置内核之前可以查看当前系统的设备信息,了解系统详细配置

     查看CPU信息:

     cat /proc/cpuinfo

     x86info             #此工具需手动安装,yum -y install x86info

     lscpu

     查看PCI信息:

     lspci               #可用选项-v查看详细信息

     查看USB信息:

     lsusb               #可用选项-v查看详细信息

     查看块设备信息:

     lsblk

          

    5.建议使用现有的模板编译安装,我这里的现有的模板在 /boot/config-2.6.32-573.el6.x86_64 (备注:这个模板文件适用在2.6.32 版本的,在3.0 内核以 上版本有可能出现不兼容的情况)

      blob.png

二 编译内核

    1.把下载的内核源码包解压,一般把源码解压到/usr/src目录下,解压完成后会在该目录下生成一个与源码包版本号一致的目录,为了方便起见,我们可将它做一个链接,链接为linux目录。

     tar xf linux-3.10.96.tar.xz -C /usr/src/

     cd /usr/src/

     ln -sv linux-3.10.96 linux

     blob.png

    2.把内核模板文件复制放进/usr/src/linux

     cp /boot/config-2.6.32-573.el6.x86_64 .config

     blob.png

    3.配置内核,这步配置内核的方法有多种,每一个make就是一种方法,我们只在选一种就可以了.    

     支持“更新”模式进行配置:

             (a) make config:基于命令行以遍历的方式去配置内核中可配置的每个选项;

             (b) make menuconfig:基于curses的文本窗口界面,这个命令需要打开的窗口大于80字符的宽度,打开后就可以在里面选择要编译的项了,用此命令需安装gcc和ncurses-devel

             (c) make gconfig:基于GTK开发环境的窗口界面;

             (d) make xconfig:基于Qt开发环境的窗口界面;

     支持“全新配置”模式进行配置:

             (a) make defconfig:基于内核为目标平台提供的“默认”配置进行配置;

             (b) make allnoconfig: 所有选项均回答为"no";

     内核功能选项:

            [*]  #编译进内核本体

            [M]  #编译成内核模块

            [ ]  #不选择使用

      使用make menuconfig开启菜单选项,手动选择内核功能

      make menuconfig  #打开了刚才的.config 的模板配置文件

      blob.png

     配置完成后,配置信息会存储于名为.config的隐藏文件 

      blob.png

    4.开始编译内核安装

     注意:编译时如果是远程连接,一旦断开连接,编译就会出问题。所以我们使用一个叫screen这个命令来操作,没安装自己Yum安装上就是了,可以在一个窗口上启          动n个虚拟的桌面,即使退出了也会保留之前的内容,切换进screen就可以看到窗口标题栏上的screen标志了:        

        screen           #开启窗口

        Ctrl+a d       #隐藏窗口

        screen -ls        #查看运行的窗口

        screen -r SCREEN_ID  #返回窗口

      开始编译

      make 

      blob.png

       安装模块 

      make modules_install 

      blob.png   

     这步完了之后你可以查看一下/lib/modules/目录下就会生成一个以同版本号命名的一个文件模块了

     blob.png

     安装内核

     blob.png 

     安装完成后会在/boot目录下生成几个新内核的文件

     blob.png

     查看grub.conf配置文件,会发现新内核的信息已经写入了

     blob.png

    5.重启启动系统,以新内核启动系统

     blob.png

     查看内核版本

     blob.png

补充:

如何在已经执行过编译操作的内核源码树做重新编译:

    事先清理操作:    

1. make clean:清理大多数编译生成的文件,但会保留config文件等;

2. make mrproper: 清理所有编译生成的文件、config及某些备份文件;

3. make distclean:完全清理

如何加速编译

    make [-j #]         #为cup核心数

如何只编译内核中的一部分功能:

    (a) 只编译某子目录中的相关代码:

      # cd /usr/src/linux

      # make dir/

    (b) 只编译一个特定的模块:

      # cd /usr/src/linux

      # make dir/file.ko

三 总结编译安装步骤

1.获取内核源码,解压至/usr/src ,做个软链接

    tar xf linux-3.10.96.tar.xz -C /usr/src/

     cd /usr/src/

     ln -sv linux-3.10.96 linux

    cp /boot/config-2.6.32-573.el6.x86_64 .config

2.配置内核特性

    make menuconfig

3.编译内核

    make

4.安装内核模块

    make modules_install

5.安装内核

    make install

6.查看grub.conf配置文件,确认新编译的内核版本信息,重启启动测试

    cat /boot/grub/grub.conf

    reboot

    

原创文章,作者:liangkai,如若转载,请注明出处:http://www.178linux.com/11697

(0)
liangkailiangkai
上一篇 2016-02-25
下一篇 2016-02-28

相关推荐

  • N28-第四周

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。
    2、编辑/etc/group文件,添加组hadoop。
    3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。
    4、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。
    5、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。
    6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;
    7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;
    8、显示/etc/passwd文件中其默认shell为/bin/bash的用户;
    9、找出/etc/passwd文件中的一位数或两位数;
    10、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;
    11、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;
    12、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;
    13、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;

    2017-12-30
  • 1017练习题

    1017练习题 作业 10月17日 柴震 1.生产环境发现一台服务器系统时间产生偏差,造成服务异常,请帮忙校正。 hwclock 查看硬件是否准确,如准确无误,可以使用hwclock -s以硬件时间为准。 或者使用ntpdate命令指定一台NTP服务器,进行同步。 2.生产有一个数据同步脚本需要执行很长时间,怎样做到无人值守,在…

    Linux干货 2016-10-18
  • 马哥教育网络班20期+第2周课程练习

    开启我的博客之行 艰难的学习了一周,现在来写写作业回顾一下,这周我都学习了什么? 1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理命令有:cp、mv、rm    复制命令:cp       cp [OPTION]… [-T] SOURCE DEST &nbsp…

    Linux干货 2016-06-23
  • 人志建,则无敌—网络基本知识加简单脚本练习

    马哥21期网络班-8周博客作业 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:网桥就是把2个不同的网段桥接起来;可隔离冲突域。 集线器:集线器就是把多根以太网线或光纤集合连接在同一段物理介质下的装置;工作在物理层;不能隔离冲突域。 二层交换机:工作于OSI模型的第2层(数据链路层),故而称为二层交换机。二层交换技术的发…

    Linux干货 2016-08-29
  • 马哥教育网络班22期+第7周课程练习

    1、创建一个10G分区,并格式为ext4文件系统; [root@localhost ~]# fdisk /dev/sda 命令(输入 m 获取帮助):n All primary partitions are in use 添加逻辑分区 5 起始&nb…

    Linux干货 2016-10-09
  • 用户管理和组管理

         Linux是一个多用户多任务的系统 ,因此学习用户管理和组管理,对我们工作和学习有很大的帮助。用户是你登录这个操作系统的凭证,因此用户的创建和修改,删除是用户管理的基本工作,所以你掌握这些,对你的工作有很好的帮助。 用户账号管理 /etc/passwd username:x: UId:gid:comment:…

    Linux干货 2016-08-10