Linux on POWER:发行版迁移和二进制兼容性考虑事项(1)
- UID
- 1066743
|
Linux on POWER:发行版迁移和二进制兼容性考虑事项(1)
现在有许多可用的 Linux 发行版。尽管 Red Hat 和 SUSE LINUX 是 IBM 支持的 Linux on POWER 解决方案供应商,但其他发行版(比如 Gentoo、Debian 和 Ubuntu)也逐渐变成流行的 Linux on POWER 解决方案。应用程序通常喜欢确保他们的应用程序能够运行在多个发行版上,以及运行在同一个发行版的不同版本上。理解与二进制兼容性相关的问题之后,就能够实现这些目标。本文定义二进制兼容性、讨论维护兼容性的考虑事项并探讨不同版本之间的迁移,包括 Red Hat Enterprise Linux 的版本 4 和 5,SUSE LINUX Enterprise Server 的版本 9 和 10。此外,还提供确保应用程序能够跨多个发行版实现兼容性的实践。
表 1 显示了软件级别,以及本文将要详细讨论的 RHEL4、RHEL5、SLES9 和 SLES10 中受支持的特性:
表 1. 受支持的特性以及 RHEL 和 SLES 发行版的代码级别[td]
| SLES8 SP4 | RHEL3 U4 | SLES9 SP3 | RHEL4 U8 | SLES10 SP2 | RHEL5 U3 | kernel | 2.4.21 | 2.4.21 | 2.6.5 | 2.6.9 | 2.6.16 | 2.6.18 | glibc | 2.2.5 | 2.3.2 | 2.3.3 | 2.3.4 | 2.4 | 2.5 | SMT | No | No | Yes | Yes | Yes | Yes | NPTL | No | No | Yes | Yes | Yes | Yes | NUMA | No | No | Yes | Yes | Yes | Yes | JDK | IBM 1.3.1 | IBM 1.4.2¹ | IBM 1.4.2 | IBM 1.4.2 | IBM 1.4.2, 5.0 | IBM 1.4.2, 5.0 | Apache | 1.3.26 | 2.0.46 | 2.0.49 | 2.0.52 | 2.2.0 | 2.2.3 | GCC | 3.2 | 3.2.3 | 3.3.3 | 3.4.6 | 4.1.2 | 4.1.2 |
¹您可以从 IBM 站点下载 IBM Developer Kit for Linux, Java™ Technology Edition。
使用图 1 中显示的流程图确定应用程序在 RHEL 或 SLES 上是否实现二进制兼容。
图 1. 确定应用程序的二进制兼容性二进制兼容性概述Linux on POWER 的二进制兼容性通过遵循 Application Binary Interface (ABI) 来实现。ABI 是一个接口,编译后的二进制文件通过它访问操作系统及其服务。当多个操作环境支持相同的 ABI 时,就可以在这些操作环境中运行相同的二进制文件。可以在 “64-bit PowerPC ELF Application Binary Interface Supplement 1.7” 中找到关于 PowerPC® Executable 和 Linking Format (ELF) ABI 的 64 位补充的更多信息
二进制兼容性是指能够在特定处理器系列的多个环境中运行二进制文件的能力。这些环境可能是相同 Linux 发行版的不同版本,或者是完全不同的版本。例如,在基于 POWER6™ 处理器并运行 SLES10 的系统上运行可以在基于 POWER5™ 处理器并运行 SLES10 的系统上编译和运行的二进制文件。另一个例子是,在基于 POWER6™ 处理器并运行 SLES10 的系统上运行可以在基于 POWER5™ 处理器并运行 RHEL4 的系统上编译和运行的二进制文件。
处理器兼容性处理器兼容性是与 Linux on POWER 二进制兼容性密切相关的主题。这个小节讨论在不同的 64 位 POWER 处理器之间的兼容性,以及 32 位 PowerPC 处理器和 64 位 POWER 处理器之间的兼容性。
POWER 处理器兼容性“ 小节讨论的最后一个例子涉及到在两个不同的处理器类型上运行相同的二进制文件:POWER5 处理器和 POWER6 处理器。POWER6 架构是 POWER5 架构的改进,同时又保持与 POWER5 兼容,这就允许您在这两个平台上运行相同的应用程序。
PowerPC 和 POWER 处理器兼容性运行在本机 32 位 PowerPC 环境和 64 位 POWER 环境上的 32 位应用程序也可以实现二进制兼容性。可以在本机 Linux PowerPC 环境上执行在 64 位 Linux on POWER 系统上生成的 32 位二进制文件。能够实现这种兼容性是因为:
- 64 位 Power Architecture 支持完整的 32 位 PowerPC 架构。
- 64 位 Linux 内核能够处理 32 位系统调用。
- 32 位运行时环境包含必要的 32 位库。
- 64 位运行时环境包含必要的 32 位和 64 位库。
可以通过不同的方式生成 32 位和 64 位 Linux 二进制文件,这取决于开发平台:
- 在 32 位 PowerPC 平台(比如运行 Linux 的 Apple Powerbook)上的本机 GNU Compiler Collection (GCC) C 编辑器能够生成可以在本机 32 位平台上,或在包含适当 32 位用户空间库的 64 位 Linux on POWER 平台上执行的 32 位二进制文件。
- IBM XL C/C++, Version 8.0 和针对 64 位 Linux on POWER 的 GCC C 编译器能够生成 32 位和 64 为二进制可执行文件,这些文件可以在 32 位或 64 位运行时环境中执行。
- 还存在可以同时在 32 位 PowerPC Linux 系统和 64 位 Linux on POWER 系统上运行的跨系统编译器。这些跨系统编译器能够生成 32 位和 64 位二进制文件。不管在什么地方构建二进制文件,32 位的二进制文件都可以在 32 位 Linux 平台或 64 位 Linux 平台上运行,而生成的 64 位二进制文件仅能在 64 位 Linux on POWER 系统上运行。跨系统编译器的一个例子是 Crosstool
表 2 显示了如何为不同的开发平台生成 32 位和 64 位 Linux 二进制文件:
表 2. 生成 32 位和 64 位 Linux 二进制文件[td]开发平台 | 编译器 | 生成的 Linux 二进制文件 | 32 位 Linux on PowerPC | 本机 GCC C 编译器 | 32 位 | 64 位 Linux on POWER | 本机 XL C/C++ 或 GCC C 编译器 | 32 位或 64 位 | 32 位 Linux on PowerPC 或
64 位 Linux on POWER | 跨系统编译器,比如 crosstool | 32 位或 64 位 |
尽管已经演示了 32 位和 64 位环境之间的兼容性,但这并不意味着官方发行版支持这种兼容性。Red Hat 在 RHEL3 和 RHEL4 之间向前或向后支持 32 位和 64 位兼容性,而当从 SLES8 迁移到 SLES9 时,SLES8 仅支持 32 位向前兼容性。
表 3 显示了 32 位和 64 位应用程序在不同的 RHEL 和 SLES 版本上的向后和向前兼容性:
表 3. 在 RHEL 和 SLES 发行版中的 32 位和 64 位兼容性[td]发行版 | 32 位 | 64 位 | RHEL3 > RHEL4 | 向前兼容 | 向前兼容 | RHEL4 < RHEL3 | 向后兼容 | 向后兼容 | SLES9 > SLES8 | 向前兼容 | NA | SLES8 < SLES9 | NA | NA |
优化性能2.6 内核和 POWER6 架构包含能够改进应用程序的性能的特性。性能的改进得益于不同的库、处理器特性和编译器更新。有一些性能改进不需要修改应用程序,而另一些性能改进需要重新编译源代码。记住,重新编译以获得性能改进可能会损害二进制文件在某些环境中的兼容性。这个小节提供一些例子,它们展示能够改进应用程序性能的 2.6 内核新特性和 POWER6 架构。 |
|
|
|
|
|