Linux内核编译过程简述,Linux内核编译

编译内核:

前提:开发环境(开发工具,开发库),头文件:/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以及编辑器备份文件;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值