编译内核前提:
1、准备开发环境。
2、获取目标主机上硬件设备的相关信息。
3、获取目标主机系统功能的相关信息,例如要启用的文件系统。
4、获取内核源代码包:www.kernel.org
实验环境:基于CentOS7.2进行
如何准备开发环境:
安装开发包组
CentOS6:安装Developmet Tools、Server Platform Development(服务器平台开发)
CentOS7:安装Developmet Tools、Server Platform Development(服务器平台开发)
确保”ncurses”已安装
如何获取目标主机上硬件相关信息
CPU型号:
~]#/cat /proc/cpuinfo ~]#lscpu ~]#yum install -y x86info ~]#x86info -a
PCI设备:
显卡、网卡、键盘、鼠标等
~]# lspci
-v
-vv
~]# lsusb ~]# lsblk
了解全部硬件信息:
]# hal-device
内核编译过程
1、获取较高版本的内核。如下载linux-3.10.67
2、解压内核压缩包至/usr/src目录
3、当项目需要统一的名称进行管理时,将带有不同版本号的项目链接至统一名称是一种比较好的解决方式。相较于直接修改不同版本号的项目为统一名称,软连接的方式能够支持回滚。
4、开始编译内核,使用make命令。在/usr/src目录下
~]# make menuconfig #配置内核选项。若提示错误,可能需要安装ncurses-devel包。 安装之后在执行。 ~]# make #编译内核,可是有-j指定编译线程数量 ~]# make modules_intsall #安装内核模块 ~]# make install #安装内
核
之后重启系统,选择使用新内核。
注:在远程连接进行耗时较长的操作时,为避免因网络异常导致连接中断,从而影响正常操作,在进行操作时,应当进入scren操作
1)在/boot目录,与名为config-Version-Release的文件,在编译内核时,刻以此文件为模板进行编译。如:config-3.10.0-327.el7.x86_64
cp /boot/config-3.10.0-327.el7.x86_64 /usr/src/linux/.config
2)配置内核选项。
a、支持“更新“配置,支持在已有的.config文件基础之上进行”修改“配置。
(1)make config:基于命令行以遍历的方式去配置内核中可配置的每个选项
(2)make menuconfig:基于ncurses-delve的文件配置窗口。
(3)make gconfig:基于GTK开发环境的窗口界面,需安装“桌面平台开发“
(4)make xconfig:基于QT开发环境的窗口界面
b、支持“全新配置“模式进行配置:
(1)make defconfig:基于内核为目标平台提供的“默认“配置为模板进行配置,不再读取.config文件
(2)make allnoconfig:所有选项均为“no”
在此使用:make menuconfig
2.1)在Processor type and features选项中的Processor family选项菜单中可以选择当前的cpu类型
选择对应的CPU类型即可
2.2)在General setup中的Local version菜单可以配置grub菜单中内核现实的信息
当然,一般添加的是系统版本信息,比如RHEL7,简写为-el7。第一次编译的话写为-1.el67。
2.3)
3) 编译
3.1)支持多线程编译:make –j #
3.2)仅编译内核中的一部分代码
a)只编译某子目录中的相关代码
切换至内核源码树下:cd /usr/src/linux
make /path/to/dir
b)至编译特定的模块
cd /usr/src/linux
make /path/to/dir/file.ko #在该目录下可能只存在file文件,但是在配置时要些微file.ko,若仅编译一个模块,需要将该模块手动移动到 /lib/modules/Version-Release/kernel/对应的目录下
c)交叉编译
编译的目标平台与当前编译操作的平台不同。
#make ARCH=arch_name
如何获取特定目标平台的使用帮助
#make ARCH=arch_name help
如何在执行过编译操作的内核源码树上做重新编译:
事先清理操作:
make clean:清理编译生成的绝大多数文件,但会保留.config和外部编译所需要的文件
make mrproper:清理编译生成的所有文件,包括配置生成的.config文件及某些配置文件
make distclean:相当于mrproper之外,再清理各种patches及编辑器备份文件。
在做make mrproper或make distclean之前,应该将.config文件备份
指定默认的内核版本:vim /etc/default/grub
原创文章,作者:M20-1钟明波,如若转载,请注明出处:http://www.178linux.com/46155