Updating i386 in-place to amd64
ghelmer at palisadesys.com
Fri Dec 23 06:44:28 PST 2005
Ruslan Ermilov wrote:
>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
>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
>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).
More information about the freebsd-amd64