Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 May 2005 11:05:21 +0200
From:      John Hay <jhay@icomtek.csir.co.za>
To:        Warner Losh <imp@bsdimp.com>
Cc:        Thomas.Sparrevohn@btinternet.com
Subject:   Re: mergemaster improvement (auto-update for not modified files)
Message-ID:  <20050505090521.GA25752@zibbi.icomtek.csir.co.za>
In-Reply-To: <20050504.152324.41637276.imp@bsdimp.com>
References:  <20050503222512.GA53874@crow.addict.de> <20050503.233855.116351361.imp@bsdimp.com> <200505042215.26426.Thomas.Sparrevohn@btinternet.com> <20050504.152324.41637276.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
> > >
> > > The technical reasons are very simple.  If a new system call is
> > > created, and programs use that new system call, then if you do an
> > > installworld before you boot the kernel, that can result in binaries
> > > not working.  This has happened with important ones like /bin/sh in
> > > the past.  In addition, if you aren't running single user, many
> > > different races exist in the installation process that can result in
> > > bad behavior.  There are also potential problems with symbols in
> > > there's a large jump between the revisions being updated.
> > >
> > > Usually you can get away with it, but if you want to be safe, you must
> > > do the install in single user.  Usually, however, has lead in the past
> > > to problems, which is why the project recommendations are
> > > conservative.
> > >
> > 
> > A auto-scripted install directly run from rc.d in single-user mode would cover 
> > both requirements - I seem to recall that Solaris had something like it at a 
> > point. Somewhat along the lines of nextboot would be nice. 
> 
> How do you know where to get the sources from?  What environment to
> build them from?
> 
> However, if you could cover those issues, I'd love to see a script to
> deal.  Maybe you could implement something that would be robust enough
> for the project to recommend...

What I do sometimes is to (in multiuser mode) make a copy of /etc to
say /etc.new, the run mergmaster and stop it after it created
/var/tmp/temproot and then rename the etc inside it also to etc.new
and then run mergemaster -r. Then go to single user mode and rename
/etc.new to /etc and reboot. This still does have all the work, but
it does minimize the downtime in single user mode.

John
-- 
John Hay -- John.Hay@icomtek.csir.co.za / jhay@FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050505090521.GA25752>