在 Linux on POWER 上进行应用程序开发

学习如何在基于 IBM POWER 的服务器上开发和部署 Linux 应用程序

在 IBM System p™ 和 System i™ POWER 平台上开发和部署 Linux® 应用程序与在其他 Linux 系统上的开发和部署相似。在本文中,讨论对于 Linux on POWER 系统应该了解的相似性和差异。

Matt Davis (dwinfo@us.ibm.com), Linux Power 技术顾问, EMC

在本文最初发表时,Matt Davis 是 IBM Systems Solutions Enablement 团队中的一名 Linux 技术顾问。作为 System p Linux 项目的一名元老,他研究和测试了新近出现的 System p Linux 技术,并写了一些报告以总结他的发现。这其中包括针对 Linux on POWER 的日志文件系统(Journaling File Systems),用 Linux on POWER 进行并行网格计算,以开放源码产品来取代 Linux on POWER 中的商业软件,以及 Linux 解决方案编目。当他还是得克萨斯州立大学(位于奥斯汀,在那里他获得了两个学位)的一名学生时,他以实习生的身份来到了 IBM,从此就留在了 IBM 公司。



Anita Govindjee (agovindj@us.ibm.com), System p 技术顾问, EMC

Anita Govindjee 是 IBM Systems Solutions Enablement 团队的一名 System p 技术顾问。她具有 10 年多的 C/C++ 和 Java 软件开发经验以及 AIX、Linux、Sun Solaris 和 HP-UX 的系统管理经验。现在,她为 ISV 提供有关 System p 的技术支持。她拥有 University of Illinois,Urbana-Champaign 的计算机科学学士学位,以及斯坦福大学的计算机科学硕士学位。她撰写了一本关于 AIX 上的 VERITAS Foundation Suite 软件的 IBM 红皮书;还撰写了若干本白皮书,有一本的内容是从 Solaris 到 AIX 的迁移,还撰写了一篇有关如何在 AIX 上使用 GNU C/C++ 编译器的文章。



Vandana Kumar (vkumar@us.ibm.com), ISV Global Solutions Enablement Strategy, EMC

Vandana Kumar 是 IBM 的 ISV Enablement 组织的一名资深技术顾问。她的职责包括帮助 ISV 利用 IBM 的新技术。她拥有 Indian Institute of Technology,Roorkee 的学士学位和 Wayne State University 的电子工程硕士学位。她已经撰写了很多有关在 AIX 上启用、移植以及优化应用程序的文章。可以通过 vkumar@us.ibm.com 与她联系。



2007 年 5 月 10 日

简介

System p 和 System i 服务器都基于相同的 POWER 处理器架构,在 System p 或 System i 上的 Linux 发行版中编译的二进制代码可以在这两种平台上运行。但是,在 System p 和 System i 服务器之间,I/O 支持有差异,可能需要为此做一些修改。

在阅读本文时,如果遇到您不熟悉的术语,那么请参考 有用的术语和定义


安装

本文中的信息基于 SUSE Linux Enterprise Server(SLES)8 和 Red Hat Linux 7.1,内核版本是针对 POWER 架构的 2.4 版。SUSE Linux 发布并支持针对 System p 和 System i 硬件的 SUSE Linux Enterprise Server(SLES)8。


System p 安装

每个硬件平台都对 Linux 安装有一组需求。对于 System p 服务器,Linux 安装的大多数需求与机器引导装载器和 OpenFirmware 相关。

在基于 Intel® 的硬件上,BIOS 从主引导记录(Master Boot Record)装载系统映像。在 System p 硬件上,OpenFirmware 从一个引导分区(Boot Partition)装载可引导的系统映像。尽管这不是 OpenFirmware 的惟一功能,但它是与 Linux 安装相关的惟一功能。作为本机安装的替代方案,可以将 Linux 安装在 System p 逻辑分区(LPAR)中。这需要使用对 System p LPAR 进行管理的 Hardware Management Console(HMC)。


