建立一个定制Linux内核(2)

1.3. 复制源码树和生成一个补丁
这一步是为了对内核源码使用一个补丁。如果不需要这个补丁,直接跳到“配置内核选项”。

高级用户

有些工具,例如“quilt”,允许您避免复制源码树。对应高级用户,这样的工具可以使您在下面的步骤中节省很多时间。

复制源码树是为了保留修改前的原始代码。

export arch=x86_64 # replace x86_64 with your arch

export ver=3.1 # replace 3.1 with your kernel version

export fedver=fc16 # replace fc16 with your Fedora version

cp -r ~/rpmbuild/BUILD/kernel-$ver.$fedver/linux-$ver.$arch ~/rpmbuild/BUILD/kernel-$ver.$fedver.orig

cp -al ~/rpmbuild/BUILD/kernel-$ver.$fedver.orig ~/rpmbuild/BUILD/kernel-$ver.$fedver.new


第二个cp命令在.orig和.new树之间建立了硬连接,这样可以使diff运行的更快。大部分文本编辑者都知道怎样正确的破坏硬连接来避免问题。


在FC14上使用vim时,它会把上面的硬连接当做硬连接来处理,从而导致上面的技术失败。有必要将原始代码完全复制到.new目录。但是这样将使用双倍的空间。

直接更改.new源码树中的代码,或者复制到一个副本文件。这个文件可以来自于一个要求测试的开发者,上游内核源码,或者另一个发行版本。

修改.new源码树之后,生成一个补丁。要生成一个补丁,用下面命令对整个.new和.orig源码树运行diff。

cd ~/rpmbuild/BUILD

diff -uNrp kernel-$ver.$fedver.orig kernel-$ver.$fedver.new > ../SOURCES/linux-$ver.$fedver-mynewpatch.patch

用新补丁的名字替换'linux-$ver.$fedver-mynewpatch.patch' 。在FC14上必须把前面的补丁名字复制到~/rpmbuild/SOURCES中的linux-$ver.$fedver-mynewpatch.patch,以便rpmbuild找到它。

更多关于补丁的信息请看diff(1)和patch(1)的man手册


1.4. 配置内核选项
这一步是为了修改内核的选项。这一步是可选的。如果没有需要修改的配置,可以跳到“准备建立文件”。

小变化

如果您只是想要做一点小的修改,可以在config-local文件中根据需要直接设置选项。这样会找到并覆盖其余的config-*文件,避免很多不必要的工作。如果您使用config-local就可以跳过下面的步骤。

1. 改变内核源码树目录:

cd ~/rpmbuild/BUILD/kernel-$ver.$fedver/linux-$ver.$arch/

如果您只是对默认的fedora内核做小的修改,跳到第四步,从两个配置工作中选择一个,将这些修改编辑到默认的配置文件。

2. 从~/rpmbuild/BUILD/kernel-$ver.$fedver/linux-$ver.$arch/configs选择所需的配置文件。复制所需的config文件到~/rpmbuild/BUILD/kernel-$ver.$fedver/linux-$ver.$arch/.config:

cp configs/<desired-config-file> .config

3. 运行下面命令:

make oldconfig

4. 运行下面命令,在文本界面上选择并保持所需的内核选项

make menuconfig

n 运行图形界面的话用这个命令:

make xconfig

5. 在顶层config文件中添加一行,该文件包含了内核支持的硬件架构(uname -i的输出)。这一行以#开头。例如,x86_64设备应该在顶层config文件中添加下面这行:

# x86_64

6. 复制config文件到~/rpmbuild/SOURCES/:

cp .config ~/rpmbuild/SOURCES/config-`uname -m`-generic


32-bit x86 内核

32-bit PAE内核使用config-i686-PAE配置文件。如果您正在建立一个PAE内核,需要复制您的config文件到~/rpmbuild/SOURCES/:

cp .config ~/rpmbuild/SOURCES/config-i686-PAE

如果您正在建立一个非PAE内核,需要复制您的config文件到:

cp .config ~/rpmbuild/SOURCES/config-x86-32-generic

再次鼓励使用config-local,除非您正在修改大量的配置。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/21905.html