Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Feb 2012 19:21:44 -0800
From:      matt <sendtomatt@gmail.com>
To:        Doug Barton <dougb@FreeBSD.org>
Cc:        rank1seeker@gmail.com, hackers@freebsd.org
Subject:   Re: 8 to 9: Kernel modularization -- did it change?
Message-ID:  <4F3F1948.1080206@gmail.com>
In-Reply-To: <4F3EFB70.5000102@FreeBSD.org>
References:  <CAOjFWZ6WM1bLEwaBiUE50Gj4MrwxefDWFb85ecRtYkSDuZ0erg@mail.gmail.com> <mailpost.1329495670.7246668.67851.mailing.freebsd.hackers@FreeBSD.cs.nctu.edu.tw> <4F3E8225.9030501@FreeBSD.org> <E1RyRKJ-000Ioa-Ec@hans3> <4F3E8C26.3080900@FreeBSD.org> <E1RyRq0-000Iqy-3l@hans3> <4F3EA5F2.9070804@gmail.com> <E1RyTZo-000J0R-0Y@hans3> <4F3EAE5F.6070903@gmail.com> <E1RyUv6-000J5e-0E@hans3> <20120217.220802.988.2@DOMY-PC> <4F3EDEBC.7040703@gmail.com> <4F3EFB70.5000102@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 02/17/12 17:14, Doug Barton wrote:
> On 02/17/2012 15:11, matt wrote:
>> We have a modular kernel. It makes best-practices-sense to keep the
>> kernel true to what's required to boot and initialize the hardware
>> required to come up multiuser. I am actually against having sound in
>> there at all.
> I think the question is not, "What should be in the kernel?" but rather=

> "What should be on by default?" *How* those things are provided is a
> different question.
>
> One could argue that an intelligent installer combined with a more
> modular kernel would be the right answer.
>
>> However, as a compromise, if it must be in there, then put it in
>> loader.conf and not the kernel.
> I keep hoping that if I repeat this enough times that people will get
> the word. :)  Because loading modules through loader.conf is
> veeeeeerrrrryyyyyy sssssllllloooooowwwwww I added an rc.d script called=

> kld that will load the specified modules after disks are mounted. This
> is at least an order of magnitude faster. Look for kld_list in
> rc.conf(5) if you want the details, but the short version is that you
> just do something like, kld_list=3D"umass coretemp ichwd linux nvidia".=

> This is in all the -stable branches (including 7), is already in 9.0,
> and will be in 8.3.
>
> Obviously you have to have everything in kernel and/or loader.conf
> that's necessary to get your local disks available, and the system to
> the point where it can start running rc. But everything else can go in
> kld_list.
>
>
> hth,
>
> Doug
>

Imagine:
1.You've just completed the install
2.Dialog comes up, "Would you like to have FreeBSD detect unloaded
drivers and load them at next startup?" YES/NO
3.Reboot
4.If YES: detect unattached drivers like sound, firmware req'd wireless
etc, coretemp/amdtemp, smb/iic, wireless?, acpi_ibm/asus/etc and store
in kld_list rc variable
5.continue booting
6. If YES: last, one-time RC script. "FreeBSD booted successfully with
the autodetected modules. Make changes permanent? YES/NO
7. If YES store kld_list, if NO clear it (or remove additions :)
8. first login

In the example, you could just choose NO and manually compile your lean,
mean FreeBSD kernel. That would be the power user choice. Choosing YES
would be perfect for people just starting FreeBSD for the first time,
for machine images intended to be cloned and for live-cd/PXE
applications. In other words, you could choose YES and shutdown,
capturing the image right before autodetect.

If you had driver problems, you could boot single and change the rc.conf
kld_list. If there was a security problem with a sound driver, it might
not have even been loaded. If there was a suspend issue, etc...kldunload
works, and yet the driver may as well be in the kernel.

This way you can get GENERIC to be bloated in disk, network, usb, pci,
etc drivers needed to boot, and you can use modules for peripherals,
sensors, and non-boot essential hardwares. Best of both worlds, I
think...well it's a hypothetical, but I look forward to the next round
of flames, it's been educational :).

Matt






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