System p 上的本机 SLES 8 安装

System p 上 SLES 的本机安装可以由 SUSE 轻松地完成。有四个安装选项:

  • 通过串行连接进行基于文本的安装
  • 通过控制台或 CRT 进行图形化安装
  • 通过 VNC 进行图形化安装
  • 使用网络安装服务器

这里只简要地提到这些选项,标准的 SLES 8 文档中提供了更多信息,在 SLES 8 发行版光盘上可以找到这些文档。

  • 为什么使用串行连接进行安装?

    某些(并非全部)System p 机型装备了支持的视频适配器。支持的视频适配器包括 GXP-120、GXP-130 和 GXP-135,但是 GXP-135 需要带数字视频连接器的 CRT。对于其他 System p 机型,通过认可的终端客户机使用串行连接进行安装。认可的终端包括软件终端模拟器,比如 Minicom。YaST2 支持几种常用的终端类型,包括 vt100 和 vt220。为了连接系统服务处理器,一定要将端口速度设置为 9600 波特。SUSE 的 YaST2 安装程序以基于文本的模式(Linux RC)启动,引导用户进行安装。

  • 为什么使用 CRT 进行安装?

    装备了支持的视频适配器的 System p 机型可以用 CRT 进行安装。这为 SUSE 的 YaST2 安装程序提供了更有吸引力的 GUI 界面。但是,如果将 CRT 连接到 System p 硬件在空间方面效率不高,那么使用 CRT 进行安装不是合适的方法。

  • 为什么使用 VNC 进行安装?

    VNC 是一个远程显示系统,它允许查看 GUI 显示,甚至是来自 Microsoft® Windows® 客户机的 GUI 显示。如果在环境中 Microsoft Windows 客户机最适合作为进行安装的终端,那么这是合适的方法。这个选项需要使用串行连接启动计算机,但是在启动之后,它为 SUSE 的 YaST2 安装程序提供了 GUI 界面。VNC 的安装和配置文档参见 参考资料

  • 为什么使用网络安装服务器进行安装?

    如果要安装多台机器,那么使用网络安装服务器可能是值得的。在无人职守(light out) 环境中,这尤其有用;这种环境要求能够从一个远程位置进行安装,而不需要访问连接到任何计算机的显示器、键盘或鼠标。网络安装服务器提供两个优势:

    • 安装时不需要直接访问控制台
    • 可以跨多个系统同时进行安装

    网络安装服务器使用一个网络文件系统(NFS)共享 SLES 8 光盘的内容。从基于文本的 LinuxRC 安装实用程序调用网络安装服务器,在 Yaboot 提示下提供 install=manual 内核参数时会启动这个实用程序。

System p 上 SLES 8 的 LPAR 安装

SLES 8 被设计为在 System p 逻辑分区中运行,所以提供了与 AIX® 相同的资源消费粒度。与 AIX 一样,必须使用系统的 Hardware Management Console(HMC)对硬件进行分区。使用 HMC 建立逻辑分区(LPAR)之后,可以按照与本机安装相同的方式引导和安装目标 LPAR。可以使用前一节(System p 上的本机 SLES 8 安装)描述的四种安装方法之一。注意,对于 System p Linux,还不能使用 AIX 5.2 中的那种动态分区特性。在 AIX 5.2 DLPAR 系统上,Dynamic AIX LPAR(DLPAR)可以和 Linux LPAR 同时使用,但是 Linux LPAR 在启动之后不会对任何动态资源重分配做出响应。

在 System p 上安装 Red Hat Linux 7.1

在 System p 上安装 Red Hat Linux 7.1 与安装 SLES 8 相似。Red Hat 提供一个与 SUSE 的 YaST2 不同的安装程序,但是它们都使用 Yaboot 引导装载器,都依靠 System p OpenFirmware 来启动可引导的内核映像。Red Hat Linux 7.1 提供了串行连接、CRT 和网络安装服务器三个安装选项,但是不支持通过 VNC 进行安装。

