TSM BA Client Binary NIM Install

BINARY INSTALL AIX 7.x · TSM 8.1.x
Runbook ID
RB-TSM-AIX-001
Operation
BA Client Binary NIM Install
Source
DR_NIM_01
Source IP
192.168.131.1
Targets
bc01 — bc22
Target subnet
.2 — .23 / 24
OS
AIX 7.x
Spectrum Protect
8.1.x
Filesets
7 (TSM + GSKit + JBB)
Transport
nimsh / TCP 3901
NIM Master
DR_NIM_01
192.168.131.1
AIX · NIM master · lpp_source provider
──▶
nim -o cust
NIM Clients × 22
bc01 — bc22
192.168.131.2 — 192.168.131.23
AIX · standalone · TSM BA targets
Phase 1 Prerequisites

Critical: The NIM client fileset (bos.sysmgt.nim.client) must be present on each bc<NN> before niminit in Phase 5 will succeed. Verify with lslpp -l bos.sysmgt.nim.client on a sample client first.

Phase 2 Validate NIM Master State
01 Confirm NIM master is healthy and serving BASELINE DR_NIM_01
NIM master state and daemons lsnim -l master | grep -E "Cstate|state" lssrc -s nimesis lssrc -s nimd

Restart if needed: Both NIM daemons must be active. If either is inoperative, restart with startsrc -s nimesis / startsrc -s nimd before continuing.

02 Sweep all 22 clients for reachability DISCOVER DR_NIM_01
Ping sweep bc01 → bc22 for i in $(seq 1 22); do host=$(printf "bc%02d" $i) ip=$(printf "192.168.131.%d" $((i+1))) ping -c1 -w2 $ip >/dev/null 2>&1 \ && print "OK $host ($ip)" \ || print "FAIL $host ($ip)" done

IP convention: bc<NN>192.168.131.(NN+1). So bc01 = .2, bc22 = .23. The .1 address is reserved for DR_NIM_01. Any FAIL must be resolved (firewall, routing, host down) before that client can be defined.

03 Populate /etc/hosts on the master CONFIG DR_NIM_01
Append bc01 → bc22 to /etc/hosts (idempotent) for i in $(seq 1 22); do host=$(printf "bc%02d" $i) ip=$(printf "192.168.131.%d" $((i+1))) grep -q "$host" /etc/hosts || print "$ip\t$host" >> /etc/hosts done

Skip this step if DNS is authoritative for these names.

✓ Verify: host bc01 on DR_NIM_01 resolves to 192.168.131.2. From bc01, host DR_NIM_01 resolves to 192.168.131.1.

Phase 3 Stage Installation Media
04 Required filesets REFERENCE DR_NIM_01

Seven filesets, all required. JBB depends on the FilePath kernel extension; the BA client depends on GSKit for TLS.

