mergemaster broken -- take 2
Andrei Kolu
antik at bsd.ee
Sun Jan 11 22:22:46 PST 2009
Mike Lempriere wrote:
> Thanks everyone for the advice -- I got it working this time just
> fine. Works much better when one follows the directions accurately
> instead of by memory -- the bottom line is that this time I remembered
> to jot down the commands before heading downtown to the machine rack
> room where there's no browser access... I started over and followed
> UPDATING:
> cd /usr/obj
> rm -R *
> cd /usr/src
> rm -R *
> cvsup -g -L 2 -h cvsup10.freebsd.org |& tee /root/cvsup-090108.out
> make buildworld |& tee /root/make-buildworld-090108.out
> make kernel KERNCONF=GENERIC |& tee /root/make-kernel-090108.out
> users
> ps ax | more
> shutdown -r now
You can go into single user without rebooting just by issuing command:
# shutdown now
NOTE: Network access will be shut down also, so you should be on your
console then.
> 4 (single user)
> fsck -p
> mount -u /
> mount -a
> cd /usr/src
> mergemaster -p
> make installworld |& tee /root/make-installworld-090108.out
> make delete-old (forgot to do tee redirect)
> mergemaster -i (did not do tee redirect)
> shutdown -r now
>
> Oliver Fromme wrote:
>> Greg Byshenk wrote:
>> > Andrei Kolu wrote:
>> > > Mike Lempriere wrote:
>> > > > Hi folks -- sorry to be a nag, but my main production system
>> is barely > > > limping along on an old kernel with mismatched
>> libraries. I have no > > > idea what else to do -- please help!
>> > > > ---
>> > > > I'm upgrading 5-stable (was at 5.5) to 6-stable, in
>> preparation for > > > 6-stable to 7-stable.
>> > > > No problems with cvsup, make buildworld, make installworld,
>> make > > > buildkernel, mergemaster -p.
>> > > > make installkernel, boot to single user. Then mergemaster --
>> blammo:
>>
>> As others have pointed out, the order is wrong, which caused
>> the problem Mike is seeing.
>>
>> The correct order is listed in /usr/src/UPDATING.
>>
>> > The reasons for the other methods being wrong are (as I understand
>> them):
>> > > - You should build your new world before building your new
>> kernel, as
>> > it may be the case that some aspects of the new kernel build are
>> > dependent upon aspects of the new world build. If you build your
>> > new kernel before building your new world, you will be building
>> > your new kernel against the old world.
>>
>> In particular, building the kernel uses the new toolchain
>> (i.e. compiler, linker, make(1) binary and so on) that was
>> built in /usr/obj during buildworld. That's why you have
>> to do buildworld first, then "make kernel".
>>
>> > - You should install your new kernel before installing your new
>> world,
>> > as it can be the case that some aspects of the new world will
>> not be
>> > understood by your old kernel. A new kernel should always be
>> > compatible with an old userland/world, but an old kernel may not
>> > always be compatible with a new userland/world.
>>
>> That's correct. Note that your kernel config should include
>> the appropriate "options COMPAT_*" lines if you update across
>> a major version boundary, e.g. "options_COMPAT_FREEBSD6" when
>> you update from 6.x to 7.x. The GENERIC kernel already has
>> those.
>>
>> > > NOTE: I do not reboot my system until everything is updated. Why
>> it is > > necessary to boot new kernel and then upgrade world is
>> beyound me..YMMW
>> > > - I suppose that it is not strictly necessary to reboot between
>> > installing kernel and world, but I always do so.
>>
>> It _is_ necessary. If you don't reboot, you're still running
>> the old kernel which might not be able to support new binaries
>> and libraries that installworld will install on your system.
>>
>> For example, there may be new syscalls that the new binaries
>> will try to use, but the old kernel doesn't know about them.
>> It doesn't happen often, so you can get away without rebooting
>> most of the time. But it's risky, especially when updating
>> across major versions. So the recommendation is to always
>> reboot after installing the new kernel and before performing
>> the "installworld".
>>
>> It's also important that "installworld" is the last step
>> (except for mergemaster), because this is the point of no
>> return. As long as you still have the old userland (world),
>> you can still boot the old kernel and everything is fine.
>> You can start all over froms cratch, if necessary.
>> But as soon as you have started "installworld", your system
>> will not be able to work with the old kernel anymore.
>>
>> And remember: Always make a backup before you start to
>> update. And verify that the backup works. Better safe
>> than sorry.
>>
>> Best regards
>> Oliver
>>
>>
>
More information about the freebsd-stable
mailing list