System p p655 机型上的安装

System p p655 需要独特的安装过程,因为它没有图形适配器、CD-ROM 和键盘。由于缺少图形适配器,就不能用 CRT 进行安装。可以添加外部 CD-ROM 驱动器,在这种情况下,可以用串行连接进行一般的安装。还可以添加图形卡和 USB 键盘,这样就能够进行 CRT 安装,但是这在许多环境中不方便。如果没有外部 CD-ROM 可用,就需要从一台 AIX 机器进行特殊的网络安装。在 System p 硬件的文档中可以找到进行 Remote Initial Program Load(RIPL)设置的指令,但是这里只简要介绍一下在 p655 上使用 RIPL 安装 Linux 的过程。

从 OpenFirmware 菜单中选择 Remote Initial Program Load Setup。这会打开对网络设备进行选择和配置的菜单。这些菜单还可以配置关于 RIPL 服务器(例如,NIM 服务器)的信息。配置数据之后,返回到顶级 OpenFirmware 菜单并选择 Multiboot,然后选择 Select Install Device。为 RIPL 安装配置的网络设备将可用。选择这个安装设备,OpenFirmware 将装载 SLES 引导映像。


System i 安装

正如前面提到的,每个硬件平台都对 Linux 安装有一组需求。对于 System i,在开始 Linux 安装之前需要进行服务器的硬件分区。然后,用 OS/400® 管理连接创建一个 Linux 虚拟磁盘。在此之后,在 System i 上安装 Linux 的过程就与其他平台相似了。

在 System i 上安装 SLES 8

很容易使用 SUSE 和 OS/400 在 System i 上安装 SLES 8。可以使用 System i 用户熟悉的用于集成其他操作系统的模型在 System i 上提供 Linux 支持。安装分五个基本步骤。

  1. 创建 Linux 要使用的分区。分配硬件资源。
  2. 创建一个 OS/400 Network Server Description(NWSD),它引用 Linux 分区并指向作为引导设备的 OS/400 光盘驱动器。
  3. 创建一个 OS/400 Network Storage Space(NWSSTG),它将作为 Linux 虚拟磁盘,并将它连接到 Linux Network Server Description。
  4. 连接到 Linux 虚拟控制台,从而可以在安装期间看到消息并完成任何额外的 Linux 配置。连接方法是通过 telnet 连接 OS/400 上的特定端口,并提供特定的 Linux 虚拟控制台密码。连接到控制台之后,Linux 用户就可以登录 Linux了。
  5. 将 Linux 光盘放进 OS/400 光盘驱动器,并根据 OS/400 的 Network Server Description 进行不同的操作。安装时首先从光盘驱动器进行 Linux 引导,并在虚拟磁盘上创建 Linux 磁盘映像。此后的操作由 Linux 负责执行。

在 System i 上,如果需要从由 Linux 直接控制的磁盘(而不是虚拟磁盘)运行 Linux,那么 System i 也支持在安装之后将 I/O 设备直接连接到 Linux 分区。关于 Linux 分区特性和在 System i 上安装 Linux 的更多信息,请参见 参考资料 和发行版附带的 System i SUSE 安装手册。

在 System i 上安装 Red Hat Linux 7.1

与 System p 一样,System i 上的 Red Hat 安装要使用与 SUSE 不同的安装程序,但是基本步骤与上面描述的 System i 上的 SLES 安装相同。


设置和维护

一般的 Linux 维护可以以多种方式进行管理。大多数发行版(包括 SUSE 和 Red Hat 产品)都包含一个集中的管理程序,这个程序与传统企业 UNIX® 中的管理程序(比如 SMIT for AIX)相似。SUSE 开发了一个集中的管理程序 Yet another Setup Tool 2(YaST2)。Red Hat 提供 Linuxconf,这个程序被其他几个 Linux 发行版采用了,成为标准的配置实用程序。这里简要介绍这些工具,以及管理 Linux 系统的信息。

