A.1. 如何生成 openMosix 的内核 RPM 文件

由 Mirko Caserta 编写的针对愚笨的发布经理和喜欢冒险的“自己动手” RPM 打包者的逐步指南

  1. 在您的机器上安装 RedHat 8 (psyche)。到目前为止,这是用于生成 rpm 的平台,并且已知它能很好地完成工作

  2. 从 oM 的 CVS 仓库获取 "linux-openmosix" 模块的更新副本 - 详细信息可以在 http://sourceforge.net/cvs/?group_id=46729 找到

  3. 获取我们将要打补丁的 Linux 内核源代码的 tarball 文件,并将其放入 /usr/src/redhat/SOURCES 中 - 假设我们正在讨论 2.4.20 内核,请从全球众多 https://linuxkernel.org.cn/ 镜像站点之一获取 linux-2.4.20.tar.bz2 文件

  4. 将内核 tarball 文件解压到 /usr/src 下,例如

       # cd /usr/src
       # tar vxjf redhat/SOURCES/linux-2.4.20.tar.bz2

  5. 创建一个指向您检出的 linux-openmosix 模块目录的符号链接,例如

       # ln -s /home/mcaserta/src/linux-openmosix/linux-openmosix \
                    /usr/src/linux-openmosix

  6. 将 .spec 文件和在此目录中找到的所有 .config 文件复制到 /usr/src/redhat/SOURCES 下,例如

       # cp /usr/src/linux-openmosix/configs/openmosix-kernel.spec \
            /usr/src/redhat/SOURCES
    
       # cp /usr/src/linux-openmosix/configs/*.config \
            /usr/src/redhat/SOURCES

  7. 现在是检查版本号的时候了,在我们制作补丁文件之前:确保以下内容中的第一行

       /usr/src/linux-openmosix/Makefile and
       /usr/src/redhat/SOURCES/openmosix-kernel.spec have the correct
    内核版本和 openMosix 修订号

  8. 好的,现在是制作补丁的时候了(假设我们正在发布针对 2.4.20 Linux 内核和 openMosix 第 3 个版本的补丁)

       # cd /usr/src
       # diff -Naur --exclude=CVS --exclude=configs \
              linux-2.4.20 linux-openmosix > \
              /usr/src/redhat/SOURCES/openMosix-2.4.20-3
       # bzip2 /usr/src/redhat/SOURCES/openMosix-2.4.20-3

  9. 此时,您的 /usr/src/redhat/SOURCES 目录应该看起来像

       # ls /usr/src/redhat/SOURCES
       kernel-2.4.20-athlon.config      kernel-2.4.20-i686-smp.config
       kernel-2.4.20-athlon-smp.config  linux-2.4.20.tar.bz2
       kernel-2.4.20-i386.config        openMosix-2.4.20-3.bz2
       kernel-2.4.20-i686.config        openmosix-kernel.spec

  10. 现在您只需要 rpmbuild 整个东西 - 我通常做的是

       # cd /usr/src/redhat/SOURCES
       # rpmbuild -ba --target   i386   openmosix-kernel.spec
       # rpmbuild -bb --target   i686   openmosix-kernel.spec
       # rpmbuild -bb --target athlon   openmosix-kernel.spec
    但是您可以通过调用以下命令轻松构建所有 rpm
     # rpmbuild -ba --target all_x86  openmosix-kernel.spec

  11. 在 rpmbuild 完成其工作后,您应该在 /usr/src/redhat 目录下拥有以下文件

      a) RPMS/i386/openmosix-kernel-2.4.20-openmosix3.i386.rpm
        b) RPMS/i686/openmosix-kernel-2.4.20-openmosix3.i686.rpm
        c) RPMS/i686/openmosix-kernel-smp-2.4.20-openmosix3.i686.rpm
        d) RPMS/athlon/openmosix-kernel-2.4.20-openmosix3.athlon.rpm
        e) RPMS/athlon/openmosix-kernel-smp-2.4.20-openmosix3.athlon.rpm
        f) RPMS/i386/openmosix-kernel-source-2.4.20-openmosix3.i386.rpm
        g) SRPMS/openmosix-kernel-2.4.20-openmosix3.src.rpm
        h) SOURCES/openMosix-2.4.20-3.gz
    其中
      a) binary kernel package for i386 UP* machines
        b) binary kernel package for i686 UP* machines
        c) binary kernel package for i686 SMP** machines
        d) binary kernel package for athlon UP* machines
        e) binary kernel package for athlon SMP** machines
        f) source kernel package for any x86 machine (basically this is
           useful if you need to have the openMosix kernel headers)
        g) source kernel package (see point 11)
        h) kernel patch file compressed with gzip

  12. 从 .src.rpm 文件中取回所有文件的魔法咒语是:# rpm2cpio openmosix-kernel-....src.rpm | cpio -di

特别感谢 Martin H�y 在我试图将整个东西整合在一起时提供的帮助。

我希望您发现这份文档有用。至少对我来说是这样,因为我往往在完成事情几分钟后就忘记了它们 :)

* UP = 单处理器(即一个 CPU)** SMP = 对称多处理(即多个 CPU)