suse 内核编译安装_如何编译内核--SuSE的方式

如何编译内核 - SuSE方式

版本1.0

作者:Falko Timme

每个发行版都有一些特定的工具来从源头构建定制内核。 本文是关于在SuSE系统上编译内核的。 它描述了如何使用www.kernel.org ( vanilla内核 )中最新的未修改的内核源构建定制内核,以使您独立于您的发行版提供的内核。 它还显示如果您需要不在其中的功能,如何修补内核源。

我在SuSE 10.1上测试了这个。

我想先说说这不是建立这样一个系统的唯一途径。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!

1初步说明

本教程的目标是构建一个可以安装在系统上的内核rpm包,并且可以与其他人共享并安装在其他SuSE系统上,这与“不传统”方式相比是一个很大的优势最后使用rpm包。

2安装所需的内核编译包

我们必须安装我们稍后运行的make menuconfig命令所需的ncurses-devel :

yast -i ncurses-devel

接下来,我们必须修改构建内核所需的几个工具。 如果我们不修改它们,我们将在内核构建过程中收到以下错误消息:

/usr/lib/rpm/find-requires.ksyms: line 12: /usr/bin/nm: Argument list too long

我们将无法安装我们的内核rpm包。

在修改工具之前,我们创建它们的备份副本:

cp /usr/lib/rpm/find-provides.ksyms /usr/lib/rpm/find-provides.ksyms_orig

cp /usr/lib/rpm/find-requires.ksyms /usr/lib/rpm/find-requires.ksyms_orig

cp /usr/lib/rpm/find-supplements.ksyms /usr/lib/rpm/find-supplements.ksyms_orig

然后我们打开这些脚本并替换kernel- *)is_kernel_package = 1 ;; 与内核*)is_kernel_package = 1 ;; :

vi /usr/lib/rpm/find-provides.ksyms[...]

#kernel-*) is_kernel_package=1 ;;

kernel*) is_kernel_package=1 ;;

[...]

vi /usr/lib/rpm/find-requires.ksyms[...]

#kernel-*) is_kernel_package=1 ;;

kernel*) is_kernel_package=1 ;;

[...]

vi /usr/lib/rpm/find-supplements.ksyms[...]

#kernel-*) is_kernel_package=1 ;;

kernel*) is_kernel_package=1 ;;

[...]

3下载内核源码

接下来我们将所需的内核下载到/ usr / src 。 请访问www.kernel.org并选择要安装的内核,例如linux-2.6.18.2.tar.bz2 (您可以在这里找到所有2.6内核: http : //www.kernel.org/pub/linux/kernel /v2.6/ )。 然后,您可以将其下载到/ usr / src,如下所示:

cd /usr/src

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.2.tar.bz2

然后我们打开内核源代码并创建一个symlink linux到内核​​源目录:

tar xjf linux-2.6.18.2.tar.bz2

ln -s linux-2.6.18.2 linux

cd /usr/src/linux

4将补丁应用于内核源(可选)

有时候,默认情况下,您需要新内核不支持的硬件驱动程序,或者您需要对虚拟化技术的支持或尚未将其提供给内核的其他一些尖端技术。 在所有这些情况下,您必须修补内核源(只要有可用的补丁可用...)。

现在我们假设你已经下载了/ usr / src所需的补丁(在本例中称之为patch.bz2 )。 这是您将其应用于内核源(您仍然必须在/ usr / src / linux目录中):

bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run

bzip2 -dc /usr/src/patch.bz2 | patch -p1

第一个命令只是一个测试,它对您的来源没有任何影响。 如果没有显示错误,可以运行实际应用补丁的第二个命令。 如果第一个命令显示错误,请不要这样做!

如果您的补丁使用gzip( .gz )而不是bzip2( .bz2 )进行压缩,则会按如下方式修补内核:

gunzip -c /usr/src/patch.gz | patch -p1 --dry-run

gunzip -c /usr/src/patch.gz | patch -p1

您还可以将内核预制应用于内核源。 例如,如果您需要仅在内核2.6.19-rc6中可用的功能,但尚未为此内核释放完整的源。 相反, 补丁2.6.19-rc6.bz2可用。 您可以将该修补程序应用于2.6.18内核源代码,但不适用于2.6.18.1或2.6.18.2等内核。这一点在http://kernel.org/patchtypes/pre.html中有所解释 :

Prepatches相当于Linux的alpha版本; 他们住在档案馆的测试目录中。 应使用补丁(1)实用程序将其应用于以前完整版本的源代码,具有3部分版本号(例如,2.6.12-rc4 prepatch应该应用于2.6.11内核源,而不是,例如,2.6.11.10。)

这是将2.6.19-rc6补丁应用于内核2.6.18的方法:

cd /usr/src

wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc6.bz2

cd /usr/src/linux

bzip2 -dc /usr/src/patch-2.6.19-rc6.bz2 | patch -p1 --dry-run

bzip2 -dc /usr/src/patch-2.6.19-rc6.bz2 | patch -p1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值