如何分析AIX启动过程1

2023-11-07

复杂度3/5
机密度4/5

最后更新2021/05/14

AIX提供了两个帮助分析启动的工具或者模式:

  • kernel debug
  • boot verbose mode
    前者适合单独分析某个特定的功能、模块,而后者则能帮助你全面地过一遍AIX启动的全过程,很类似在脚本中设置了set -x

kernel debug以后找时间专题讲,可能要讲很久,今天先介绍verbose mode。启动进入verbose mode的方法很简单,需要在SMS(OK mode)至于如何在启动时进SMSd的ok模式,参考进入SMS
在ok>提示符下,直接敲命令:

ok>boot disk: -s verbose
............
-------------------------------------------------------------------------------
StarLED{814}

AIX Version 7.2
Starting NODE#000 physical CPU#001 as logical CPU#001... done.
exec(/etc/init){1,0}         <--------首先执行/etc/init

INIT: EXECUTING /sbin/rc.boot 1      <------执行/sbin/rc.boot,带参数1,表明这是首次执行。下面是执行rc.boot的屏显
exec(/usr/bin/sh,-c,/sbin/rc.boot 1){1048868,1}
exec(/sbin/rc.boot,/sbin/rc.boot,1){1048868,1}
+ PHASE=1
+ + bootinfo -p       <---------获得当前机器的架构
exec(/usr/sbin/bootinfo,-p){1114406,1048868}
PLATFORM=chrp   <-------当前机器架构是chrp,既Common Hardware Reference Platform,这是IBM和motorola,apple共同制定的标准。后来还有一种PReP(PowerPC Reference Platform),是IBM自己单独发布的。
+ [ ! -x /usr/lib/boot/bin/bootinfo_chrp ]   <------执行所有为chrp架构特定准备的boot程序
+ [ 1 -eq 1 ]
+ init -c unlink /usr/lib/boot/bin/!(*_chrp)
exec(/etc/init,-c,unlink /usr/lib/boot/bin/!(*_chrp)){1114408,1048868}
+ chramfs -t
exec(/usr/sbin/chramfs,-t){1114410,1048868}  <------准备ramfs。其实我们现在执行的是bootimage里被压缩的ramfs的内容,并不是真正的磁盘里的文件系统
+ init -c unlink /usr/sbin/chramfs
+ 1> /dev/null
exec(/etc/init,-c,unlink /usr/sbin/chramfs){1114412,1048868}
+ + bootinfo -t       <---------获得启动设备,返回值1是磁盘,3是cd,4是磁带,5是网络
exec(/usr/sbin/bootinfo,-t){1114414,1048868}
BOOTYPE=1
+ [ 0 -ne 0 ]
+ [ -z 1 ]
+ unset pdev_to_ldev native_netboot_cfg
+ unset disknet_odm_init config_ATM
+ echo \n\n_______________________________________ _____________________________________ \nrc.boot: starting disk boot process
+ 1> /tmp/boot_log
+ echo B1 Starting Disk Boot
+ 1> /tmp/cfg_log
+ ln /usr/lib/libbind.a /usr/lib/libc.a /usr/lib/libcfg.a /usr/lib/libcfgiscsi.a /usr/lib/libcfgscsi.a /usr/lib/libcrypt.a /usr/lib/libefs.a /usr/lib/libisns.a /usr/lib/liblvm.a /usr/lib/libodm.a /usr/lib/libs.a /usr/lib/libslp.a /lib
exec(/usr/bin/ln,/usr/lib/libbind.a,/usr/lib/libc.a,/usr/lib/libcfg.a,/usr/lib/libcfgiscsi.a,/usr/lib/libcfgscsi.a,/usr/lib/libcrypt.a,/usr/lib/libefs.a,/usr/lib/libisns.a,/usr/lib/liblvm.a,/usr/lib/libodm.a,/usr/lib/libs.a,/usr/lib/libslp.a,/lib){1114416,1048868}    <--------设定库函数路径
+ echo rc.boot: executing "restbase"  <----------把bootimage里压缩的odm解压出来
+ 1>> /tmp/boot_log
+ restbase
exec(/etc/restbase){1114418,1048868}
exec(/bin/sh,-c,uncompress /tmp/restbase.Z){327952,1114418}
exec(/usr/bin/uncompress,/tmp/restbase.Z){327952,1114418}
+ rc=0
+ [ 0 -eq 1 ]
+ [ 0 -eq 2 ]
+ /usr/lib/methods/showled 0x510 DEV CFG 1 START     <--------点个led信息,液晶面板会显示AIX starting...
exec(/usr/lib/methods/showled,0x510,DEV CFG 1 START){1114420,1048868}
+ echo rc.boot: executing "cfgmgr -f -v"     <--------开始从最根配置设备
+ 1>> /tmp/boot_log
+ cfgmgr -f -v
exec(/usr/sbin/cfgmgr,-f,-v){1114422,1048868}
cfgmgr is running in phase 1
----------------
Time: 0 LEDS: 0x538
Invoking top level program -- "/usr/lib/methods/cfgrule_vrtcore"
exec(/bin/sh,-c,/usr/lib/methods/cfgrule_vrtcore ){327954,1114422}
exec(/usr/lib/methods/cfgrule_vrtcore){327954,1114422}   <---------第一个基础设备virtual runtime core
Time: 0 LEDS: 0x539
Return code = 0
***** stdout *****
。。。。。
----------------
Time: 0 LEDS: 0x539
Number of running methods: 0
----------------
Time: 0 LEDS: 0x538
Invoking top level program -- "/etc/methods/defsys"
exec(/bin/sh,-c,/etc/methods/defsys ){327958,1114422}
exec(/etc/methods/defsys){327958,1114422}
Time: 1 LEDS: 0x539
Return code = 0
***** stdout *****
sys0

