解读Linux最新标准LSB 3.0
LSB是什么?
LSB是Linux Standard Base取首字母的缩写。LSB的目标是制定标准提高Linux系统与其他相似系统的兼容性。LSB标准定义了二进制环境,符合LSB的应yon程序在其中可以可以在其中运行。
最近 Linux Standards Base(LSB)3.0规范已经发布。新的LSB标准旨在防止Linux分化,已获得了主要Linux厂商的广泛支持。LSB规范由Free Standards Group(自由标准组织)负责维护和开发,并计划通过一套基本API和库实现互操作性,这样ISV就可以开发和移植应用,以使应用能够在LSB认证的Linux版本上运行。这套LSB标准目前支持7种架构,包括IA32、IA64、PPC32、PPC64、S390、S390X和X86_64。LSB 3.0对2.0进行了很多提升。Free Standards Group的执行理事Jim Zemlin说,最重要的是,LSB 3.0包括更新的、用于C++的应用程序二进制接口(ABI),所有主要Linux版本都支持这一二进制接口。Zemlin说:“对要支持多种版本Linux的ISV而言,这极大地降低了成本并缩短了开发时间。
一、国际Linux的标准体系
1.POSIX标准
POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的标准系统。该标准是基于现有的Unix 实践和经验,描述了操作系统的调用服务接口,用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植运行。
1991-1993年Linux刚起步时,适逢POSIX 标准的制定正处在最后定稿的时候,POSIX标准为Linux提供了极为重要的信息,使得Linux能够与绝大多数Unix 系统兼容。POSIX目前的最新标准是IEEE 1003.1-2001。
在最初的Linux 内核代码中(0.01 版、0.11 版)就已经为Linux与POSIX标准的兼容做好了准备。通过对0.01 版的内核/include/unistd.h 文件的分析就可见,Linux在发展初期就想实现与POSIX的兼容。从Linux的发展进程也可以看出,Linux 的成长一直有POSIX 标准的辅佐,没有POSIX 的指导,就不会有Linux的今天。
2.FSG(Free Standard Group)标准系列
Linux标准化规范和工作组——LSB(Linux Standard Base) 工作组是Free Standards Group的成员工作组。LSB是Linux领域重要和有影响的标准化组织。LSB工作组以达成“Standardizing The Penguin”为目标,制定最基本的标准,如公众命令集和文件传输的格式等,为应用之间的兼容奠定基础。它致力于开发和推广一系列的标准,提高不同 Linux发行版本的兼容性,使得软件应用得以运行在各种符合LSB标准的系统中,同时也帮助协调软件开发商向Linux移植和开发产品。目前国际上流行的Linux版本基本都遵循LSB标准,该规范是Linux世界统一的重要力量,可以说是Linux的工业标准。在LSB的发展历程中较为重要版本是 V1.3,目前最新版本是2004年9月份所推出的LSB V2.0,主要是在V1.3的基础上增加了对C++的支持。LSB V2.0也不能完全解决当前Linux应用中所面临的兼容性问题。OpenI18N (Open Internationalization Initiative)致力于增强国际化背景下的软件应用的可移植性和互操作性,提供一个通用的开放源码环境,使得全球不同文化、语言的应用程序可以正确地运行和正确地表达。OpenI18N也制定相关的标准并开发验证和测试工具包。符合OpenI18N标准的前提条件是符合对应的LSB标准。 Linux国际化英文是从internationalization里,将i到n之间的18个字母略称为『i18n』,再加上Linux就变成Li18nux,以此作为推展国际标准化的国际名称。 在FSG中除了LSB和OpenI18n外,还有许多有影响的标准组,如LANANA (Linux Assigned Names and Numbers Authority)、OpenPrinting、Accessibility、DWARF、Open Cluster。它们主要关注于特定的领域应用。
3.OSDL(Open Source Development Lab)标准系列
CGL(Carrier Grade Linux)是由OSDL资助的项目,致力于制订一个符合电信运营商要求的Linux标准。它针对网关, 信令服务器、管理服务器等电信应用提出了对Linux的增强,满足集成电信、数据和Internet的新一代通信基础设施的需要。CGL承诺遵守LSB标准,保持Linux版本的一致性,并遵守开放源码的许可协议和开放源码的开发流程。CGL支持相关软件包的测试和认证,是一个完整的体系。
DCL(Data Center Linux)也是OSDL资助的项目,致力于制订一个满足企业数据中心需要的Linux标准。它面向金融行业和制造业等运行关键性业务系统。其特征是积极采用新技术,使大型系统能运行关键性业务并承担高风险和重负荷。
DTL(Desktop Linux)是OSDL新近资助的项目,旨在推进Linux企业级的桌面应用。该项目目前处于筹划期,对外发布的信息较少。据可靠消息,受中国大力推进桌面Linux操作系统的影响,OSDL将加大与中国的合作力度,特别是在桌面Linux领域。
4.United Linux(UL)
2002年6月,Caldera、 Conectiva、SuSE以及TurboLinux公司宣布成立UNITEDLINUX组织,计划使Linux的开发与认证工作围绕一个全球统一的商用Linux版本进行。UNITED LINUX(简称UL)将满足企业用户对标准的商用Linux版本的需要,该版本能跨越软件及硬件平台,从而加速企业采用Linux。根据达成的协议,四家公司将通力合作开发一个通用核心的Linux操作系统环境,称之为UL软件。四家合作公司将在UL操作系统上捆绑自己的增值产品与服务,并以各自的品牌进行市场与销售。几乎每个为商务提供部分技术架构的供应商都表示支持UL,包括系统与软件供应商AMD、Borland、CA、富士通-西门子、HP、IBM、Intel、NEC等。UL将提供一个真正基于标准的Linux操作环境,使供应商需要认证的Linux版本显著减少。因为众多原因,United Linux基本上趋于衰落,但对于如何防止Linux的分裂、如何简洁Linux生态链提供了有益的参考。
二、 LSB发展的路线图
LSB由FSG开发和维护。FSG是一个独立的非盈利组织,该组织专注于通过发展和促进标准来加速开放源码软件的发展。几年前,一些志愿人员发起了LSB项目, LSB项目的目的是发展和改进标准,提高Linux和其它类似系统间的兼容性,使应用软件可以在任何系统上运行。 LSB标准定义了一个二进制环境和与之相关的标准文档,在这个二进制环境中,任何一个符合LSB标准的应用程序都能够正常运行。LSB标准文档包括了一系列基础API、库和互用性标准,还包括了测试套件、开发环境、执行案例和开发文档。 随着LSB开发的深入,一些大的Linux发行商开始积极参与其中,一些大型企业,如HP和IBM等也逐渐加入。
2000年5月,自由标准组织正式成立,全面负责LSB计划。
2001年7月4日,LSB 1.0发布,迈出了Linux标准化道路上重要的一大步。LSB 1.0的规范仅包括了通用LSB(LSB Common)1.0.0。
2002年2月4日,在美国召开的LinuxWorld大会上,HP、IBM、拓林思、SuSE、Red Hat、Caldera和Ximian公司联合发布了LSB 1.1。LSB 1.1对Linux核心功能和一些组件进行了标准化。它包括一组公共API、一个开发包和一些测试功能。LSB 1.1在1.0的基础上增加了对IA32架构处理器的支持,规范包括通用LSB 1.1.0和IA32处理器专用规范(LSB IA32)1.1.0。LSB 1.2 LSB 1.2包括了通用LSB规范及对IA32、IA64和PPC32架构处理器的专用规范。LSB 1.3 LSB 1.3在1.2的基础上又增加了对IBM S/390和S/390X的支持。规范包括通用LSB 1.3、LSB IA32 1.3、LSB IA64 1.3、LSB PPC32 1.3、LSB S390 1.3和LSB S390X 1.3。
2004年9月14日正式发布LSB 2.0。其最大特点是增加了对C++的二进制接口。
2004年10月21日,LSB 2.0.1发布。
2005年7月1日, LSB 3.0发布。
LSB 3.0更新了原来版本的一些基本规范和执行,特别是SUS(Single Unix Specification,单一Unix规范)的升级。以SUS 3.0为基础。SUS 3.0同时也是IEEE 1003 1-2001标准(POSIX)和ISO/IEC 9945:2003标准。LSB 3.0中最重要的是文档的重构和LSB上层附加标准的发展。文档重构的目的是推动LSB未来的发展。LSB 3.0中另一个重要的新特点是引入了对POSIX线程和C++应用的支持,它增加了C++的应用二进制接口(ABI),用于改善代码互用性。 这一特点意义重大,因为现在的大多数应用都是用C++编写,通过在LSB中加入C++支持,使数以千计的软件开发商能以较低成本将他们的应用移植到Linux上,由此带来Linux应用软件数量上的突飞猛进。LSB 3.0的文档结构是附加规范模块的根基,这些附加规范模块在核心LSB规范(Core LSB Specification)之上。这些新模块允许新功能的增加,其中一些功能甚至是被认为在LSB范围之外的。新模块还允许LSB以外的组织通过使用LSB确定的框架来添加新功能。LSB 3.0.0 标准文档,LSB标准发展到了3.0,结构与2.0一样。LSB 3.0 基于新的C++ 二进制接口,还有其他的改进。另外还包括PAM和FHS 2.3。,以及包括加入gcc3.4,librt,一些新功能和新接口以及新命令等。
三、LSB标准的构成
LSB是一种应用程序二进制接口,主要解决Linux系统与应用程序之间的兼容问题。LSB是在IEEE POSIX源代码标准和Unix规范基础上建立起来的,包含多种接口技术。也有一些接口技术未被LSB收取,这些接口大多是开发接口或用户级工具。LSB可以将源代码标准扩展至其它领域,例如图形领域等。此外,LSB还包括一些必要的技术细节,例如支持大型二进制应用软件平台的二进制执行文件格式等。
1.文档
LSB 3.0的文档结构是附加规范模块的根基,这些附加规范模块在核心LSB规范(Core LSB Specification)之上。这些新模块允许新功能的增加,其中一些功能甚至是被认为在LSB范围之外的。新模块还允许LSB以外的组织通过使用LSB确定的框架来添加新功能。表1是LSB 3.0规范的重要组成,Architecture栏目是3.0文档,空白处表示没有建立相关文档。包括公共规格(gLSB)和特殊架构规格(archLSB)认证,其中gLSB定义了那些基于LSB 的程序在运行过程各模块间的标准接口,archLSB定义了基于不同架构的处理器(CPU)的标准接口。
表1 LSB 3.0文档组成
文档集 |
功能域 |
Architecture |
|||||||
Generic |
IA32 |
IA64 |
PPC32 |
PPC64 |
S390 |
S390X |
AMD64 |
||
LSB Base |
LSB |
LSB-Core-generic |
LSB-Core-IA32 |
LSB-Core-IA64 |
LSB-Core-PPC32 |
LSB-Core-PPC64 |
LSB-Core-S390 |
LSB-Core-S390X |
LSB-Core-AMD64 |
C++ |
LSB-CXX-generic |
LSB-CXX-IA32 |
LSB-CXX-IA64 |
LSB-CXX-PPC32 |
LSB-CXX-PPC64 |
LSB-CXX-S390 |
LSB-CXX-S390X |
LSB-CXX-AMD64 |
|
Graphics |
LSB-Graphics |
||||||||
Individual |
LSB |
LSB-generic |
LSB-IA32 |
LSB-IA64 |
LSB-PPC32 |
LSB-PPC64 |
LSB-S390 |
LSB-S390X |
LSB-AMD64 |
2. 测试软件集合
其中包括Linux平台测试软件和Linux二进制兼容的应用程序。
针对Linux平台的测试步骤
为了增加LSB标准的权威性和可信度,FSG专门推出了“LSB认证”产业标准及一系列测试项目。只有通过所有测试的系统和应用软件才能获得LSB认证证书。总的来看,针对Linux系统的测试主要有以下四个步骤:
1.了解认证程序和步骤;
2.对系统进行非正式测试;
3.申请进行认证测试;
4.进行正式测试并提交测试结果。
参加测试的Linux系统提供商必须了解LSB测试的过程,即系统提供商必须保证自己的产品通过所有的兼容性测试,签署商标认证协议并提交FSG。成功通过所有测试的Linux系统名称将列入FSG网页的认证登记表,向全世界公开。
针对ISV应用软件的测试步骤
针对应用软件的测试步骤与Linux系统的测试步骤大同小异。首先,二者所选择的测试套件不同;其次,选择的产品标准也不同,应用软件选择的产品标准包括支持IA32、IA64、32位PowerPC、64位PowerPC、S/390、S/390X和64位AMD技术的LSB 3.0应用程序。
支持LSB标准的应用软件主要应具备以下要素:
1.支持LSB标准的应用软件只能使用运行环境提供的LSB接口;
2.应用软件必须经正确打包以确保不同Linux系统和应用软件的兼容性;
3.应用软件提供商必须证明该应用软件可以在LSB示范系统下运行正常;
4.应用软件必须在两种不同的LSB运行环境下运行正常;
5.应用软件和其它软件套件必须安装在正常的目录下;
6.所有支持LSB标准的软件套件名称必须以“lsb-”开头。
LSB3.0 的功能测试软件包括13个:
lsb-apache、lsb-celestia、lsb-expect、lsb-groff、lsb-lynx、lsb-python lsb-rsync、lsb-samba、lsb-tcl、lsb-xpaint 、lsb-xpdf 。可以在这里下载:http://www.linuxbase.org/download/
3.二进制接口标准和基础库;
以LSB 3.0为例,其基础库主要包括以下两种:
基准库 glibc、libc、libm、libpthread、libpam、libutil、libdl、libcrypt、libncurses和libz。
图形库 libX11、libXt、libXext、libSM、libICE和libGL。和2.0相比增加了libXext和libXi。
4.应用程序实施的技术细节
包括软件打包格式、文件系统版面(主要是文件系统分级标准)和适用于应用程序的一些命令。支持LSB标准的应用软件可产生一个二进制镜像,该镜像可通过一个特定的处理器架构运行于所有支持LSB标准的Linux系统中。此外,LSB标准还包括一些LSB认证的测试工具组件,如测试套件、用于应用软件LSB标准测试的Linux示范版,以及一组用来测试系统的应用软件。
四、使用 LSB 资源来开发二进制兼容的应用程序的步骤
Linux 有固有的二进制兼容性;然而,Linux 标准库(Linux Standard Base,LSB)已为应用程序设置了一些使二进制兼容性更为实用的规则和指导原则。为 Linux 而压缩-包装(shrink-wrap)LSB 应用程序要求您针对移植层来编码、使用正确的 ABI、用 LSB 应用程序检查器来测试、遵循 LSB 打包的指导原则和寻求 LSB 认证。
1. 针对移植层来编码
2. 使用正确的 ABI
3. 用 LSB 应用程序检查器来测试
4. 遵循 LSB 打包的指导原则
5. 寻求 LSB 认证
五、LSB标准的意义及发展前景
一个标准的应用软件二进制接口对于Linux系统有着非凡的意义,概括起来主要包括增强用户对应用软件的信心、降低成本和扩大市场。应用软件得以迅速推广的原因主要在于用户对它的信心和支持。这种信心来自多个方面,包括兼容性、可移植性及可靠性。
LSB标准认证可确保应用软件满足客户的兼容性、可移植性和可靠性需求。因为,LSB使用户使用的软件更加标准化,确保它们与各种Linux系统的兼容。用户在所有支持LSB标准的架构下使用Linux系统,移植各种应用软件。LSB严格的测试程序确保支持LSB标准的应用软件有着较高的可靠性。随着用户对支持LSB标准的应用软件信心增强,以及开发和使用成本的降低,市场的扩大成为一种必然趋势。然而,LSB标准尚面临着技术上和体制上的双重挑战,开放系统提供商都不希望Linux社区四分五裂,同时又想保持自身的特色技术,以便在激烈的竞争中立于不败之地。未来,FSG将继续为LSB标准增加新的库,提高其稳定性和可扩展性。对于LSB开发环境来说,FSG将继续对开发工具进行完善,使其变得更加透明、更加简便。
总结:
LSB 的目标是使应用程序在任何 Linux 分发版上运行。LSB 实现这一点的方式是通过受一致性担保的支持的分发版和应用程序认证。FSG董事会成员Dirk Hohndel预测,尽管LSB不会建立一种单一的Linux操作系统,但它将提供一个环境,在这个环境中,支持LSB标准的各种Linux系统可以相互竞争,用户可以在所有Linux系统中使用这些支持LSB标准的应用软件。
LSB小贴士:
1. FSG(Free Standards Group)是什么?
FSG是一个中立的、非盈利机构,它专注于通过制定标准促进免费软件与开源软件的发展,其下属项目组包括:Linux Standard Base (LSB), OpenI18N (formerly Li18nux), LANANA and OpenPrinting,详见FSG官方网站:.
2. LSB认证计划是什么?
LSB认证计划是由FSG发起的一个计划,对符合一致性要求的所有产品开放。它不仅仅局限于Linux系统和Linux应用软件。LSB认证是依据LSB认证策略文档和LSB商标许可协议的正式过程。已通过认证产品的提供商,被授权表明其产品符合LSB认证支持的认证类别指定的所有一致性要求。
3. LSB只适用于Linux操作系统及其应用程序吗?
不. 只是更容易在类UNix系统上运行。
4. 什么是LSB应用程序组,可从哪里获得?
LSB应用程序组是一个满足LSB应用软件实例集。它是LSB认证对运行环境的其中一个要求,即LSB应用程序组中的多个应用程序被证明能在该环境中正确运行。LSB应用程序组可从http://www.linuxbase.org/appbat/ 获得。认证要求使用的应用程序组的要求说明见 http://www.linuxbase.org/appbat/cert.html