标签:
我们曾经在以前的学习中使用过Git方法
$
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
更新分支到Linux的最新分支
$
git pull
可以获取并随时保持与内核官方的代码树一致
压缩形式为bzip2
$
tar xvjf linux-x.y.z.tar.bz2
压缩形式为zip
$
tar xvzf linux-x.y.z.tar.gz
如果使用git获取和管理内核源代码,就不需要下载压缩文件,运行git clone命令,git就会下载解压最新的源代码。
内核源代码一般安装在/usr/src/linux目录下,不要将其用于开发。不要以root身份对内核进行修改。
使用补丁
$
patch -p1 < ../patch-x.y.z
目的:把自己需要的特定功能和驱动程序编译进内核。
①可以配置的各种变量都以CONFIG_前缀表示。
配置选项也可以是字符串或整数
②配置工具
$ make config 最简单的一种字符界面下的命令行工具;
$ make menuconfig 基于ncurse库的图形界面工具;
$ make gconfig 基于gtk+的图形工具;
$ make defconfig 基于默认的配置为个人体系结构创建一个配置;
$ make oldconfig 验证和更新配置;
如果内核已经启用了CONFIG_IKCONFIG_PROC选项(把完整的压缩过的内核配置文件存放在
/proc/config.gz下),可以从/proc下复制配置文件,并用它编译一个新内核。
$ zcat /proc/config.gz > .config
$ make oldconfig
内核配置好了,就可以编译它啦
$ make
以root身份运行
所有已编译的模块都会安装到lib/modules下
用static作关键字,用inline限定它。
unsigned int low, high;
asm volatile("rdtsc" : "=a" (low), "=d" (high)); //low 和 high 分别包含64位时间戳的低32位和高32位
if (unlikely(error)) {
/* ... */
}
if (likely(success)) {
/* ... */
}
与用户空间进程不同,内核不完美支持浮点操作
对于不用的体系结构,内核栈的大小不一样并都是固定的;
标签:
原文地址:http://www.cnblogs.com/bonjourvivi/p/5281825.html