YaST2

SLES 8 中的管理工作在 YaST2 管理实用程序中集中地处理。YaST2 可以管理用户、安全、软件、网络、文件系统等等。可以在 X11 中远程使用它,或者通过安全 shell 在基于文本的模式中使用。YaST2 还提供了一种安全保护机制,它在机器每次引导时重写配置文件,否则 YaST2 就会退出。这会防止脚本例程修改配置,造成全系统范围的不利后果。但是,管理员应该认识到,除非出现以下情况,否则手工编辑的配置文件将被重写:

  • 使用 YaST2 进行的修改与手工编辑的修改匹配。
  • 编辑 /etc/sysconfig/suseconfig 文件,让 YaST2 不覆盖文件。

Linuxconf

Linuxconf 是一个开放源码的实用程序。与 YaST2 相似,Linuxconf 支持对用户、安全、网络等等进行管理。可以使用安全 shell 运行 Linuxconf,从而进行远程管理。Linuxconf 有 X11 版本和基于文本的版本。


一般 Linux 管理

Webmin

Webmin 是一个管理工具,它提供从安全 Web 界面远程管理 Linux 系统的能力。Webmin 是用可插入模块设计的,它提供对各种服务器进程的管理能力,包括 Apache Web 服务器、Samba 或 NFS 文件共享、Berkeley Internet Name Daemon(BIND)等等。许多服务器守护进程都安装了可选的 Webmin 模块,这些模块与现有的 Webmin 集成。Webmin 是基于 PERL 的,而且是完全开放源码的。关于 Webmin 的更多信息参见 参考资料

手工编辑 /etc/ 中的配置

尽管像 Linuxconf 和 Webmin 这样的工具会使管理更加容易,但是在某些情况下,手工编辑配置文件可能是必需的,或者是更合适的方法。例如,管理工具可能无法控制软件的特定部分,或者是虽然提供了控制能力,但是控制粒度不符合需要。尽管有一些例外情况(比如安装在 /opt/ 或用户主目录中的软件),但是大多数配置文件可以在 /etc/ 目录树中找到。


应用程序开发

编译器

Linux on POWER 有许多可选的编译器。除了 IBM 开发的 VisualAge C、C++ 和 FORTRAN 编译器之外,GNU Software Project 为 Linux on POWER 上的开发提供了他们的编译器(GCC)的四个版本。对于高性能的应用程序,尤其是执行大量浮点计算的应用程序,VisualAge 编译器提供了一个企业级的开发工具,可以针对 Linux on POWER 进行最好的优化。64 位和 32 位的 GCC 3.2 在 GNU Public License 之下免费提供。在针对 IBM System p 和 System i 服务器的 Red Hat Advanced Server 3.0 和 SUSE SLES 8 中都附带这些编译器。关于在哪里可以找到 GCC 3.2 和比较老的 GCC 2.95,请参见 参考资料。如果要编译比较老的没有针对 GCC 3.2 优化过的开放源码,就可能需要 GNU 编译器的这个老版本。

什么东西要用 GCC 编译器进行编译?

Red Hat Advanced Server 3.0 和 SUSE SLES 8 都附带用 GCC 3.2 编译的软件。除了 Red Hat 和 SUSE 附带的用户空间软件之外,Linux 内核也是用 GCC 3.2 编译的。

Linux 内核可以是 32 位或 64 位的,这取决于编译它所用的 GCC 编译器版本。这条原则也适用于任何 Linux 内核模块或 C 运行时库的构建。注意,与其他一些 64 位平台上的 Linux 不同,64 位的 Linux on POWER 不会损害 32 位应用程序的性能。所有 32 位和 64 位应用程序都可以在相同的空间中运行,没有任何性能损失。因此,建议只使用 64 位内核。

GCC 可能也适用于用户级软件的编译。GCC 是标准的 Linux 应用程序编译器。这意味着 Linux 社区花费了很大精力让用 GCC 编译的代码可以轻松地跨平台工作。因此,在一个平台上用 GCC 编译的大多数软件,在另一个平台上也可以用 GCC 轻松地编译。

