Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Dec 2007 00:45:27 +0200
From:      Giorgos Keramidas <keramida@ceid.upatras.gr>
To:        Grant <emailgrant@gmail.com>
Cc:        freebsd-advocacy@freebsd.org
Subject:   Re: Current Gentoo user
Message-ID:  <20071224224527.GA13123@kobe.laptop>
In-Reply-To: <49bf44f10712131235v2d73a412k81ca9714911bfccd@mail.gmail.com>
References:  <49bf44f10712122100y45f12f77q4ae47f311905be25@mail.gmail.com> <200712131947.lBDJlMeZ008204@satan.anjos.strangled.net> <49bf44f10712131235v2d73a412k81ca9714911bfccd@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2007-12-13 12:35, Grant <emailgrant@gmail.com> wrote:
>> After two years using Gentoo, after the first very positive
>> impression, I'm a bit tired of breaking things due to updating one
>> port.  It's also too much of a pain reconfiguring and recompiling the
>> Linux kernel.
> 
> Configuring the kernel with menuconfig is a pain.  How is it handled
> differently with FreeBSD?

We use flat text files, like `GENERIC'.  They are stored in a well
documented, standard place inside the kernel source tree, at the
`/usr/src/sys/${ARCH}/conf' directory, where `ARCH' is one of `i386',
`amd64' or another supported architecture.

All the kernel options and their dependencies are documented in a set of
plain text, easy to skim through, files:

    /usr/src/sys/conf/NOTES           # Machine independent options
    /usr/src/sys/i386/conf/NOTES      # Machine-dependent options (i386 platform)

You can either copy `GENERIC' and tweak its options, or create a minimal
kernel config file called `KERAMIDA' which contains just the text:

    include GENERIC		# Use the `GENERIC' kernel for defaults
    ident KERAMIDA		# Custom/local kernel identifier
    nooption SCHED_4BSD		# Disable the 4BSD scheduler.
    option SCHED_ULE		# Enable the ULE scheduler.

That's it.  With this short kernel config file you are building a custom
kernel which uses the `ULE' scheduler by default.  To build in a clean
checkout of the FreeBSD source tree, all it takes is[1]:

    # cd /usr/src
    # make KERNCONF='KERAMIDA' buildkernel

[1] There may be a few more steps if you are often building new kernel
and userland snapshots, but they are clearly documented in a plain text
file called `/usr/src/UPDATING' --- conveniently placed in the toplevel
directory of the source tree.

I personally find this way of working *MUCH* easier than having to
navigate a dozen sublevels of a menu, but YMMV.

>> Perhaps it's my lack of experience.  On FreeBSD, you can compile the
>> kernel every day with no trouble at all, even the whole base system
>> weekly, if you're so inclined. I can't be objective, but I think in
>> this respect FreeBSD is much, much, much better.
> 
> Can you tell me more about what you mean here?  How is it much better?
> Easier kernel management?

All the information you need to rebuild the full userland *and* kernel
of the FreeBSD base system is described in `/usr/src/UPDATING'.  That's
not all there is, however.  The FreeBSD Handbook includes a wealth of
documentation about the same process too, including a fairly detailed
description of the steps documented in `/usr/src/uPDATING'.

There is a *lot* of standard documentation and information describing
how to rebuild the base system of FreeBSD from source.  What is even
more amazing, and intriguing about FreeBSD is that the precise steps to
perform an upgrade have changed *very* *little* since the days of my
first adventures into BSD-land.  There are only minimal changes, if any,
to the upgrade process since FreeBSD 3.2 was released more than a decade
ago...  This stability of `interface' is amazing, and it's what keeps me
thrilled with FreeBSD ever since :-)

- Giorgos




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