Lighthouse      Zap's Digital Lighthouse

Zap's Digital Lighthouse is
a Blosxom weblog for our digital outpost on the Internet

For info

Useful links:
The Reg
Wiki soekris

/FreeBSD (24)
/admin (1)
/blosxom (6)
/games (3)
/hardware (17)
/inet (4)
/misc (37)
/notwork (2)
/software (11)
/tech (1)

 2019 (1)   
 | July (1)
 2018 (6)   
 | December (1)
 | November (3)
 | January (2)
 2017 (4)   
 | December (2)
 | January (2)
 2016 (3)   
 | November (1)
 | October (1)
 | January (1)
 2015 (9)   
 | December (2)
 | November (1)
 | October (1)
 | June (1)
 | May (2)
 | February (1)
 | January (1)
 2014 (9)   
 | December (1)
 | October (1)
 | September (1)
 | August (3)
 | May (2)
 | April (1)
 2013 (20)   
 | October (3)
 | June (4)
 | May (2)
 | April (7)
 | March (1)
 | January (3)
 2012 (60)   
 | December (4)
 | October (1)
 | July (5)
 | June (7)
 | May (1)
 | April (6)
 | March (3)
 | February (14)
 | January (19)
 2011 (3)   
 | December (1)
 | November (2)
 2008 (1)   
 | October (1)



home :: FreeBSD :: i386-to-amd64

Mon, 31 Dec 2018

Moving a Running FreeBSD system from i386 to amd64

Recently, the little Soekris net6501 machine that I use as a home server for DNS and other similar functions decided to die after many years of useful service (it's a known problem of net6501 machines unfortunately; at some point they just self-brick and refuse to reboot :-(

So I took the Gigabyte Brix GB-BXi3-4010 that I had been using on my TV in the living room and simply removed the Windows 10 mSATA drive from it and inserted the mSATA drive from my net6501 into it and Poof! FreeBSD booted fine and It Just Worked.

Therefore in no time at all, poterne (my little home server) was back in action and no one at home even noticed, since we haven't been using the little Brix much since we bought a 4K TV that has Netflix and Youtube in firmware (maybe more on this some other day).

However, the Intel Core i3-4010U Processor at the heart of the little Brix computer is a 64-bit part, so I'd like to move FreeBSD on poterne from i386 to amd64 so that it can use all of its 8GB of RAM, since I've noticed that dmesg presently says:

real memory  = 8589934592 (8192 MB)
avail memory = 3574235136 (3408 MB)

So I searched the Internet for "freebsd upgrade i386 to amd64" and I found a few pages describing successful upgrades. Actually, most of them recommended not to do it and just reinstall, but I decided to go for it anyway.

The methods I found recommended upgrading by recompiling, so I fetched the FreeBSD 12.0-RELEASE installation media and installed the source code onto my little server. Then I started to recompile, but it took ages (maybe because I put the source and object files on the external USB disk?), so I decided to redeploy from RELEASE binaries:

cd /tmp
mdconfig -a -t vnode -f /tmp/FreeBSD-12.0-RELEASE-amd64-dvd1.iso
mount -t cd9660 -o ro /dev/md0 /mnt
cd /

The release tarballs are in /mnt/usr/freebsd-dist/ (such as src.txz, base.txz, etc.)

Of course, I then used rsync to make a backup of my server onto my local NAS machine, in case anything went wrong.

Then, I proceeded with the migration process based on recipes from various websites (notably

Turning the swap partition into a 'miniroot' seemed like a good idea, so I did that... My swap partition is is 6GB, so that worked well (6GB was enough for the 2GB of RAM I had on the Soekris net6501, but may could a bit short with the 8GB of RAM from the Brix... but then again, I probably won't need any swap space on the new machine with 8GB of RAM for a little headless server like poterne).

swapinfo -h
swapoff /dev/ada0p2
sed -i.bak -e '/swap/s;^;#;' /etc/fstab
newfs -U -n /dev/ada0p2
mount /dev/ada0p2 /media
... here, I extracted various files from the FreeBSD-12 release
... and copied various files from _/_ onto _/media_ (notably from /etc)
... sorry, I didn't write it all down :-)
file /mnt/bin/echo
cp /etc/fstab /media/etc/fstab

umount /mnt ; mdconfig -d -u0

After setting up the miniroot on /dev/ada0p2, I rebooted from there and mounted the real filesystems onto /mnt and copied over the files from the miniroot to /mnt.

I then rebooted with the new system and cleared the pkg cache and reinstalled all of my packages.

In the end, it worked fine and is now running in 64-bit mode.

/FreeBSD | Posted at 11:10 | permanent link