美文网首页
Linux内核编译

Linux内核编译

作者: SRE1 | 来源:发表于2019-05-04 15:25 被阅读0次

编译内核:
前提:开发环境(开发工具,开发库),头文件:/usr/include
开源:源代码 --> 可执行格式
发行版:以“通用”的目标编译应用程序

前提:

(1) 准备好开发环境;
(2) 获取目标主机上硬件设备的相关信息;
(3) 获取到目标主机系统功能的相关信息,例如要启用的文件系统;
(4) 获取内核源代码包:www.kernel.org

准备开发环境:

CentOS 6.7:

包组:
Development Tools
Server Platform Development

CentOS 7:

包组:
Development Tools
Server Platform Development

包:
ncurses-devel

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

CPU:

cat /proc/info
lscpu
x86info -a

PCI设备:

lspci
-v:查看每个设备的详细信息
-vv:更详细的信息

lsusb
-v:查看每个设备的详细信息
-vv:更详细的信息

lsblk

了解全部硬件设备信息:
hal-device

内核编译过程:

步骤:

[root@promote ~]# tar  xf  linux-3.10.67.tar.xz  -C  /usr/src   解压安装包
[root@promote ~]# cd  /usr/src
[root@promote ~]# ln  -s  linux-3.10.67  linux  创建符号链接
[root@promote ~]# cd  linux
[root@promote ~]# make menuconfig           配置内核选项
[root@promote ~]# make  [-j #]            编译内核,可使用-j指定编译线程数量
[root@promote ~]# make modules_install     安装内核模块
[root@promote ~]# make install            安装内核核心

重启系统,选择使用新内核
screen命令:

打开screen:screen
拆除screen: Ctrl+a, d
列出screen: screen -ls
连接至screen:screen -r SCREEN_ID
关闭screen: exit

过程的详细说明:

(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以及编辑器备份文件;

相关文章

网友评论

      本文标题:Linux内核编译

      本文链接:https://www.haomeiwen.com/subject/htgxoqtx.html