
aix
文章平均质量分 61
Ensighine
IT考古,翻新酒瓶
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
如何在Power Linux上运行AIX程序(实现验证,附源码开源地址)
最后更新2021/1/10静心研究了小半年,终于把原型验证搞定了,可以在Power Linux上直接运行AIX程序。当然,目前只是实现了POC,还有大量的工程工作。源代码下载地址:https://gitee.com/HarryHurryHungry/xcuse原创 2021-11-28 14:38:45 · 745 阅读 · 0 评论 -
aix libc函数映射3
最后更新2021/12/22这两天研究qemu userspace tcg如何触发跳出guest转由host function call执行的问题,另外也碰巧和一帮人讨论userspace程序call kernel时到底发生了什么,两个问题都不约而同走到了一起。下面是最近研究的结果。注意:首先仅限于aix+linux+power指令集,如果是x86,可能有很大区别。甚至不同操作系统版本都可能有差别;其次,个人研究,不确保正确。当然,如果后续得到更确认的结论,我会更新本文,但你别依赖本文作为论据、证据;还原创 2021-12-22 15:29:20 · 412 阅读 · 0 评论 -
执行XCOFF(AIX)程序的两种方案比较
最后更新2021/12/17xcoff程序与AIX(OS)、Power服务器、Power ISA紧密绑定,尽管没有任何硬性规定xcoff不能跑在别的OS或者CPU之上,但到目前为止,这四者差不多四位一体,主体上是捆在一起的。Power ISA,只有IBM Power CPU一种实现,甚至用于嵌入式的PowerPC产品都越来越少了。当然IBM借助于OpenPower基金会,也做了若干努力,例如搞了一些新的开源产品,包括Microwatt等,这是在对抗x86和ARM扬汤止沸动作中,又拼命想移除RISC-V原创 2021-12-17 20:54:53 · 1030 阅读 · 0 评论 -
qemu-linux-user ELF vs XCOFF 2
最后更新2021/12/16原创 2021-12-16 16:57:26 · 286 阅读 · 0 评论 -
qemu-linux-user ELF vs XCOFF 1
最后更新2021/12/14注:以下及以后本系列都是个人对相关技术在此时此刻的理解和研究,会根据学习深入,不断修正,但过去历史文章不见得会被(及时)修改订正,见谅。当然欢迎读者批评指正,本人虚心接受,但什么时候把文章修改正确,不好说。============================================qemu-linux-use利用linux binfmt执行机制(或者说代码)实现了对ELF的解析和加载。判断文件类型的机制是统一的,binfmt提供了两个方案:扩展名和MAGIC魔原创 2021-12-15 16:48:18 · 1003 阅读 · 0 评论 -
ppc64abi32-aix-user设想
最后更新2021/12/11陆陆续续做了几个月的基础工作,拼凑一个个碎块,大概需要的脚垫准备齐全,要填的坑也都有了填坑的办法,准备再增加代码虚拟执行,让AIX应用直接跑在x86 Linux之上,同时也把在虚拟环境下,两套系统接口部分的方案搞清楚,确定下来:哪个效率更高?跑完整虚拟机,包括硬件设备驱动、BIOS都虚拟化,最终分界在虚拟硬件设备硬件接口部分;跑userspace代码虚拟,接口部分设定在应用程序调用系统调用部分;其实其中还穿插着AIX API与Linux API转换;PowerISA和原创 2021-12-11 12:36:02 · 490 阅读 · 0 评论 -
aix libc函数映射2
最后更新2021/13/04NLS,regex有了些眉目,然后曾经以为被填满的旧坑变成了陷阱。XMC_XO重定向出了问题,重定向结果不对,打击心情,陆续再继续研究吧。cut可以直接跑,没啥问题,算是第一个直接跑起来完全没问题的AIX 32位程序;TODO:grep, head, tail, tr目前都存在XMC_XO的问题,待解决。awk,crash 。。。more,需要libcurses.a,这个放以后;...原创 2021-12-04 17:54:02 · 186 阅读 · 0 评论 -
关于scsi锁的故事
最后更新2021/11/01一不小心,已经11月了。。。冬天围着火锅烤串喝啤酒的好日子。scsi锁的出发点很正确,谁用谁锁,用后开锁,目的是避免并行访问的时候有其它不知情的访问变更了数据,更狠毒的是变更了meta数据,整体存储数据结构就乱掉了,典型的防止上屋抽屉事件发生的设计。怎奈刚刚开始,既有自身设计考虑不周,经常有用后锁不释放的情况,也有主机OS驱动或者存储程序bug,甚至硬件链路问题,导致锁成了孤儿,挂在那里锁死了访问。当然,想当年,本高手还是一脑袋浆糊,也没这个先知先觉,于是共享磁盘7135原创 2021-11-01 13:27:54 · 600 阅读 · 0 评论 -
aix xcoff可执行文件分析4
最后更新2021/10/31十月最后一天收尾,遥遥无期漫无边际的前路有了可估计的日程。32位加载过程基本搞定,要写一个从头到尾的程序实现一下,忽然发现恐怖的libc shr.o竟然有3000多个依赖symbol !要是都搞一搞,奶油雪糕都凉了。想了一个偷懒的办法,从前往后,首先需要哪个,加载哪个;其次弄个universal的call,都去调用它,然后程序执行的时候输出被谁调用了,尽管程序fail,但是至少留下了遗言,把这个call解决之后再来,终究需要的call都能显示出来。对于小程序,估计十几个,最多几原创 2021-10-31 14:37:54 · 249 阅读 · 0 评论 -
AIX内核扩展编程3
复杂度3/5机密度4/5最后更新2021/05/19我们有了加载程序(大部分),有了被加载程序,还缺什么?还缺如何编译,如何使用,先说编译,这是个make模板。#cat makefileall: mykext kloaderkloader: kloader.c cc -o kloader kloader.cmykext: myExtension.c cc -q32 -o ext32.o -c myExtension.c ld -b32 -o myExt32 ext32.o -e myE原创 2021-05-19 10:27:50 · 199 阅读 · 0 评论 -
AIX内核扩展编程2
复杂度3/5机密度4/5最后更新2021/05/18下面我们要研究被加载程序本身,这和普通c程序没什么太大区别,当然,区别还是有一些的,例如没有main。普通C程序本身,省缺会需要main函数,作为程序入口,而内核扩展程序是通过链接时定义,决定哪个函数是主入口的。甚至可能完全没有入口,只等待其它内核程序调用自己提供的扩展函数。我们先考虑最普通的内核扩展,也就是需要一个入口,需要进行初始化的内核扩展程序。下面的程序看起来与普通的C没什么不同是吧?其中几个主要区别我们说一下:没有main,这个说过了;原创 2021-05-18 18:20:25 · 230 阅读 · 2 评论 -
AIX内核扩展编程1
复杂度3/5机密度4/5最后更新2021/05/18前面介绍过内核扩展也是一种执行程序,与普通执行程序不同的是它需要被加载到内核中执行,拥有内核权限。我们先来看看加载、卸载和内核扩展程序本体。加载需要用到cfg_kmod结构和sysconfig系统调用,前者对要加载的程序进行描述,后者完成加载(或卸载)过程。要注意,不止sysconfig,还有好几个类似的系统调用都完成类似的功能,他们之间没有本质区别,只是适用场景(方便程度)不同,例如,有的调用一步完成加载及初始化,有的则分为若干步,需要使用不同参原创 2021-05-18 13:21:05 · 231 阅读 · 0 评论 -
LVM 磁盘结构
复杂度3/5机密度4/5最后更新2021/05/17VG由一堆PV组成,每个PV的头是ipl_rec,无论这个PV能不能boot,只要是AIX的盘(曾经标记过PVID),都在最初0字节标记0xc9c2d4c1,这个是EBCIDIC编码的IBMA,这个编码可比ASCII早了好久,但不知基于什么考虑(本人未仔细研究过),好多本来连续的字母,编码却插了个空位,无形中增加了编码复杂性,所以现在除了IBM自家大机还在使用,别的地方完全被ASCII编码一统天下。后面偏移120字节的地方就是著名的PVID了,每个原创 2021-05-17 12:37:13 · 264 阅读 · 0 评论 -
LVM管理命令
复杂度2/5机密度2/5最后更新2021/05/17AIX提供了一系列LVM管理命令,可以分为两大类:高层管理,负责通常的日常维护,对操作进行了归纳和抽象,不涉及管理细节;底层命令,完成具体底层操作,可以理解为高层命令调用的某个子函数,功能,都是二进制文件。底层命令都是为高层命令调用准备的,而不提供给管理员直接操作,当然,如果你对LVM足够了解,知道你在做什么,底层命令可以让你完成很多高层命令实现不了的功能。高层命令(其中有*标记的是二进制文件,其它为脚本,对,就是直接可以vi编辑的脚本!但别乱改哦原创 2021-05-17 11:41:09 · 343 阅读 · 0 评论 -
AIX logging
复杂度2/5机密度3/5最后更新2021/05/15AIX有很多log,不同的东西(程序)会log到不同的地方,这是有历史的操作系统无法避免的问题,太杂,太乱,有了新机制又要学,旧log又没法简单放弃或者改变。经由alog管理(查看)的log可以用alog -L命令查看种类:#alog -L boot <-------------boot的信息 bosinst <-------------软件安装的信息原创 2021-05-15 13:05:06 · 543 阅读 · 0 评论 -
如何分析AIX启动过程2
复杂度2/5机密度3/5最后更新2021/05/15另一个帮助AIX分析启动过程的方案是打开kernel debug,这样可以像调试单一程序一样调试AIX boot的init程序,打开kernel debug很简单,同样需要在启动的时候进入sms ok模式(方案见),然后进入debug启动并设置陷阱:ok> boot -s trap 或0 > boot -s trapKDB(0)> mw enter_dbg此时输入42和一个点(确定boot之后停在何处),然后执行gKDB原创 2021-05-15 11:02:43 · 259 阅读 · 0 评论 -
进入SMS service management system
复杂度2/5机密度4/5最后更新2021/05/14SMS就是IBM Power服务器的BIOS,而且是提供给管理原交互操作的那部分。只有终端才能在机器(或分区)刚启动时进入SMS,终端可以是由HMC提供的虚拟终端,也可以是物理连接到机器串口的物理终端。当机器(分区)刚加电,可以在终端上显示一堆IBM的时候手疾眼快地输入数字进入SMS,也可以在HMC启动分区的时候直接选参数,boot进SMS:HMC 选择LPAR, 操作中选择Activate,选择Advanced -> Boot Mode -原创 2021-05-14 17:33:37 · 959 阅读 · 0 评论 -
如何分析AIX启动过程1
复杂度3/5机密度4/5最后更新2021/05/14AIX提供了两个帮助分析启动的工具或者模式:kernel debugboot verbose mode前者适合单独分析某个特定的功能、模块,而后者则能帮助你全面地过一遍AIX启动的全过程,很类似在脚本中设置了set -xkernel debug以后找时间专题讲,可能要讲很久,今天先介绍verbose mode。启动进入verbose mode的方法很简单,需要在SMS(OK mode)至于如何在启动时进SMSd的ok模式,参考《链接。。。原创 2021-05-14 17:15:57 · 419 阅读 · 0 评论 -
内核运行环境
复杂度2/5机密度2/5最后更新2021/05/06AIX内核有两种运行环境:process environment和interrupt environment。用户进程call内核系统调用,或者内核系统调用嵌套call其它系统调用、内核扩展、内核驱动大部分所处的运行状态都是process environment。这个状态与用户user space的程序没什么大区别,只有所能访问的数据和函数不同,process environment状态下仅能且可以完全访问内核内的数据和函数,不能反向去call u原创 2021-05-06 09:09:20 · 181 阅读 · 0 评论 -
ODM PdAt各项说明
复杂度3/5机密度4/5最后更新2021/05/05PdAt在同一unique type下可能有多个特性,下面以两个项目做介绍原创 2021-05-05 21:42:18 · 910 阅读 · 0 评论 -
ODM PdDv各项说明
复杂度3/5机密度4/5最后更新2021/05/04原创 2021-05-04 23:29:20 · 196 阅读 · 0 评论 -
设备驱动程序要完成的功能及数据传送方案
复杂度3/5机密度3/5最后更新2021/05/03设备驱动程序在实现过程中需要完成两个通信过程,一个转换过程。两个通信过程是userspace和kernelspace之间,既用户访问请求、返回状态及数据与内核驱动之间的传送;另一个是内核驱动与IO设备之间的数据和命令及返回值的传送。转换过程是对命令的解释、对返回值的应对处理(重试、换路径重试、补偿动作、异常中断等等)。其中userspace与kernelspace的通信有多种方案:寄存器方案。在Power ABI中定义了参数传入和返回值通过寄存原创 2021-05-03 11:13:33 · 443 阅读 · 0 评论 -
不同视角下的存储协议栈
复杂度3/5机密度3/5最后更新2021/05/03我们把AIX的存储协议栈归纳一下,从两个不同视角来观察:以AIX驱动实现视角,主要是文件系统驱动程序(被称为内核扩展可能更恰当,不过具体叫什么并不重要);LVM驱动程序;磁盘设备驱动程序等几个大模块。如果从层级结构看过来,其实也差不多:...原创 2021-05-03 09:47:17 · 165 阅读 · 0 评论 -
AIX显示版本的最高全包含版本原则
复杂度2/5机密度4/5最后更新2021/05/02专题其它章节说过AIX对所有程序包管理会检验完整性,并且内置了一个验证列表,包含其所能识别的最新版应当包含的各个程序包的版本。如果当前安装的TL,Patch不完整,则只会显示可以实现完全版本覆盖的AIX版本号,而不是最高的版本号。这虽然不是一个什么大问题,但毕竟有写补丁、程序版本不对,还是搞到一致比较好。下面是个例子:$ oslevel -s7100-05-05-1939目前显示的版本号是v7.1 TL05 SP05 1939,我们再看看最高原创 2021-05-02 14:51:28 · 377 阅读 · 0 评论 -
AIX开发环境准备
复杂度2/5机密度2/5最后更新2021/05/02基础知识,就是本系列全部文章啦,在不断更新中;文件编辑器和IDE,任何一款文本文件编辑器,你熟悉哪个就用哪个。如果使用IDE,需要IDE能支持remote compile,就是通过运行在另一台机器上的编译器进行编译和测试;编译、测试硬件平台:要搞一台PowerPC或者Power CPU的硬件机器,也可以考虑挑战一下,弄个qemu虚拟机在x86上模拟PowerPC,不过后者很不好用,如果真的有开发任务,最好还是真正搞到一台Power CPU的机器原创 2021-05-02 12:22:43 · 371 阅读 · 0 评论 -
虚拟文件系统VFS框架
复杂度3/5机密度3/5最后更新2021/05/01AIX虽然仅内置支持五种类型的文件系统(jfs,jfs2,nfs,CDROM,ramfs),远少于Linux,但其设计并不局限于某一种特定的文件系统,而是采用虚拟文件系统的概念,以一种虚拟文件系统模型为所有文件系统建立通用框架结构。每个进程都有自己的ublock,保存着这个进程所打开的所有文件。事实上,每个进程被创建,ublock也被同步创造,并且头三个项目固定为stdin, stdout, stderrublock的入口实际上只是个链接,它会原创 2021-05-01 18:31:37 · 372 阅读 · 0 评论 -
devinfo和文件类型识别
复杂度3/5机密度4/5最后更新2021/04/30首先使用file命令可以区分普通文件还是设备文件#file test.txttest.txt: ASCII text#file /dev/tty0/dev/tty0: character special (4/0) ==> 字符设备,major number 4,minor number 0#file /dev/shm/dev/shm: symbolic link to /run/shm#file /run/shm/run/原创 2021-04-30 14:28:43 · 915 阅读 · 0 评论 -
LUN磁盘、LVM及JFS2驱动内部关系
复杂度2/5机密度3/5最后更新2021/04/30LUN(Logical Unit Number)是scsi专用概念,指在同一SCSI设备(同SCSI ID)下映射的逻辑子设备。这来自最早SCSI设备是总线结构,可以支持一个或两个initiator,多个target。由于寻址SCSI设备依靠SCSI ID,而每个SCSI总线做多支持16个设备(最多15个target)。如果每个Target只能定位一个磁盘,那么一条SCSI总线仅仅能连接15个磁盘,这对现在动辄几十甚至上百磁盘的服务器设备,远远不足。原创 2021-04-30 14:10:11 · 309 阅读 · 0 评论 -
AIX如何管理LPP及强制删除LPP
复杂度3/5机密度4/5最后更新2021/04/29前面介绍过LPP是AIX的程序包,AIX近几年来(可能也有十多年了)为了方便技术支持,大补丁、升级、新安装等操作时,几乎都是强制标准安装模式,除了一些辅助性的功能包,把所有的LPP程序包都会安装进去。有时即使已经采用了选择性安装,在AIX的包管理机制中会检查哪些包没有装,在相关安装时会一并安装进去。如果系统来回增删了几次,有可能各个包之间的依存关系发生混乱,导致无法强制覆盖、无法安装。尽管AIX的包依赖管理比Linux简单很多,也不会有Linux那么原创 2021-04-29 21:23:54 · 457 阅读 · 0 评论 -
JFS及JFS2文件系统
复杂度2/5机密度2/5最后更新2021/04/29JFS和JFS2都是AIX支持的文件系统类型,JFS2是JFS的增强版,目前JFS结构已经开源,可以下载到jfs for linux的源代码:JFS开源网站JFS/JFS2都是日志文件系统,日志文件系统最独特的特性是除了传统文件系统结构数据(如目录、inode等信息),数据(具体每个文件的数据)之外,还有一个额外的日志。在JFS文件系统,需要一个单独的LV用于保存日志,一般每个VG上所有的JFS共用一个LV用于日志,当然,也可以为每个文件系统单独建原创 2021-04-29 21:02:32 · 2960 阅读 · 0 评论 -
VIOS
复杂度3/5机密度3/5最后更新2021/04/29VIOS(virtual IO System)是IBM基于AIX操作系统开发的一套定制虚拟设备支持的应用系统,其核心也是AIX操作系统,同样运行在Power服务器之上。本系列其它文章介绍过Power服务器能够直接建立物理分区,每个分区都能安装OS。实际上,Power服务器划分的分区也有三类:只能安装vios的分区,用于对其它分区提供虚拟化设备支持,至于具体支持什么,我们一会说;i/OS分区,这是专用于安装IBM另一大操作系统i/OS的分区,i/OS看原创 2021-04-29 12:23:50 · 1883 阅读 · 0 评论 -
ISO/OSI七层协议中的下三层在AIX中的实现
复杂度4/5机密度4/5最后更新2021/04/29ISO:国际标准化组织(international standard organize)OSI:开放系统互连模型(open system interconnection)ISO专门制定了一个为通信而规划的参考模型,该模型一共7层应用层(Application layer)表示层(Presentation layer)会话层(Session layer)传输层(Transport layer)网络层(Network layer)数据链路原创 2021-04-29 11:52:31 · 361 阅读 · 0 评论 -
AIX自举过程2(详细分析)
复杂度3/5机密度4/5最后更新2021/04/29层级一Partition firmware加载Boot loader (softros)并转移控制权Boot loader load 内核及RAM文件系统,再次转移控制权到内核内核(与磁盘上/unix相同,但是是另一个副本)初始化Kernel数据结构,并执行RAM文件系统中的init进程。这个init进程程序位于/usr/lib/boot/ssh (simple shell,并不是日常说的secure shell),并被改名为/etc/ini原创 2021-04-29 10:32:49 · 174 阅读 · 0 评论 -
AIX自举过程1
复杂度3/5机密度4/5最后更新2021/04/28AIX自举过程本身并不很复杂,几乎与其它Unix、Linux完全一致。所不同的是有些方面更像Windows(或者说windows更像AIX,毕竟先有AIX,后有Windows),把建立启动过程所需要完成的功能封装到一条命令里(Windows是菜单一个选项)。AIX并不像Linux那么灵活,在启动中就可以自由选择,直接拿个菜单选项出来去选择内核,可能AIX系统用户不要随意乱动系统,不要给他们为所欲为的机会吧?!AIX自举是紧接着分区微码自举开始的,分原创 2021-04-28 16:04:30 · 252 阅读 · 0 评论 -
自己生成AIX bff打包安装文件
复杂度3/5机密度4/5最后更新2021/04/28AIX提供了生成打包文件的命令:mkinstallp,需要安装bos.adt.insttools fileset查看fileset是否已经安装:#lslpp -L bos.adt.insttools Fileset Level State Type Description (Uninstaller) ----------------------------------------------原创 2021-04-28 12:00:00 · 475 阅读 · 0 评论 -
监视错误,Error Monitoring,errlog
复杂度2/5机密度3/5最后更新2021/04/28作为自开发之时就定下为企业级服务而生的鸿鹄之志,AIX有一系列的手段去发现、诊断、跟踪、定位、避免和修复硬件和软件故障,AIX的error log机制就是其中最重要的一个主动报告问题的手段。与懒惰的Unix、Linux设计不同,AIX的错误故障报告力求定位准确,信息丰富,尽管由于一些商业原因,IBM并未提供错误信息的二次解码工具给用户,但在故障信息中,通常能够基本发现故障位置和初步原因。同时,IBM的工程师能够通过内部工具对这些错误信息进行解码,以发原创 2021-04-28 10:04:20 · 792 阅读 · 0 评论 -
JFS/JFS2日志文件系统和日志如何保证数据时间点一致
复杂度3/5机密度3/5最后更新2021/04/27AIX缺省的文件系统是JFS2,既Journal Filesystem v2,第二代日志文件系统。我们知道文件系统是用来管理和保存文件数据,当前计算机世界有各种各样的文件系统,各有不同的特点和用途。AIX的JFS2的最重要特点是日志,既通过日志来达到文件系统数据的一致性。那么什么是一致性,或者说叫做时间点一致性?简单来说,时间点一致性就是在某一特定时刻,你觉得它应当是什么样子,它就一定能做到那个样子。似乎还是不太容易理解!再进一步说,时间点一致性指数原创 2021-04-27 15:26:21 · 335 阅读 · 0 评论 -
AIO, DIO, CIO
复杂度3/5机密度3/5这些名词都用于数据(文件)访问的模式,既应用程序用什么方案实现对文件的读写。AIOAIO 的全称为 Asynchronous I/O,既异步 I/O。在 AIO 的工作模式下,应用程序发起(call)I/O请求(读 / 写)系统调用以后,内核不必等 I/O 完成,即可返回(此时数据区不能释放或修改,需要等访问确认完成),应用程序可以发起新的 I/O 请求。通过这种方法,可以提示提升 I/O 吞吐量和性能。从 AIX5L 起,AIX 支持两种 AIO:legacy AIO 和原创 2021-04-27 13:59:08 · 3452 阅读 · 0 评论 -
文件系统cache机制
复杂度3/5机密度3/5最后更新2021/04/27AIX并未采用传统Unix的cache模式。传统Unix(包括Linux)的cache模式是把cache作为一个单独的旁路应用,嵌入在文件读写的路径中。当应用请求读文件时,kernel从磁盘将数据读到kernel的cache空间,然后把数据转给应用;应用请求文件写的时候,应用把数据发给kernel,kernel根据配置参数,或者只把数据保存在cache空间就返回(回写write back模式),或者保存到cache空间之后再继续写磁盘,完成后才返回(原创 2021-04-27 13:12:17 · 787 阅读 · 0 评论 -
散碎又需要了解的概念
复杂度2/5机密度2/5最后更新2021/04/2632位64位问题这个问题说简单,很简单,说复杂,也挺麻烦的,因为这不仅仅是32位64位程序或代码,还包括好多你没想到的事情。如果体系架构是64位的:64位的架构体系允许64位的地址操作,包括有效地址EV(Effective Address),用于指令操作;物理地址,用于定位内存卡上的数据;处理数据单元可以是64位的(当然CPU也能处理更小的数据),例如单指令移动64位数据,指令可操作64位整型数计算如果计算机是64位的:是64位架构原创 2021-04-26 20:49:02 · 122 阅读 · 0 评论