mergemaster improvement (auto-update for not modified files)

John Hay jhay at icomtek.csir.co.za
Thu May 5 02:06:24 PDT 2005


> > >
> > > 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 at icomtek.csir.co.za / jhay at FreeBSD.org


More information about the freebsd-hackers mailing list