1、准备工作
1.1前提:
(1) 准备好开发环境;
(2) 获取目标主机上硬件设备的相关信息;
(3) 获取到目标主机系统功能的相关信息,例如要启用的文件系统;
1.2准备开发环境:
CentOS 6.7:
包组:
Development Tools
Server Platform Development
CentOS 7:
包组:
Development Tools
Server Platform Development
使用yum grouplist可以查看所有的包组;
使用yum groupinstall安装包组
[root@wlm~]#yumgroupinstall"DevelopmentTools""ServerPlatformDevelopment"
1.3查看主机硬件设备信息
安装包:
ncurses-devel
[root@wlm~]#yuminstallncurses-devel
获取目标主机上硬件设备的相关信息:
cpu:
~]#cat/proc/info ~]#lscpu ~]#x86info-a
PCI设备:
~]#lspci -v -vv ~]#lsusb -v -vv ~]#lsblk
了解全部硬件设备信息:
~]#hal-device
2、内核编译过程:
步骤:
将从官网下载内核压缩包解压到/usr/src目录下,创建软连接。 ~]#tarxflinux-3.10.67.tar.xz-C/usr/src ~]#cd/usr/src ~]#ln-slinux-3.10.67linux ~]#cdlinux ~]#makemenuconfig配置内核选项 ~]#make[-j#]编译内核,可使用-j指定编译线程数量 #这个过程比较漫长,可以从/boot/目录下拷贝config-3.10.0-327.el7.x86_64到/usr/src/linux目录 #config-3.10.0-327.el7.x86_64为已安装好的内核默认配置 ~]#makemodules_install安装内核模块 ~]#makeinstall安装内核 重启系统,选择使用新内核;
过程的详细说明:
(1) 配置内核选项
支持“更新”模式进行配置:在已有的.config文件的基础之上进行“修改”配置;
(a) make config:基于命令行以遍历的方式去配置内核中可配置的每个选项;
(b) make menuconfig:基于cureses的文本配置窗口;
(c) make gconfig:基于GTK开发环境的窗口界面; 包组“桌面平台开发”
(d) make xonfig:基于QT开发环境的窗口界面;
支持“全新配置”模式进行配置:
(a) make defconfig:基于内核为目标平台提供的“默认”配置为模板进行配置;
(b) make allnoconfig:所有选项均为“no”;
(2) 编译
(a) 多线程编译:make [-j #]
(b) 编译内核中的一部分代码:
(i) 只编译某子目录中的相关代码:
# cd /usr/src/linux
# make path/to/dir/
(ii)只编译一个特定的模块
# cd /usr/src/linux
# make path/to/dir/file.ko
(c) 如何交叉编译:
目标平台与当前编译操作所在的平台不同;
# make ARCH=arch_name
要获取特定目标平台的使用帮助:
# make ARCH=arch_name help
(3) 如何在执行过编译操作的内核源码树上做重新编译:
事先清理操作:
# make clean:清理编译生成的绝大多数文件,但会保留config,及编译外部模块所需要的文件;
# make mrproper:清理编译生成的所有文件,包括配置生成的config文件及某些备份文件;
# make distclean:相当于mrproper,额外清理各种patches以及编辑器备份文件;