4

I need to transfer my FreeBSD 7.0 i386 server to another hosting. I would like to also upgrade to the 64bit version (to eliminate 4GB memory limit). The server has common open source software: apache2, mod_perl, mysql51, perl5, python26.

I wonder if it will transfer smoothly to the 64bit server. Are there any known gotchas/limitations on the 64bit FreeBSD ?

Eugene Yarmash
  • 2,433
  • 5
  • 34
  • 54

3 Answers3

4

All the configuration and data files are the same on i386 and amd64. The same procedure for transferring the site to another server would work just fine here.

Make sure you backup the existing system. Verify that backup! Making two backups isn't a bad idea either. Exporting a list of the ports you have installed is a good idea too (pkg_info -ao | grep "/" > PkgList.txt or similar).

Depending on what version you're running now, and exactly what software, you may be able to in place upgrade to the new version; just install the base and kernel. Sometimes that's enough, usually you have to rebuild the ports for the new libraries (portupgrade -af after installing the portupgrade port). If you want to try this route, I highly suggest using one of your backup copies to try this on another machine before doing it on the live server.

Chris S
  • 77,945
  • 11
  • 124
  • 216
0

Since almost everything (as least more than any other OS pretty much) is backwards compatable, you can install your old stuff in a child directory, and then just chroot it to keep everything running hopefully identically to how it ran before. A jail would work better, but isn't needed.

Be sure to get the compat4, compat6, compat-whatever compatability ports to your old dynamically linked binaries compatible.

In some case, I just play it really safe by making staticly linked and compiled binaries in the old system (or in the chroot'ed system) and then they don't rely on anything and can be stuck in any version of FreeBSD, newer or older.

Things have gotten kind of funky for me with ldconfig -32. It's a new version of ldconfig that lets 32-bit programs use special libraries to interact with 64-bit libraries. It can be a bit fustrating if it goes wrong, since for some bizzare reason they didn't make a plain-text version of 64-bit configuration file like they did for the 32-bit one.

If you're relying on ports and precompiled software, you should be fine though.

But if you're curious, ldconfig -r and ldconfig -32 -r will show you what libraries it's using.

It's not that uncommon for me to be missing a library when switch between versions (because I'm dyslexic and mess around a lot), so I often just keep running the program, getting a ".so can't found" message, and then copying ".so" over from the old OS to the new one and putting it /usr/lib or whatever and then repeat for <whatever12.so> etcetera until it works.

But for the sake of keeping track of what I'm doing (not making a bigger mess) I'll rename the files when moving them and making a symlink back so that it's effectively documented right in the output of "ls".

cp oldmachine/bloatedfont.so /usr/lib/bloatedfont.from-my-old-machine.so

cd /usr/lib

ln -s bloatedfont.from-my-old-machine.so bloatedfont.so

So course, there are plenty of way to script and automate this. Not sure what user friendly software there might be for the sort of patch-job, but again, you really shouldn't need it. :-)

Android 3
  • 1
  • 1
0

I think all you need is to perform backup for configuration files like /etc and /usr/local/etc, also backup /usr/ports and /usr/src to save bandwidth usage later, and don't forget to back also /var. In FreeBSD 64Bit I face some ports work only in i386 architecture.

SIFE
  • 121
  • 3