i386 vs amd64?

Oliver Fromme olli at lurza.secnetix.de
Fri Aug 8 13:02:12 UTC 2008

Eugene Kazarinov wrote:
 > > [...]
 > > #  4.  `make installkernel KERNCONF=YOUR_KERNEL_HERE' (default is GENERIC).
 > > #  5.  `reboot' (in single user mode: boot -s from the loader prompt).
 > > #  6.  `mergemaster -p'
 > > #  7.  `make installworld'
 > > [...]
 > Pls tell me what for I need 5 step?

You need to reboot between installkernel and installworld
because the new world might not run correctly with an old
kernel, e.g. it might use new syscalls, or other changes
happened in the ABIs between userland and kernel.  That's
why you have to boot into the new kernel first.

Those kinds of changes happen rarely, especially on the
-stable branches, but they _do_ happen.

Single-user mode is required because old binaries might not
run correctly with the new kernel.  One example of such a
change happened on 2007-08-06 in RELENG_6 (see UPDATING):
An ioctl structure was changed for if_bridge, causing an
incompatibility in the ifconfig(8) utility.  This would
break multi-user boot with the old ifconfig binary under
the new kernel if you use any bridge interfaces.

Of course, omitting the single-user reboot will work most
of the time, because such ABI problems happen rarely.
But when the rare case happens, you'll run into trouble.
Therefore it is recommend to always reboot to single-user
mode, even if you believe that it won't be necessary.

Apart from that, it is usually good to have a quiescent
system while installing the new world.  Some programs might
not like it when files are replaced unexpectedly beneath
their butts.

 > #mergemaster -p && make -j8 buildworld && make -j8 buildkernel KERNCONF=KMD
 > && make installkernel KERNCONF=KMD && make installworld && mergemaster -iU

You can do "make kernel KERNCONF=...".  There's no reason
to do buildkernel and installkernel separately.  You can
also put KERNCONF=... in /etc/make.conf so you don't have
to type it each time on the commandline.

 > All of this I do remotely. Is this way very wrong? I understand that it's
 > not a "canonical" way but how I can do it right and remotely?

Get remote access to the console, either using a serial
console connection (physical or emulated), or remote
KVM access.  Or arrange to have somebody else perform
the action (i.e. "remote hands").

Best regards

Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart

FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd

"UNIX was not designed to stop you from doing stupid things,
because that would also stop you from doing clever things."
        -- Doug Gwyn

More information about the freebsd-stable mailing list