在CentOS7.2上编译kernel

前端之家收集整理的这篇文章主要介绍了在CentOS7.2上编译kernel前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1、准备工作@H_502_3@

1.1前提:@H_502_3@

(1) 准备好开发环境;@H_502_3@

(2) 获取目标主机上硬件设备的相关信息;@H_502_3@

(3) 获取到目标主机系统功能的相关信息,例如要启用的文件系统;@H_502_3@

(4) 获取内核源代码包:www.kernel.org@H_502_3@


@H_502_3@

1.2准备开发环境:@H_502_3@

CentOS 6.7:@H_502_3@

包组:@H_502_3@

Development Tools@H_502_3@

Server Platform Development@H_502_3@


@H_502_3@

CentOS 7:@H_502_3@

包组:@H_502_3@

Development Tools@H_502_3@

Server Platform Development@H_502_3@

使用yum grouplist可以查看所有的包组;@H_502_3@

使用yum groupinstall安装包组@H_502_3@

[root@wlm~]#yumgroupinstall"DevelopmentTools""ServerPlatformDevelopment"

1.3查看主机硬件设备信息@H_502_3@

安装包:@H_502_3@

ncurses-devel@H_502_3@

[root@wlm~]#yuminstallncurses-devel


@H_502_3@

获取目标主机上硬件设备的相关信息:@H_502_3@

cpu:@H_502_3@

~]#cat/proc/info
~]#lscpu
~]#x86info-a


@H_502_3@

PCI设备:@H_502_3@

~]#lspci
-v
-vv
~]#lsusb
-v
-vv
~]#lsblk


@H_502_3@

了解全部硬件设备信息:@H_502_3@

~]#hal-device

2、内核编译过程:@H_502_3@

步骤:@H_502_3@

将从官网下载内核压缩包解压到/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安装内核
重启系统,选择使用新内核;


@H_502_3@

过程的详细说明:@H_502_3@

(1) 配置内核选项@H_502_3@

支持“更新”模式进行配置:在已有的.config文件的基础之上进行“修改”配置;@H_502_3@

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

(b) make menuconfig:基于cureses的文本配置窗口;@H_502_3@

(c) make gconfig:基于GTK开发环境的窗口界面; 包组“桌面平台开发”@H_502_3@

(d) make xonfig:基于QT开发环境的窗口界面;@H_502_3@

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

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

(b) make allnoconfig:所有选项均为“no”;@H_502_3@

(2) 编译@H_502_3@

@H_502_3@

(a) 多线程编译:make [-j #]@H_502_3@

(b) 编译内核中的一部分代码:@H_502_3@

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

# cd /usr/src/linux@H_502_3@

# make path/to/dir/@H_502_3@

@H_502_3@

(ii)只编译一个特定的模块@H_502_3@

# cd /usr/src/linux@H_502_3@

# make path/to/dir/file.ko@H_502_3@

(c) 如何交叉编译:@H_502_3@

目标平台与当前编译操作所在的平台不同;@H_502_3@

# make ARCH=arch_name@H_502_3@

获取特定目标平台的使用帮助: @H_502_3@

# make ARCH=arch_name help@H_502_3@

(3) 如何在执行过编译操作的内核源码树上做重新编译:@H_502_3@

事先清理操作:@H_502_3@

# make clean:清理编译生成的绝大多数文件,但会保留config,及编译外部模块所需要的文件;@H_502_3@

# make mrproper:清理编译生成的所有文件包括配置生成的config文件及某些备份文件;@H_502_3@

# make distclean:相当于mrproper,额外清理各种patches以及编辑器备份文件;@H_502_3@ 原文链接:https://www.f2er.com/centos/380133.html

猜你在找的CentOS相关文章