# new kernel config style (aka where did GENERIC go?)



## noodlefling (Mar 14, 2013)

I just updated from 7.4-RELEASE to 9.1-RELEASE using freebsd-update and there's no GENERIC in /usr/src/sys/i386/conf.

In fact, the only file in there is my old custom configuration (technically a link to a safe place that won't get blasted during /usr updates).

So, where's GENERIC, NOTES, and all that in 9.1?

Also some Googling led me to an explanation of a new way to do custom kernel configurations that works the way /etc/rc.conf overrides /etc/defaults/rc.conf.

This way your delta can stay the same while the base configuration can change whenever FreeBSD wants to.  Is there an official FreeBSD acknowledgement of this trick?  I only found it on a user's help page.

Thanks.


----------



## phoenix (Mar 14, 2013)

Read /usr/src/UPDATING to see whether or not the source tree was updated via freebsd-update.  I'm thinking it wasn't.

GENERIC is part of the source tree.  So updating the source tree will get you a GENERIC file.


----------



## noodlefling (Mar 14, 2013)

Ah, that makes sense.  There's only sys and contrib there, both largely empty.

In /etc/freebsd-update.conf it says:

```
# Components of the base system which should be kept updated.
Components src world kernel
```

I didn't mess with this from last time, so I thought it would grab fresh source too.

Is there some other switch to flip?


----------



## cpm@ (Mar 14, 2013)

Please, read for further information freebsd-update.conf(5).


----------



## noodlefling (Mar 14, 2013)

OK...it says:


```
Components      	      The parameters following this keyword are the
			      components or sub-components of FreeBSD which
			      will be updated.	The components are ``src''
			      (source code), ``world'' (non-kernel binaries),
			      and ``kernel''; the sub-components are the indi-
			      vidual distribution sets generated as part of
			      the release process (e.g., ``src/base'',
			      ``src/sys'', ``world/base'', ``world/catpages'',
			      ``kernel/smp'').	Note that prior to
			      FreeBSD 6.1, the ``kernel'' component was dis-
			      tributed as part of ``world/base''.
```

Shouldn't that mean all source should be downloaded?  I don't want a subset of /usr/src, I want it all.

Also, for reference:

```
# freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching metadata signature for 9.1-RELEASE from update5.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
Preparing to download files... done.

No updates needed to update system to 9.1-RELEASE-p1.
```


----------



## cpm@ (Mar 14, 2013)

```
# Components of the base system which should be kept updated.
Components src world kernel
```
The default options is to update the source code, the entire base system, and the kernel. Take a look to Updating and Upgrading FreeBSD.


----------



## noodlefling (Mar 14, 2013)

OK, I read it.  I still don't understand why it's not updating all (or any) source.

For kicks, I commented out the Components line to see if the default might work out to something other than "src world kernel", but it didn't change the behavior of freebsd-update.


----------



## cpm@ (Mar 15, 2013)

I don't know, which steps you followed for upgrade but generally is recommended doing as follow: upgrade to latest 7.x RELEASE > upgrade to 8.0 > upgrade to latest 8.x RELEASE > upgrade to 9.0 > upgrade to latest 9.x RELEASE. Finally upgrade and reinstall your ports. As @phoenix told, you also must read through /usr/src/UPDATING for any gotchas or recent changes. Please reads to make your upgrade flawlessly the release information (pay attention to errata notices) for each -RELEASE version of FreeBSD.

Note that you can rollback in case of problems, just run `# freebsd-update rollback`


----------



## noodlefling (Mar 15, 2013)

Well, I did jump from 7.4 to 9.1.  Next time I'll try to go the incremental update route that you suggest, although I haven't had problems jumping 2 versions in the past.  Maybe I was just lucky.  I don't think I want to rollback at this point, however, given that the ports took quite some time to update and are all presumably linked to the new libraries now.

As you'd expect in my situation, /usr/src/UPDATING doesn't exist on my system, but I did read the update pages on freebsd.org.  I didn't see anything about failing to grab source, it was all about changes to make once you had the new system in place.

At any rate, all the ports updated successfully (with the usual fight here and there) and it looks like the system is running fine.  At this point my question seems to be specifically how to force freebsd-update to fetch the source.

Well, that, and I'd still like to know more about the alleged new way of keeping a custom kernel current, but maybe that will become obvious when I manage to pull down kernel source.


----------



## cpm@ (Mar 15, 2013)

Quoted from FreeBSD 9.1-RELEASE Installation Instructions:


> The freebsd-update(8) utility supports binary upgrades of i386 and amd64 systems running earlier FreeBSD releases. Systems running 7.[34]-RELEASE, 8.[12]-RELEASE, 9.0-RELEASE, 9.1-BETA1, or 9.1-RC[123] can upgrade as follows:
> 
> First, ensure that your current system is up to date; a change was recently made to freebsd-update(8) (Errata Notice FreeBSD-EN-12:01.freebsd-update) which is needed in order to upgrade to FreeBSD 9.1-RELEASE.



This post will useful http://lists.freebsd.org/pipermail/freebsd-questions/2012-January/237426.html to get the FreeBSD 9.1-RELEASE sources.


----------



## noodlefling (Mar 15, 2013)

I'd done what you quoted from the 9.1 instructions, and had the most recent 7.4 patch level before updating.

I'd already downloaded the txz file as recommended in your linked thread (I found a similar recommendation when someone else had the same problem and couldn't force freebsd-update to get new source) and I think that will solve the problem on its own, without the cvs stuff confusing the issue.

After downloading the 9.1-RELEASE bundle, I tried another freebsd-update and it correctly grabbed the changes for patch level 1:

```
# freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching metadata signature for 9.1-RELEASE from update4.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
Preparing to download files... done.
Fetching 3 patches.. done.
Applying patches... done.

The following files will be updated as part of updating to 9.1-RELEASE-p1:
/usr/src/contrib/bind9/bin/named/query.c
/usr/src/lib/libc/gen/glob.c
/usr/src/sys/conf/newvers.sh
```

So it looks like from now on, it should work as advertised.  Not sure why it didn't grab source in the first place, but the remedy was ultimately fairly simple and the resulting behavior seems pretty sane.

Thanks for your help.

I found the original article I read about the new kernel system.  Has anyone else tried this, or is it just wishful thinking?

I suppose I change the kernel infrequently enough that the old method is fine with me, although this does seem like a pretty good idea.


----------



## cpm@ (Mar 15, 2013)

I have not tried it, but probably, the article's author can give you a proper reply and advanced tips


----------



## wblock@ (Mar 15, 2013)

noodlefling said:
			
		

> I found the original article I read about the new kernel system.  Has anyone else tried this, or is it just wishful thinking?



Oh... _that_ guy.


----------



## kpa (Mar 15, 2013)

noodlefling said:
			
		

> I found the original article I read about the new kernel system.  Has anyone else tried this, or is it just wishful thinking?
> 
> I suppose I change the kernel infrequently enough that the old method is fine with me, although this does seem like a pretty good idea.



Support for using an include directive in a kernel configuration file has been around for a long time, I guess at least from around FreeBSD 5, could be even older. It is wrong to call it a "new method", it's just creative use of available tools. I use it and it works just as advertised.


----------



## noodlefling (Mar 18, 2013)

I didn't realize the include thing had been around forever.  It seems such a smart trick, I'm surprised it's not the "official standard" way of doing things.  But it's easy to implement and presumably will be simpler to maintain.

Working on another server now and running into different issues with freebsd-update, but I'm hoping the lessons from the first test will pay off during troubleshooting.

Thanks, guys.


----------

