ERROR: version of config(8) does not match kernel!
I’ve seen this problem occur with other people when I was upgrading from 4.4 to 4.5. And now I’ve encountered this joy. Personally, I blame my not being on a bike since early December. That’s two months without a ride!
In reality, I noticed that the FreshPorts2 development box wasn’t responding to the keyboard after being rebooted. That was because the keyboard wasn’t plugged in during the reboot. See the article on headless servers for more information on that topic. I modified the kernel configuration file according to that article, and then issued the usual command:
# config -r GUS Removing old directory ../../compile/GUS: Done. ERROR: version of config(8) does not match kernel! config version = 400019, version required = 400018 Make sure that /usr/src/usr.sbin/config is in sync with your /usr/src/sys and install a new config binary before trying this again. If running the new config fails check your config file against the GENERIC or LINT config files for changes in config syntax, or option/device naming conventions
The box in question (GUS) was upgraded to 4.5-STABLE using the “Build world on your fast box, install on your slow box” strategy which I’ve come to know and love. That means the kernel source code on GUS was out of date. I had two choices:
- Update the kernel source on GUS
- Compile a new kernel on the XEON and make install that one
I chose to do the second option. The first option may well have worked, but it runs the risk of breaking things that rely on binary interfaces between userland and kernel.
I went back to the main box and rebuilt a new kernel according the the instructions I wrote ages ago. When I looked at the kernel config file, I noticed that the keyboard option I was looking for was already there. But to prove that the problem was an out of date source tree, I did cvsup src-sys just for fun. To do that, I took did this:
cp /usr/share/examples/cvsup/stable-supfile kernel-supfile
src-allis commented out.
- also uncomment
It is not necessary to cvsup the entire source tree here as I only want to cvsup the kernel source. That will prove my point that it’s just the kernel source out of date.
Then I cvsup’d my [kernel] source tree:
cvsup -h xeon kernel-supfile
Then the proof that all was now well:
# config GUS Don't forget to do a `make depend'' Kernel build directory is ../../compile/GUS
NOTE: I did not build a kernel from this source. Nor do I suggest you do. This kernel source is newer than my userland. They should be the same age. I went back to my XEON box and built the source the right way.