什么东西要用 Visual Age 编译器进行编译?

IBM 开发的 Visual Age Compiler Set for Linux on POWER 提供了高性能的编译器,可以针对 POWER3 和 POWER4 架构进行出色的优化。用这些编译器编译的应用程序(尤其是执行大量浮点计算的应用程序)的性能比用 GCC 编译时好得多。建议对任何资源密集型软件都用 Visual Age 编译器进行编译。

除了出色的性能之外,Visual Age 编译器还支持从其他 UNIX 平台轻松地移植到 Linux on POWER。

向 Linux on POWER 进行 Java 移植

Red Hat 和 SUSE 在它们的 Linux on POWER 版本中都提供了 Blackdown JDK 1.3.1。这个 JDK 是专门为 POWER 开发的。但是,许多应用程序针对的是其他 JDK,比如 Sun Microsystems 和 IBM 提供的 JDK。幸运的是,在 Linux on POWER 环境中可以安装 IBM JDK 的 1.3.1 版本。Sun Microsystems JDK 当前还不能用于 Linux on POWER。这些 JDK 通常安装在 /usr/local 或 /opt/ 下面的一个目录中;但是无论安装目录在哪里,都应该修改 JAVA_PATH 环境变量来提供对 JDK 可执行文件的访问。通常在 /etc/profile 中进行修改来支持系统范围的访问,或者根据需要在相应用户的 .profile 文件中进行修改。

方法版本的差异有时候会导致 Java™ 不兼容问题。在这些情况下,可能需要更换 JDK 厂商或版本,以使应用程序可以工作。幸运的是,完全可以同时安装多个 JDK 并根据需要修改 JAVA_PATH 环境变量。


软件部署

在 POWER 处理器平台上运行 Linux 应用程序

对于在低端 Intel 处理器计算机上开发的应用程序,可以在高端 POWER 服务器上使用相同的开发工具以 32 位或 64 位模式进行重新编译。也可以使用跨编译器选项在 Intel 处理器上创建 POWER 处理器二进制代码。但是,建议使用 VisualAge 编译器,从而在 POWER 处理器系列上获得最好的性能。另外,对于任何不需要进行 64 位寻址的应用程序,建议仍然使用 32 位的库以保持它的运行时效率。

版本和发行版之间的差异

对于一个 Linux 发行版的不同版本,库和编译器版本常常有差异。例如,libc 和 glibc 是两个系统范围的库,大多数 Linux 应用程序都需要它们。尽管在 Linux 开发中向上兼容性通常非常好,但是在版本变化时头文件和系统调用有时候会合并或者改变名称。这些变化在库附带的文档中和开放源码维护者的 Web 站点上都有记录(参见 参考资料),比如许多 Linux 发行版的库、编译器和其他组件的不同版本和级别。请注意这些差异。

因为 Linux File System Hierarchy(由 Free Standards Group 制订)还没有被所有发行版采用,所以在不同的发行版上可执行文件的位置可能不一样。通过在 PATH 中追加目录或者创建到所需位置的符号链接,就可以轻松地解决这些问题。同样,在不同的发行版之间,一些应用程序的配置文件位置也不一样。例如,Apache Web 服务器配置文件 httpd.conf 在一些发行版中位于 /etc 树中,在其他发行版中位于 /opt/httpd/ 中。同样,符号链接可以解决这些不一致问题。

除了版本差异之外,一些有流行的替代品的 Linux 软件在一些发行版中可能并未默认安装。Linux 引导装载器是这种情况的一个好例子。在许多发行版中,Linux Loader(LiLo)是默认的引导装载器,但是其他发行版以图形化引导装载器 GRUB 作为默认的引导装载器。除了这些低级工具之外,在不同的发行版之间,KDE 和 GNOME 等窗口环境及其开发工具包的版本和默认安装情况也可能不一样。这对于开发 GUI 软件可能很重要。