*** no stderr ****
----------------
Attempting to configure device 'sys0'
Time: 1 LEDS: 0x811
Invoking /usr/lib/methods/cfgsys_chrp -1 -l sys0
Number of running methods: 1
exec(/bin/sh,-c,/usr/lib/methods/cfgsys_chrp -1 -l sys0){1179944,1114422}
exec(/usr/lib/methods/cfgsys_chrp,-1,-l,sys0){1179944,1114422}
----------------
Completed method for: sys0, Elapsed time = 1620981103
Return code = 0
***** stdout *****
sysplanar0        <------------发现主板,配置主板
***** stderr *****
MS 1179944 1114422 /usr/lib/methods/cfgsys_chrp -1 -l sys0
M4 1179944 Parallel mode = 0
M4 1179944 Get CuDv for sys0
M4 1179944 Get device PdDv, uniquetype=sys/node/chrp
M4 1179944 ..make_dvc_available()
M4 1179944 In configure_device()
M4 1179944 mdd_get: offset=00000080, size=00000158
M4 1179944 Calling mdd ioctl
M4 1179944 mdd_get: offset=00000244, size=000000c4
M4 1179944 Calling mdd ioctl
M4 1179944 mdd_get: offset=00000080, size=00000158
M4 1179944 Calling mdd ioctl
M4 1179944 mdd_get: offset=00000244, size=000000c4
M4 1179944 Calling mdd ioctl
M4 1179944 Invoking set_attrs
M4 1179944 get alist(sys0,sys/node/chrp,)
M4 1179944 ..get_attr_list()
M4 1179944 Get PdAts for 'uniquetype = sys/node/chrp'
M4 1179944 Get CuAts for 'name = sys0'
M4 1179944 Attr live_update found
M4 1179944 mdd_get: offset=00000080, size=00000158
M4 1179944 Calling mdd ioctl
M4 1179944 mdd_get: offset=000001d8, size=00000024
M4 1179944 Calling mdd ioctl
M4 1179944 Setting system attributes
M4 1179944 part_id_value=0x1D46B821F7B7EEA5 id_to_partition=0X1D46B821F7B7EEA5
M4 1179944 setattrval(sys0,id_to_partition,0X1D46B821F7B7EEA5)
M4 1179944 Attr id_to_partition found
M4 1179944 Value received from getatt: 0X0000000000000000
M4 1179944 mdd_get: offset=00000244, size=000000c4
。。。。
----------------
Completed method for: sysplanar0, Elapsed time = 1
Return code = 0
***** stdout *****
mem0          <-----------发现一堆子设备,准备分别初始化
L2cache0
proc0
proc1
pci0
vio0
。。。。
0539 cfgmgr
0538 ***********
----------------
Time: 6 LEDS: 0x25b6 for vio0
Number of running methods: 3
----------------
Completed method for: proc1, Elapsed time = 1
return code = 0
****************** no stdout **exec(/bin/sh,-c,/usr/sbin/lsdev -C -c management -s infiniband -t icm -F name ){2425176,1835396}
*********
****************** no stderr ***********
----------------
Time: 6 LEDS: 0x25b6 for vio0
Number of running methods: 2
----------------
Completed method for: vio0, Elapsed time = 1
return code = 0
****************** stdout ***********
vsa0
。。。。
AIX Version 7
Copyright IBM Corporation, 1982, 2018.
Console login:

后续依次配置所有的设备,遍历设备树,直到最后提示AIX login:
通过详细阅读启动log信息,可以更清楚地了解AIX启动的每一步骤,调用依存关系和显示信息,今天就先介绍到这里。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何分析AIX启动过程1 的相关文章

  • Ubuntu9.04太多乱码(中文不能正常显示)

    最近在使用Ubuntu9 04的过程中 发现有好多地方都出现乱码 其实是中文不能正常显示 现在把我所遇到的所有乱码问题集中一下 方便以后查阅参考 一 Flash乱码 在终端输入 sudo gedit etc fonts conf d 49
  • 内存管理——分页分段

    一 分页存储管理 1 页面与页框 1 页面 将一个进程的逻辑地址空间分成若干个大小相等的片 称为页面或页 并为各页加以编号 2 页框 相应于页面 把内存空间分成和页面相同大小的若干个存储块 称为 物理 块或页框 frame 3 页内碎片 在
  • Anaconda 安装 Python 库(MySQLdb)的方法-(转)

    安装python库的过程中 最重要的地方就是版本需要兼容 其中操作系统为64位 Python为2 X 64位 下载安装文件的时候也要注意版本匹配 其中文件名中包含的cp27表示CPython 2 7版本 cp34表示CPython 3 4
  • 操作系统常见面试题

    1 什么是进程 Process 和线程 Thread 有何区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动 进程是系统进行资源分配和调度的一个独立单位 线程是进程的一个实体 是CPU调度和分派的基本单位 它是比进程更小的能
  • 【操作系统】王道考研 p42 段页式管理方式

    段页式管理方式 知识总览 分段 分页管理方式中最大的优缺点 关于段式管理会产生外部碎片 ps 分段管理中产生的外部碎片也可以用 紧凑 来解决 只是需要付出较大的时间代价 分段 分页 段页式管理 示意图 先分段 后分页 段页式管理的逻辑地址结
  • gdb attach 进程调试

    gdb调试正在运行的进程 GDB可以对正在执行的程序进行调度 它允许开发人员中断程序 并查看其状态 之后还能让这个程序正常地继续执行 gdb attach xxxxx xxxxx为利用ps命令获得的子进程process
  • 地址映射与共享

    跟踪地址映射过程 1 通过命令 dbg asm启动调试器 在linux 0 11运行test c文件 使其进入死循环 我们的任务就是找到i的地址并将其修改为0使test c程序退出循环 2 在命令行输入crit c使Boch暂停 一般会显示
  • 《OSPF和IS-IS详解》一1.7 独立且平等

    本节书摘来自异步社区 OSPF和IS IS详解 一书中的第1章 第1 7节 作者 美 Jeff Doyle 更多章节内容可以访问云栖社区 异步社区 公众号查看 1 7 独立且平等 OSPF和IS IS详解与TCP IP相比 OSI协议对各国
  • 使用 GCC C 在 AIX 上处理空指针

    我们有一段用 C 编写的代码 有时不能很好地处理零指针 该代码最初是在 Solaris 上编写的 此类指针会导致分段错误 并不理想 但比继续耕耘要好 我们的经验是 如果您在 AIX 上读取空指针 您将得到 0 如果您使用xlc编译器你可以添
  • GNU GAS:标签没有相对引用

    我正在写一个小引导扇区用于学习目的 这是boot S code16 text movw 0xB800 ax 0xB000 is the text screen video memory movw ax es set it as the es
  • 如何在 shell 脚本中切换到不同的用户并使用新用户执行某些命令?

    我当前使用用户 USER1 登录 SERVER1 并且我已将 bash 脚本放在这里 该脚本必须切换到同一服务器 SERVER1 上的不同用户 USER2 并使用新切换的用户执行一些命令 注意 USER1 不是 root 用户 因此我需要在
  • 如何让 C++ 程序与 AIX 上的 gcc 堆栈保护器功能链接?

    我是一个 AIX 新手 我正在尝试使用 gcc 的堆栈保护器功能来编译程序 我使用 pware 的 GCC 包在服务器上安装了 gcc 我可以编译一个示例程序 例如 include
  • XServer启动后运行shell脚本? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何在 XServer 和 lightdm 启动时运行 shell 脚本 我尝试在 etc 目录中使用 init d 和 rc local
  • 如何在启动时运行命令?

    我试图弄清楚如何在启动时运行命令 就像我将其输入控制台一样 我在 Raspberry Pi 上使用 Rasbian 但我认为这个问题对于 Debian 来说通常是相同的 我尝试运行的命令是 sudo screen mono server e
  • 使用 Visual Studio 构建 UEFI 驱动程序

    我正在寻找有关如何使用 Visual Studio 2012 项目通过 EDK2 SDK 构建 UEFI 驱动程序的建议 我试图静态链接 UefiLib lib 但惨败 我已将该库添加到链接器下的附加依赖项中 include
  • ORA-00060: 等待资源时检测到死锁

    我有一系列脚本作为 nohup 在托管 Oracle 10g 的 AIX 服务器上并行运行 这些脚本是由其他人编写的 旨在同时执行 所有脚本都在表上执行更新 我收到错误 ORA 00060 检测到死锁 等待资源 当我用谷歌搜索这个时 我发现
  • Android - 如何在启动后启动 /sdcard 上的应用程序

    有没有一种方法可以在启动后自动启动Android应用程序 如果它位于Android应用程序上 sdcard 好吧 大概是通过BroadcastReceiver 但哪种行动是正确的呢 ACTION BOOT COMPLETED does no
  • Java 无法从 AIX 解析 DNS 地址:UnknownHostException

    我遇到了这个奇怪的错误 在 AIX 上 如果我可以从命令行访问我的服务器 使用 ping telnet 但是如果我尝试使用 java 我会遇到 UnknownHostException 这是因为 Java 无法以某种方式 使用 DNS 但我
  • 普通的 x86 或 AMD PC 是直接从 ROM 运行启动/BIOS 代码,还是先将其复制到 RAM? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我知道现代计算机已经修改了哈佛架构 它们可以从保存数据的地方以外的地方读取指令 这一事实是否允许它们直接从 ROM 芯片获取指令 他们是先
  • Windows - 启动时自动启动特定应用程序

    在 Windows 操作系统中开发信息亭应用程序 当机器启动时 必须依次发生 3 件事 Node js 服务器启动 包含 Web 应用程序的浏览器以 kiosk 模式启动 另一个客户端应用程序启动 是否有一个实用程序可以轻松完成此操作 或者

随机推荐

  • Qt + QR-Code-generator 生成二维码

    0 前言 之前使用 libgrencode 生成二维码 LGPL 协议实在不方便 所以需要找一个 github 星星多的 代码简单最好 header only 协议最好是 MIT 或者兼容协议而不是 GPL 或者 LPGL QR Code
  • 【无法联网】电脑wifi列表为空的解决方案

    打开电脑 发现wifi列表为空 点击设置显示未连接 首先检查是不是网卡驱动有问题 cmd devmgmt msc 找到网络适配器 看看网卡前面是否有感叹号 如果没有则说明网卡没问题 有问题则重装驱动 看看网络协议是否设置正确 找到 控制面板
  • android开机自启动APP及使用adb命令测试

    android开机自动运行APP实现方式其实很简单 在android系统运行时 会发出 android intent action BOOT COMPLETED 这个系统广播 因此我们监听它 并进行打开APP的操作即可 现在大多数的andr
  • Allegro导入网表报错

    文章首发于同名微信公众号 DigCore 欢迎关注同名微信公众号 DigCore 及时获取最新技术博文 E SPMHGE 82 Pin numbers do not match between symbol and component Ru
  • Linux 查看java进程的命令

    刚才去了微众税银面试 面试官赶时间 导致我的语速也快了起来 其中有个问题没答上 那就是 Linux下查看java进程的命令 回来做个记录 以防还有公司问到 之前工作上遇到Linux还是太少了 服 Linux下查看和停止所有java进程 在L
  • 教务管理系统乱码服务器不可,青果教务管理系统Post登录(二)

    承接上一篇贴子的后续 这次成功完成了预想功能 其实本来对学校的教务系统已经没什么兴趣了 但是前两天从吾爱上面看到一篇帖子 在post登录后获取自己的成绩直接对接短信平台 实现每当有新成绩公布的时候可以直接短信通知自己 这一下就又激起了我的兴
  • redis远程连接不上(转)

    解决redis远程连接不上的问题 redis现在的版本开启redis server后 redis cli只能访问到127 0 0 1 因为在配置文件中固定了ip 因此需要修改redis conf 有的版本不是这个文件名 只要找到相对应的co
  • jquery数组求和

    fn sum function fun var v 0 if this length gt 0 this each function index item if fun null fun undefined typeof fun funct
  • mysql binlog 使用指南

    MySQL binlog 详解 1 前言 日志是把数据库的每一个变化都记载到一个专用的文件里 这种文件就叫做日志文件 Mysql默认只打开出错日志 因为过多的日志将会影响系统的处理性能 在5 0前支持文本格式和二进制格式 5 0后只支持二进
  • 【c++】private里面的变量可以间接访问和修改嘛?

    五月出差频繁 只有趁着周末不加班拿出一点时间记录下最近学到的东西 下面是正文 我们都知道 C 中有一个叫访问权限的知识点 被定义在 private 中的方法或者对象理论上是无法直接访问的 被定义在 public 中的方法或者对象理论上是可以
  • RabbitMQ的安装

    一 安装erlang环境 官网下载 http www erlang org downloads 这个文件其实不是gz格式的 使用file otp src 20 1 tar gz可以查看它的真实数据格式 解压 tar xvf otp src
  • 单片机变量所储存的变量值转化为字符

    最近做了一个设计 需要使用单片机设计一个距离采集系统 并将采集的距离大小通过语音播报出来 同时通过蓝牙传至手机端 不论是蓝牙还是语音播报都涉及到将变量中所储存的数值大小转化为字符串 编写代码环境 单片机 STM32F103C8T6 编写软件
  • qt学习笔记1:创建一个qt项目及一些基础知识

    1 新建第一个项目 New Project gt qt widges application 给项目创建名称 名称不能有中文和空格 创建路径中也不能有中文路径 不会报错但是运行时会报错 再下一步 到Kits 中文构建套件 用于选择编译套件
  • C++学习(三十三)运算符优先级

    C语言优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 数组下标 数组名 整型表达式 左到右 圆括号 表达式 函数名 形参表 成员选择 对象 对象 成员名 gt 成员选择 指针 对象指针 gt 成员名 2 负号运算符 算术类
  • 解决Glide在一个imageview上更换图片时会闪的问题

    Glide with MainActivity this load str msg what 1 dontAnimate placeholder iv getDrawable 原理 1 使用dontAnimate取消图片切换动画 2 使用p
  • scrapy屏幕log日志输出保存到txt文本中

    在使用scrapy框架的时候 因为scrapy在屏幕上面输出的日志一直在跑 有些错误又抓不到 无奈只能先把log日志放在文件中 慢慢进行错误日志的分析 如图所示 我们需要设置的地方只在settings py文件夹中进行设置就可以了 LOG
  • 电商系统下单锁库存java实现,【239期】面试官:如何使用Redis实现电商系统的库存扣减?...

    在日常开发中有很多地方都有类似扣减库存的操作 比如电商系统中的商品库存 抽奖系统中的奖品库存等 解决方案 使用mysql数据库 使用一个字段来存储库存 每次扣减库存去更新这个字段 还是使用数据库 但是将库存分层多份存到多条记录里面 扣减库存
  • 全国计算机等考试体系2018,2018年陕西全国计算机等级考试体系及方式

    2017年计算机等级考试已经结束 出国留学网为考生们整理了2018年陕西全国计算机等级考试体系及方式 希望能帮到大家 想了解更多资讯 请关注我们 小编会第一时间更新哦 2018年陕西全国计算机等级考试体系及方式 一 报名与考场编排 一 报名
  • 使用http 上传文件的原理

    可参考的文章有 http www cnblogs com kaixuan archive 2008 01 31 1060284 html 通过 http 协议上传文件 rfc1867协议概述 jsp 应用举例 客户端发送内容构造 1 概述
  • 如何分析AIX启动过程1

    复杂度3 5 机密度4 5 最后更新2021 05 14 AIX提供了两个帮助分析启动的工具或者模式 kernel debug boot verbose mode 前者适合单独分析某个特定的功能 模块 而后者则能帮助你全面地过一遍AIX启动