Updating i386 in-place to amd64

Guy Helmer ghelmer at palisadesys.com
Fri Dec 23 06:44:28 PST 2005

Ruslan Ermilov wrote:

>Hi there,
>Yesterday, I was playing updating the i386 6.0-STABLE in-place to
>amd64 (the system was initially running on i386 core, then the
>disk was moved to the Opteron server).  It succeeded, but there
>were some fun.  The idea I had is to:
>1) cross-build world and kernel
>2) install kernel
>3) install32
>4) reboot
>5) install world
>6) update /etc etc.
>7) remove i386 dust
>1-3 went fine.  On reboot, I was hoping that COMPAT_IA32 would be
>enough to run shell, make and mount* tools.  I booted into single
>user.  When it asked me to press ENTER for /bin/sh, I did this;
>it failed with SIGBUS.  I have waited some seconds, and when it
>asked it again, this time it worked (I verified several times, and
>it always worked like this).  i386 mount(8) did NOT work, so I
>had to use the "rescue" binary from /usr/obj to NFS mount /usr/src.
>After that, I fooled make(1) into thinking it runs on i386 and
>did an install of cross-built amd64 world (env MACHINE_ARCH=i386
>MACHINE=i386 TARGET_ARCH=amd64 make installworld).  This worked.
>I then updated /etc etc. from i386 to amd64 (by hand), and now
>I'm running a native amd64 world+kernel.
>P.S.  It would be nice to be able to run i386 world under the
>amd64 kernel, but a lot of things don't just work (of course
>mainly syscalls).
>P.P.S.  It would be nice to win a prize.  :-)
Wow, I'm impressed.  I was trying to do an automated, in-place i386 to 
amd64 upgrade (without source, though) back in August and never got to 
the point of successfully booting an amd64 kernel running i386 
binaries.  I did get a good idea, though, that I never followed up on: 
Matthew Fuller suggested hijacking the swap partition for a temporary 
amd64 root partition (message id 20050809124756.GA27425 at over-yonder.net).

Guy Helmer

More information about the freebsd-amd64 mailing list