I/O 设备支持

运行 Linux 的 System p 和 System i 服务器上的 I/O 适配器支持取决于许多因素,包括是否有开放源码的驱动程序以及 IBM 对可用 Linux 发行版的测试和认证活动。一些 I/O 设备得到比较普遍的支持。首先支持的是在系统平台和关键设备上集成的 I/O 适配器,比如 SCSI 和 LAN 适配器。对于 System i 内核,IBM 已经在 Linux 2.4 PowerPC 源代码树中提供了虚拟设备(由 OS/400 拥有,通过 Linux 分区共享)的设备驱动程序。对于直接连接到 Linux 分区的设备,请参见 参考资料 中 System i Linux Web 站点的链接,了解 ibmsis 驱动程序及其配置实用程序。

随着时间的推移,会出现更多的设备驱动程序并得到测试,支持的 I/O 设备将因此增加。

有用的术语和定义

  • AIX 5L - AIX 操作系统的第 5 版,它在基于 POWER 架构的系统上运行。最新的版本是 AIX 5.2,于 2002 年 10 月 8 日发布。
  • GCC - GNU Compiler Collection。这是 GNU Project 提供的一组编译器,包括 C、C++ 和 Java 编译器。
  • VisualAge - IBM 提供的一组编译器,包括 C 和 C++。
  • OS - 操作系统。
  • POWER - IBM System p 和 System i 服务器共用的芯片架构的名称。
  • PowerPC - 与 POWER 相同。IBM System p 和 System i 服务器共用的芯片。
  • POWER4 - 最新的 POWER 芯片。POWER4 架构在许多商业和高性能计算环境中提供出色的性能。基于 POWER4 的 System p 和 System i 服务器支持动态逻辑分区。更多信息参见 参考资料 中的 POWER4 白皮书。
  • POWER3 - 入门级 System p 服务器当前可用的 POWER 芯片之一。
  • System p - IBM 基于 UNIX 的服务器,可以运行 AIX 和 Linux。AIX 和 Linux 可以在同一个基于 POWER4 的系统的逻辑分区中运行。Linux 还可以作为主操作系统在 System p 服务器上运行。
  • System i - IBM 的集成服务器,可以运行 OS/400 和 Linux。OS/400 和 Linux 可以在 System i 服务器的逻辑分区中运行。System i 可以支持最多 31 个 Linux 分区。IBM 声明在未来的 System i 版本中将支持在分区中运行 AIX。
  • LPAR - 逻辑分区。允许多个操作系统实例在同一个服务器上运行。
  • DLPAR - 动态逻辑分区。与 LPAR 相似,但是能够动态地改变系统资源(比如 CPU 和内存)的分配,不需要重新启动系统或分区。
  • HMC - Hardware Management Console(HMC),LPAR 和 DLPAR System p 服务器使用它管理逻辑分区。
  • IDE - 集成开发环境。用来编译和调试应用程序代码的开发环境。
  • CRT - 连接到服务器的显示器。
  • VNC - 虚拟网络计算。这是一种远程显示系统,支持从互联网上的任何地方查看计算机(Linux 和其他平台)的计算桌面环境。
  • LinuxRC - 一个基于文本的程序,用来设置要安装的 Linux 内核。
  • YaST2 - Yet another Setup Tool 2。SUSE Linux 使用它进行系统配置。
  • GNU - Free Software Foundation 的免费操作系统和免费软件项目。
  • GPL - GNU Public License。开放源码软件常常采用 GPL 作为许可协议。

致谢

作者要感谢 Kay Tate(一位 IBM Linux on POWER 顾问)和 Steve Dibbell(一位 IBM AIX 和 Linux 专家,擅长硬件和软件集群)对本文的审阅和贡献。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux
ArticleID=219248
ArticleTitle=在 Linux on POWER 上进行应用程序开发
publish-date=05102007