Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Jul 2002 16:51:43 +0200
From:      Gerhard Sittig <Gerhard.Sittig@gmx.net>
To:        freebsd-stable@FreeBSD.ORG
Subject:   Re: Kernel config problem with 4.6-STABLE...  [solution]
Message-ID:  <20020721165143.A1494@shell.gsinet.sittig.org>
In-Reply-To: <20020720104257.0b1d8dde.steve@sohara.org>; from steve@sohara.org on Sat, Jul 20, 2002 at 10:42:57AM %2B0200
References:  <5.1.0.14.0.20020717152215.00a79df0@dns1.popstick.com> <000601c22e72$58b76a80$fb00000a@promethium> <20020719195738.Y1494@shell.gsinet.sittig.org> <1027103476.19808.21.camel@owen1492.it.oot> <20020719221244.GE17899@grimoire.chen.org.nz> <20020720104257.0b1d8dde.steve@sohara.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Jul 20, 2002 at 10:42 +0200, Steve O'Hara-Smith wrote:
> 
> [ ... buildworld before buildkernel ... ]
> 
> 	I have run make kernel on boxes where buildworld has not run in
> moments of absent mindedness - it has always worked perfectly, of course
> the sources *must* match the installed system in this case.
> 
> 	Question - is this supposed to work ?

The above emphasis of yours basically makes the point.  I'm not a
kernel hacker or source guru, but the logic is so simple that
everyone should quickly get it:

You not only need sources to build a kernel, the source is handled
by tools.  When you install the kernel source tree with a -RELEASE
or a -SNAPSHOT you have the apropriate tools already and can get
away with a buildkernel or even the "old fashioned" config and
make sequence.

But when your source tree is newer than your tools are, there is
a _chance_ that building from the source has prerequisites the
tools don't satisfy.  This chance increases with bigger distances
in age of the two aspects.  One *might* get away without building
new tools, but there is no guarantee.  While the heavily suggested
buildworld and buildkernel sequence is designed to _always_ work,
and is the easiest to describe and declare for everyone.

Those who know better (or just feel a little adventurous) are free
to search for a way "in between".  Or try the less expensive -- in
terms of time spent -- methods first before falling back to the
more expensive method in case of failure.  But since things are
complicated and not at all trivial this seems to be beyond the
scope of the handbook or UPDATING.  Remember, neither do these
documents tell you (or are supposed to tell you) how a compiler
works, how the kernel tree layout looks like, nor how to program,
nor do they give you a basic class in computer science.  At least
I wouldn't expect the user oriented parts of the FreeBSD doc to
tell me about these things.  Although this might be on topic for
the Porter's Handbook, a Kernel Hacker's Guide or some separate
article / book, I wouldn't expect this kind of information (how
to cut corners when building the source) in the handbook or
UPDATING.

I feel that it is a sensible approach to hand out simple
instructions ("do buildworld followed by buildkernel, with no
'but' or 'if' ...") and to leave more complicated dependency
determination and the resulting saving in time up to the
experience of those who want or have to know better.  We are
talking about users and administrators here who don't do
upgrades more than twice a year, don't we?  We don't talk
about kernel hackers (who should know better).  And for bulk
upgrade of more machines one might consider copying changed
files from a build server or "make release".  This way the time
consuming steps can be done on a fast machine.  I would always
take the safe way and like to get a working output instead of
trying to save a few minutes and get a "might work" output.
Computers are dumb and cheap, they can do the tedious job
without me watching them. :)

BTW has there been a lengthy thread (I fear there have been
many threads:) around the time when the buildkernel target was
created.  It actually got introduced to not have users complain
about "config; make doesn't work" when they need a newer version
of config(8) for their kernel source or kernel configuration.  The
buildkernel target heavily simplified the "user interface" while
it catches all the preparation steps and pitfalls one might meet.
Should you want to visit the archives, here's a snippet from the
commit message:

----- cd /usr/src; cvs log Makefile.inc -------------------------
[ ... ]
revision 1.122
date: 2000/01/09 17:56:40;  author: marcel;  state: Exp;  lines: +76 -2
Add a buildkernel and an installkernel target. With these targets
users can more easily upgrade.

[ ... ]
----- cd /usr/src; cvs log Makefile.inc -------------------------

So the most definitive discussion of the issue has been done two
years ago.  Everything else is just a rehashing ... :]


virtually yours   82D1 9B9C 01DC 4FB4 D7B4  61BE 3F49 4F77 72DE DA76
Gerhard Sittig   true | mail -s "get gpg key" Gerhard.Sittig@gmx.net
-- 
     If you don't understand or are scared by any of the above
             ask your parents or an adult to help you.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




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