home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 January
/
usenetsourcesnewsgroupsinfomagicjanuary1994.iso
/
answers
/
aix-faq
/
part1
next >
Wrap
Internet Message Format
|
1993-11-14
|
56KB
Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!gatech!swrinde!cs.utexas.edu!mavrick!basto@cactus.org
From: basto@cactus.org (Luis Basto)
Newsgroups: comp.unix.aix,news.answers,comp.answers
Subject: AIX Frequently Asked Questions (Part 1 of 3)
Summary: This posting contains a list of Frequently Asked Questions
and their answers about AIX, IBM's version of Unix.
Keywords: AIX RS/6000 questions answers
Message-ID: <1472@mavrick.UUCP>
Date: 15 Nov 93 06:29:52 GMT
Expires: 15 Dec 93 01:23:45 GMT
Sender: luis@mavrick.UUCP
Reply-To: basto@cactus.org (Luis Basto)
Followup-To: comp.unix.aix
Lines: 1706
Approved: news-answers-request@MIT.Edu
Supersedes: <1462@mavrick.UUCP>
Xref: senator-bedfellow.mit.edu comp.unix.aix:32876 news.answers:14708 comp.answers:2651
Archive-name: aix-faq/part1
Last-modified: November 15, 1993
Version: 2.43
Version: $Id: aix.faq,v 2.43 93/11/15 basto $
Frequently Asked Questions to AIX 3.x and IBM RS/6000
_____________________________________________________
This posting contains frequently asked questions and answers about the
IBM RS/6000 series workstations and AIX version 3. All input is very
welcome, please mail to me at basto@cactus.org. You can also use
cs.utexas.edu!mavrick!luis.
The list is split into three articles to pass thru most mailers. I'll
usually try to post them once a month to comp.unix.aix, news.answers,
and comp.answers. Please let your input continue as I am most thankful
for all of it.
If you see a From: line it means that whatever follows is either an
unabridged or slightly edited version of the input I have received, and
that I may not have verified its contents. If there is no From: line, I
probably know what I am talking about, and the entry is edited from
various sources.
All entries are numbered with major and minor subject number, e.g.
2.11. If the subject is preceded by an asterisk, that entry has been
changed or added since the last posting.
The comp.unix.aix group is for AIX on all IBM platforms -- RT, PS/2,
370, RS/6000 and mainframes (ESA based on OSF/1), but the traffic has
evolved to discuss predominantly AIX 3.x and the RS/6000. The
newsgroups comp.sys.ibm.pc.rt and comp.sys.ibm.ps2.hardware cover the
RT, mostly hardware and AOS 4.3, and on PS/2 hardware respectively.
Mark Whetzel posts FAQ lists about RTs in the rt and *.answers groups.
There are few to non-existent discussions on AIX/370 and AIX/ESA.
This article covers only AIX 3.x and the RS/6000, except when noted.
If you post questions to comp.unix.aix, please be sure to indicate:
- the machine type and brief configuration, e.g. Model 540, 64 MB RAM,
48 MB swap space (this is actually bad), 1.2 GB XYZ hard drive, etc.
Note: There are now three classes of RS/6000s - the original, RS or
POWER, RS/2 or POWER2, and PowerPC.
- the exact AIX version number, i.e. AIX 3.1 is NOT sufficient, whereas
AIX 3.1.5 or AIX 3.1 with the 3005 update is. With 3.2 you should
mention any significant ptfs using the U4xxxxx numbers.
I am doing this on my own time. Please do not ask me questions that
should be asked to IBM. If you suspect you have software defect problems
call (800) 237-5511. If you have hardware problems call (800) IBM-SERV.
______________________________________________________________________________
Table of contents:
1.0 General concepts
1.000 The AIX operating system - what is it?
1.000 I know neither Unix nor AIX - where do I find more information?
1.002* What is the Object Database?
1.003 How do I get rid of the verbose error messages?
1.004* Which release of AIX do I have?
1.1 SMIT, system administration, file systems
1.100 I am used to Unix systems programming, why should I learn SMIT?
1.101 How do I turn off the "running man" in smit?
1.102 How do I import an /etc/passwd or /etc/group file from another box?
1.103 Cleaning up utmp, who, and accounting problems
1.104 How to fsck the root filesystem
1.105 How can I unmount /usr to run fsck on it?
1.106 How do I shrink /usr?
1.107 How do I make a filesystem larger than 2 Gig?
1.108 How do I see/change system parameters like number of processes per user?
1.109 How do I shrink the default paging space on hd6?
1.110 The swapper seems to use enormous amounts of paging space, why?
1.111 How much paging space do I need?
1.112 How do I mount a floppy disk as a filesystem?
1.113 How do I remove a committed lpp?
1.114 How can I recover space after installing updates?
1.115 Where are the AIX log files kept?
1.116 How can I log information about ftp accesses to a file?
1.117 How do I find a file name from the inode number?
1.118 How do I set up postscript accounting?
1.119 How do I create boot diskettes for 3.2?
1.120 Where can I find tools for performance monitoring?
1.121 How can I tell what virtual printer a print queue is using?
1.122 Two srcmstr's are less useful than one?
1.123 How do I set the tty name associated with a physical port?
1.124 How do I use mksysb to clone a system?
1.125 How do I retain timestamps with mksysb?
1.126 How can I find out the machine type?
1.127* Updating to 3.2.5
1.128* AIX fix strategy
1.129* Are passwords limited to 8 char?
1.130* How do I increase the number of ptys > 64?
1.2 Backups, tape
1.200 Some info about tape backups
1.201 How do I do remote backup?
1.202 How do I backup a multi-disk volume group?
1.203 How do I put multiple backups on a single 8mm tape?
1.204 How can I make an exact duplicate of a tape over the network?
1.205* What is tape block size of 0?
1.206* Resetting a hung tape drive
1.3 Memory and process management
1.300 Some info about the memory management system
1.301 How much should I trust the ps memory reports?
1.4 Shells, commands, man pages, InfoExplorer
1.400 How do I make an informative prompt in the shell?
1.401 How do I set up ksh for emacs mode command line editing?
1.402 Listing files with ls causes a core dump
1.403 How do I put my own text into InfoExplorer?
1.404 InfoExplorer ASCII key bindings
1.405 How can I add new man pages to the system?
1.5 Video, Graphics, X11
1.500 Which release of X11 do I have?
1.501 How to prevent ctrl-alt-backspace from killing the X session
1.502 Who has a termcap/terminfo source for aixterm or the HFT console?
1.503 How can I look at PostScript files? Why is "dpsexec" so lousy?
1.504 unix:0 vs `hostname`:0
1.505 VT100 key bindings for aixterm
1.6 Networks and communications
1.600 My named dies frequently, why?
1.601* How do I trace ethernet packets on an AIX system?
1.602 What is the authorized way of starting automount at boot time?
1.603 How do I set a tty port for both dial-in and dial-out?
1.604 How to move or copy whole directory trees across a network
1.605 How can I send mail to hosts that cannot be pinged?
1.606 How to setup dialup SLIP
1.607* Where is DCE discussed?
1.608* How do I make /var/spool/mail mountable?
1.7
1.8
1.9 Miscellaneous
1.900 SCSI-1 and SCSI-2 "interoperability" got you confused?
1.901 How to get your keyboard back after unplugging it from the 6000
1.902 How do I set up pcsim, the DOS emulator?
1.903 How do I transfer files between AIX and DOS disks?
2.00 C/C++
2.01 I cannot make alloca work
2.02 How do I compile my BSD programs?
2.03 Isn't the linker different from what I am used to?
2.04 How do I link my program with a non-shared /lib/libc.a?
2.05 How do I make my own shared library?
2.06 Linking my program fails with strange error, why?
2.07 What's with malloc()?
2.08 Why does xlc complain about 'extern char *strcpy()'
2.09 Why do I get 'Parameter list cannot contain fewer ....'
2.10 Why does xlc complain about '(sometype *)somepointer = something'
2.11 Some more common errors
2.12 Can the compiler generate assembler code?
2.13* Curses
2.14 How do I speed up linking?
2.15 What is deadbeef?
2.16 How do I statically link in 3.2?
3.00 Fortran and other compilers
3.01 I have problems mixing Fortran and C code, why?
3.02 How do I statically bind Fortran libraries and dynamically bind
C libraries?
3.03 How do I check if a number is NaN?
3.04 Some info sources on IEEE floating point
4.00 GNU and Public Domain software
4.01 How do I find PD software?
4.02 Are there any ftp sites?
4.03 General hints
4.04 GNU Emacs
4.05 gcc/gdb
4.06 GNU Ghostscript
4.07 TeX
4.08 Perl
4.09 X-Windows
4.10 bash
4.11 Elm
4.12 Oberon 2.2
4.13 Kermit
4.14 Gnu dbm
4.15 tcsh
4.16 Kyoto Common Lisp
4.17 Tcl/Tk
4.18 Expect
4.19 Public domain software on CD
4.20 Andrew Toolkit
4.21* sudo
4.22* Flexfax and other fax software
5.00 Third party products
5.01 IBM List of third party products
5.02* Disk/Tape/SCSI
5.03 Memory
5.04 Others
5.05 C++ compilers
5.06* Memory leak detectors
5.07* PPP
6.00 Miscellaneous other stuff
6.01 Can I get support by e-mail?
6.02 List of useful faxes
6.03 List of 3.2 ptfs
6.04 Some RS232 hints
6.05 What publications are available for AIX and RS/6000?
6.06 Some acronyms
6.07 How do I get this by mailserver or ftp?
6.08 Hypertext version of the FAQ
6.09 Where can I send suggestions for tools?
7.00 Contributors
______________________________________________________________________________
1.000: The AIX operating system - what is it?
This is best answered by reading the text files in /usr/lpp/bos. The
README file there contains general information and the BSD files contain
useful information if you know BSD and/or System V.
The last release for the RT PC is 2.2.1. The latest release for PS/2s
and Intel architecture machines is AIX 1.3; for PS/2s only, 1.2.1. For
the RS/6000, there are two major levels, 3.1 and 3.2, and various
intermediate levels.
1.001: I know neither Unix nor AIX - where do I find more information?
Quite a number of questions posted to comp.unix.aix show that AIX is
people's first experience with Unix. If this is the case with you, you
are advised to look at the other newsgroups in the comp.unix hierarchy,
in particular comp.unix.questions (for basic questions) or
comp.unix.wizards (for difficult questions). These two groups have a
common FAQ posting as well.
If you need information about C programming, try comp.lang.c or comp.std.c,
the latter for Standard ANSI C issues. comp.lang.c has a FAQ posting.
1.002: What is the Object Database?
From: Uwe Geuder <Uwe.Geuder@informatik.uni-stuttgart.de>
AIX stores most of the system management information in /etc/objrepos,
/usr/lib/objrepos, and /usr/share/lib/objrepos. Files (also referred to
as system object classes) in these directories are adminstered by the
Object Database Manager, ODM, which is a set of library routines and
programs providing basic object oriented database facilities.
Under most circumstances, only SMIT or the commands SMIT call (see
1.100) should be used to change the contents of the system object
classes. A harmless way to look at the object database is to use odmget
<Class> where <Class> is one of the files in /etc/objrepos.
Experienced users can use the ODM editor, odme, to navigate the database
in detail. Modifying the database should only be attempted if you know
exactly what you are doing.
1.003: How do I get rid of the verbose error messages?
Many of the messages from the Unix commands are available in different
languages. This is controlled by the LANG environment variable, the
default being En_US meaning English in the US. All the default messages
have a message number associated with them, e.g.:
$ cat no-such-file
cat: 0652-050 Cannot open no-such-file.
If you prefer the terser Unix-looking error message, set your
environment LANG to C, and you will get:
$ cat no-such-file
cat: Cannot open no-such-file.
1.004: Which release of AIX or other products do I have?
The command 'lslpp -h bos.obj' will show all lines referring to the BOS,
Basic Operating System. E.g.:
Option Name State Event Date Release User Name
-------------------- ---------- ---------- --------- --------------- ---------
bos.obj INACTIVE COMMIT 02/03/90 03.01.0000.0000 root
INACTIVE APPLY 06/25/90 03.01.0000.0001 root
INACTIVE COMMIT 06/25/90 03.01.0000.0001 root
INACTIVE APPLY 11/16/90 03.01.0002.0015 root
INACTIVE COMMIT 11/16/90 03.01.0002.0015 root
ACTIVE COMMIT 05/07/91 03.01.0005.0012 root
gives the history for the BOS lpp. The last line, column four, indicates
that this is release 3.1.5.
To see a listing of everything installed use lslpp -l '*', then use
lslpp with the -h option as above to get a history of a particular lpp.
3.1.5 is considered the "base" release for users running 3.1. You
should be at least at this level. If you request a ptf update you will
get 201x. If you are at some level earlier than 3.1.5, you must first
apply 3.1.5, then 201x. Customers using SNA should request the SNA
Quality Refresh update. Support for 3.1 will end on December 31, 1993.
For AIX 3.2, it's a completely different scheme. You may come across
discussions on 3.2.0, 3.2.1, 3.2.2, or 3.2.3 extended. There is no
absolute way to tell which of these you are running since the newer
releases are simply 3.2.0 with some sets of PTFs added. These selective
fixes could mean there are literally thousands of slightly different
variations of 3.2 in use. Please see section 6 to request some useful
faxes to help with this number game.
AIX 3.2.4 and later resolve this confusion. The OS is broken down into
subsystems so that updates can be applied to an entire subsystem. lslpp
also sports a new option; use 'lslpp -m bos.obj' to show what level and
update the system is running. You can also use the new oslevel command.
Unless you have a pressing need (such as applications unsupported on >
3.2.3), it is recommended that you update to this level. Also see 1.128.
______________________________________________________________________________
1.100: I am used to Unix systems programming, why should I learn SMIT?
Using SMIT is probably very different from your normal way of doing
system administration, but could prove very useful in the long run. In
some areas, in particular TCP/IP, NFS, etc., you can also do things the
normal way, but it is unfortunately difficult to know exactly when the
normal way works. Again, always using SMIT is probably your best way
to go, even when you have to learn a new tool.
What SMIT actually does is build up commands with all required options
to perform the functions requested and execute them. The commands
called and the output they produce are stored in the files smit.script
and smit.log in your home directory. Looking in smit.script may teach
you more about system administration.
1.101: How do I turn off the "running man" in smit?
Use smitty, the standard curses version or add this line to your .kshrc file:
alias smit="smit -C"
1.102: How do I import an /etc/passwd or /etc/group file from another box?
Make sure that you run usrck, pwdck (/etc/passwd), and grpck
(/etc/group) to let AIX work its password/group magic.
1.103: Cleaning up utmp, who, and accounting problems
From: fritz@scipp.UCSC.EDU (Frederick Staats)
This applies if you are running an X11R5 xterm on 3.2.
Add this to the top of X11R5 mit/clients/xterm/main.c:
#ifdef AIXV3
#define USE_SYSV_UTMP
#define HAS_UTMP_UT_HOST
#define WTMP_FILENAME "/var/adm/wtmp"
#endif
And your utmp problems should go away. If you want xterminal sessions
to go into the wtmp file you need to define -DWTMP in the Imakefile and
be sure the WTMP_FILENAME is set to the right place.
The following program by jfh@rpp386.cactus.org (John F. Haugh)
if run in the background by root will clean up the utmp file.
#include <sys/types.h>
#include <utmp.h>
#include <fcntl.h>
main ()
{
int fd;
struct utmp utmp;
while (1) {
if ((fd = open ("/etc/utmp", O_RDWR)) < 0)
exit (1);
while (read (fd, &utmp, sizeof utmp) == sizeof utmp) {
if (utmp.ut_type == USER_PROCESS &&
kill (utmp.ut_pid, 0) != 0) {
lseek (fd, - (long) sizeof utmp, 1);
utmp.ut_type = DEAD_PROCESS;
write (fd, &utmp, sizeof utmp);
}
}
close (fd);
sleep (60);
}
}
Another utmp program was posted to comp.sources.unix, volume 25, issue
96 by David W. Sanderson (dws@cs.wisc.edu) that also works on AIX 3.1.
1.104: How to fsck the root filesystem
You can run fsck either in maintenance mode or on mounted filesystems.
To enter maintenance mode to run fsck on the root filesystem:
1. boot from diskette
2. select maintenance mode
3. type /etc/continue hdisk0 exit (replace hdisk0 with boot disk if
not hdisk0)
4. fsck /dev/hd4
1.105: How can I unmount /usr to run fsck on it?
From: accapadi@mathew.austin.ibm.com (Matt Accapadi)
[ This is for 3.2. ]
In order to fsck /usr, it has to be unmounted. But /usr cannot be
unmounted because /bin is symbolically linked to /usr/bin. Also
/etc/fsck is symbolically linked to /usr/sbin/fsck.
To work around this, when you boot from the boot/maintenance diskettes
and enter maintenance mode, enter "getrootfs hdisk0 sh" instead of
"getrootfs hdisk0" where hdisk0 is the name of the boot disk. Then run
"fsck /dev/hd2".
1.106: How do I shrink /usr?
From: mike@bria.UUCP (Michael Stefanik) and Richard Hasting
FOR AIX 3.1
-----------
1) Make a backup of /usr
find /usr -print | backup -ivf /dev/rmt0 (or appropriate device)
2) shutdown to maintenance mode
shutdown -Fm
3) export LANG=C
4) remove the filesystem and the logical volume
ignore an error about the "dspmsg" command not found
umount /usr
rmfs /usr
5) make a new logical volume hd2 and place it on rootvg with desired size
mklv -yhd2 -a'e' rootvg NNN
where NNN is the number of 4 meg partitions
6) create a filesystem on /dev/hd2
crfs -vjfs -dhd2 -m'/usr' -Ayes -p'rw'
7) mount the new /usr filesystem and check it
/etc/mount /usr
df -v
8) restore from the tape; system won't reboot otherwise
restore -xvf/dev/rmt0
9) Sync and reboot the system; you now have a smaller /usr filesystem
FOR AIX 3.2
-----------
1) Remove any unneeded files from /usr.
2) Make sure all filesystems in the root volume group are mounted. If
not, they will not be included in the re-installed system.
3) Type mkszfile. This will create /.fs.size that contains a list of
the active filesystems in the root volume group that will be
included in the installation procedure.
4) Edit .fs.size. Change the size of /usr to what you want.
Example: This .fs.size file shows /usr to be 40MB.
rootvg 4 hd2 /usr 10 40 jfs
The number 10 is the number of physical partitions for the filesystem
and the 40 is 40 MB. Most systems have a physical partition size of
4 MB. Therefore, the second number (40) will always be 4 times the
previous number (10). Note, however, that a model 320 with a 120 MB
drive will have a physical partition size of only 2 MB, and the
total MB is twice the number of physical partitions. The first
number (4) in the .fs.size file represents the PP size.
If you want to reduce the size of /usr from 40 MB to 32 MB, edit the
/usr entry to:
rootvg 4 hd2 /usr 8 32 jfs
IMPORTANT: Make sure that you DO NOT enter a value which is less
than the size of the filesystem required to contain the current
data. Doing so will cause the re-installation procedure to fail.
5) chdev -l rmt0 -a block=512 -T
6) Unmount all filesystems that are NOT in the root volume group.
7) Varyoff all user-defined volume groups, if any
varyoffvg VGname
8) Export the user-defined volume groups, if any
exportvg VGname
9) With a tape in the tape drive, type
mksysb /dev/rmt0
This will do a complete system backup, which will include
information (in the .fs.size file) for the installation procedure
on how large the filesystems are to be created.
10) Follow the instructions in the Installation Kit under "How to
Install and perform maintenance from Diskettes" using the
diskettes and tape that you created in the previous steps.
DO NOT select the option "Reinstall AIX with Current System
Settings". Instead use "Install AIX with Current System Settings"
for the logical volume size changes to take affect.
11) When the installation is complete, you may then import the
information into your newly installed operating system for any
user-defined volume groups.
importvg -y VGname PVname
where "VGname" is the name of the volume group, and "PVname" is
the name of any one of the physical volumes in the volume group.
12) Varyon your user-defined volume groups
varyonvg VGname
The reduction of the filesystems is now complete.
1.107: How do I make a filesystem larger than 2 Gig?
The largest filesystem under AIX is 2 Gigabytes because the largest
signed integer is 2**31 - 1.
1.108: How do I see/change system parameters like number of processes
per user?
You can use SMIT as described below or simply use the lsattr/chdev pair.
The former will list the current setting as in:
# lsattr -E -l sys0 -a maxuproc
maxuproc 40 Maximum # of processes allowed per user True
and you can then increase the maxuproc parameter:
# chdev -l sys0 -a maxuproc=200
sys0 changed
If you just type 'lsattr -E -l sys0' you will get a list of all
parameters, some of which can be changed but not others.
If you want to use smit, this procedure can be followed:
smit
System Environments and Processes
Change / Show Operating System Parameters
- on this screen you can change by overtyping the following fields:
- Maximum number of PROCESSES allowed per user
- Maximum number of pages in block I/O BUFFER CACHE
- Maximum Kbytes of real memory allowed for MBUFS
- toggle fields exist for:
- Automatically REBOOT system after a crash (false/true)
- Continuously maintain DISK I/O history (true/false)
1.109: How do I shrink the default paging space on hd6?
1) create a paging space to use temporarily
mkps -s 20 -a rootvg
2) change default paging space hd6 so it is not used at next reboot
chps -a n hd6
3) For AIX 3.1, edit /etc/rc.boot4 and change swapon /dev/hd6;
for AIX 3.2, edit /sbin/rc.boot and change swapon /dev/hd6
swapon /dev/paging00
4) Update information in boot logical volume
bosboot -a (3.1)
bosboot -a -d hdisk0 (3.2)
5) shutdown and reboot
6) remove current hd6 and create a new one of smaller size
rmps hd6
mklv -y hd6 -t paging rootvg <size of PS in 4 Meg blocks>
7) Re-edit /etc/rc.boot4 (3.1), /sbin/rc.boot (3.2) to swap to /dev/hd6
swapon /dev/hd6
8) Update information in boot logical volume
bosboot -a (3.1)
bosboot -a -d hdisk0 (3.2)
9) change current paging device (paging00) so it is inactive at next boot
chps -a n /dev/paging00
10) shutdown, reboot, remove paging00 using the command:
rmps paging00
1.110: The swapper seems to use enormous amounts of paging space, why?
When you run ps, you may see a line like:
USER PID %CPU %MEM SZ RSS TT STAT TIME CMD
root 0 0.0% 14% 386528 8688 - S 17:06 swapper
This is normal behavior, the swapper looks to ps like it has the entire
paging space plus real memory allocated.
1.111: How much paging space do I need?
See answer 2 in question 1.300.
1.112: How do I mount a floppy disk as a filesystem?
From: op@holmes.acc.Virginia.EDU (Olaf Pors)
You can build a filesystem on a floppy and mount it, however the
filesystem will be read only. The reason that the filesystem will be
read only is because AIX Version 3.1.5 cannot create a journal log on a
diskette. The intended use is for temporary access to read only data.
The diskette file system must be unmounted after use and during system
backup procedures or errors could occur.
To make the read only filesystem on a floppy:
1. Make a subdirectory on an existing filesystem and place all of the
files that the diskette will contain into this subdirectory.
2. Enter the following command to create a prototype file containing
information about the new filesystem, in the example /dir_struct
is the pathname of the subdirectory created in step 1, and
proto_filename is the name of the prototype file to be created.
proto /dir_struct > proto_filename
3. Place a formatted floppy into the drive.
4. Edit the prototype file and replace the first line with the following:
<noboot> 0 0
5. Enter the following command to make the filesystem on your floppy:
mkfs -p proto_filename -V jfs /dev/fd0
6. Create the directory upon which you will mount the floppy based
filesystem, or you can use /mnt. Mount the filesystem:
mount -r -V jfs /dev/fd0 /your_mount_point
7. To unmount the filesystem:
umount /dev/fd0
Since the filesystem is read-only it may be of limited use but if you
are going to use it for utility programs and other data that does not
change much, it may still be useful. If you need to change the data,
you can copy the directory from the floppy into another directory, make
your modifications, and remake the filesystem using this procedure.
1.113: How do I remove a committed lpp?
From: drb@chmeds.ac.nz (Ross Boswell)
This seems to be a common problem. The following script for 3.2 only is
from IBM NZ AIX software support. As far as I know, it works -- I used
it to remove unwanted fonts. I have no official permission to post it
-- use it at your own risk!
#!/bin/ksh
#
# Permanently remove a product from disk and AIX databases
#
if [ `whoami` != "root" ] ; then
echo You must be root to run this script.
exit 1
fi
if [ `uname -a | awk '{print $1$4$3}'` != "AIX32" ] ; then
echo This script only works on AIX 3.2.
exit 1
fi
TMP_FREE=`df /tmp | awk '$3 ~ /[0-9]/{print $3}'`
if [ "$TMP_FREE" -lt 1000 ] ; then
echo There is not enough room in your /tmp directory.
echo You need 1000 KB free, and you have only $TMP_FREE KB free.
echo Either remove some stuff from /tmp, or use chfs to make it bigger.
exit 1
fi
ODMDIRS="/etc/objrepos /usr/lib/objrepos /usr/share/lib/objrepos"
ODMDIR=/usr/lib/objrepos
export ODMDIR
if [ $# -lt 1 ]
then
echo usage: $0 lppname [lppname ...]
echo lppname is a string compatible with grep, ie "X11" or "PHIGS"
echo typing $0 PHIGS will remove all LPPs with PHIGS in their name.
exit 1
fi
NAMES=$1
shift
while [ $# -gt 0 ] ; do
NAMES="$NAMES|$1"
shift
done
echo "Searching for lpps with egrep \"$NAMES\"...\c"
for ODMDIR in $ODMDIRS ; do
if [ ! -d $ODMDIR -o ! -w $ODMDIR ] ; then
echo $ODMDIR is not writeable or is not a directory.
echo I hope this is because you are a /usr client or diskless.
echo If you are not a diskless or a /usr client, you should stop.
echo "Enter y to continue ->\c"
read answer
if [ "$answer" != "y" ] ; then
exit 0
fi
fi
TMP=`odmget lpp | awk -F\" '/name/ {print $2}' | egrep "$NAMES"`
LPPS=`echo $LPPS $TMP`
done
if [ "$LPPS" = "" ]
then
echo "failed.\nNo LPP with the name $NAMES detected."
exit 1
fi
echo ok.
for ODMDIR in $ODMDIRS ; do
mkdir -p /tmp/rmlpp/$ODMDIR > /dev/null 2>&1
done
> /tmp/listOfFilesToRM$$ # truncate temporary file, just in case.
echo
echo This script is about to attempt to remove an LPP from your system.
echo I say attempt, because it could fail. If it fails, you may have
echo to at least reload the LPP. Use the \"lppchk\" command to make sure
echo all is well with your system.
echo
# Loop through all the LPP names found.
for LPP in $LPPS
do
DESCR=none
answer=""
# find the LPP ids. They will be different in the three SWVPD databases.
for ODMDIR in $ODMDIRS ; do
# get the lpp id for this ODMDIR (yes, they are different)
LPPID=`odmget -q name=$LPP lpp | grep lpp_id | sed 's/.* = //'`
# did we find the LPP?
if [ "$DESCR" = "none" -a "$LPPID" != "" ] ; then
# all the descriptions should be the same
DESCR=`odmget -q name=$LPP lpp | grep description | sed 's/.* = //'`
echo "Delete $LPP, $DESCR?"
echo "y or (n) ->\c"
read answer
if [ "$answer" != "y" ] ; then # jump back up to the next LPP name
continue 2
fi
fi
# if there is no DESCR, then we didn't find the LPP. Weird.
if [ "$DESCR" = "none" -o "$LPPID" = "" ] ; then
continue
fi
SOMETHING_DONE_FLAG=true
# Optionally, save the ODM stuff we are about to remove,
# in case something goes wrong. The problem is it is difficult
# to determine if something really did fail, since these commands
# don't return any decent error return codes.
odmget -q lpp_id=$LPPID history > /tmp/rmlpp/$ODMDIR/$LPP.history
odmget -q name=$LPP lpp > /tmp/rmlpp/$ODMDIR/$LPP.lpp
odmget -q lpp_name=$LPP product > /tmp/rmlpp/$ODMDIR/$LPP.product
# Get the list of files and links to remove later....
odmget -q lpp_id=$LPPID inventory > /tmp/rmlpp/$ODMDIR/$LPP.inventory
awk -F\" '/loc/ {print $2}' /tmp/rmlpp/$ODMDIR/$LPP.inventory | \
sed 's/,/ /g' >> /tmp/listOfFilesToRM$$
odmdelete -o history -q lpp_id=$LPPID > /dev/null 2>&1
odmdelete -o lpp -q name=$LPP > /dev/null 2>&1
odmdelete -o product -q lpp_name=$LPP > /dev/null 2>&1
odmdelete -o inventory -q lpp_id=$LPPID > /dev/null 2>&1
done
done
if [ "$SOMETHING_DONE_FLAG" = "true" ] ; then
echo ODM work is done. Now, time to delete files....
# This could be catastrophic if there is a problem. For example,
# if the ODM database for an application had / as one of its files.
# You be the judge. Here's your rope....
cat /tmp/listOfFilesToRM$$ | sort -r | uniq | xargs rm -rf
rm -rf /tmp/listOfFilesToRM$$
echo done.
fi
# take this line out if you want to save your ODM saved files.
rm -rf /tmp/rmlpp
exit 0
1.114: How can I recover space after installing updates?
From: Milt Cloud <cloud@ux1.cso.uiuc.edu>
Note: If you are a /usr server, do not use this because the files
mentioned below are needed by /usr clients and cannot be deleted.
Installp creates numerous files in /usr to clean up after
failed/rejected installs and also for de-installing uncommitted lpps.
Once you have COMMITted packages you can remove these files safely.
Depending on your installation activity the numbers can be significant
here: hundreds-to-thousands of files, megabytes of data.
Files eligible for removal are associated with each "product" you have
installed; the largest collection being due to bos. After
COMMITting bos lpps, you may safely remove all files of the form:
/usr/lpp/bos/deinstl*
/usr/lpp/bos/inst_U4*
/usr/lpp/bosadt/deinstl*
and /usr/lpp/bosadt/inst_U4*
You may repeat this for all additional COMMITted products (e.g.,
bostext1, bosnet, xlc) you have on your system.
This problem of lingering install files is a known defect in installp.
If you have installed PTF U411711 (or any superceder of it: U412397,
U413366, U413425) the deadwood in /usr will not be quite as prevalent.
No single PTF currently available completely corrects this problem.
On my own 320, the following freed up 12.4M in /usr:
# rm -R /usr/lpp/bos/deinstl*
# rm -R /usr/lpp/bos/inst_U4*
1.115: Where are the AIX log files kept?
From: dirk@kimosabi.ucsc.edu (Dirk Coldewey)
Such as the equivalent of the SunOS file '/var/log/syslog' and
'/var/adm/messages'.
If you want regular unix syslog files, you can configure syslogd
in /etc/syslog.conf. Here's the one that I use:
#
# See the supplied /etc/syslog.conf file for copious comments.
#
*.err;kern.debug;auth.notice;user.none /dev/console
*.err;kern.debug;daemon,auth.notice;mail.crit;user.none /var/adm/messages
lpr.debug /var/adm/lpd-errs
*.alert;kern.err;daemon.err;user.none operator
*.alert;user.none root
*.emerg;user.none *
# for loghost machines, to have authentication messages (su, login, etc.)
# logged to a file, un-comment out the following line and adjust the
# file name as appropriate.
#
# if a non-loghost machine chooses to have such messages
# sent to the loghost machine, un-comment out the following line.
#
auth.notice /var/log/authlog
mail.debug /var/log/syslog
# following line for compatibility with old sendmails. they will send
# messages with no facility code, which will be turned into "user" messages
# by the local syslog daemon. only the "loghost" machine needs the following
# line, to cause these old sendmail log messages to be logged in the
# mail syslog file.
#
user.alert /var/log/syslog
#
# non-loghost machines will use the following lines to cause "user"
# log messages to be logged locally.
#
user.err /dev/console
user.err /var/adm/messages
user.alert `root, operator'
user.emerg *
1.116: How can I log information about ftp accesses to a file?
From: elr@trintex.uucp (Ed Ravin) and
map@hal.maths.monash.edu.au (Michael Page)
1) In /etc/syslog.conf, add the line:
daemon.debug /tmp/daemon.log
2) # touch /tmp/daemon.log
# refresh -s syslogd
3) Modify your inetd.conf so that ftpd is called with the "-l" flag.
You may also want the "-d" flag. This can be done with 'smit inetdconf'.
All the syslog messages from various system daemons should now appear in
the file "/tmp/daemon.log".
1.117: How do I find a file name from the inode number?
From: svpillay@berlioz.crs4.it (Kanthan Pillay)
find /mntpoint -xdev -inum nnnn -print
1.118: How do I set up postscript accounting?
From: taluskie@utpapa.ph.utexas.edu (Vince Taluskie)
The following program to configure postscript page accounting was
originally written by Ephraim Vider. It acts as a backend wrapper which
logs accounting information in /etc/qconfig. It can be ftp'd from
utpapa.ph.utexas.edu in /pub/aix/psacct.tar.Z.
To get this program running compile it with
cc pswrap.c -o pswrap -lqb
and then make this program suid root with
chown root pswrap
chmod u+s pswrap
If this step is not done, the printer will hang.
Then start up SMIT and go to :
Spooler
Manage Local Printer Subsystem
Local Printer Queue Devices
Change / Show Characteristics of a Queue Device
<Select Queue>
<Select Device>
and change "BACKEND PROGRAM pathname" to the full pathname of pswrap
since pswrap will now handle the backend interface with the queue.
A stream of info will be written to a logfile in /tmp (prob lp0.log) but
this file is mainly used for status info and raw pagecounts. If the
accounting data is going to the qconfig-specified acctfile, then use the
'pac' command to read it. I prefer to have readable ascii data files
instead, so I just comment out the '#define WANT_PAC' line and it will
only go to the ACCTFILE specfied in pswrap.c.
/* pswrap.c
compile with: cc pswrap.c -o pswrap -lqb
(for doc on the qb library see "understanding backend routines in libqb")
BTW: The log_charge() function doesn't seem to do anything,
but log_pages() updates the accounting info.
Ephraim Vider, original author
--
Feb 10, 1993
You can set pswrap up to use either the accounting file specified in
/etc/qconfig (which means that you need to get your data from 'pac') or
you can comment out the #define WANT_PAC line and then the accounting
data will only go into the ACCTFILE.
Also modified the logging to the ASCII acctfile so that it looks more
readable.
Vince Taluskie
*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <fcntl.h>
#include <signal.h>
#include <setjmp.h>
#include <sys/wait.h>
#include <IN/backend.h>
#include <IN/standard.h>
#include "qprocs.h"
char *nextword (char *p);
char *skipvalue (char *p);
#define LOGDIR "/tmp"
#define ACCTFILE "/usr/adm/acct/lpr/ps-acct"
/* #define WANT_PAC 1 */ /* this define will also send accounting
info to the acctfile specified in
/etc/qconfig file. If this define is
commented out then accounting info will
only go to ACCTFILE */
char pcprog[] = "statusdict begin pagecount = end\n\x04";
char *keyw[] = {
"idle",
"busy",
"waiting",
"printing",
"initializing",
NULL
};
enum { PS_IDLE, PS_BUSY, PS_WAIT, PS_PRINT, PS_INIT, PS_UNKNOWN };
void giveup();
jmp_buf jumper;
char logfname[30];
FILE *logfile, *acctfile;
main (argc, argv)
int argc;
char *argv[];
{
char *devname;
int pagcnt, c;
int pid;
int w, status;
if (argc < 2) {
fprintf(stderr, "Usage: psbe file\n");
exit(-1);
}
if (log_init(argv[1]) < 0) {
fprintf(stderr, "log_init failed!\n");
exit(EXITBAD);
}
sprintf(logfname, "%s/%s.log", LOGDIR, get_device_name());
if ((logfile = fopen(logfname, "a")) == NULL) {
fprintf(stderr, "Can't open logfile.\n");
exit(EXITBAD);
}
if ((acctfile = fopen(ACCTFILE, "a")) == NULL) {
fprintf(stderr, "Can't open logfile.\n");
exit(EXITBAD);
}
setvbuf(logfile, NULL, _IOLBF, BUFSIZ);
setvbuf(acctfile, NULL, _IOLBF, BUFSIZ);
setvbuf(stdin, NULL, _IONBF, 0);
setvbuf(stdout, NULL, _IONBF, 0);
fprintf(logfile, "start Job no. %d, queued on %s\n", get_job_number(),
get_qdate());
log_status(WAITING);
pagcnt = getpagecnt();
log_status(RUNNING);
if ((pid = fork()) < 0) {
perror("fork");
exit(EXITBAD);
}
if (pid == 0) {
argv[0] = "piobe";
execv("/usr/lpd/piobe", argv);
perror("exec");
exit(EXITBAD);
}
while ((w = wait(&status)) != pid)
if (w == -1) {
perror("wait");
exit(EXITBAD);
}
if (WEXITSTATUS(status) != 0)
exit(WEXITSTATUS(status));
log_status(WAITING);
if (pagcnt > 0 && (c = getpagecnt()) > 0) {
#ifdef WANT_PAC
log_pages(c - pagcnt);
#endif
}
fprintf(logfile, "end Job no. %d, queued on %s\n", get_job_number(),
get_qdate());
/* the accounting file format is
pages_printed user queue_printed_on time_queued
*/
fprintf(acctfile, "%d %35s %7s %s \n", (c - pagcnt), get_from(), get_queue_name(), get_qdate());
fclose(logfile);
fclose(acctfile);
exit(EXITOK);
}
void giveup ()
{
longjmp(jumper, 1);
}
getpagecnt ()
{
int pc = 0, pstat;
char buf[81];
if (setjmp(jumper) != 0) {
fprintf(logfile, "giving up on status\n");
return (0);
}
alarm(60 * 2);
signal(SIGALRM, giveup);
do {
if (!gets(buf)) {
sleep(5);
putchar('\x14'); /* ^T returns status */
sleep(1); /* wait for answer from printer */
if (!gets(buf))
return (0);
}
fprintf(logfile, "%s\n", buf);
if ((pstat = getstatus(buf)) == PS_WAIT) {
putchar('\x04');
sleep(1);
}
} while (pstat != PS_IDLE);
alarm(0);
while (gets(buf))
fprintf(logfile, "%s\n", buf);
printf("%s", pcprog);
sleep(1); /* wait for answer from printer */
if (!gets(buf))
return (0);
if (sscanf(buf, "%d", &pc) != 1)
return (0);
fprintf(logfile, "%d\n", pc);
return (pc);
}
/*
* Parser for printer status messages
*/
getstatus (p)
char *p;
{
char *t;
int i;
if ((p = strchr(p, '%')) == NULL)
return (PS_UNKNOWN);
if (strncmp(p, "%%[", 3) != 0)
return (PS_UNKNOWN);
for (p = nextword(p + 3) ; p != NULL ; p = skipvalue(p)) {
t = p;
p = strchr(p, ':');
*p++ = '\0';
p = nextword(p);
if (strcmp(t, "status") == 0)
break;
}
if (p == NULL)
return (PS_UNKNOWN);
t = p;
p = strchr(p, ' ');
if (p[-1] == ';')
p--;
*p = '\0';
for (i = 0 ; keyw[i] != NULL ; i++)
if (strcmp(t, keyw[i]) == 0)
break;
return (i);
}
char *nextword (p)
char *p;
{
while (isspace(*p))
p++;
if (strncmp(p, "]%%", 3) == 0)
return (NULL);
return (p);
}
char *skipvalue (p)
char *p;
{
char *t;
while (p != NULL) {
p = strchr(p, ' ');
t = p;
p = nextword(p);
if (t[-1] == ';')
break;
}
return (p);
}
/********* qprocs.h ***********/
/* functions for communication between qdaemon and the backend */
char *get_from();
char *get_to();
char *get_qdate();
char *get_queue_name();
char *get_device_name();
char *get_title();
1.119: How do I create boot diskettes for 3.2?
You need to have four formatted diskettes.
boot disk: bosboot -d /dev/fd0 -a
display disk: mkdispdskt
display extension disk: mkextdskt
Install/Maintenance disk: mkinstdskt
1.120: Where can I find tools for performance monitoring?
For 3.2 a few tools are available in /usr/lpp/bosperf. There are tools
to monitor traces, I/O events, CPU, virtual memory, disk block usage,
kernel extensions, etc. It even has a simulator, rmss, that allows one
to try out different memory size configurations to see how it impacts
performance. See 6.05 for the AIX Performance and Tuning Guide.
1.121: How can I tell what virtual printer a print queue is using?
From: yoder@austin.ibm.com (Stuart R. Yoder)
Use the command 'lsvirprt'. Don't use any parameters and it will
run in an interactive mode that will give you a menu of all virtual
printers on the system with the queue and device for each one.
1.122: Two srcmstr's are less useful than one?
From: hubert@rs530.ncs.mainz.ibm.com (Bernhard Zeller)
This can happen on systems that have no console, or systems with an
async terminal as the console but not attached or turned off. One of the
symptoms is a second srcmstr got run. But the second srcmstr is worthless
as we can't use the stop/startsrc commands, refresh inetd, qdaemon won't
start, etc.
To resolve this, type:
smit chgtty
and add the keyword 'clocal' in following lines:
STTY attributes for RUN TIME
STTY attributes for LOGIN
1.123: How do I set the tty name associated with a physical port?
From: accapadi@mathew.austin.ibm.com (Matt Accapadi)
Let's say you wanted to make a tty on the s1 port and call it rs0000
and a tty on the s2 port and call it rs0001.
You could run:
mkdev -c tty -s rs232 -t tty -l rs0000 -p sa0 -w s1 # creates rs0000
and
mkdev -c tty -s rs232 -t tty -l rs0001 -p sa1 -w s2 # creates rs0001
1.124: How do I use mksysb to clone a system?
From: joann@ariadne.SLAC.Stanford.EDU (Jo Ann Malina)
I use the following steps on the master machine to clone an AIX system:
1) Remove the password from root.
2) Remove the NIS line from the end of the /etc/group file (the last
line with the +: )
3) Change most of the level '2' designations in /etc/inittab to level
'3' to prevent them from being started up when the new system is
booted (the minimum ones to change are rc.nfs and rc.tcpip)
4) Boot in service mode and change the name and ip address to a "spare"
set to avoid address collision.
5) Clear /tmp, /usr/tmp and /usr/spool/lpd/stat.
6) Run mkszfile and edit it to be sure /usr is as small as possible;
then mksysb from the command line.
The above changes allow me to boot in normal mode the first time, get in
as root, change the above files back and do the other things necessary
to configure the new system.
Then, of course, I go back and clean up and reboot my master machine.
Note: 1 and 2 lets you log in even if you can't get on the network.
It prevents the login process from trying to reach an NIS server.
Step 2 needed only if you use NIS.
1.125: How do I retain timestamps with mksysb?
From: graeme@ccu1.aukuni.ac.nz ( Graeme Moffat)
In /usr/lpp/bosinst/bosnet (for net installs), and bosrest (tape), the
'pax' commands all have '-pmop' options. m = "DON'T retain modification
times". So, simply change all the '-pmop' to '-pop' and remake
inst/maint diskettes or mksysb tapes.
1.126: How can I find out the machine type?
From: umar@compsci.cas.vanderbilt.edu (Sait Umar)
#!/bin/sh
#
# Author G. Vitillaro (peppe@ipgaix.unipg.it)
# from an idea of Marc Pawliger (marc@ibmpa.awdpa.ibm.com)
#
# 10/12/92 GVT First (and last) implementation
#
# machine : will get machine type on RISC/6000
#
#
awk '
BEGIN {
m["10"]="7013/530 or 7016/730";
m["11"]="7013/540";
m["14"]="7013/540";
m["18"]="7013/530H";
m["1C"]="7013/550";
m["20"]="7015/930";
m["2E"]="7015/950";
m["2E"]="7015/950E";
m["30"]="7013/520";
m["31"]="7012/320";
m["34"]="7013/520H";
m["35"]="7012/320H or 320E";
m["37"]="7012/340";
m["38"]="7012/350";
m["41"]="7011/220";
m["45"]="7011/M20";
m["5C"]="7013/560";
m["63"]="7015/970";
m["64"]="7015/980";
m["66"]="7015/580";
m["67"]="7015/570";
m["75"]="7012/370, 375, or 37T";
m["76"]="7012/360, 365, or 36T";
m["77"]="7012/350, 355, or 7013/550L";
m["78"]="7012/315 or 7013/510 ";
if ( m[code] != "" )
print "This RISC/6000 is a " m[code];
else
print "Unknown Machine";
}
' code=`uname -m | cut -c9-10` < /dev/null
1.127: Updating to 3.2.5
From: kraemerf@franvm3.VNET.IBM.COM (Frank Kraemer)
(Ed. The following is useful if you have to update a large number of
systems, large being > 3.)
*** WARNING : Modify the scripts if you need dataless, diskless ***
*** or remote /usr support. ***
1) Receive the PMP3250 tape from your AIX support center the PTF number
is U493250.
2) Create a filesystem with 240 MB of space (60 PP's) and mount it as
/dev/pmp3250 - /pub/pmp3250
3) Insert the tape (blocksize is 512) and install PTF U422467
# installp -BXacgq -d /dev/rmt0 bos.obj 3.2.0.0.U422467
4) Use the following script to load the tape in the new filesystem
# cd /pub/pmp3250
# mktape2disk.sh 0 447 <<-- read 447 files from rmt0
=-=-=-=-=-=-=-= cut here =-=-=-=-=-=-=-=-=-=-=
#!/bin/ksh
# @(#) mktape2disk.sh creates files from tape on disk.
# change name prefix here
NAME="f"
# from file #i to file #j
integer i=1
integer j
# test arguments
if [ -z "${1}" ]
then
echo "\nusage: $(basename ${0}) <drive_no> <#files>\n"
echo "\t<drive_no>: tape drive number (e.g. 0)"
echo "\t<#files> : number of files to copy from the tape\n"
exit 1
fi
device=/dev/rmt${1}.1
# test arguments
if [ -z "${2}" ]
then
echo "\nusage: $(basename ${0}) <drive_no> <#files>\n"
echo "\t<drive_no>: tape drive number (e.g. 0)"
echo "\t<#files> : number of files to copy from the tape\n"
exit 1
fi
j=${2}
tctl -f ${device} rewind
if [ $? -ne 0 ]
then
exit 1
fi
# create tape
while [ ${i} -le ${j} ]
do
echo "Copy file #${i} of #${j} from (${device}) to disk as (${NAME}${i})."
dd if=${device} of="${NAME}${i}" bs=200k
i=i+1
done
tctl -f ${device} rewind
exit 0
=-=-=-=-=-=-=-= cut here =-=-=-=-=-=-=-=-=-=-=
5) Create a new .toc file
# cd /pub/pmp3250
# inutoc .
# pg .toc
6) Place the following file named 'runme.sh' in the PMP directory
=-=-=-=-=-=-=-= cut here =-=-=-=-=-=-=-=-=-=-=
#!/bin/ksh
# @(#) runme.sh for PMP3250
#
INSTP="/usr/sbin/installp"
LOG="/tmp/installp.log"
TEE="/usr/bin/tee"
PATCHDIR=$(pwd)
#
/usr/bin/cp /usr/lpp/info/data/ispaths /usr/lpp/info/data/ispaths.save
#
INFODIR="/usr/lpp/info/$LANG/aixmin"
/usr/bin/mkdir ${INFODIR} 2>/dev/null >/dev/null
if [ ! -w ${INFODIR} ]
then
print "\n\t*ERROR* Can not (write) access [${INFODIR}]."
print "\tPlease unmount CD or NFS filesystems.\n"
exit -1
fi
#
# Commit all ptf's
#
${INSTP} -Xc all 2>&1 | ${TEE} ${LOG}.0
#
# Install latest installp patch
#
${INSTP} -BXacgq -d ${PATCHDIR} bos.obj 3.2.0.0.U422463 2>&1 | ${TEE} ${LOG}.1
#
# Install latest installp patch
#
${INSTP} -BXacgq -d ${PATCHDIR} bos.obj 3.2.0.0.U422467 2>&1 | ${TEE} ${LOG}.6
#
# Run the ptfdir clean utility.
#
/usr/sbin/ptfdir_clean -y -f -v 2>&1 | ${TEE} ${LOG}.2
#
# Install the PMP. Version 1
#
/usr/lib/instl/sm_inst installp_cmd \
-T m -q -a -g -B \
-d ${PATCHDIR} \
-S '3250 AIX Maintenance Level U493250' \
-c -N -X \
2>&1 | ${TEE} ${LOG}.3
#
# Install the PMP. Version 2
#
# /usr/sbin/update_all
#
# Install latest installp patch
#
/usr/bin/lppchk -v | ${TEE} ${LOG}.4
#
# Show level of installp patch
#
/usr/bin/lslpp -m bos.obj | ${TEE} ${LOG}.5
#
# Guess you should reboot now.
#
sync;sync
print - "\n\n\tDone......guess you should reboot now !!\n"
exit 0
=-=-=-=-=-=-=-= cut here =-=-=-=-=-=-=-=-=-=-=
7) To run the update on your server
===>> Please read the Installation Instructions first <<==
# cd /pub/pmp3250
# ./runme.sh
........WAIT...........
# /etc/shutdown -Fr
8) NFS export the PMP dir as READ-ONLY to all your clients.
9) To update a client system
a - Mount the PMP filesystem from the server
b - cd <mounted_filesystem>
c - execute ./runme.sh
d - Unmount PMP filesystem
e - reboot
10) To create a copy 1:1 of the tape you received use the script 'mktape.sh'
# cd /pub/pmp3250
# mktape.sh 0
=-=-=-=-=-=-=-= cut here =-=-=-=-=-=-=-=-=-=-=
#!/bin/ksh
# @(#) mktape.sh: creates a bootable tape from images on disk
# change name prefix here
NAME="f"
# usage: mktape drive_no
# drive_no = tape drive number
# test arguments
if [ -z "${1}" ]
then
echo "\nusage: mktape <drive_no>"
echo " <drive_no>: tape drive number (e.g. 0)\n"
exit 1
fi
device=/dev/rmt${1}.1
tctl -f ${device} rewind
if [ $? -ne 0 ]
then
exit 1
fi
# create tape
i=1
while test -r "${NAME}${i}"
do
echo "copy ${i}"
if [ $i -le 3 ]
then
dd if="${NAME}${i}" of=${device} conv=sync bs=1k
else
dd if="${NAME}${i}" of=${device} bs=200k
fi
let i=${i}+1
done
tctl -f ${device} rewind
exit 0
1.128: AIX fix strategy
From: leedp@austin.ibm.com (Dennis Lee, PMP Release Manager)
First, a little history...
The maintenance strategy for AIX 3.1 was cumulative updates. Every few
months, we'd put all available fixes in one large package and ship it.
There was no real strategy for providing a single fix. Although we'd
occasionally produce an emergency patch, there was no method for
tracking them; if you got a second one, it might overwrite the first.
So, after a few of these patches, it's hard to track.
In AIX 3.2 we introduced a "selective fix" strategy which can package an
individual fix as a separate package. The package contained information
about other fixes that were required for that fix to work correctly.
For example, a Korn shell fix might require a change in libc.a, which
might in turn require a fix in the kernel. This strategy allowed us to
keep track of which fixes were installed to make sure we didn't
overwrite one with another, and make sure they all worked together.
But the initial selective fix design still had a few problems.
o None of the fixes were cumulative. If you got a fix for Korn shell,
you may not receive all of the fixes for Korn shell. This left the
possibility of rediscovering other problems that were already fixed.
o Since we chose to fix everything possible that was reported as a
problem, instead of deferring them to the next release, the number
of available fixes became quite large.
o The number of additional fixes required by any given fix could also
be quite large. Since the installation program ran once for each
fix, the size and complexity of the fix packages grew, and
installation time lengthens greatly.
While developing the AIX 3.2.4 upgrade, we undertook a large effort to
resolve the selective fix concerns, and dramatically increase the
quality of AIX 3.2. The base operating system and most of the optional
program products were split into subsystems. A subsystem is a group of
logically related files. The division was made such that changes to a
given subsystem were less likely to affect other subsystems. In total
there are approximately 500 subsystems, but in practice, files have been
modified in only about half of them. The advantages of the new
packaging strategy are:
o Each subsystem package is cumulative, containing all of the fixes
and enhancements to date for that subsystem.
o The cumulative subsystem package is tested as an entity.
o The number of fix packages is greatly reduced because the number of
subsystems is far fewer than the number of fixes and enhancements.
o The number of other fixes required by any given fix is also greatly
reduced because a subsystem package has requisites only on other
subsystem packages.
o The reduced number of fix packages greatly reduced installation time.
Some customers also told us that they liked the maintenance level
strategy that we used in AIX 3.1. They liked being able to install all
of the known fixes, and they liked knowing what "level" of AIX they had.
To meet these requirements, we produced a Preventive Maintenance Package
(PMP). The PMP is simply a collection of the latest cumulative
subsystem packages tied together in such a way that it can be installed
by selecting a single fix. We also added flags to the lslpp command and
added a new command, oslevel, to show which PMP is installed. Now we
had both! The good attributes of selective fix along with the good
attributes of maintenance levels.
A few Q&As:
Q. Why is the fix I just received 130 megabytes!@#? I already have the
AIX 3.2.4 update installed!
A. Your fix may be part of the AIX 3.2.5 update. AIX 3.2.5 is another
PMP that contains all of the fixes to date, as well as enhancements
to support the PowerPC model 250, and the new high-end RS/2 models
590 and 990, as well as support for new disk and tape drives, graphics
adapters and more.
Q. Why can't you just build my fix on 3.2.4?
A. There really isn't such a thing as 3.2.1 or 3.2.2 or even 3.2.4.
They're all nothing more than collections of fixes and enhancements
built on an AIX 3.2 base. If the fix for your problem was built prior
to the AIX 3.2.5 subsystems, you can get the older version. But if your
fix was built for the first time in a 3.2.5 subsystem, that's the only
version of the fix that exists.
See also 6.02.
1.129: Are passwords limited to 8 char?
AIX passwords are only significant to 8 characters. You can set one
more than 8 characters but anything over eight characters are ignored.
No messages or warnings are given.
Be careful if you're running NIS. You probably want to limit passwords
to 8 char on all machines (6000 and others) to be compatible.
Someone mentioned that DCE supports kerberos which supports passwords
greater than 8 characters.
1.130: How do I increase the number of ptys > 64?
From: mick@oahu.cern.ch (Mickey Coggins)
SMIT only allows 64. Try this:
odmget -q"attribute=num and uniquetype=pty/pty/pty" PdAt |
sed "s/0-64/0-512/" |
odmchange -q"attribute=num and uniquetype=pty/pty/pty" -o PdAt
chdev -l pty0 -anum=256 -P
reboot