FilesetPurpose
GSKit8.gskcrypt64.ppc.rteIBM Global Security Kit — crypto runtime (TLS dependency)
GSKit8.gskssl64.ppc.rteGSKit SSL libraries (TLS dependency)
tivoli.tsm.client.api.64bitTSM API — required by BA client and any future TDP/RMAN integration
tivoli.tsm.client.ba.64bitBA client (dsmc, dsmcad, dsmtca) — core fileset
tivoli.tsm.client.jbb.64bitJournal-Based Backup engine
tivoli.tsm.client.webguiWeb GUI (optional but useful for ops handover)
tivoli.tsm.filepath_aixFilePath kernel extension — required by JBB
05 Copy media into a dedicated lpp_source directory CONFIG DR_NIM_01
Stage the seven filesets under /export/lpp_source mkdir -p /export/lpp_source/tsm_ba_8.1 cp /mnt/nfs/tsm/8.1.x/* /export/lpp_source/tsm_ba_8.1/ cd /export/lpp_source/tsm_ba_8.1 ls -1

Substitute /mnt/nfs/tsm/8.1.x for the NFS source path in your environment.

06 Generate the table of contents CRITICAL DR_NIM_01
# NIM cannot enumerate filesets in an lpp_source directory without a current .toc cd /export/lpp_source/tsm_ba_8.1 inutoc . ls -l .toc

Common trap: Re-run inutoc after every change to the directory. A stale .toc is the most common cause of "0503-005 Cannot find requested fileset" errors during nim -o cust.

Phase 4 Define the lpp_source NIM Resource
07 Register the staged directory as an lpp_source CONFIG DR_NIM_01
Define lpp_source resource lpp_tsm_ba_81 nim -o define -t lpp_source \ -a server=master \ -a location=/export/lpp_source/tsm_ba_8.1 \ -a packages=all \ lpp_tsm_ba_81

This creates the resource object lpp_tsm_ba_81 that will be allocated to clients during the install push in Phase 7.

08 Verify the resource is "ready for use" VERIFY DR_NIM_01
Inspect resource state lsnim -l lpp_tsm_ba_81 Confirm the seven filesets are visible to NIM nim -o lslpp lpp_tsm_ba_81 | grep -E "tivoli|GSKit"

✓ Verify: Output should show Rstate = ready for use and type = lpp_source. simages = no is expected — this is an application lpp_source, not a base OS one.

Phase 5 Define All 22 NIM Clients
09 Define bc01–bc22 as standalone NIM clients CONFIG DR_NIM_01
Single loop — defines all 22 in one pass for i in $(seq 1 22); do host=$(printf "bc%02d" $i) ip=$(printf "192.168.131.%d" $((i+1))) # Skip if already defined lsnim $host >/dev/null 2>&1 && { print "$host already defined, skipping"; continue; } nim -o define -t standalone \ -a platform=chrp \ -a netboot_kernel=64 \ -a if1="find_net $host 0" \ -a net_definition="ent 255.255.255.0 192.168.131.1" \ -a cable_type1=N/A \ $host \ && print "defined $host ($ip)" \ || print "FAILED $host ($ip)" done

Net definition: The net_definition attribute auto-creates the supporting NIM network object on the first iteration; subsequent definitions reuse it.

10 Verify all 22 clients are registered VERIFY DR_NIM_01
lsnim -t standalone | grep "^bc" | sort | wc -l # Expected: 22
11 Initialise the NIM client daemon on each LPAR CONFIG each bc<NN>
# One-time init per client. Run as root on each bc # substitute the actual hostname for each invocation. niminit -a name=bc01 -a master=DR_NIM_01 -a connect=nimsh lssrc -s nimsh

nimsh vs shell: connect=nimsh is preferred — authenticated, doesn't require .rhosts. If the customer estate is locked to legacy rsh, fall back to connect=shell for the initial push and convert afterwards.

12 Confirm bidirectional comms from the master VERIFY DR_NIM_01
# Spot-check first and last clients. nim -o lslpp returns the client's # installed fileset list — proves the master can reach the client and vice versa. nim -o lslpp bc01 nim -o lslpp bc22

✓ Verify: Each call returns a populated fileset list rather than "0042-006 cannot establish connection".

Phase 6 Build the Machine Group
13 Define the group and add all 22 members CONFIG DR_NIM_01
Define group with bc01 as seed member nim -o define -t mac_group -a add_member=bc01 grp_tsm_onboard Add the remaining 21 members for i in $(seq 2 22); do host=$(printf "bc%02d" $i) nim -o change -a add_member=$host grp_tsm_onboard done

Grouping lets a single nim -o cust invocation drive the install in parallel rather than serialising 22 calls.

✓ Verify: lsnim -l grp_tsm_onboard | grep member_ returns 22 lines.

Phase 7 Push the Install to the Group
14 Dry-run first to validate dependency resolution CRITICAL DR_NIM_01
Option A — Dry run
Preview-only with -apYg. No filesets installed. Use this first, every time.
Option B — Live commit
Real install with -acgXY in step 15. Only run after the dry-run is clean.
Dry-run install across grp_tsm_onboard nim -o cust \ -a lpp_source=lpp_tsm_ba_81 \ -a filesets="GSKit8.gskcrypt64.ppc.rte GSKit8.gskssl64.ppc.rte \ tivoli.tsm.client.api.64bit \ tivoli.tsm.client.ba.64bit \ tivoli.tsm.client.jbb.64bit \ tivoli.tsm.client.webgui \ tivoli.tsm.filepath_aix" \ -a accept_licenses=yes \ -a installp_flags="-apYg" \ grp_tsm_onboard

Flag breakdown: -a apply, -p preview only, -Y auto-accept licenses, -g install requisite software automatically. The -p turns this into a no-op that exercises every code path except the actual install.

15 Commit the install CRITICAL DR_NIM_01
Live install — same command, with -acgXY nim -o cust \ -a lpp_source=lpp_tsm_ba_81 \ -a filesets="GSKit8.gskcrypt64.ppc.rte GSKit8.gskssl64.ppc.rte \ tivoli.tsm.client.api.64bit \ tivoli.tsm.client.ba.64bit \ tivoli.tsm.client.jbb.64bit \ tivoli.tsm.client.webgui \ tivoli.tsm.filepath_aix" \ -a accept_licenses=yes \ -a installp_flags="-acgXY" \ grp_tsm_onboard

Flags: apply, commit, install requisites, expand filesystems if needed, accept licenses.

License acceptance is mandatory. Without accept_licenses=yes, the install will exit before the commit phase and leave applied-but-not-committed filesets across the entire estate — tedious to clean up.

16 Monitor progress DISCOVER DR_NIM_01
Master-side summary ls -lt /var/adm/ras/nim.installp* 2>/dev/null Per-client log (run on the client itself) tail -f /var/adm/ras/nim.installp

Per-client install transcripts are written on the client side; the master keeps a summary in /var/adm/ras/nim.installp.

Phase 8 Post-Install Verification
17 Confirm fileset commit state across the estate VERIFY DR_NIM_01
# Loop over all 22 clients, return only COMMITTED lines or "not installed" markers. # Anything else needs investigation. for i in $(seq 1 22); do host=$(printf "bc%02d" $i) print "=== $host ===" ssh $host "lslpp -l 'tivoli.tsm.client*' 'GSKit8*' 'tivoli.tsm.filepath_aix' 2>&1 \ | awk '\$NF==\"COMMITTED\" || /not installed/'" done
18 Confirm dsmc binary is in place VERIFY DR_NIM_01
# 64-bit BA client installs binaries under /usr/tivoli/tsm/client/ba/bin64. ssh bc01 "ls -l /usr/tivoli/tsm/client/ba/bin64/dsmc /usr/tivoli/tsm/client/ba/bin64/dsmcad"
19 Sanity-check version VERIFY DR_NIM_01
ssh bc01 "/usr/tivoli/tsm/client/ba/bin64/dsmc"

Note: dsmc will not launch interactively until dsm.sys and dsm.opt are created — that is expected at this stage. The -version flag returns version info without requiring config.

✓ Verify: Each client returns a version banner matching the lpp_source level — e.g. Version 8, Release 1, Level x.x.

✓ Phase complete: Binaries are installed and committed across all 22 LPARs. Configuration deployment (dsm.sys / dsm.opt, REGISTER NODE server-side, dsmcad scheduler) is the next phase — covered separately under RB-TSM-AIX-002.

Rollback Rollback & Troubleshooting
RB.1 Reject an applied (uncommitted) install ROLLBACK DR_NIM_01
# Use the -r reject flag via NIM. # Only works against applied — not committed — filesets. nim -o cust \ -a installp_flags="-r" \ -a filesets="tivoli.tsm.client.ba.64bit tivoli.tsm.client.api.64bit \ tivoli.tsm.client.jbb.64bit tivoli.tsm.client.webgui \ tivoli.tsm.filepath_aix" \ grp_tsm_onboard
RB.2 Deinstall a committed fileset ROLLBACK each bc<NN>
# No NIM-native verb for deinstalling committed filesets. Run installp -u per client. installp -u tivoli.tsm.client.webgui
RB.3 Common failure signatures REFERENCE DR_NIM_01
SymptomCause & resolution
0042-001 nim: 'client' is not a valid object Client not defined or name mismatch. Verify with lsnim bc<NN>.
0042-006 cannot establish connection nimsh not running on client, port 3901/tcp blocked, or hostname resolution mismatch. Check lssrc -s nimsh on the client and verify /etc/hosts on both sides.
0503-005 Cannot find requested fileset Stale or missing .toc. Re-run inutoc /export/lpp_source/tsm_ba_8.1 and retry.
0503-409 bosboot verification failed Pre-existing system issue, not caused by this install. Investigate bosboot -v -a on the affected client before retrying.
filepath_aix kernel ext error Another process holds the kernel extension. Stop any running TSM/JBB processes (ps -ef | grep dsm) and retry.
License acceptance error mid-install accept_licenses=yes was omitted. Re-run with the flag set; previously-applied filesets will be skipped.
RB.4 Log locations REFERENCE DR_NIM_01
LocationContents
/var/adm/ras/nim.installpPer-host install transcript (lives on both master and client)
/var/adm/ras/nimlogMaster-side NIM operations log
/smit.logFallback if SMIT was used for any step
lslpp -h <fileset>Full apply / commit / reject history per fileset

Cleanup: The machine group grp_tsm_onboard can be retained for future patching campaigns or removed with nim -o remove grp_tsm_onboard. The lpp_source should be retained for future onboardings and BA client upgrades.

Quick Reference Step Summary
CommandPurposeNotes
lsnim -l masterConfirm NIM master stateCstate must be "ready for a NIM operation"
lssrc -s nimesis / nimdConfirm NIM daemons runningRestart with startsrc -s <name> if down
inutoc /export/lpp_source/tsm_ba_8.1Generate lpp_source TOCRe-run after every directory change
nim -o define -t lpp_source ...Register staged dir as NIM resourcePhase 4 — creates lpp_tsm_ba_81
nim -o define -t standalone ...Define each bc<NN> as NIM clientPhase 5 — looped for all 22
niminit -a name=bc<NN> ...Initialise NIM client daemonRun on each LPAR, one-time
nim -o define -t mac_group ...Build machine groupEnables single-shot parallel install
nim -o cust ... -apYgDry-run install (preview only)Phase 7 step 14 — must be clean before live
nim -o cust ... -acgXYLive install — apply, commit, requisitesaccept_licenses=yes mandatory
lslpp -l 'tivoli.tsm.client*'Verify fileset commit stateLooped across all 22 clients post-install
dsmc -versionSanity-check installed versionWorks without dsm.sys / dsm.opt configured
nim -o cust -a installp_flags="-r"Reject applied (uncommitted) installRollback step RB.1
installp -u <fileset>Deinstall committed filesetPer-client only — no NIM verb exists
⚠ Key Notes