2007/10/26

C99 or back to the future

Its almost 10yrs since I had to look at any significant C, and it was pleasant to find that C99 has added:
  1. for loop initialisers are supported
  2. declarations can be mixed with code
  3. there is a bool type
  4. the C++ // comment is supported
  5. and some weird array and macro stuff (variable length arrays are broken in gcc)
And C style casting was something that I tried very hard to forget.

2007/10/24

Large File Support in HP-UX

fsadm is the key to turning on large file support in a HP-UX filesystem. Then the fun begins making sure that compiler flags allow you at your >2GB goodness.

There is a reasonable discussion of the other steps in the Tru64 Transition document set.

2007/10/18

Soft-boiled egg cracking

Endianness is great make-work and telling the which orientation a box is at runtime is interesting (especially as some architectures are bi) - snippet derived from the IBM article:

int
main(int argc, char* argv[])
{
int i = 1;
char *p = (char *)&i;

if (p[0] == 1)
printf("little endian\n");
else
printf("big endian\n");

return 0;
}

Anyway, HP-UX on Itanium is big (as was/is PA-RISC), linux on Intel is little.

2007/10/15

Caching nameserver with ISC bind

Handy to do in the presence of dodgy local nameserver(s) - on gentoo:

# emerge bind
# vi /etc/bind/named.conf
...
//forward first; // uncomment to avoid going to the root nameservers
forwarders {
192.168.6.53; // local dodgy ns #1
192.168.5.53; // local dodgy ns #2
};
...
# vi /etc/resolv.conf
...
nameserver 127.0.0.1
# rc-config add named
# /etc/init.d/named start
# dig www.dilbert.com # <- note query time
# dig www.dilbert.com # <- note reduced query time
#

2007/10/12

HP-UX Versions & Support

HP will support old HP-UX OS versions for ~10 years. Updates to major releases come every 6 months. And major releases come every 3 years.

And they guarantee forward compatibility if there are no kernel dependencies. They don't have a backward compatibility guarantee (build on a newer environment, for deployment on an older one).

Software from the old HP 9000 architecture can run under emulation on Itanium, or is guaranteed to be source code/build time compatible on Itanium.

2007/10/11

C++ References

Small collection of links that I find handy & refer to regularly:

HP-UX SWA

Incantation to install swinstall:

swinstall -s /local/SwAssistant_C.01.02_HP-UX_11iv2+v3_IA_PA.depot

Depots need to be marked for installation inside the swinstall motif gui.

SWA itself is finicky about the specific version of the jre that it requires as well...

But it depends on having internet access to pull down a swa_catalog.xml file, and if your servers don't have that access...

So download it with firefox, scp it to the server, uncompress it, and:

# swa report -x catalog=swa_catalog.xml

And of course it doesn't run because it needs a later 'Gold Base Patches for HP-UX' bundle to be installed...

Rooting around HP-UX 11.23 ia64

Whats in the box

The divil is in the detail:
  1. Run machinfo to see installed memory (& hardware model, ...)
  2. Watch paging use with swapinfo.
  3. Run 'ioscan ioscan -funC disk' to see installed disks.
  4. Look at logical volumes/groups with vgdisplay -v (the 'Free PE' field is interesting).
  5. Look at how a physical disk is allocated with pvdisplay /dev/dsk/c2t0d0
And then patching

swa is the HP recommended way of patching up boxes - its a free download from (the download site was broken the first day I tried - worked the next day).