linux编译内核指定编译器,Linux内核入门/结构,配置编译,安装

  • Post author:
  • Post category:linux


Linux内核一直都被视为学习Linux最难的一块,相信大家也一定看过不少关于内核的文章,但扪心自问,你现在究竟掌握了多少?本文将从零开始介绍被视为高深的Linux内核,内容涉及内核源代码的下载,编译,安装,以及内核开发相关的内容。

如何获取Linux内核源代码

下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux内核,另一种是内核增量补丁,它们都是tar归档压缩包。除非你有特别的原因需要使用旧版本的Linux内核,否则你应该总是升级到最新版本。

使用Git

由Linus领头的内核开发队伍从几年前就开始使用Git版本控制系统管理Linux内核了(参考阅读:什么是Git?),而Git项目本身也是由Linus创建的,它和传统的CVS不一样,Git是分布式的,因此它的用法和工作流程很多开发人员可能会感到很陌生,但我强烈建议使用Git下载和管理Linux内核源代码。

你可以使用下面的Git命令获取Linus内核代码树的最新“推送”版本:

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

然后使用下面的命令将你的代码树与Linus的代码树最新状态同步:

$ git pull

安装内核源代码

内核包有GNU zip(gzip)和bzip2格式。Bzip2是默认和首选格式,因为它的压缩比通常比gzip更好,bzip2格式的 Linux内核包一般采用linux-x.y.z.tar.bz2形式的文件名,这里的x.y.z是内核源代码的具体版本号,下载到源代码包后,解压和抽 取就很简单了,如果你下载的是bzip2包,运行:

$ tar xvjf linux-x.y.z.tar.bz2

如果你下载的是gzip包,则运行:

$ tar xvzf linux-x.y.z.tar.gz

无论执行上面哪一个命令,最后都会将源代码解压和抽取到linux-x.y.z目录下,如果你使用Git下载和管理内核源代码,你不需要下载tar包,只需要运行git clone命令,它就会自动下载和解压。

内核源代码通常都会安装到/usr/src/linux下,但在开发的时候最好不要使用这个源代码树,因为针对你的C库编译的内核版本通常也链接到这里的。

应用补丁

Linux内核开发人员会将自己的修改做成补丁与其它人员分享,而且补丁是增量的,增量补丁是从一个内核树移动到另一个内核树的有效方法,不用下载完整的内核包就可以升级内核,不仅可节省带宽,也节省了内核升级时间,应用补丁之前先进入内核源代码树所在目录,然后运行:

$ patch –p1 < ../patch-x.y.z

注意,补丁包也有明确的版本号,这里的版本号与Linux内核源代码的版本号要一致,内核和补丁版本号不一致时,强制应用补丁会引起意想不到的后果。

内核源代码树介绍

内核源代码树分为许多目录,它们下面又包含许多子目录,源代码树的顶级目录及其描述参见下表。

目录

描述

arch

特定架构的源代码

block

块I/O层

crypto

加密API

Documentation

内核源代码文档

drivers

设备驱动

firmware

使用某个驱动需要的设备固件

fs

VFS和独立文件系统

include

内核头

init

内核启动和初始化

ipc

进程间通信

kernel

核心子系统,如调度器

lib

助手例行程序

mm

内存管理子系统和VM

net

网络子系统

samples

示例,示