How to perform a system-only re-install i386->amd64

Ashley Moran ashley.moran at
Wed Nov 30 11:46:28 GMT 2005

I'm sure someone has done this before but I wanted to run my plan past 
everyone to see if I've thought of everything.

Yesterday one of our development servers (running FreeBSD 6-release) croaked.  
It was an old old old machine and we ended up replacing the board and CPU 
with an MSI Neo2 Platinum (nForce 3 chipset) and Athlon 64 setup.  We just 
swapped the board and re-connected the old array.  It works fine but 
obviously it's running in i386 mode.  I don't need to run i386 compatability 
on this machine because I don't need to run any Linux binaries.

I've googled and read through the amd64 list and the consensus seems to be 
that (a) amd64 is stable enough for production use and (b) very fast.  I've 
heard that it's easiest to reinstall from scratch rather than do a source 
upgrade in place.  So I've downloaded the amd64 ISOs.

I tried to prepare for this situation when I first installed the machine.  I 
have each of these in separate partitions:


Here is my plan:

* # pkg_deinstall -a	to get rid of all my i386 software

* backup /etc to /var/i386etc

* Reboot from FreeBSD 6 amd64 disc 1

* Choose Standard installation

* On the partitioning screen, reformat the / partition and set the others
  up to match the current layout (I've never done this but I hope it's

* Install exactly how I did before (they will both be 6-RELEASE so
  shouldn't be a problem)

* Reboot into the amd64 system

* Copy /var/i386etc over /etc
  Here I'm assuming that the configuration is architecture-independent-
  is this correct?  I have a tarball I made of the i386 6-REL /etc files
  so I can diff them before I install mine anyway

* Recompile the kernel with i386 compatability (or can this be added during

* # cd /var/db/portsnap/* && rm -R INDEX files serverlist tINDEX tag && \
    portsnap fetch && portsnap extract
  to get me the amd64 ports tree

* Copy the i386 package I made on my desktop for the BSD jdk14 to the server
  and install from the package

* Compile a native jdk15

* Deinstall jdk14

* Re-compile the kernel without x86 compatability, install and reboot

* Reinstall all ports by hand- they should assume their previous roles as 
  all the configs and data should be in /usr/local and

I appreciate that this is quite a long question and probably has been answered 
before in pieces but I'd be grateful if anyone can pick holes in it before I 
start so I don't waste all Sunday afternoon!


More information about the freebsd-questions mailing list