linuxhong 2009-12-17
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-.src.rpm8.2. 更新日志
软件包修订记录可以用下列命令看到:
rpm -q --changelog kernel-如果您希望看到更友好的修订日志,请访问 http://wiki.kernelnewbies.org/LinuxChanges。http://kernel.org/git 提供了内核不同之处的摘要和完全两种版本。Fedora 基于 Linus 的内核树。Fedora 版本做出的定制可以在 http://cvs.fedora.redhat.com 找到。
内核配置
Fedora Core 6 包含了下列内核构建基本的内核,用于大多数系统,已配置的代码在 kernel-devel-version.arch.rpm 软件包中。kernel-PAE,用于拥有超过 4GB RAM 的 32-bit x86 系统中,或者 CPU 带有 "NX (No eXecute)" 特性的系统中。它同时支持单/多处理器系统。虚拟机内核,用于 Xen 模拟器。已配置的源代码包含在 kernel-xen-devel-..rpm 软件包中。Kdump 内核,与 kexec/kdump 搭配使用。已配置的源代码包含在 kernel-kdump-devel-..rpm 软件包中。各种内核配置的源代码头文件可以同时安装。文件安装位置是 /usr/src/kernels/-[xen|kdump]]-/。运行命令: su -c 'yum install kernel-{PAE,xen,kdump}-devel'选择一个或多个变种,以逗号分隔,不要有空格。在提示时输入 默认内核提供了 SMP Fedora Core 6 没有单独的 SMP 内核,无论是 i386, x86_64 还是 ppc64。基本内核提供了多处理器支持。PowerPC 内核支持 Fedora Core 6 test3 没有为 PowerPC 体系提供 Xen 或 Kdump 支持。
报告错误
请参考 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/.- /usr/src/linux'提示时输入 root 的密码。
为内核开发作准备
Fedora Core 6 与旧版本不同,不包含 kernel-source 软件包,因为要编译外部模块,只需要 kernel-devel 软件包。已配置的源代码可以按照内核配置一节的步骤得到。这些步骤指的是当前运行中的内核 为了简化下面的指令,假设您需要配置内核为使用当前运行中的内核的配置。在下面的步骤中,短语 指的是使用 uname -r 命令显示的内核版本。
需要使用内核源代码的 Fedora Core 6用户可以在内核 .src.rpm 软件包中找到它们。要从文件释放源码树,执行下面的命令: 不要以超级用户身份(root)构建软件包以超级用户身份构建软件包是极其危险的,不应当这样做,这不是必需的,即使是内核。下面的操作使您可以以普通用户身份构建内核。很多教程以 /usr/src/linux 作为内核的源码位置,如果想遵循这些操作,可以替换为 ~/rpmbuild/BUILD/kernel-/linux-。
在个人目录准备 RPM 软件包构建环境,运行下面的命令:
su -c 'yum install rpmdevtools yum-utils'
rpmdev-setuptree提示时输入 root 的密码。
安装 kernel-.src.rpm 文件。启用合适的源代码仓库,如 Core, Updates 或 Testing,使用 -e 开关:
yumdownloader -e core-source -e updates-source --source kernel提示时输入 root 的密码。
安装 kernel-.src.rpm,运行命令:
rpm -Uvh kernel-.src.rpm这个命令将 RPM 内容写到 ${HOME}/rpmbuild/SOURCES 和 ${HOME}/rpmbuild/SPECS, 这里 ${HOME} 是您的个人目录。
硬盘空间需求
完整的内核构建过程可能需要您的个人目录有几个吉的存储空间。
使用这样的命令来准备内核源代码:
cd ~/rpmbuild/SPECS
rpmbuild -bp --target $(uname -m) kernel-2.6.spec内核源代码位于 ${HOME}/rpmbuild/BUILD/kernel-/linux-. 目录。
Fedora Core 6 附带的各种内核的配置文件位于 ~/rpmbuild/BUILD/kernel-/linux-./configs 目录。例如,i686 配置文件名为 ~/rpmbuild/BUILD/kernel-/linux-./configs/kernel--i686.config。运行下列命令,将所需的配置文件放到合适的位置以用来编译:
cp configs/ .config每个内核的名字都包含了它的版本号,这也是 uname -r 命令显示的值。内核 Makefile 的前四行定义了内核的名字。为了保护官方的内核不被破坏,Makefile 经过了修改,以生成一个与运行中的内核不同的名字。在一个模块插入运行中的内核前,这个模块必须针对运行中的内核进行编译。为此,您必须编辑内核的 Makefile。
例如,如果 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 方式,得到的结果是不一样的。