/ tree. Use the following command:
su -c 'yum install kernel-{xen0,xenU,kdump}-devel'选择一个或多个变种,以逗号分隔,不要有空格。在提示时输入 root 密码。
x86_64 默认内核提供了 SMP 配置
Fedora Core 5 没有为 x86_64 体系单独提供 SMP 内核
PowerPC 内核支持
Fedora Core 5 没有为 PowerPC 体系提供 Xen 或 Kdump 支持。
8.4. 报告错误
请参考 http://kernel.org/pub/linux/docs/lkml/reporting-bugs.html 中,报告 Linux 内核的错误的注意事项。您也可以访问 http://bugzilla.redhat.com 来报告 Fedora 特有的错误。
8.5. 遵循关于内核的教科书
关于 Linux 内核开发,很多教材,范例和教科书都假设内核源代码安装在 /usr/src/linux 目录。如果您像下面一样创建一个符号链接,就可以在 Fedora Core 中继续使用那些学习材料了。按照上面提到的方式,安装合适的内核源代码,然后:
su -c 'ln -s /usr/src/kernels/kernel- /usr/src/linux'提示时输入 root 的密码。
8.6. 为内核开发作准备
Fedora Core 5 与旧版本不同,不包含 kernel-source 软件包。已配置的源代码可以按照内核配置一节的步骤得到。
这些步骤指的是当前运行中的内核
为了简化下面的指令,假设您需要配置内核为使用当前运行中的内核的配置。在下面的步骤中,短语 version 指的是使用 uname -r 命令显示的内核版本。
需要使用内核源代码的 Fedora Core 用户可以在内核 .src.rpm 软件包中找到它们。要从文件释放源码树,执行下面的命令:
不要以超级用户身份构建软件包
以超级用户身份构建软件包是极其危险的,不应当这样做,即使是内核。下面的操作使您可以以普通用户身份构建内核。很多教程以 /usr/src/linux 作为内核的源码位置,如果想遵循这些操作,可以替换为 ~/rpmbuild/BUILD/kernel-/linux-。
在个人目录准备 RPM 软件包构建环境,运行下面的命令:
su -c 'yum install fedora-rpmdevtools'fedora-buildrpmtree提示时输入 root 的密码。
从下列来源之一获取 kernel-version.src.rpm 文件:
SRPMS 文件,包含在合适的 SRPMS CD iso 镜像文件中。
下载内核软件包的 HTTP 或 FTP 站点
执行这个命令:
su -c 'yum install yum-utils'su -c 'yumdownloader --source kernel'提示时输入 root 的密码。
安装 kernel-<version>.src.rpm,运行命令:
rpm -Uvh kernel-.src.rpm`这个命令将 RPM 内容写到 ${HOME}/rpmbuild/SOURCES 和 ${HOME}/rpmbuild/SPECS, 这里 ${HOME} 是您的个人目录。
硬盘空间需求
完整的内核构建过程可能需要您的个人目录有几个吉的存储空间。
使用这样的命令来准备内核源代码:
cd ~/rpmbuild/SPECSrpmbuild -bp --target $(uname -m) kernel-2.6.spec内核源码树位于 ${HOME}/rpmbuild/BUILD/kernel-/ 目录。
Fedora Core 附带的内核配置文件在 configs/ 目录。例如,i686 SMP 配置文件被命名为 configs/kernel-version-i686-smp.config。使用下列命令来将需要的配置文件复制到合适的位置,用来编译:
cp configs/ .config您也可以在 /lib/modules/version/build/.config 这个位置找到与您当前的内核匹配的 .config 文件。
每个内核的名字都包含了它的版本号,这也是 uname -r 命令显示的值。内核 Makefile 的前四行定义了内核的名字。为了保护官方的内核不被破坏,Makefile 经过了修改,以生成一个与运行中的内核不同的名字。在一个模块插入运行中的内核前,这个模块必须针对运行中的内核进行编译。为此,您必须编辑内核的 Makefile。
例如,如果 uname -r 返回字符串 2.6.15-1.1948_FC5,就将 EXTRAVERSION 定义从:
EXTRAVERSION = -prep修改为:
EXTRAVERSION = -1.1948_FC5也就是最后一个连字符后面的所有内容。
执行这个命令:
make oldconfig接下来就没什么差别了。
8.7. 只构建内核模块
为运行中的内核构建内核模块,例如您自己的设备驱动,不需要完整的源码树。例如,要构建 foo.ko 模块,在包含 foo.c 文件的目录中创建下面的 Makefile :
obj-m := foo.oKDIR := /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd)default: $(MAKE) -C $(KDIR) M=$(PWD) modules 执行 make 命令来编译 foo.ko 模块就可以了。
8.8. 用户空间对内核的依赖
Fedora Core 5 添加了对集群存储的支持,通过 Red Hat GFS 文件系统。这需要将特殊的内核与一些用户空间的使用工具联合使用,包括管理守护进程等。在更新升级之后,要删除这样的内核,应当使用 su -c 'yum remove kernel-' 这样的命令。yum 命令将在需要时自动移除依赖的软件包。
PowerPC 不支持 GFS
Fedora Core 没有为 PowerPC 体系构建 GFS 模块。