IBM AIX® 操作系统过去提供 32 位和 64 位内核,并要求内核扩展开发人员提供 32 位和 64 位内核扩展。为帮助开发人员管理多个内核扩展,AIX 操作系统提供了双模式 存档方法,该存档方法在同一存档文件中同时允许 32 位和 64 位内核扩展。在加载时,系统加载器加载相应位的内核扩展。
从 AIX Version 6 开始,AIX 操作系统通过仅 提供 64 位内核简化其内核环境。AIX Version 6 将根据 AIX 二进制兼容性所定义的方式维护与先前 AIX 版本的二进制兼容性(请参见参考资料)。
由于 AIX Version 6 去除了 32 位内核,因此大大减少了内核扩展的开发工作。内核扩展开发人员将无法在 AIX Version 6 上构建甚至测试 32 位内核扩展。内核环境的减少意味着提高了投资回报率,同时减少了开发、构建、测试、打包和管理内核扩展所需的资源。
为支持 AIX Version 6 上的 64 位内核扩展,从内核库和内核导入文件删除了对构建 32 位内核扩展的支持。修改了 <sys/types.h> 头文件,这样,如果定义 _KERNEL,而不定义 __64BIT__,则会出现编译错误。由于仅能构建 64 位内核扩展,可能需要更改某些内核扩展构建环境来避免构建错误。
使用此简化的内核环境需要注意以下事项:
- 将影响仅提供 32 位内核扩展的应用程序。
- 在 AIX Version 6 上构建内核扩展时,将影响提供 32 位和 64 位内核扩展的应用程序构建环境。
直接或间接通过第三方代码要求仅支持 32 位内核扩展的应用程序将无法加载内核扩展。根据应用程序逻辑,无法加载内核扩展可能导致应用程序在 AIX Version 6 上无法使用或严重受阻。这不是 AIX 二进制兼容性语句的破坏,而是不支持 32 位内核扩展。
提供 32 位和 64 位内核扩展的应用程序需要在 AIX Version 6 构建环境中稍微进行更改。由于在 AIX Version 6 中去除了 32 位内核和 32 位内核扩展构建环境,因此需要修改构建 32 位和 64 位内核扩展的自动化构建环境,以适应单一的 64 位内核扩展环境。
没有从 AIX Version 6 去除对双模式内核扩展的支持,删除 32 位内核并不影响二进制兼容性。在 AIX Version 5 上构建的双模式内核扩展可继续在 AIX Version 6 上运行,但仅能在 64 位模式下运行。
下面的部分提供了转换到 AIX Version 6 的两个解决方案。
现在,构建 32 位和 64 位内核扩展的自动化构建环境在构建 32 位内核扩展之前必须检查操作系统版本。简单检查一下即可,如:
#!/bin/ksh Version='uname –v' if [ $Version –gt "5" ] then # Build 64-bit kernel extension only else # Build both 32-bit and 64-bit kernel extensions fi |
上面的逻辑将在 AIX Version 5 上构建 32 位和 64 位内核扩展,而对于 AIX Version 6,仅构建 64 位内核扩展。
可以修改支持构建 32 位和 64 位内核扩展的 Makefile。用于构建双模式内核扩展的典型 Makefile 文件包含的行类似于以下代码:
kext: kext32 kext64:
ar –X32_64 –crf kext kext32 kext64
kext32: …
ld –b32 –o $@ …
kext64: …
ld –b64 –o $@ …
other-makefile-lines
|
可以将此内容转换为 Makefile 文件,并通过修改为以下行构建仅 64 位内核扩展:
kext: … ld –b64 –o $@ … other-makefile-lines |
使用此解决方案,内核扩展的名称没有改变,因此无需进行修改,可以继续使用现有的配置方法。
减少 AIX Version 6 支持的内核数可以为 IBM 和内核扩展提供商降低开发成本。开发、构建、测试、打包和维护多个内核和内核扩展的资源减少进而可以带来成本的节约和投资回报的提高。
学习
-
AIX 二进制兼容性:学习关于 AIX 二进制兼容性的详细内容。
-
受欢迎的内容:查看近期 AIX 和 UNIX® 的热门文章文章。
- 查看 Brad Cobb 所写的其他文章和教程:
- 查看 Stephen Peckham 所写的其他文章和教程:
-
AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
-
AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
-
AIX Wiki:AIX 相关技术信息的协作环境。
-
AIX Wiki:访问 AIX Wiki,并查阅 Nigel Griffith 的文章。
- 按主题搜索“AIX and UNIX”库:
-
Safari 书店:访问此电子参考资料库可查找特定的技术资源。
-
developerWorks 技术事件和网络广播:了解最新的 developerWorks 技术事件和网络广播。
-
Podcast:收听 Podcast 并与 IBM 技术专家保持同步。
获得产品和技术
-
IBM 试用软件:从 developerWorks 可直接下载这些试用软件,您可以利用它们开发您的下一个项目。
-
Quick links for AIX fixes:获得 AIX 更新。
- IBM 修复中心:这个站点为您的系统中的软件、硬件和操作系统提供了修复程序和更新。
讨论
- 参与 developerWorks Blog,从而加入到 developerWorks 社区中来。
- 参与“AIX and UNIX”论坛: