Worked example: All commands below assume hdisk0 = live rootvg, hdisk1 = unassigned spare for alt_disk_copy, staging dir /var/update_staging/7100-05-12. Sub in your own values — package names will differ per release.
Out of scope: NIM-driven mass updates · PowerHA/HACMP-managed nodes · major-version migrations (7.1 → 7.2 / 7.2 → 7.3) — those are migration installations, see the companion nimadm and boot-media migration runbooks.
alt_disk_copy — equal to or greater than rootvg size.Window sizing: ~90 min for an SP, 2 — 3 hr for a TL. Network or SAN-attached storage operations (mksysb to NFS, alt_disk_copy onto a SAN LUN) can extend this materially — pad accordingly.
Capture everything: Wrap the whole pre-flight in script /tmp/preflight_$(date +%Y%m%d).log so the output lands in the change record automatically.
Pin the source level into the change record. instfix -i | grep ML must show every prior ML as complete — anything missing means a half-applied prior update that needs cleaning up first.
Stop condition: If lppchk -v reports broken or missing prerequisites, do not proceed. The most common cause is a previous half-applied update — clean it up with installp -C before patching.
| Filesystem | Min free (SP) | Notes |
|---|---|---|
| / | 100 MB | Bootloader, /etc, ODM |
| /usr | 2 GB | Most filesets land here |
| /var | 500 MB | Logs, lpp metadata, /var/adm/ras |
| /tmp | 1 GB | installp scratch |
| /opt | 500 MB | Optional product trees |
For a TL update, double these. It is imperative that /usr has enough headroom — running it dry mid-install leaves filesets in a broken state. /usr is restartable via chfs -a size=+1G /usr and install_all_updates can be re-run, but only if you catch it.
✓ Verify: hdisk1 shows None in the VG column of lspv. Every LV in lsvg -l rootvg should be open/syncd — anything in stale state needs syncvg before you clone.
Latent hardware errors: A failing path or disk that isn't bothering anyone in steady state will absolutely bite you on the post-patch reboot. Resolve hardware errors before continuing — or you'll be guessing whether the patch caused them.
Known-good baseline to diff against post-patch. Any subsystem that was active before but inoperative after — or any route that disappeared — gets flagged immediately rather than weeks later.
Both layers required for production. Standard pattern: mksysb to NIM / NFS, with TSM file-level grabbing the resulting mksysb file plus all datavgs. alt_disk_copy on top of that as the immediate online rollback.
| Flag | Purpose |
|---|---|
| -i | Regenerate /image.data — captures current LV layout |
| -X | Auto-extend /tmp if needed during backup |
| -p | Disable software packing |
NFS-mounted destination preferred; local disk acceptable as a stopgap. Either way, confirm the file is readable and lsmksysb -l can enumerate it before continuing — a corrupt mksysb is worse than no mksysb.
Primary rollback mechanism. Clones rootvg to hdisk1, leaving you with a bootable pre-patch image one bootlist away.
After the clone completes, verify and reset the bootlist if needed:
Two strategies — pick one:
hdisk0. Clone on hdisk1 stays cold as the rollback target. Simpler and more common.alt_rootvg_op -W, patch it offline, reboot onto patched clone. Original disk becomes the rollback. More steps, but the running system stays untouched until reboot.This runbook follows pattern A.
Keep staging under /var — that's where the update logs land too, so the whole change record stays in one place.
✓ Verify: Output checksum matches the value listed on Fix Central / ESS for this bundle. A mismatched bundle gets you mysterious 0503-005 errors mid-install — catch it here, not three hours into the window.
Critical: inutoc builds the table-of-contents file that installp reads. Without a current .toc, installp reports "No filesets on the media" and fails. Re-run inutoc after any change — adding, removing, or replacing files in the staging directory.
✓ Review the output carefully. Confirm:
7.1.5.x)Application halt: If application processes (Oracle, WebSphere, custom workloads) are still running, alert the application team and have them halt the database / app stack cleanly before install_all_updates kicks off. Patching a busy LPAR works in theory and stings in practice.
| Flag | Purpose |
|---|---|
| -d | Source directory (must contain .toc) |
| -Y | Accept software licenses non-interactively |
| -c | Commit (versus apply-only) — see below |
Apply vs commit:
rejected to roll back individual filesets without rebooting. Consumes ~2× disk space in /usr.alt_disk_copy / mksysb only. Recommended for SPs where you have alt_disk_copy in place anyway.Expected runtime: 20 — 60 min for an SP, 60 — 120 min for a TL.
install_all_updates ends with a summary table. The column to watch is Result.
| Result | Meaning |
|---|---|
| SUCCESS | Fileset installed cleanly |
| ALREADY | Target version already present (skipped — fine) |
| FAILED · BROKEN · CANCELLED | Do not reboot. Investigate first. |
If anything but SUCCESS / ALREADY appears: investigate via /var/adm/ras/install_all_updates.log and the per-fileset logs in /var/adm/ras/ before any reboot. A reboot on top of broken filesets turns a recoverable mistake into a rollback exercise.
Have HMC console up and visible during the reboot — if the LPAR hangs at an LED code, you want to see it immediately rather than wait for the SSH timeout.
✓ Acceptance criteria: oslevel -s at target · lppchk -v clean · no new errpt classes · no inoperative subsystems · bootlist still on hdisk0. Anything else triggers Phase 7.
Trigger conditions: lppchk -v reports broken filesets after reboot, or LPAR fails to boot cleanly off hdisk0.
hdisk1.Then follow the RB.1 verification steps to confirm oslevel -s reports the pre-patch level and the bootlist is persisted.
Preserve: Keep /var/adm/ras/install_all_updates.log and the per-fileset logs in /var/adm/ras/ before raising a PMR. IBM support will need them to diagnose why the patch broke the system.
Only after burn-in. If patching has completed successfully and nobody has raised an issue, you're good to clear down the alt_disk_copy clone — but not before.
Now close the change. You earned it.
A typical AIX 7.1 SP bundle (7100-05-12-2320-FP.tar) extracts to a flat directory of .bff files plus the .toc generated by inutoc.
Naming convention:
Not all filesets in a bundle ship at the same V.R.M.F — some sub-components update infrequently, which is why mixed .40 and .41 levels appear in the same SP. Expected, not a problem.
| Symptom | Cause / Fix |
|---|---|
| installp: 0503-005 ... could not access toc | Run inutoc . in the staging dir. |
| 0504-203 No filesets on the media | Same root cause — missing or stale .toc. |
| 0503-409 ... requisite is missing | A prereq fileset isn't in the bundle. Check oslevel -s -l and download the missing fileset, or use a fuller bundle. |
| 0503-464 ... cannot install over a newer version | Fileset on disk is newer than what's in the bundle. Skip with installp -ag (apply, ignore requisites) only if you understand why. |
| lppchk -v reports BROKEN filesets post-patch | Run installp -C to clean uncommitted state, then re-run the update for affected filesets only. |
| LPAR hangs at LED 0c31 or similar on boot | Boot from rollback disk via SMS (see RB.2). File a PMR. |
| /usr fills mid-install | chfs -a size=+1G /usr, then re-run install_all_updates. installp is restartable. |
Do not follow this blindly — the worked-example values (level numbers, hdisk names, bundle filename) will change for your actual change. This is a sequence reference, not a copy-paste recipe.
| Command | Purpose | Notes |
|---|---|---|
| oslevel -s | Current TL/SP level | Full V.R.M.F-build |
| oslevel -s -l <level> | Filesets below a given level | Empty output = at level |
| oslevel -r | Just the TL portion | e.g. 7100-05 |
| instfix -i | Installed ML/TL inventory | grep ML for milestones |
| lslpp -L | Full fileset inventory | State + level per fileset |
| lslpp -h <fileset> | Install history for a fileset | apply/commit/reject log |
| lppchk -v | Verify fileset consistency | MUST be clean pre and post |
| mksysb -ipX <file> | Bootable rootvg backup | Phase 3 — to NFS preferred |
| alt_disk_copy -d <disk> | Clone rootvg to spare disk | Phase 3 — primary rollback |
| alt_rootvg_op -W -d <disk> | Wake an alt_rootvg for offline access | Pattern B alternative |
| alt_rootvg_op -S | Sleep an alt_rootvg | After offline patching |
| alt_rootvg_op -X <vg> | Remove an alt_rootvg definition | Cleanup or rollback discard |
| inutoc <dir> | Build .toc for an installp directory | Re-run after every dir change |
| install_all_updates -d <dir> -p | Preview update | Phase 4 — must be clean |
| install_all_updates -d <dir> -Yc | Apply and commit | Phase 5 — the real run |
| installp -C | Clean up failed/half-applied state | Use before re-running |
| installp -s | List filesets in APPLIED (uncommitted) state | Apply-mode rollback target |
| installp -c <fileset> | Commit a specific applied fileset | Promote apply → commit |
| installp -r <fileset> | Reject (roll back) an applied fileset | Apply-mode only — no reboot |
| bootlist -m normal -o | Show normal-mode bootlist | Pre/post snapshot |
| bootlist -m normal <disk> | Set normal-mode bootlist | Rollback flip in RB.1 |
| bosboot -ad /dev/<disk> | Rebuild boot image on disk | If boot-image corruption suspected |
install_all_updates -p) before the live apply. The preview exercises requisite resolution against the staged bundle — uncaught issues here become hard failures during the live run.inutoc after any change to the staging directory. A stale .toc is the most common cause of 0503-005 / 0504-203 errors during install_all_updates.lppchk -v must be clean both before and after. A non-clean baseline means a previous half-applied update is still hanging around — fix it with installp -C first, or you are patching on top of a known-broken state.alt_rootvg_op -W, patch it offline, and reboot onto the patched clone (pattern B). For application LPARs where keeping the running system pristine matters, pattern B is worth the extra steps.alt_disk_copy completes, verify the bootlist still points at the live disk (hdisk0) before patching. If alt_disk_copy moved it to the clone, reset with bootlist -m normal hdisk0 — patching is a no-op if you reboot onto the unpatched clone afterwards.-c) versus apply: commit halves the disk footprint but removes per-fileset rollback. With alt_disk_copy in place anyway, commit is the right default for SPs — your rollback is the clone, not installp -r.errpt before patching will bite on the post-patch reboot. Resolve them at pre-flight, not at midnight.FAILED / BROKEN filesets in the install summary. A reboot on broken filesets converts a recoverable mistake into a rollback exercise.nimadm or boot-media migration runbooks instead.