[Rear-users] [Fwd: ReaR and SLES 11]

Peter Eckhardt peter at linux-freelancer.net
Mon Oct 12 15:05:41 CEST 2009


Hello

Found time to look a little deeper into the problem (see below). The
culprit is the array PROGS which contains all the programs to be put
onto the CD. Unfortunately PROGS[] is one value and not separate values
so it gets omitted.

The reason is within the prep phase of rear when using TSM.

In /usr/share/rear/prep/TSM/default/40_prep_tsm.sh PROGS is initialized
as follows

PROGS=( "${PROGS[*]}" "${PROGS_TSM[*]}" )

while it probably should be initialized such

PROGS=( "${PROGS[@]}" "${PROGS_TSM[@]}" )

At least that solves the problem.

Brgds
Peter

-------- Original-Nachricht --------
From: - Wed Sep 02 16:57:44 2009
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00800000
X-Mozilla-Keys:
Message-ID: <4A9E87E7.8050605 at linux-freelancer.net>
Date: Wed, 02 Sep 2009 16:57:43 +0200
From: Peter Eckhardt <peter at linux-freelancer.net>
User-Agent: Thunderbird 2.0.0.23 (X11/20090817)
MIME-Version: 1.0
To: Discussions about Relax & Recover <rear-users at lists.sourceforge.net>
Subject: ReaR and SLES 11
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 7bit


Hi

I am currently preparing the release of SLES 11 at a customer site.
Because ReaR is used for disaster recovery on SLES 9 and SLES 10 i gave
ReaR on SLES 11 with Tivoli Storage Manager (TSM) a try.

It looked quite well on first glance. The recovery cd was built without
problems. Unfortunately booting the CD ended up in a kernel panic (no
root filesystem was found). Another colleague tested ReaR on SLES 11 and
HP Data Protector . In that combination the boot CD did actually boot
but had strange problems in recovery.

Today i had some time to look into the problem and figured the recovery
cd wouldn't boot because /bin/init (and several other binaries and
libraries) were missing in the initrd.

After digging a little deeper i found the problem in
build/GNU/Linux/39_copy_binaries_libraries.

In SLES 9 and 10 (bash < 3.2) the expression

c=0
for k in "${PROGS[@]}" "${REQUIRED_PROGS[@]}"; do

iterated over the contents of array PROGS and REQUIRED_PROGS

while in SLES 11 it only iterates over the contents of array
REQUIRED_PROGS. Thus all binaries referenced in PROGS aren't copied to
the initrd image.

The following snipped solves the problem:

c=0
local DEST=( ${PROGS[@]} ${REQUIRED_PROGS[@]} )
for k in ${DEST[@]} ; do


And the following for the libraries:

LIBS64=()
for lib in ${LIBS[@]} $(SharedObjectFiles "${BINARIES[@]}" | sed -e
's#^#/#' ) ; do

will have to be changed to

LIBS64=()
DEST=( ${LIBS[@]} $(SharedObjectFiles "${BINARIES[@]}" | sed -e 's#^#/#' )
)
for lib in ${DEST[@]} ; do

With these changes in place the Recovery CD boots again. I have not yet
been able to test a recovery.


As I am not a shell expert I am not sure why behaviour changed. I am
assuming it might have to do with the new bash version. And i am not
sure wether the current code is flakey or not. At least the quoting
seems weird to me ...


Brgds
Peter






More information about the rear-users mailing list