advice on compiling a new kernel & upgrading to the latest sources

Giorgos Keramidas keramida at ceid.upatras.gr
Sun Jan 14 20:26:19 UTC 2007


On 2007-01-14 11:56, Dino Vliet <dino_vliet at yahoo.com> wrote:
> Hi folks,
> from different sources I have written my steps to compile a new kernel
> & upgrade to the latest sources.

Your instructions, however, are different from what /usr/src/UPDATING
contains.

Please, make *sure* you read `/usr/src/UPDATING' very carefully.
Especially the commands of the section ``To upgrade in-place ...''
and *all* the footnotes they reference.

> Can anyone have a look into them and tell me if I won't run into
> troubles or if there are better ways to achieve the same?
>
> Upgrade procedure to the newest freebsd kernel and userland.
>
> 1.Make sure that the cvsup file (src-supfile) is adjusted in the right
> way.

That's ok.

> 2. Cd /usr/src/sys/amd64/conf which contains the file MYKERNEL

No it doesn't.  CVSup will delete the files it doesn't know about, so
you should *SAVE a copy* of your favorite kernel config file outside of
the source tree and *copy* it into `/usr/src/sys/amd64/conf' after CVSup
finishes updates the sources.

> 3.MYKERNEL is then adjusted, if necessary and copied to
> root/kernels/MYKERNEL

Nice :)

> 4.Copy everything under /etc to /root/etc

Why?  This isn't mentioned in `/usr/src/UPDATING' and it doesn't really
help much if you manage to trash your /lib and /usr/lib trees.  A better
suggestion is to ``make sure you have good level 0 dumps'', as suggested
by ``/usr/src/UPDATING''.

> 5.cvsup -g -L 2  src-supfile

You've deleted "MYKERNEL" here.

> 6. cd /usr/src
> 7. make cleanworld

The ``make cleanworld'' command is unnecessary if you haven't been
building stuff manually inside the tree.

> 8. make buildworld
> 9. make buildkernel KERNCONF=MYKERNEL

You can do both at the same time, with:

	# cd /usr/src
	# make KERNCONF=MYKERNEL buildworld buildkernel

> 10. Go into single user mode

You forgot to install the new kernel *before* rebooting here.  This
should be done with:

	# cd /usr/src
	# make KERNCONF=MYKERNEL installkernel

> 11. If the new kernel doesn't boot reboot and hit the space bar at the
> boot prompt and boot kernel.old If the new kernel boots OK mount -a 

No, "mount -a" is not enough.  Please read the `UPDATING' file.  The
full sequence of commands would be something like:

    (escape to loader prompt)
    (at the OK prompt of the boot loader, type):

	boot -s

    Then, when the system starts a /bin/sh shell instance, type:

	# adjkerntz -i
	# fsck -p
	# mount -u /
	# mount -a

> 12. cd /usr/src
> 13. make installkernel KERNCONF=MYKERNEL

It is too late to install a new kernel here, if you didn't do it
*before* rebooting into single user mode.  The whole 'exercise' of
installing the new kernel and booting into single user mode is meant to
provide a level of testing for the new kernel.

If you haven't installed it and booted into the old kernel, some things
may fail to install later on, you don't know if the new kernel actually
works, etc.

> 14. Go into single user mode

You *ARE* in single-user mode already.

> 15. cd /usr/src
> 16. mergemaster -p
> 17. make installworld
> 18. mergemaster -i
> 19. exit and reboot

These look fine.

> Is this ok? Or have I forgot about something?  I'm running a freebsd
> 6.1 machine on a amd64 system with an adjusted kernel called MYKERNEL.

Please read ``/usr/src/UPDATING''.  Then read it again.  Let the text
and all its footnotes sink in, and if you don't understand *why* a
particular step exists, or what a specific step is supposed to do, feel
free to ask.

We are here to help you update the system, but we are *also* here to
help you understand the why, when, how and what for of each step of the
process :-)

- Giorgos



More information about the freebsd-questions mailing list