Linux目前较适用于小型的网络对于不同的网络应用,需要我们有目的有选择合适地网络操作系统。这里我们主要介绍Fedora Core 6内核系统如何操作。
Linux 内核
这一节覆盖了 Fedora Core 6 中 2.6.18 内核的变动及重要信息。2.6.18 内核包括:
◆轻量级用户空间优先级继承 (http://lwn.net/Articles/178253/)
◆一个 "锁校验" 调试工具 (http://lwn.net/Articles/185666/)
◆针对多核系统的节电策略 SMPnice (http://lwn.net/Articles/186438/)
◆大大改进的 SATA 层 (http://lwn.net/Articles/183734/)
◆无交换的页面迁移 (http://lwn.net/Articles/160201/)
◆每区域的 VM 计数器(Per-zone VM counter)
◆每任务的延迟审计(Per-task delay accounting)
◆新的针对封包的 SELinux 访问控制,叫做 secmark (http://james-morris.livejournal.com/11010.html)
◆随机的 i386 vDSO
◆新的驱动和已有驱动对新设备的支持
◆大量错误修正和小改进
版本
Fedora Core 6可能包含了附加的补丁,来改进,修正或添加附加特性。因此,Fedora Core 6内核与被称为纯正(vanilla kernel)的,来自 kernel.org 网站的内核不是完全相同的。
http://www.kernel.org/ 要获得这些补丁的列表,下载源 RPM 软件包,运行下列命令:
rpm -qpl kernel-
软件包修订记录可以用下列命令看到:
rpm -q --changelog kernel-
内核配置
Fedora Core 6 包含了下列内核构建基本的内核,用于大多数系统,已配置的代码在 kernel-devel-version.arch.rpm 软件包中。kernel-PAE,用于拥有超过 4GB RAM 的 32-bit x86 系统中,或者 CPU 带有 "NX (No eXecute)" 特性的系统中。它同时支持单/多处理器系统。虚拟机内核,用于 Xen 模拟器。已配置的源代码包含在 kernel-xen-devel-
报告错误
请参考 http://kernel.org/pub/linux/docs/lkml/reporting-bugs.html 中,报告 Linux 内核错误时的注意事项。您也可以访问 http://bugzilla.redhat.com 来报告 Fedora 特有的错误。
遵循关于内核的教科书
关于 Linux 内核开发,很多教材,范例和教科书都假设内核源代码安装在 /usr/src/linux 目录。如果您像下面一样创建一个符号链接,就可以在 Fedora Core 6中继续使用那些学习材料了。按照上面提到的方式,安装合适的内核源代码,然后:
su -c 'ln -s /usr/src/kernels/
为内核开发作准备
Fedora Core 6 与旧版本不同,不包含 kernel-source 软件包,因为要编译外部模块,只需要 kernel-devel 软件包。已配置的源代码可以按照内核配置一节的步骤得到。这些步骤指的是当前运行中的内核 为了简化下面的指令,假设您需要配置内核为使用当前运行中的内核的配置。在下面的步骤中,短语
需要使用内核源代码的 Fedora Core 6用户可以在内核 .src.rpm 软件包中找到它们。要从文件释放源码树,执行下面的命令: 不要以超级用户身份(root)构建软件包以超级用户身份构建软件包是极其危险的,不应当这样做,这不是必需的,即使是内核。下面的操作使您可以以普通用户身份构建内核。很多教程以 /usr/src/linux 作为内核的源码位置,如果想遵循这些操作,可以替换为 ~/rpmbuild/BUILD/kernel-
在个人目录准备 RPM 软件包构建环境,运行下面的命令:
su -c 'yum install rpmdevtools yum-utils'
rpmdev-setuptree提示时输入 root 的密码。
安装 kernel-
yumdownloader -e core-source -e updates-source --source kernel提示时输入 root 的密码。
安装 kernel-
rpm -Uvh kernel-
硬盘空间需求
完整的内核构建过程可能需要您的个人目录有几个吉的存储空间。
使用这样的命令来准备内核源代码:
cd ~/rpmbuild/SPECS
rpmbuild -bp --target $(uname -m) kernel-2.6.spec内核源代码位于 ${HOME}/rpmbuild/BUILD/kernel-
Fedora Core 6 附带的各种内核的配置文件位于 ~/rpmbuild/BUILD/kernel-
cp configs/
例如,如果 uname -r 返回字符串 2.6.15-1.1948_FC5,就将 EXTRAVERSION 定义从:
EXTRAVERSION = -prep 修改为:
EXTRAVERSION = -1.2345_FC6也就是最后一个连字符后面的所有内容。
执行这个命令:
make oldconfig接下来就没什么差别了。
构建内核的二进制 RPM
通常,Fedora Core 6 的内核是用 rpmbuild 和 spec 文件编译的。如果使用内核自带的 make rpm 方式,得到的结果是不一样的。
只构建内核模块
编译内核模块,如设备驱动时,不需要当前运行的内核的完整源码树。为编译外部模块,只需要安装 kernel-devel 软件包。如果没有安装,就用 Pirut 安装它,执行 应用程序 → 添加/删除软件 或者使用 yum。运行下面的命令来安装:
su -c 'yum install kernel-devel'
例如,要构建 foo.ko 模块,在包含 foo.c 文件的目录中创建下面的 Makefile:
obj-m := foo.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
执行 make 命令来编译 foo.ko 模块就可以了。Fedora Core 6内核系统。
【编辑推荐】