The best way to upgrade my FreeBSD and its jails

Redd Vinylene reddvinylene at gmail.com
Sat Aug 2 10:04:01 UTC 2008


Thanks a lot guys for your great design insight!

I hope others will find this thread interesting as well. Here's the
final upgrade script I decided to use (my shell is zsh):

-

# FreeBSD/i386 mother.naoshige.net

csup /etc/cvsupfile

cd /usr/src

make buildworld buildkernel && \

mergemaster -p && \

make installworld installkernel delete-old delete-old-libs && \

mergemaster -i -U && \

JAILS=/usr/local/jails

cd /usr/src

for jail in $JAILS/*; do

  mergemaster -p -D $JAILS/$jail && \

  make installworld delete-old delete-old-libs DESTDIR=$JAILS/$jail && \

  mergemaster -i -U -D $JAILS/$jail && \

done

chflags -R noschg /usr/obj/*

rm -rf /usr/obj/*

-

Much obliged!

On Sat, Aug 2, 2008 at 9:28 AM, Miroslav Lachman <000.fbsd at quip.cz> wrote:
> Mikhail Goriachev wrote:
>>
>> Redd Vinylene wrote:
>>
>>> My dedicated server is mother, its two jails are camel and box. Is
>>> this the best way to upgrade all of them?
>>
>>
>> We probably should keep this to freebsd-jail@ only.
>>
>> Had a look at http://pastie.org/245821 and have a few notes for you:
>>
>> 1.- As Miroslav already mentioned - it is not a good idea to daisy chain
>> everything. You should break the procedure into two steps. Firstly upgrade
>> the host and make sure the upgrade went well. Once you're certain that
>> everything is ok, then proceed upgrading jails.
>>
>> I personally disable jails (jail_enable="NO"), then reboot (to avoid any
>> zombie jails), perform upgrade on all jails and then enable them back on.
>>
>> 2.- Your upgrading sequence is a bit off. Have a look at /usr/src/Makefile
>> for further details and correct sequence:
>>
>> # make buildworld
>> # make buildkernel
>> # make installkernel
>> # reboot
>> # mergemaster -p
>> # make installworld
>> # make delete-old
>> # mergemaster
>> # reboot
>> # make delete-old-libs
>>
>> 3.- You don't need kernels inside your jails. Having them won't hurt you,
>> but they consume space. In other words, you shouldn't execute the following
>> (or similar):
>>
>> # make DESTDIR=$D installkernel
>>
>> 4.- The "make distribution DESTDIR=$D" should be executed only once - when
>> a jail is created. Otherwise you're nuking your configurations in jail's
>> /etc and probably somewhere else.
>
> One thing to note - If you do delete-old delete-old-libs you probably need
> to recompile all installed ports because of lib dependencies.
>
>> Have a go at this, you might find some use for it:
>>
>> -----------------------
>> JAILSDIR=/usr/local/jails
>>
>> cd /usr/src
>>
>> for jail in `ls ${JAILSDIR}`; do
>>        mergemaster -pD ${JAILSDIR}/${jail}
>>        make installworld DESTDIR=${JAILSDIR}/${jail}
>>        mergemaster -iD ${JAILSDIR}/${jail}
>> done
>> -----------------------
>


More information about the freebsd-jail mailing list