Cleaning up /installp/ppc

/usr/sys/inst.images/installp/ppc can really chew up disk space with ,bff files.

First, check to see if they were installed

(note: the -p option does a pretend install)

update_all -d /usr/sys/inst.images/installp/ppc -p

then check the update log

more /var/adm/ras/install_all_updates.log

If it’s old stuff go ahead and recover disk space!

Clearing an AIX print queue


You have jobs stuck in the print queue. You want to clear the queues and remove all jobs.


You have to stop all processes and remove the files from spooling directories.

Probably worth taking a backup of these files first. All at own risk.



stopsrc -cs qdaemon # bring down qdaemon and clear qdforks.
stopsrc -s lpd


rm /etc/qconfig.bin # compiled /etc/qconfig


rm /var/spool/lpd/qdir/* # queue requests; JDF


rm /var/spool/lpd/stat/* # info on status of devices


rm /var/spool/lpd/pio/msg* # error message files.


rm /var/spool/qdaemon # temp copies of queue jobs


rm /var/spool/lpd/* # temp copies of remote jobs


ps -ef | grep pio # kill any of these processes; look for piobe, pioformat, pioout


ps -ef | grep qd # kill any of these processes; look for qdforks.


startsrc -s qdaemon # restarting qdaemon
startsrc -s lpd # restarting lpd


lssrc -s qdaemon #look for active
ps -ef | grep qdaemon
lssrc -s lpd # look for active
ps -ef | grep lpd


ps -ef | grep srcmstr # if there are 2 running, kill -9 one of them with higher PID.


As a last resort รขโ‚ฌโ€œ reboot

AIX printing


print job                A print job is a unit of work to be run on a printer. The system assigns a unique job number to it.
queue                    It is where a print job is directed. (It is a stanza in the /etc/qconfig file.)
queue device             The stanza in the /etc/qconfig. It specifies the /dev file (printer device) that should be used.
qdaemon                  It runs in the background and controls the queues.
print spooler            A spooler does not normally know what type of job it is queuing. It provides spooling function for any type of jobs.
printer backend          It is a collection of programs called by the spooler’s qdaemon command to manage a print job.
                         It reports paper out, cleans up after a print job is cancelled, initializes the printer before printing …


/etc/qconfig             queue configuration files
/var/spool/*             spooling directories
/var/spool/qdaemon/*     temporary enqueued files (spooling: makes a copy here of the printed file until the job has printed)


Spooler functions and services

The base operating system spooler is a collection of programs, configuration files and data files, which provides the following functions or services:
– construction of queues (whose function is to process jobs in specific ways)
– serial access through a queue to a device (such as a printer), avoiding simultaneous use of a single device or program by multiple users
– allows users to submit jobs (usually but not always printer jobs) to a queue for processing
– allows users to query the status of queues through status files
– allows users to control the availability of queues and the status of jobs

The base operating system spooler is not specifically a print job spooler but a generic spooling system that can be used for queuing various types of jobs, including print jobs to a printer queue. The spooler does not know what type of job it is queuing. When a queue is created, the function of the queue is defined by the spooler backend for that queue. For example, if a queue is created and the queue backend is set up to be piobe(the default printer I/O backend for local printer queues), the queue is a print queue. Likewise, if the queue backend is set up to be cc (or any other compiler), the queue is for compiler jobs. When the spooler’s qdaemon component selects a job from a queue, it processes the job by invoking the queue’s backend.

To accomplish its tasks, the base operating system spooler has four basic parts:
1. The enq command is the entry point to the spooler, and it is the beginning of any spooler activity. This command accepts requests for job processing.

2. The qdaemon is responsible for accepting/tracking jobs submitted to the spooler by enq command.  It is one of the points-in-between in the spooler process.

3. The spooler backend is a collection of programs invoked by the spooler’s qdaemon command to process a job in some queue. The backend sends output to a specific device, such as a printer. When the backend is piobe, it involves a printer. The backend is one of the points-in-between as well as the ending, because the backend contains the specific process that will deliver the processed job to its final destination.

4. The configuration file, /etc/qconfig, describes the configuration of available queues and devices. The enq and the qdaemon command see this file.


qdaemon process

The qdaemon is a process that runs in the backgroundand controls the queues. (A queue is a location to which you direct a print job.) When you turn your system on, the startsrc command starts qdaemon.

The qdaemon keeps track of the print requests in the /var/spool/lpd/qdir directory and ensures that the jobs are sent to the proper printer at the proper time. It also keeps track of the status of the printers and stores printer usage data for system accounting purposes. This information is held in the /var/spool/lpd/stat directory and can be accessed using the enq -A command. If the qdaemon is stopped, it is restarted by srcmstr (stopsrc/startsrc).


/etc/qconfig file

The/etc/qconfig file is the most important file in the spooler domain. It describes all of the queues defined to the base operating system. A queue is a named, ordered list of requests for a specific device. A device is something (either hardware or software) that can handle those requests one at a time. The queue provides serial access to the device.

Each queue must be serviced by at least one device; often it can be handled by more than one device.

Each queue is represented by a pair of stanzas. The first stanza in a pair is referred to as the queue stanza; the second stanza in a pair is referred to as the device stanza.

queue_pr1a:               <–queue stanza header (queue name), user can submit jobs to this name
        device = hp@pr1a  <–device name (link to device stanza), shows how the device stanza will be named

hp@pr1a:                   <–device stanza header (queue device name), device to which the corresponding queue stanza provides serial access
        file = /var/spool/lpd/pio/@local/dev/    <–path to real device
        header = never                                                                 (If OS sees lp1, file parameter is /dev/lp1)
        trailer = never
        access = both
        backend = /usr/lib/lpd/pio/etc/piojetd 9100                 <–full path to a program (backend)

Additional note:
– There can be more than one queue device associated with a single queue.
– There is no file entry in the/etc/qconfigfile when you are using a remote printer. The queue directs the file to the server.

Both the enq command and the qdaemon command read the /etc/qconfig file when they start.

The qdaemon starts with startsrc and reads the ASCII version of /etc/qconfig and automatically creates a binary version of it: /etc/qconfig.bin.

The enq command starts each time someone requests a print job. The enq command automatically converts the ASCII /etc/qconfig file to binary format (/etc/qconfig.bin)  when the binary version is missing or older than the ASCII version. Therefore, if you change the /etc/qconfigfile, the enq command reads the new version of the configuration file the next time it runs.

Commands wich make changes in /etc/qconfig (mkque, rmque….) are recommended to run during slow or off-peak time. If manual editing of the /etc/qconfig file is necessary, you can first issue the enq -G command to bring the queuing system and the qdaemon to a halt after all jobs are processed. Then you can edit the /etc/qconfig file and restart the qdaemon with the new configuration.


Local and remote printers

local printer:
A local printer is a real printer attached to a local host, for which there is a local queue. All jobs submitted to this queue are processed and printed on the host on which the queue exists. (If you have a network printer, but you create a queue locally, it can be considered as a local printer.)

remote printer:
A remote printer is a real printer attached to a remote host. The queue for a remote printer specifies a backend whose function is to send the spooled job from the local host across the network to the remote host. All jobs submitted to this queue, on the local host, are sent across the network to the remote host where they are processed and printed.


Printing process:

1. A front-end print command (such as qprt, lp or enq) initiates a request.

   Four commands can be used to submit a job to the base operating system spooler. These are lp, lpr, qprt, and enq.
   – lp originated with AT&T System V
   – lpr originated with BSD
   – qprt and enq originated with the base operating system

   While a user can use any one of these four commands to submit a job to the spooler, the true entry point to the spooler is the enq command.
   All of lp, lpr, and qprt are front ends to enq. lp, lpr, and qprt all parse their arguments and compose a call to enq.

2. If not enq was used, all the other comands are invoking enq command and translate the flags to enq compatibility.

3. enq creates a JDF file (Job Description File) in /var/spool/lpd/qdir. It conatins file name, flags, what qdaemon can understand

4. enq then signals qdaemon that a job has been queued

5. qdaemon will examine /etc/qconfig.bin (compiled version of /etc/qconfig) and the JDF file to determine how to handle the print job
   (If /etc/qconfig is younger than /etc/qconfig.bin the qdaemon creates a new version of /etc/qconfig.bin before printing anything.)

6. qdaemon invokes the backend program (contained in /etc/qconfig file)
   (If the job is spooled with pipe (e.g. an output is piped to enq) or enq is called with -c flag, data first copied into a temp file.)
   (This temp file is stored in /var/spool/qdaemon and then the name of the temp file is passed to the backend.)

   Backend program:
   – for remote printing is "rembak"
   – for local printing is "piobe" (printer input/output backend)

   If it is a remote printing (rembak is invoked):
   – The rembak program transmits the print job to a remote server over the TCP/IP network.
   – On the remote server, lpd daemon monitors port 515, and when it receives a remote print request, it places the job in the local queue.
   – The print request is then processed by the qdaemon on the print server and passes the request to the piobe backend on the print server.

7. Backend program (piobe) processes the file and sends it, along with control information, to the printer

8. The printer then receives a data stream containing the contents of the file and the control information specified with the qprt command

9. When backend program exits, qdaemon checks exit code of the backed. If it is 0 job completed successfully


Remote printing (Don’t confuse with network printing)
(If you have a network printer, it can be considered as a local printer as you create a queue locally.)

Remote printing allows different computers to share printers. To use remote printing facilities, computers must be connected through TCP/IP and must support the required TCP/IP applications, such as the lpd daemon.

lpd daemon

Although local and remote print jobs are submitted with the same commands, they are processed differently. After a print job has been transmitted to a remote host, it is no longer managed by the local print spooling subsystem.

The lpd daemon is part of the TCP/IP system group. Any host on a TCP/IP network can run the lpd daemon, and any host can send print requests to any other host on the network (if the host is currently running lpd). As a security measure, the lpd daemon forks a child process that checks each remote print request against two database files: the /etc/hosts.equiv file and the/etc/hosts.lpd file.

/etc/hosts.equiv:    defines which computers are allowed to execute certain commands on a local host without supplying a password.
/etc/hosts.lpd:      defines which computers are allowed to execute print commands on a local host without supplying a password.

(If the name of the host submitting the print request is not in the /etc/hosts.lpd file, the print request is rejected.)

The lpd daemon on the remote print server monitors port 515 for print requests. When the lpd daemon receives a print request from a valid host, it places the request in the specified queue. The lpd daemon places files specified in print requests in the directory /var/spool/lpd. The print request is then managed by the qdaemon and the appropriate backend (usually piobe) on the remote server.

The/etc/locks/lpd file contains the process ID of the currently running instance of the lpd daemon. If a machine running the lpd daemon becomes inoperable, the ID for the lpd daemon might have to be removed before the system is restarted. The error messages "lpd: lock file or duplicate daemon" indicate that the ID must be removed.

lpd daemon can be controlled by stopsrc/startsrc -s lpd


# lssrc -g spooler
Subsystem         Group            PID          Status
 qdaemon          spooler          27132086     active        <–schedules printing jobs enqueued by the enq command
 lpd              spooler          30736618     active        <–remote print server, monitors port 515 placing requests in /var/spool/lpd
 writesrv         spooler                       inoperative   <–allow users to send messages to a remote system and receive responses by write command


Configuring a new printer queue (with a printer):

AIX places each print job into a queue to await printer availability. When a job is done system processes the next job in the queue. This process continues
until each job in the queue has been printed.

You need some info prior to configure:
– printer queue name (you should know if it is PS (postScript) or PCL (Printer Command Language))
– printer model
– if it is a network printer ip address and port (this IP should be resolved by DNS or /etc/hosst file)

1. smitty printer -> Print Spooling -> Add a Print Queue
2. choose if it is local, remote or network (HP Jetdirect) printer
3. choose printer type (if network printer I usually choose "Do NOT make this system a BOOTP/TFTP server")

For a network printer it looks like this:

  Description                                         Hewlett-Packard Color LaserJet 4700

  Names of NEW print queues to add
     HP-GL/2                                         []
     PCL                                             []
     PostScript                                      [NEW_QUEUE_NAME]

  Printer connection characteristics
*    HOSTNAME of the JetDirect Card                  [HOSTNAME_OF_PRINTER]
*    PORT                                            [9100]                               



lsallq                             list print queues only
/usr/lib/lpd/pio/etc/piolsvp -p    list print queues, printers and description (good for checking if PostScript is used)
enq -AsW                           list all print queues with status information

    DEV_BUSY:    printer device is currently is in use (wait for finishing or cancel the job or process that is using the printer port)
    DEV_WAIT:    queue is waiting on the printer because the printer is offline, out of paper, jammed, or the cable is loose…
                 (You can move queued jobs to another queue with command enq, after problem is corrected, move any unprinted jobs back.)
    DOWN:        if the printer device signals or appears to be off, the queue will go into the DOWN state
                 (After correcting the problem queue must be manually brought up before it can be used again.)
    HELD:        print job is held. The print job cannot be processed by the spooler until it is released
    QUEUED:      print file is queued and is waiting in line to be printed
    READY:       everything involved with the queue is ready to queue and print a job
    RUNNING:     print file is printing

lpstat -t -p<printer name>  list info about the printer and submitted jobs to it
enq -d                      it will digest /etc/qconfig and /etc/qconfig.bin will be created (if /etc/qconfig.bin is older than /etc/qconfig)

qadm -U <QueueName>         start a print queue (queue status will show READY)
qadm -D <QueueName>         stop a print queue (queue status will show DOWN)
qadm -G                     gracefully brings down the queuing system (Ends qdaemon process after all currently running jobs are finished.)

qprt -PQueueName FileName   create and queue a print job to print the file you specify
cat file > dev/lp0          prints out the file (this bypasses the queuing system and helps narrow the problem)

qmov                        moves print jobs to another queue
qcan -x 123                 cancel job number 123 on whichever printer the job is on (smitty qcan)
qcan -X -P lp0              cancel all jobs queued on printer lp0

rmquedev -d <device name>   removes a printer device from the system configuration by deleting the device stanza
                            Deleting a printer does not remove any print queues that send print jobs to that printer.

rmque -q <queue name>       remove a printer queue from the system (smitty rmque) (All queue devices must be deleted with the rmquedev prior to this)
                            If the selected queue has only one printer, the queue and its printer are removed.
                            If the queue has more than one printer, only the selected printer is removed.


Checking which flag/argument is passed to enq command:

All front-end commands are entry points to enq. These commands will translate its flags/arguments to those flags/arguments which can be used by enq:
qprt, qadm, qmov, qcan, lp, lpr, enable, disable —> enq

The following method will show what is passed to enq exactly:

1. mount /bin/echo /bin/enq                <–this makes possible that a fron-end command calls the echo command instead of enq

2. try any front-end command:
qprt -Pasc -p12 -s courier /etc/motd       <–qprt submits a print job to the queue "asc", requests to print /etc/motd file in Courier 12 font

3. on the output you will see:                     <–it will show the argument vector which is generated by qprt command
-P asc -o -p -o 12 -o -s -o courier /etc/motd      <–without echo this would be executed by enq

4. umount /bin/enq                                 <–make sure you don’t forget this, otherwise spooler will be disabled



-check qdaemon           (lssrc -s qdaemon, startsrc – qdaemon)
-/etc/qconfig            (look at the contents to make sure it is not corrupt)
-lpstat->enable queuename ensure the queue is enabled, if not enable it
-/tmp , /var             make sure they are not full


 – smitty mkhostslpd     on the print server, set up client authorization (define the clients in /etc/host.lpd)
 – smitty mkitab_lpd     on the print server starting the lpd daemon
                         (start/stopsrc also good, just with smitty make entry in inittab which will keep it after restart)
 – smitty spooler        -> Add a Print Queue -> Standard.. (This adds a remote queue on the client)
                         (then name the local(client) queue name, name of the printer server, name the queue on the print server)

1.lpstat                 <–it shows the job number
root@aix1: /home/guest # lpstat
Queue   Dev   Status    Job Files              User         PP %   Blks  Cp Rnk
——- —– ——— — —————— ———- —- — —– — —
lp0     lp0   Running   99  walrus             team01        1      1    1    1

2.qcan                  <–cancels a print job
qcan -x 99              <–99 is the job number


1. check spooler
aix0001:/home/root > lssrc -g spooler
Subsystem         Group            PID          Status
 qdaemon          spooler          13260        active
 writesrv         spooler          17806        active
 lpd              spooler          20658        active

2. get printer status
aix0001:/home/root > lpstat -p22P1
Queue   Dev   Status    Job Files              User         PP %   Blks  Cp Rnk
——- —– ——— — —————— ———- —- — —– — —
22P1    hp@22 READY

restart printer queue in smitty spooler or if this does not help, restart qdaemon

Useful AIX commands

Useful AIX commands

svmon -P

use can user svmon command to monitor memory usage as follows;

(A) #svmon -P -v -t 10 | more (will give top ten processes)
(B) #svmon -U -v -t 10 | more ( will give top ten user)

smit install requires "inutoc ." first. It’ll autogenerate a .toc for you
I believe, but if you later add more .bff’s to the same directory, then
the inutoc . becomes important. It is of course, a table of contents.

dump -ov /dir/xcoff-file

topas, -P is useful # similar to top

When creating really big filesystems, this is very helpful:
chlv -x 6552 lv08
Word on the net is that this is required for filesystems over 512M.

esmf04m-root> crfs -v jfs -g’ptmpvg’ -a size=’884998144′ -m’/ptmp2′
-A”`locale yesstr | awk -F: ‘{print $1}’`” -p’rw’ -t”`locale yesstr |
awk -F: ‘{print $1}’`” -a frag=’4096′ -a nbpi=’131072′ -a ag=’64’
Based on the parameters chosen, the new /ptmp2 JFS file system
is limited to a maximum size of 2147483648 (512 byte blocks)
New File System size is 884998144

If you give a bad combination of parameters, the command will list
possibilities. I got something like this from smit, then seasoned
to taste.

If you need files larger than 2 gigabytes in size, this is better.
It should allow files up to 64 gigabytes:
crfs -v jfs -a bf=true -g’ptmpvg’ -a size=’884998144′ -m’/ptmp2′ -A”` |
| locale yesstr | awk -F: ‘{print $1}’`” -p’rw’ -t”`locale yesstr | aw |
| k -F: ‘{print $1}’`” -a nbpi=’131072′ -a ag=’64’

Show version of SSP (IBM SP switch) software:
lslpp -al ssp.basic

llctl -g reconfig – make loadleveler reread its config files

oslevel (sometimes lies)
oslevel -r (seems to do better)

lsdev -Cc adapter

pstat -a looks useful

vmo is for VM tuning

On 1000BaseT, you really want this:
chdev -P -l ent2 -a media_speed=Auto_Negotiation

Setting jumbo frames on en2 looks like:
ifconfig en2 down detach
chdev -l ent2 -a jumbo_frames=yes
chdev -l en2 -a mtu=9000
chdev -l en2 -a state=up

Search for the meaning of AIX errors:

NFS tuning on AIX, courtesy of Ross Aiken:

nfso -a shows AIX NFS tuning parameters; good to check on if you’re
getting badcalls in nfsstat. Most people don’t bother to tweaks these

nfsstat -m shows great info about full set of NFS mount options

Turn on path mtu discovery
no -o tcp_pmtu_discover=1
no -o udp_pmtu_discover=1
TCP support is handled by the OS. UDP support requires cooperation
between OS and application.

nfsstat -c shows rpc stats

To check for software problems:
lppchk -v
lppchk -c
lppchk -l

List subsystem (my word) status:
lssrc -a

This starts sendmail:
startsrc -s sendmail -a "-bd -q30m"

This makes inetd reread its config file. Not sure if it kills and
restarts or just HUP’s or what:
refresh -s inetd

lsps is used to list the characteristics of paging space.

Turning off ip forwarding:
/usr/sbin/no -o ipforwarding=0

Detailed info about a specific error:
errpt -a -jE85C5C4C
BTW, Rajiv Bendale tells me that errors are stored in NVRAM on AIX,
so you don’t have to put time into replicating an error as often.

Some or all of these will list more than one number. Trust the first,
not the second.

lslpp -l ppe.poe
…should list the version of poe installed on the system

Check on compiler versions:
lslpp -l vac.C
lslpp -l vacpp.cmp.core

Check on loadleveler version:
lslpp -l LoadL.full

If you want to check the bootlist do bootlist -o -m normal if you want to
update bootlist do bootlist -m normal hdisk* hdisk* cd* rmt*


Run the ssadiag against the drive and the adapter and it will tell you if it
fails or not. Then if its a hot plugable it can be replaced online.

You can get patches from:

You’ll need to click through a bit of red tape before getting to where
you actually can list corequisites and start a download.

BTW, "Add to my download list" does not work in konqueror, but it does
work in mozilla.

Backup to tape:
env – /usr/bin/mksysb ‘-m’ ‘-i’ ‘-X’ /dev/rmt0
The "env -" is because some sort of environment variable can confuse
mksysb, making it error out instead of doing your backup
There’s also "smitty mksysb"

You can create an image using the savevg command i.e.

savevg -v -n -9 / _rootvg.img rootvg

This can be used to build a NIM installable image to recover your systems

alternatively, the command line call for a mksysb to tape (to include map
and exclude files) is /usr/bin/mksysb ‘-m’ ‘-e’ ‘-i’ /dev/rmt0

Finding which lpp contains a file:
lslpp -w /usr/sbin/umount

There exists a "diag CD" for AIX.


lsattr -El sys0 | grep realmem
lsattr -El mem0

See if you AIX system’s hardware is CHRP (some sort of PowerPC reference
platform spec, I believe) :
bootinfo -p

Some really funky hardware-looking problems can be fixed by draining
the NVRAM battery for 5 minutes, and then reinstalling the microcode.
We used to do this on some IBM RT’s in Cincinnati, and a recent poster
to AIX-L indicates that it’s still useful in some situations.

From AIX-L:
AIX 4.3.2 -> AIX 4.3.3 is the most easiest Upgrade of ALL. Place the
AIX 4.3.3 Vol 1 of CD on the CDROM drive and run smitty update_all ,
this will upgrade the OS

On the subject of running out of paging space, from AIX-L:
Look into npswarn, npskill stuff in Performance Management Guide

Changing the boot device order:
Boot the server, and hit 1 or F1 (depending if you have an ascii console
or a graphics console) when the logos come up to get to sms mode. In
the menus select multiboot, select boot devices, select boot order.

You should start tracing for inetd subsystem with

traceson -s inetd

and then issue:

trpt -j

you will see the protocols control blocks (PID) you’re tracing, and then with:

trpt -p

you should see output for telnet communications. But this is not working.

Why don’t you try using iptrace and ipreport to see the behavior of your
telnet sessions ??

Purportedly orks with JFS 1 and 2:

To split off a mirrored copy of the /home/xyz file system to a new mount
point named /jfsstaticcopy, type the following:

chfs -a splitcopy=/jfsstaticcopy /home/xyz

You can control which mirrored copy is used as the backup by using the
copy attribute. The second mirrored copy is the default if a copy is
not specified by the user. For example:

chfs -a splitcopy=/jfsstaticcopy -a copy=1 /home/xyz

At this point, a read-only copy of the file system is available in
/jfsstaticcopy. Any changes made to the original file system after the
copy is split off are not reflected in the backup copy.

To reintegrate the JFS split image as a mirrored copy at the /testcopy
mount point, use the following command:

rmfs /testcopy

The rmfs command removes the file system copy from its split-off state
and allows it to be reintegrated as a mirrored copy.

Working around a loader domain problem:

esmf04m-strombrg> /usr/local/bin/gribmap
exec(): 0509-036 Cannot load program /usr/local/bin/gribmap because of
the following errors:
0509-030 Insufficient permission to create loader domain
0509-026 System error: The file access permissions do not allow
the specified action.

esmf04m-strombrg> LIBPATH=$TMPDIR/gribmap-ld /usr/local/bin/gribmap
gribmap v1.4 for GrADS Version 1.8SL11

Apparently you can also link your application with -L$TMPDIR/loaderdomain
or so, but you’d need a unique one for each set of shared libraries.
This one apparently must be the first -L in the link line.

Please see also:

/usr/bin/uname -M
Gets the machine type?

Anyway, set the timezone variable TZ in /etc/environment like this:


…takes effect after everyone logs out and back in. This is just an
example, not something for California.

"svmon" will give u this output which give u the information regarding
ur memory.

size inuse free pin virtual
memory 1310711 1298235 12476 103782 711466
pg space 2097152 585219
work pers clnt lpage
pin 103782 0 0 0
in use 438570 10130 849535 0


Scott (of IBM, onsite hardware tech) stuff:

lsdev -Cc adapter
"defined" means at one time the piece of hardware was on system – as
opposed to "available". A card which is being newly added should not
temporarily pass through "defined" state. Hardware should be in the
"available" state.
lsslot -c pci
p1-i1 is the first slot on the back left
diadiagnostic routines
problem determination
sfp: phones home (to IBM) over modem
previously reported problem
task selection
hot plug task
pci or scsi
identify function will blink light, so you can make sure the hardware
and software are on the same page.
u1.1 drawer address, bottom left
EIA numbers on right and left of rack, goes to lowest of the numbers
adjacent to the equipment in question. EG, something in the rack might
be 3 EIA numbers high – the software should identify the hardware by
the lowest number of the 3.
hotplug in os removes voltage from slot, slot light should blink yellow,
same as for identify.
we have older "hotswap cassettes" – which means lots of screws.
Newer ones snap together. It also can take a bit of wrestling to get
the card in and out of the old cassettes (shades of Sun’s IPX’s ๐Ÿ™‚
yellow llight continues blinking after card inserted, until software is
told to let the slot have voltage again.
advanced diagnostics, search for thing to test visually
takes awhile to run, checks all devices on machine
no output, but then lsdev -Cc adapter again should change afterward
ps -ef | grep Worm
splstdata -a
should not say not_configured
use rc.switch to make it configured
ps -ef pipe | Worm again, should show up now
Eunfence 49 – 49 is 04m
spmon -d
"d" for diagnostic
like front panel leds
"host responds" and "switch responds" should say yes for all css adapters
errpt (no args)
Scott says that sometimes an SP2 system will refuse to acknowledge the
new adapter, in which case you have to lie to the ODM to make the system
see the card. He suggested that maybe we did not need to do that this
time, because we have the latest pssp (ssp.*) software on the system.
We also had to Eunfence the node whose card was replaced.

Rajiv tells me that it does not matter which host is Eprimary, as long as
one of the nodes is, and there aren’t things fenced off that shouldn’t be.

mount -v cdrfs -o ro /dev/cd0 /mnt
Mount iso9660 filesystem

More on cfgmgr, from aix-l:

you can execute cfgmgr on line without trouble

normally cfgmgr have 3 steps named phases :
phase 1 during boot
phase 2 during normal boot (after phase1)
phase 3 durinf service boot (after phase1)

if you run cfgmgr without flags (-p or -f) cfgmgr executes phase 2 only by

in fact cfgmgr and cfgmgr -p2 are the sames commands
flag -v for verbose

AIX 5.2 has builtin CIFS client?
mount -v cifs -n winserver/myuser/mypassword /home /mnt

Can also "smitty cifs_fs"

This is supposed to be included in lpp bos.cifs_fs

Apparently this was added in AIX 5.2

please check if your cd device is being used by some process by running:

fuser -c /dev/cd0

you can also chack if cdromd is up and running by:

lssrc -a | grep cd

if cdromd is running, then try with the following commands:



here is some commands to manipulate the ODM directly (I don’t suggest you
do so, at least you know exactly what you are doing).
odmget, odmshow, odmchange, odmadd, odmdelete, odmdrop

lsps -a

nmon – free, unsupported download from IBM
What’s this about chmod’ing kmem to be world readable though?!

esmf04m-dcsew> instfix -i | grep ML
All filesets for were found.
All filesets for 5100-01_AIX_ML were found.
All filesets for 5100-02_AIX_ML were found.
All filesets for 5100-03_AIX_ML were found.
All filesets for 5100-04_AIX_ML were found.

The specifix fixes can be checked using instfix command:
#instfix -ivk
e.g #instfix -ivk IY56076

instfix -ciqk 4330-08_AIX_ML | grep ":-:"
Lists what filesets need to be installed for instfix to show "All filesets
for 4330-08 were found".

instfix -k "IX#####" -d /dev/rmt0.1
Installs the APAR and its prerequisites on the system.

installp -Xagqd /dev/rmt0.1 X11.base.rte
Installs Xwindows on the system.

installp -u
deletes an AIX lpp

Copious network statistics:
entstat -d ent0

Making AIX 5.1 see a change to /etc/inetd.conf and/or /etc/services
and/or /etc/rpc is different from most other systems (only verified
using one rpc/udp service so far)

You can’t just kill -HUP inetd’s pid

What you can do, is "smitty inetd", stop inetd, start inetd, and exit smitty.

Alternatively, it -should- work to:
stopsrc -s inetd
startsrc -s inetd

Or better:
Edit /etc/inetd.conf and comment out ftp and refresh inetd by issuing
"refresh -s inetd"

startsrc -t ftpd -u 022 -l

To truly change the kernel to 64-bit, you need to be at the 5.1 oslevel. The
means to change to a 64-bit kernel are:

From 32-bit to 64-bit:

ln -sf /usr/lib/boot/unix_64 /unix
ln -sf /usr/lib/boot/unix_64 /usr/lib/boot/unix
lslv -m hd5
bosboot -ad /dev/ipldevice
shutdown -Fr
bootinfo -K (should now be 64)

To change the kernel back to 32-bit:

From 64-bit to 32-bit:

ln -sf /usr/lib/boot/unix_mp /unix
ln -sf /usr/lib/boot/unix_mp /usr/lib/boot/unix
lslv -m hd5
bosboot -ad /dev/ipldevice
shutdown -Fr
bootinfo -K (should now be 32)If you are running AIX 5.1

Switching From 32 to 64 Bit Mode

To switch from 32-bit mode to 64-bit mode run the following commands,
in the given order:

1.ln -sf /usr/lib/boot/unix_64 /unix
2.ln -sf /usr/lib/boot/unix_64 /usr/lib/boot/unix
3.bosboot -ad /dev/ipldevice
4.shutdown -Fr
5.bootinfo -K (should now show 64)

Switching From 64 To 32-Bit Mode

To switch from 64-bit mode to 32-bit mode run the following commands,
in the given order:

1.ln -sf /usr/lib/boot/unix_mp /unix
2.ln -sf /usr/lib/boot/unix_mp /usr/lib/boot/unix
3.bosboot -ad /dev/ipldevice
4.shutdown -Fr
5.bootinfo -K (should now show 32)

Moulay Rachid BOUSSETA

To see if you’re running with a 32 bit or 64 bit kernel, run:

bootinfo -K
prtconf -k

esmf04m-root> PATH=/usr/bin:/usr/sbin prtconf -k
Kernel Type: 64-bit
esmf04m-root> bootinfo -K

bootinfo -s hdiskxxx

lspv hdiskXX as well is defined on a Volume Group

lsattr -El hdiskXX

lscfg -vp -l hdiskXX

These should give you the raw disk capacity

Go to:
Choose: 1)pSeries family
2)AIX OS,Java, compilers
3)Specifi fix
4)Your OS
Press continue….

type in your requisites in the text box. thats it!

LPP history:

lslpp -h

sar 1 10

bootinfo -b reports last device the system booted from
bootinfo -k reports keyswitch position
1=secure, 2=service, 3=normal

bootinfo -r reports amount of memory (/ by 1024)
bootinfo -s (disk device) reports size of disk drive
bootinfo -T reports type of machine
ie rspc,rs6ksmp,rspc or chrp
bootinfo -y reports your hardware arquitecture (32
bits or 64 bits)

bootinfo -K reports if the kernel in memory is 32
bits or 64 bits

You can submit/check a pSeries PMR via the web at:

Force a user to change their password on their next login:
pwdadm -f ADMCHG username
Note that this works with some sshd’s and not others

Identifying hard disk issues:

svmon -G
vmstat 1 20
iostat -d hdisk0 1 20
ps avg | sort +3r -n | head -25

Maximum number of processes a user can have:
lsattr -E -l sys0 -a maxuproc

smitty chgsys
Also allows one to change the max number of processes per user, among
other things


by Host Resource you mean the AIX SNMP component that monitors system
resources ??

if so, then there’s a conf file for the daemon aixmibd named
/etc/aixmibd.conf where you can configure the thresholds for many
monitors. Once you have configure this then you should activate the daemon
by issuing:

startsrc -s aixmibd

Please remember to uncomment the line that starts aixmibd in /etc/rc.tcpip

On AIX patches:

1) An APAR (Authorized Program Analysis Report) is a bunch of software
patches that solves many problems while a PTF (is the same as Fix and
means Program Temporary Fix) is a patch that solves one specific problem.
You will download Maintenance Levels (ML) as APARs from IBM Software Web

2) You should install the latest Maintenance Level for the AIX version you
have installed (usually a big bunch of software up to 650 MB that needs
almost 1GB space to be decompressed and installed). As AIX 5L is new
technology from IBM they’re patching many problems and generating ML very
often. You can download from

3) First, you have to know which Fix or PTF to install, then download it
from the above web link, then copy to a location in the server (usually
PTF’s are copied to /usr/sys/inst.images directory as well as there’s
enough space (what i do is to create a new FS of some 2 GB dize and mount
it over /usr/sys/inst.images, after installing the APAR or PTF i just
delete the FS without deleting the mount point). Then uncompress or unzip,
untar, whatever, and using the fastpath smitty update_all in AIX you
can install or preview the installation of any patches. I recommend using
preview option before real installation and also recommend installing
patches in APPLIED status, that is, both either original or old version
and newest version of the software are installed, so you can REJECT the
installation of any patch.

4) You can remove any single fileset with the fastpath smitty remove

5) A COMMITed software is installed and the only way to reject it is by
uninstalling the software fileset while a APPLIED software is installed
and the preview versions of filesets are installed too so if you REJECT
the APPLIED software then those older versions will be active again.

Checking on known maintenance levels:

esmf04m-strombrg> oslevel -qr
Known Recommended Maintenance Levels

esmf04m-strombrg> lppchk -v

Dual booting AIX:

>Okay you install AIX 5.1 on hdisk0 as example and boot your maschine. th=
>you clone your rootvg to hdisk1 :
>alt_disk_install -C hdisk1
>so you have hdisk0 with old_rootvg
>and hdisk1 with alt_*rootvg
>bootlist -m hdisk0 hdisk1 (means you boot from hdisk0 first and hdisk1
>boot with AIX5.2 CD and install with Migartion Option from prompt on
>now you have Aix5.2 on hdisk0 and aix5.1 on hdisk1
>if you want to remove the alternate disk install:
>alt_disk_install -X

Installing an IBM maintenance release upgrade:

Go to the IBM Support Fix Central site:

* Server
Select "Pseries family" or the series that your server is.

* Product or fix type
Select "AIX OS, java, compilers"

* Ordering option
Select "Mainteneance packages"

* OS level
Select "AIX 5.1"

Select "continue" for next screen

Current level
Select "5100-04"

Desired Level
Select "5100-05"

Select "go"

Download "510405.tar.gz " at the bottom of the page

Follow the instructions

Locking an account:

The following procedure can be used to lock a user’s account;
(1) smitty user
(2) select, change the characteristics of a user
(3) Expiration Date: input the effective date, when this account will be
expiring / closing
(4) Is this user account locked: false, use tab key to choose true
(5) User can login:true, use tab key to change true to false
(6) user can login remotely:true, use tab key to change true to false
(7) Press enter key and account will be locked
(8) for further security also change the password

to permit the user to login after 30 days / specfied time revert the above
fields to original values.

If an ESMF node mostly falls off the net (strobe shows only about 5
ports open), then:

1) Go down to the ESMF HMC
2) Log in
3) Locate the right window to use
4) Log in to the trouble machine
5) kill and restart srcmstr
6) startsrc -s inetd
7) startsrc -s sshd
8) startsrc -s automountd
9) /etc/nfs.clean
10) /etc/rc.nfs

There may be other things that need to be started up as well, but this
has been sufficient so far.

Following the documentation if you issue the following command you will
activate HMT or Hardware MultiThreading

# bosdebug -H on
Memory debugger off
Memory sizes 0
Network memory sizes 0
Kernel debugger off
Real Time Kernel off
HMT on

…but only if your hardware -supports- HMT!

Definiing a virtual network interface:
ifconfig en# alias

Checking if NFS is active:
lssrc -a | egrep nfs
biod nfs 20752 active
nfsd nfs 21426 active
rpc.mountd nfs 27888 active
rpc.statd nfs 22730 active
rpc.lockd nfs 24280 active

nfso -o nfs_use_reserved_ports=1

Find where gzip lives, package-wise:
which_fileset gzip

Get the machine model:

esmf04m-strombrg> /usr/bin/uname -M

Looks a lot like prtconf?

You can check microcode version by issuing the following command


if this does not work, then

lscfg -vp | grep -i alterable

You can download Fixes and microcodes not only for your Server nut for any

peripheral devices from

1. Type no -o tcp_keepinit=3750 The initial timeout for TCP/IP will change
from 75 seconds to 31.25 minutes. The time (3750) is in 1/2 seconds.

2. Type no -o tcp_keepidle=86400 The connection will be kept alive
for 12 hours.

The above two items will not be active once a reboot is done. If this
solves your problem you can add the statements to your /etc/rc.tcpip file.

filemon Command

Monitors the performance of the file system, and reports the I/O activity on
behalf of logical files, virtual memory segments, logical volumes, and physical

…can be used to check what kind of filesystem a filesystem is

Apparently can be used to snoop on a tty/pty on AIX? A bit like screen
or VNC, but without the forethought requirement.

Restoring from a mksysb tape:

You can either boot from your mksysb Medium (band Streamer or cdrom) and

change your bootlist:

if you have a Band Streamer, so you can boot from AIX Installation Medium
and choose point 3 (Maintenance mode) and restore from media.

Determing what needs to be upgraded to advance to a higher os level:
you can do an "instfix -i | grep ML" to list which maintenance level is
incomplete and then show what filesets are required i.e. if AIX 5.2 ML02 is
incomplete do "instfix -ivk 5200-01_AIX_ML | grep ":" | grep not"

Nice page with AIX OpenSSH bff’s, a script for creating bff’s, a script
for setting up LBX for use with ssh, and more.

An example mksysb backup:

# mksysb /dev/rmt0

Creating tape boot image …

Creating list of files to back up .
Backing up 68614 files…………………………
17379 of 68614 files backed up (25%)…………………………
25331 of 68614 files backed up (36%)…………………………
25341 of 68614 files backed up (36%)…………………………
55359 of 68614 files backed up (80%)……………..
68614 of 68614 files backed up (100%)
0512-038 mksysb: Backup Completed Successfully.
# echo $PATH

Note the PATH! The backup failed when I had a larger PATH.

IBM’s document describing AIX to Solaris admins:

Changing the boot device:

Boot from aix cd’s into maint shell and run the bosboot -ad /dev/hdisk0

Or if the hd5 boot device is mirrored on hdisk0 and hdisk1 all you need
to do is boot into sms menu and ensure both disks are selected in the
boot order.

To access sms hit 1 before it does a speaker test.
You can boot it up into what used to be called SMS mode .. i.e. hit F1 at
the ‘keyboard’ prompt … You can change the boot device from there and
then make sure that you rerun your bosboot once you have booted up.
Couldn’t be simpler

manctsr/ >lsvg rootvg -p
hdisk0 active 542 245 28..00..00..108..109
hdisk1 active 542 245 28..00..00..108..109
manctsr/ >lsvg rootvg -l
hd5 boot 1 2 2 closed/syncd N/A
hd6 paging 64 128 2 open/syncd N/A
hd8 jfslog 1 2 2 open/syncd N/A
hd4 jfs 1 2 2 open/syncd /
hd2 jfs 27 54 2 open/syncd /usr
hd9var jfs 3 6 2 open/syncd /var
hd3 jfs 5 10 2 open/syncd /tmp
hd1 jfs 1 2 2 open/syncd /home
apachelv jfs 5 10 2 open/syncd /apache
cv4=5Fhome jfs 172 344 2 open/syncd
cv4=5Fdec jfs 15 30 2 open/syncd /export/cv4=5Fd=
lv00 jfs 2 4 2 open/syncd /mn/script

# lsvg rootvg -l
hd5 boot 1 2 2 closed/syncd N/A
hd6 paging 40 80 2 open/syncd N/A
hd8 jfslog 1 2 2 open/syncd N/A
hd4 jfs 1 2 2 open/syncd /
hd2 jfs 71 142 2 open/syncd /usr
hd9var jfs 1 2 2 open/syncd /var
hd3 jfs 2 4 2 open/syncd /tmp
hd1 jfs 4 8 2 open/syncd /home
hd10opt jfs 2 4 2 open/syncd /opt
log1 jfslog 1 2 2 closed/syncd N/A
paging01 paging 9 18 2 open/syncd N/A
hd14 jfs 4 8 2 closed/syncd N/A

PSSP has it’s own 5 CD set (PSSP-3.5) and has to be ordered. Thanks

Don’t panic! DISK_ERR4 (in errpt) is just a bad block relocation and
is a somewhat
"normal" occurrence. You only need to be concerned about these errors
if you notice them increasing in number on the same disk. So – you need
to track it but not necessarily replace it.

What kernel level (lslpp -l ‘bos.[um]p*’)

The hardware must be CHRP (Common Hardware Reference Platform) in order for
5.2 or greater to be supported.

You can determine that by issuing "bootinfo -p".

Nice article on AIX backups:

A fix for some kinds of tape backup problems:

please post the output of the following command

lsattr -El rmt0

we are looking for the value "ret error", if this is set to true then i’d
recommend changing it to false by issuing a smitty devices->Tape
devices->Change Tape Devices

How to create mksysb to a remote tape drive.
**** Note mksysb will not be bootable ***
Lets say tape drive is on systemA and you need to create
mksysb of system
You should be able to do rsh from systemB to systemA
Create the script remote_mksysb on systemB with following lines.

rm -f /tmp/pipe

mknod /tmp/pipe p

mksysb /tmp/pipe &
dd if=/tmp/pipe | rsh systemA "dd of=/dev/rmt0 bs=1024 conv=sync"
rm /tmp/pipe

Generating a list of system calls known to the kernel:

dd if=/proc/$$/sysent of=/tmp/out

(check the end)

Reading a tape


tctl rewind
tctl fsf 3
restore -Tqvf /dev/rmt0.1|pg


tctl rewind
tctl fsf 5
restore -Tqvf /dev/rmt0.1|pg

I think that all these following commands mean the same thing :

# bootinfo -y
# prtconf -c
CPU Type: 32-bit
# bootinfo -K

On alt_disk_install:

We use it mainly to reduce downtime while upgrading the systems and also
to have a quick back out path. You can have the new built image install
on the alt disks. Switch boot device to the new partition and your newly
upgraded system up and running. If your system has any problems you
cannot fix with adjustments, you can switch back to the old partition
and bring out the old software.

Outage time is little over a reboot worth of time.

First, try to start the switch adapter daemon (worm) with rc.switch.

Now refer to the docs at:

Good luck – these SP switch problems are notoriously hard to fix.

Enabling quotas on a JFS filesystem (and perhaps others) :

Edit /etc/filesystems and edit in quota=userquota on the relevant filesystem.

esmf04m-root> chfs -a "quota = userquota" /home
esmf04m-root> quotaon /home
esmf04m-root> quotacheck /home

If a program proves too large to compile with the default options due
to a toc overflow, please try adding:

-Wl,-b -Wl,bigtoc

…to your $CC or $LDFLAGS

bash-2.05b$ lsattr -El ent0

alt_addr 0x000000000000 Alternate ethernet address
busintr 553 Bus interrupt level
busmem 0xf8080000 Bus memory address
chksum_offload yes Enable hardware transmit and
receive checksum True
compat_mode no Gigabit Backward compatability
copy_bytes 2048 Copy packet if this many or less
bytes True
flow_ctrl yes Enable Transmit and Receive
Flow Control True
intr_priority 3 Interrupt priority
intr_rate 10000 Interrupt events processed per
interrupt True
jumbo_frames no Transmit jumbo frames
large_send yes Enable hardware TX TCP
resegmentation True
media_speed Auto_Negotiation Media speed
rom_mem 0xf8040000 ROM memory address
rx_hog 1000 RX buffers processed per RX
interrupt True
rxbuf_pool_sz 2048 Rcv buffer pool, make 2X rxdesc_que_sz
rxdesc_que_sz 1024 RX descriptor queue size
slih_hog 10 Max Interrupt events processed
per interrupt True
tx_que_sz 8192 Software transmit queue size
txdesc_que_sz 1024 TX descriptor queue size
use_alt_addr no Enable alternate ethernet address

# lsslot -c pci
# Slot Description Device(s)
U0.1-P1-I1 PCI-X capable, 64 bit, 133MHz slot Empty
U0.1-P1-I2 PCI-X capable, 32 bit, 66MHz slot Empty
U0.1-P1-I3 PCI-X capable, 32 bit, 66MHz slot pci9 lai0
U0.1-P1-I4 PCI-X capable, 64 bit, 133MHz slot Empty
U0.1-P1-I5 PCI-X capable, 64 bit, 133MHz slot Empty
U0.1-P1-I6 PCI-X capable, 64 bit, 133MHz slot Empty

Operating System and Devices
Split a Mirrored Disk from a Volume Group
Beginning with AIX 5.2, snapshot support helps you protect the
consistency of your mirrored volume groups from potential disk failure.
Using the snapshot feature, you can split off a mirrored disk or disks
to use as a reliable (from the standpoint of the LVM metadata)
point-in-time backup of a volume group, and, when needed, reliably
reintegrate the split disks into the volume group. In the following
procedure, you first split off a mirrored disk from a volume group and
then you merge the split-off disk into the original volume group. To
further ensure the reliability of your snapshot, file systems must be
unmounted and applications that use raw logical volumes must be in a
known state (a state from which the application can recover if you need
to use the backup).

A volume group cannot be split if any one of the following is true:

A disk is already missing.
The last non-stale partition would be on the split-off volume group.
Any stale partitions exist in the volume group, unless you use the force
flag (-f) with the splitvg command.
Furthermore, the snapshot feature (specifically, the splitvg command)
cannot be used in enhanced or classic concurrent mode. The split-off
volume group cannot be made concurrent or enhanced concurrent and there
are limitations to the changes allowed for both the split-off and the
original volume group. For details, read the chvg command description in
AIX 5L Version 5.2 Commands Reference.

Ensure that the volume group is fully mirrored and that the mirror
exists on a disk or set of disks that contains only this set of mirrors.

To enable snapshot support, split off the original volume group (origVG)
to another disk or set of disks, using the following command:
splitvg origVG
At this point, you now have a reliable point-in-time backup of the
original volume group. Be aware, however, that you cannot change the
allocation on the split-off volume group.
Reactivate the split-off disk and merge it into the original volume
group using the following command:
joinvg origVG
At this point, the split-off volume group is now reintegrated with the
original volume group.

Configuring ntp

1) Stop the xntpd daemon

The xntpd daemon is managed by the System Resource Controller (SRC).
To verify that the xntpd daemon is active : lssrc -s xntpd : status
should be "active"
To stop the xntpd subsystem : stopsrc -s xntpd

Note : xntpd is automatically started in /etc/rc.tcpip. To verify this :
cat /etc/rc.tcpip | grep xntpd.

2) Modify the /etc/ntp.conf file

Put the following lines in the /etc/ntp.conf file :

server prefer
driftfile /etc/ntp.drift
tracefile /etc/ntp.trace

3) Restart the xntp daemon

To restart the xntpd daemon :
startsrc -s xntpd

4) Check status of time synchronization

To check the status of the time synchronisation, use the ntpq utility.
ntpq -i : start ntpq interactively

ntpq> peer

remote refid st t when poll reach
delay offset disp
* .PPS. 1 u 863 1024 377 0.92 0.160 0.47

The "offset" field displays the difference (in milliseconds) between the
system time and the reference time.
Type "quit" to exit the ntpq utility.

Kind of like ldd:
dump -X32 -Tv /bin/ls

Getting security notices from IBM:

Changing prngd to listen on a socket, using chsys:

esmfcws-root> chssys -s prngd -a ‘-f /dev/egd-pool -m 666 tcp/localhost:708’
0513-077 Subsystem has been changed.
esmfcws-root> ps -ef | grep prng
root 303186 1015878 0 19:19:43 pts/2 0:00 grep prng
root 1007836 262212 0 19:04:42 – 0:01
/opt/freeware/sbin/prngd -f /dev/egd-pool -m 666
esmfcws-root> stopsrc -s prngd
0513-044 The prngd Subsystem was requested to stop.
esmfcws-root> startsrc -s prngd
0513-059 The prngd Subsystem has been started. Subsystem PID is 852062.
esmfcws-root> ps -ef | grep prng
root 852062 262212 0 19:20:42 – 0:01
/opt/freeware/sbin/prngd -f /dev/egd-pool -m 666 tcp/localhost:708
root 1007846 1015878 0 19:20:54 pts/2 0:00 grep prng
esmfcws-root> /usr/lo
local lost+found
esmfcws-root> /usr/local/sbin/gen-pas
Not bad, using prngd for entropy

Or if prngd isn’t already partially set up:

esmf04m-root> mkssys -s prngd -p /opt/freeware/sbin/prngd -u root -a
‘-f /dev/egd-pool -m 666 tcp/localhost:708’
0513-071 The prngd Subsystem has been added.
esmf04m-root> lssrc -s prngd
Subsystem Group PID Status
prngd inoperative

esmf04m-root> for i in 1 2 3 4 5 6 7 8; do ssh esmf0${i}m "mkssys -s
prngd -p /opt/freeware/sbin/prngd -u root -a ‘-f /dev/egd-pool -m 666
tcp/localhost:708’"; done
0513-071 The prngd Subsystem has been added.
0513-071 The prngd Subsystem has been added.
0513-071 The prngd Subsystem has been added.
0513-075 The new subsystem name is already on file.
0513-071 The prngd Subsystem has been added.
0513-071 The prngd Subsystem has been added.
0513-071 The prngd Subsystem has been added.
0513-071 The prngd Subsystem has been added.
esmf04m-root> for i in 1 2 3 4 5 6 7 8;
do ssh esmf0${i}m "stopsrc -s prngd"; done
0513-004 The Subsystem or Group, prngd, is currently inoperative.
0513-004 The Subsystem or Group, prngd, is currently inoperative.
0513-004 The Subsystem or Group, prngd, is currently inoperative.
0513-044 The prngd Subsystem was requested to stop.
0513-004 The Subsystem or Group, prngd, is currently inoperative.
0513-004 The Subsystem or Group, prngd, is currently inoperative.
0513-004 The Subsystem or Group, prngd, is currently inoperative.
0513-004 The Subsystem or Group, prngd, is currently inoperative.
esmf04m-root> for i in 1 2 3 4 5 6 7 8; do ssh esmf0${i}m "startsrc
-s prngd"; done
0513-059 The prngd Subsystem has been started. Subsystem PID is 25880.
0513-059 The prngd Subsystem has been started. Subsystem PID is 34508.
0513-059 The prngd Subsystem has been started. Subsystem PID is 30670.
0513-029 The prngd Subsystem is already active.
Multiple instances are not supported.
0513-059 The prngd Subsystem has been started. Subsystem PID is 37450.
0513-059 The prngd Subsystem has been started. Subsystem PID is 21266.
0513-059 The prngd Subsystem has been started. Subsystem PID is 27662.
0513-059 The prngd Subsystem has been started. Subsystem PID is 42666.

Don’t forget /etc/prngd.conf

Only JFS file systems can be large-file-enabled. If you use JFS2, they
handle files greater than 2GB out of the box.

Mike Badar

Checking on whether the "Trusted Computing Base" is configured:

please issue the following commands:

fuser -c /mnt

and check for any PID that maybe locking your CD device. If you have any,
you can kill them all bye issuing

fuser -ck /mnt

and try to eject the CDROM. If this doesn’t work at all, then check for
the cdromd daemon (new feature ported for Solaris into AIX) with the
following command:

lssrc -a | grep cdrom

if cdromd is running, then you should umount the cdrom device:

cdumount /cdrom/cdXX

Linux, by default, requires any NFS mount to use a reserved port below 1024.
AIX, by default, uses ports above 1024. Use the following command to
restrict AIX to the reserved port range:

# /usr/sbin/nfso -o nfs_use_reserved_ports=1

Creating a subsystem:
mkssys -s smbd -p /opt/freeware/sbin/smbd -u 0 -a "-D" -d -q -S -n 15
-f 9 -G tcpip
But it’s useless since smbd make fork.

AIX system firmware upgrade (pSeries?) :

Sysplanar is something like motherboard in Intel domain, i.e. it is hardware.
It is possible to upgrade firmware when in maintenance mode – when there
is E1F1 on the LCD display right on the machine press key 1 (not on the
numeric keyboard) if you have ASCII terminal.
If you have graphical console press functional key ‘F1’
you will be directed to standalone diagnostics menu

the firmware you can find here together with description:

if you cannot boot and have the shell prompt you can do it according
the paragraph ‘Updating with the Diagnostic Service Aid Method’ – see
the description from the link mentioned above.

in the diagnostics menu you can find ‘current firmware as well (there
is something like ‘Display config’ there’)

Diagnostics can be ran against a single device while online

use the
diag -d devicename

bindprocessor -q ( will give you the number of proc. )
lscfg -v ( will give your system info. )
lsmcode -A ( will give you the proc. firmware + others )

chuser maxage=0 username

Some good stuff on OpenMP and AIX (among other things):

Someone on AIX-L indicated that this was a good vmtune for a database system:
/usr/samples/kernel/vmtune -p 5 -P 20 ( to set the max perm and min
perm values)

Getting an AIX machine’s serial number:

esmf04m-root> uname -m

LoadLeveler upgrade PMR# 70374-227 – website only showing linux downloads
of loadleveler, no AIX downloads

From a post on AIX-L:

IBM recommends the following formula to calculate the amount of paging
space you need…

For memories larger than 256 MB, the following is recommended:

total paging space = 512 MB + (memory size – 256 MB) * 1.25

For 1024MB RAM = 1600MB Paging Space

1 LP = 64 MB = add 17 LP’s to = 1600MB

This is what we use while running AIX 5L.

Changing a forgotten root password on AIX:

1. Insert the product media for the same version and level as the
current installation into the appropriate drive.
2. Power on the machine.
3. When the screen of icons appears, or when you hear a double
beep, press the F1 key repeatedly until the System Management Services
menu appears.
4. Select Multiboot.
5. Select Install From.
6. Select the device that holds the product media and then select
7. Select the AIX version icon.
8. Define your current system as the system console by pressing the
F1 key and then press Enter.
9. Select the number of your preferred language and press Enter.
10. Choose Start Maintenance Mode for System Recovery by typing 3
and press Enter.
11. Select Access a Root Volume Group. A message displays explaining
that you will not be able to return to the Installation menus without
rebooting if you change the root volume group at this point.
12. Type 0 and press Enter.
13. Type the number of the appropriate volume group from the list
and press Enter.
14. Select Access this Volume Group and start a shell by typing 1
and press Enter.
15. At the # (number sign) prompt, type the passwd command at the
command line prompt to reset the root password. For example:

16. # passwd
17. Changing password for "root"
18. root’s New password:
Enter the new password again:

19. To write everything from the buffer to the hard disk and reboot
the system, type the following:


turning off diagnostic lights:

/usr/lpp/diagnostics/bin/usysfault -s normal

AIX filesystems and quotas:
bluesky’s /home is JFS, not JFS2, according to the mount command on
/home’s NFS server.

I also called IBM support to verify what we’ve been seeing on the web.
The tech I reached indicated that:

1) JFS2 does not support quotas in AIX 5.1 or AIX 5.2
2) Many customers have been requesting quotas for JFS2
3) He has not heard of any plans to add quota support to JFS2 for AIX 5.3
4) He would not be surprised if quotas for JFS2 are added to the IBM AIX
roadmap sometime soon, given the high demand
We now have reason to want to move from 5.1 to 5.3 (we want quotas on
/ptmp, and we want /ptmp to be a bit under 2 terrabytes; JFS in AIX 5.1
does quotas, but not 1T+ filesystems, and JFS 2 on AIX 5.1 does 1T+
filesystems, but not quotas; I understand that 5.3’s JFS2 does large
filesystems as well as quotas).
The new piece of news is, that if we were to gateway lustre to AIX over
SMB/CIFS, we -wouldn’t- have to resort to "sharity", which was a product
that IBM was unlikely to be able to support. It turns out that AIX 5.2
and up, include an SMB/CIFS client. So we could upgrade to AIX 5.3 (and
we want to anyway, to get quotas in JFS2), and use IBM’s implementation
of an SMB/CIFS client, with samba on esmft2.
I’m shy to even try IBM’s JFS, because it comes from OS/2 and not AIX.
JFS really lacked a _lot_ of traditional UNIX capabilities in its first
releases on Linux, unlike XFS.
The consensus on comp.unix.aix appears to be that JFS (1) will not allow
one-large /ptmp like Charlie wants.

Recall that we recently moved /ptmp from JFS2 to JFS to get quotas.

It turns out that in AIX 5.3, JFS2 can do quotas.

IBM informs me that PSSP is never going to be ported to AIX 5.3. There is
a followon product like PSSP called "CSM", and it runs on recent AIX and
Linux, but it is not going to support an SP2 switch, like the ESMF has.

Redirect console messages to a specific file of your choosing:
swcons /tmp/console.messages

Checking if an AIX machine is still marketed and/or supported by IBM:

Like tcpdump/ethereal?

iptrace -e -i lo0 /tmp/iptrace.out, ( let it run for 5 minutes, kill it)
ipreport /tmp/iptrace.out

# lscfg -vp | grep -e "Memory DIMM" -e "Size"
Memory DIMM:
Memory DIMM:
Memory DIMM:
Memory DIMM:

Clipped from a message on AIX-L – outlines the procedure for replacing
a bad disk in a logical volume:

u must procee in tyhos order:
1- unmirror the rootvg (unmirror rootvg hdisk1)
2- extrcat hdisk1 from rootvg (reducevg rootvg hdisk1) hidsk1 should not
have any other data, if yes, move them first
3- rmdev -dl hdisk1
4- put the new pv
5- cvrmgrl
6- extendvg rootvg "the new pv"
7-mirrorvg rootvg hdsikxxx

And another:

Use this redbook, page 182, section 6.5.1.

On -some- IBM (PowerPC) machines, you boot to singleuser by hitting F5
during the boot

Where to get firmware for pSeries machines:

"I believe the p in p-Series stands for Performance.
While the i in i-Series stands for Integrated."
"I believe the p in pSeries stands for Power as in the power 5 chip
architecture the hardware uses."

OK, from the (0)> prompt enter either ? or h – these subcommands list
all the available subcommands you can key into the kdb at the (0)>
prompt. Unfortunately, unless you know what you are looking for its
hard to understand the output.

The common commands to use are stat and staus – which will show the
status of the system and dump, vmlog and vmstat will show any memory
errors that may have caused the dump.

You really need an indepth knowledge of how the system works to
decipher most of the output and Im afraid theres no easy way to do it.

This link has a list of all the kdb subcommands


Paul (on AIX-L)

bindprocessor is for binding a process to a specific CPU

esmf04m-root> sysdumpdev -l
primary /dev/lv00
secondary /dev/sysdumpnull
copy directory /var/adm/ras
forced copy flag TRUE
always allow dump TRUE
dump compression OFF
Wed Oct 26 13:43:31

From a IBM AIX partner:

GIL is a kernel process, which does TCP/IP timing. It handles
transmission errors, ACKs, etc. Normally it shouldn’t consume too much
CPU, but it can take quite a lot of CPU when the system is using the
network a lot (like with NFS filesystems which are heavily used).
The kproc gil runs the TCP/IP timer driven operations. Every 200ms, and
every 500ms the GIL thread is kicked to go run protocol timers. With TCP
up (which is ALWAYS the case), TCP timers are called which end up
looking at every connection on the system (to do retransmission, delayed
acks,etc). In version 4 this work is all done on a multi-threaded kproc
to promote concurrency and SMP scalability.gil.

GIL is one of the kprocs (kernel processes) in AIX 4.3.3, 5.1 and 5.2.
Since the advent of topas in AIX 4.3.3 and changes made to the ps
command in AIX 5.1, system administrators have become aware of this
class of processes, which are not new to AIX. These kprocs have no
user interfaces and have been largely undocumented in base
documentation. Once a kproc is started, typically it stays in the
process table until the next reboot. The system resources used by any
one kproc are accounted as kernel resources, so no separate account is
kept of resources used by an individual kproc.
Most of these kprocs are NOT described in base AIX documentation and
the descriptions below may be the most complete that can be found.
GIL term is an acronym for "Generalized Interrupt Level" and was
created by the Open Software Foundation (OSF), This is the networking
daemon responsible for processing all the network interrupts, including
incoming packets, tcp timers, etc.
Exactly how these kprocs function and much of their expected behavior
is considered IBM proprietary information.

In the event of a power failure, from "jessie" on the AIX-L mailing list:

check you error report for an entry that states
if there is an entry post it in detail to have a look at the Power status
registers, and the sense data.

If it is not a true failure such as a fan, or power supply then you would
notice in the logs that the problem started after a shutdown, or power

"pstat -S will associate processor to process but not
process to processor. It is a matter of opinion if
this is what you want. "

Superb page on AIX:

…but I think there may be a bit of a mistake on how to do backups to
a remote tape drive… dd -should- work for that, but IME, it doesn’t.

AIX supports large pages with 32-bit and 64-bit kernels. Applications,
either 32-bit or 64-bit,
can take advantage of large pages. The extended common object file format
XCOFF64), the object file format for AIX, provides a flag to identify
binaries if they are set (or
cleared) to use large pages (or turn the large pages flag) through ldedit10.
The flag can also
be turned on at load time (ld)10 with the following commands:
ld command: ld -blpdata -o a.out
ldedit command: ldedit -blpdata a.out (or -bnolpdata a.out)

An AIX upgrade procedure:

I just went through this with my company, and wrote some directions as
to what we should do; I will share this document with you.
Some of this is specific to my company, but you may find it useful

You should do a complete configuration management scheme/snapshot of
your system:
1) execute df -Ik
2) execute lsvg, lsvg -p for each vg, and lsvg -l for each vg
3) execute lspv
4) execute bootlist -m normal -o and bootlist -m service -o
5) execute bootinfo -y and bootinfo -k
6) execute lspv -a
7) execute lsvg -M rootvg
8) execute lsconf

You want to document everything from above so that you can have this to
re-create your system should there be any mistakes or unfortunate

This just helps you to know exactly what your system looks like, before
you make any changes.

Go to this site and you will get exactly what you need:

Choose the -> AIX 5.3 link and choose follow the prompts to get you the
correct maintenance level(s).

Please let me know if this is of any help.


LeRoy S. Phillips ‘Phil’
UNIX System Administrator (AIX/SAP)

From a message on IBM-AIX-L:

I get these stupid messages all the time and I just filter them and send
them to junk.
I’ve tried making the sysdumpdev bigger, but it comes back and wants it
to be just a little bigger than I made it.
IBM does recommend that you use a second sysdumpdev.

IBM recommends:
Don’t mirror the system dump device
Don’t use compression on the dump device
Don’t use a secondary dump device unless it is on a separate device,
separate cable and separate i/o card.

sysdumpdev -l Lists current dump destination.
sysdumpdev -e Estimates dumpsize of the current system in bytes.
sysdumpdev -L Displays information about the previous dump.
sysdumpdev -c <-- the system dump device will not be compressed when the next dump is taken sysdumpdev -p (dump device) -P Sets the default dump device, permanently sysdumpdev -P -s /dev/sysdumpnull <-- makes the secondary dump device a bit bucket (recommended) sysdumpstart -p Starts a dump and writes to the primary dump device. sysdumpstart -s Starts a dump and writes to the secondary dump device. (MCA machine can also dump if key is in service position and the reset button is pressed) Analyze dump file :- echo "statn statusn t -m" | crash /var/adm/ras/vmcore.0 $ errpt IDENTIFIER TIMESTAMP T C RESOURCE_NAME DESCRIPTION F89FB899 0822150005 P O dumpcheck The copy directory is too small This message is the result of a dump device check. You can fix this by increasing the size of your dump device. If you are using the default dump device (/dev/hd6) then increase your paging size or go to smit dump and "select System Dump Compression". Myself, I don't like to use the default dump device so I create a sysdumplv and make sure I have enough space. To check space needed go to smit dump and select "Show Estimated Dump Size" this will give you an idea about the size needed. The copy directory is whatever sysdumpdev says it is. Run sysdumpdev and you will get something like #sysdumpdev primary /dev/hd6 secondary /dev/sysdumpnull copy directory /var/adm/ras forced copy flag TRUE always allow dump FALSE dump compression ON # sysdumpdev -e 0453-041 Estimated dump size in bytes: 57881395 Divide this number by 1024. This is the free space that is needed in your copy directory. Compare it to a df -k or divide this number by 512. This is the free space that is needed in your copy directory. Compare it to a df Getting patches - even for EOL'd releases?

AIX – analyze a core file

AIX – analyze a core file

/usr/lib/ras/check_core core |tail -1

dbx /usr/scrt/bin/scconfigd /core
Type ‘help’ for help.
[using memory image in /core]
reading symbolic information …warning: no source compiled with -g

Segmentation fault in verify_class_structure at 0xd055554c ($t320319)
0xd055554c (verify_class_structure+0xec) 801f0000 lwz r0,0x0(r31)

(dbx) quit