make buildkernel fails without complete source tree
John Baldwin
jhb at freebsd.org
Mon Jan 22 18:48:24 UTC 2007
On Monday 22 January 2007 13:17, Ken Smith wrote:
> On Mon, 2007-01-22 at 11:11 -0500, John Baldwin wrote:
> > On Sunday 21 January 2007 16:24, Ruslan Ermilov wrote:
> > > On Thu, Jan 18, 2007 at 01:48:14PM -0800, Murray Stokely wrote:
> > > > On 1/18/07, John Baldwin <jhb at freebsd.org> wrote:
> > > > ===================================================================
> > > > >- { " sys", "/usr/src/sys (FreeBSD kernel)",
> > > > >+ { " sys", "/usr/src/sys (FreeBSD kernel;
requires
> > > > >'base'
> > > > >to build)",
> > > >
> > > > I think this is a good solution.
> > > >
> > > I don't think this is a good idea as it's not actually required.
> > > The sys/ part have traditionally been standalone. And if you're
> > > not upgrading then "buildkernel" is just a convenience alias for
> > > config/make method. Actually this method is always used except
> > > that in the buildkernel case it will use an upgraded toolchain
> > > if it was previously built by "buildworld".
> >
> > It is required for buildkernel as otherwise there's no Makefile
in /usr/src
> > with a buildkernel target. It's only not required if you do 'config,
etc.'
> > by hand, but 'make buildkernel' requires some sort of /usr/src/Makefile,
> > obviously. :)
>
> I think that's what Ruslan meant by it having "traditionally been
> standalone". By tradition someone who just extracted the sys stuff
> wasn't expecting to do 'make buildkernel', they expected to do the
> 'config, etc'. For example someone who wanted to build custom kernels
> but had no intention of updating the machine using the source tree, and
> they knew how to build the kernels manually.
Yes, but the thread started because someone installed 'ssys' and tried to
build it using 'buildkernel' because that's what the handbook mentions. In
fact, the handbook doesn't even mention the old way anymore at all, so for
new users ssys for all intents and purposes does depend on sbase.
> The truth is the message should read "(FreeBSD kernel; requires 'base'
> to build if you insist on using 'make buildkernel' in /usr/src to build
> a kernel but if you know how to build a kernel 'manually' then 'base' is
> not required)". But I don't think that fits in 80 columns... :-)
If someone knows how to build it the old way, they probably know they can just
install ssys, and installing sbase won't hurt them anyway, it's really small
in terms of disk space. OTOH, someone who is new to FreeBSD might just pick
the kernel sources and end up in the OP's situation by following the
handbook.
However, to counter that, if a new(er) user chooses the 'Kernel Developer'
or 'X-Kernel Developer' from the dist menu, they will get sbase and ssys
installed, so it's really when they go and dink with the src dists by hand
that the get into trouble, so maybe we just leave it as it is. They asked
for pain and they got pain. :) Alternatively, you could also add a note to
the handbook near the kernel building instructions to note that if you wish
to build a kernel from the src dists in sysinstall, you need to have both
the 'ssys' and 'sbase' dists installed. That might actually be the best
solution. It can even be one of those fancy Note: boxes via a <note> tag. :)
On another side note, the name "Kernel Developer" in the dist menu is probably
confusing. Most new users probably don't consider themselves a "kernel
developer", so probably don't go for that option. Shoot, there are people
who probably don't consider themselves "developers" in that they don't churn
out mountains of C/C++ code, but they need the kernel sources to compile
custom kernels to tweak their boxes.
> The message as proposed above also begs the question "So why have sys as
> a separate thing if all you can do is look at it?. That's not true but
> it is what the message suggests.
Because some people may just want to look at it. :) You can also still build
modules by hand by going to /sys/modules/foo without having sbase installed.
(Similar to installing 'sbin' and going to /usr/src/bin/foo to build 'foo').
--
John Baldwin
More information about the freebsd-doc
mailing list