Using radmind to install Tiger – Part 2

There are a number of challenges to overcome when using radmind to update a machine from 10.3.x to 10.4.x. The first challenge, detailed in the previous post, was that essential libraries and tools get switched out from under you during an update. There are two others.

The second challenge is that the case of some filesystem items has changed from Panther to Tiger; in other words

/Library/Printers/HP

might now be

/Library/Printers/hp

which confuses radmind, since it thinks case is important, whereas HFS+ generally does not.
In practice, this is usually not a big deal. I’ve usually worked around it by manually changing the case of items in transcripts, or by pre-deleting items that are affected by this issue. radmind 1.5.1 and later support case-insensitive trasnscripts, and this is the preferred solution for the future.

The third challenge is the the mode for /.vol has changed in Tiger. Here’s the entry in my Panther negative:

d /.vol 0444 0 0

And the corresponding entry in my Tiger negative:

d /.vol 0555 0 0

The challenge is that while radmind will attempt to change the mode during the update, it won’t be allowed to, and so the update will fail. It turns out that /.vol is part of a virtual filesystem managed by the OS, and it will take care of itself. So until a true “ignore this filesystem object completely” option is added to radmind, we’ll have to tell radmind ourselves to ignore it.

My solution is to process the applicable transcript that fsdiff generates before passing it to lapply. I check a file that contains a list of patterns to ignore, and remove those from the applicable transcript.

In the below script fragment, “$ignoreList” contains the path to the file containing the list of items to ignore. This currently contains

./vol

“$fsdiffoutput” is the path to the applicable transcript generated by fsdiff, and
“$lapplyinput” is the path to the filtered transcript to be given to lapply:

Perl:

################################################################################
# filter output from fsdiff
# this simply filters out anything that matches items in $ignoreList
# from the applicable transcript
#
system "grep -F -v -f $ignoreList $fsdiffoutput > $lapplyinput";

sh:

grep -F -v -f "$ignoreList" "$fsdiffoutput" > "$lapplyinput"

This prevents lapply from trying to modify ./vol, and the radmind session can run to completion.

Using radmind to install Tiger – Part 2

2 thoughts on “Using radmind to install Tiger – Part 2

  1. Terry says:

    for the .vol issue i insteadd made a modified negative transcript. I took my 10.4 negative and made the permissions on .vol correct for 10.4 and used that for the update so radmind did not try to change them. Then I switched to my 10.4 negative after the update

Comments are closed.