# freebsd-update capabilities



## mdudley (Jul 2, 2018)

I just pulled an old server out of storage and need to bring it on-line with the latest update.  It is running freebsd 7.2, 2009 installation.  I checked using "which" command and it has freebsd-update on it.

I am unclear if I can do a one shot and update the 7.2 to the latest 11. release, or if I will have to update to 8 then 9, then 10 and finally 11.

Thanks,

Marshall


----------



## SirDice (Jul 3, 2018)

mdudley said:


> I am unclear if I can do a one shot and update the 7.2 to the latest 11.


Normally this should be possible but a bug in freebsd-update(8) is going to prevent that from working. In order to work around that bug you will first need to upgrade to the latest 9.3 version, from there you can make the jump to 11.2. 

But, because this is such a major gap in versions you may want to consider just reinstalling. Older FreeBSD versions used a different partitioning scheme and you may run out of space on some of the partitions. FreeBSD 7.2 also used the old packages, so you would need to convert it to PKGNG too. 

https://www.freebsd.org/security/advisories/FreeBSD-EN-16:09.freebsd-update.asc


----------



## mdudley (Jul 3, 2018)

Looking at numerous upgrade instructions, which are not entirely consistent, I think I know the procedure to make this work.  Does this look right, or have I left anything out.


```
# : > /usr/bin/bspatch
# freebsd-update fetch
# freebsd-update install
# freebsd-update upgrade -r 9.3-RELEASE
# freebsd-update install
<reboot the system>
# freebsd-update install
# freebsd-update install
# freebsd-update upgrade -r 11.2-RELEASE
# freebsd-update install
<reboot the system>
# freebsd-update install
<rebuild third-party software>
# freebsd-update install
```

I am unclear if I need to do the nulling of the bspatch only once, or again before the 11.2 upgrade.

> FreeBSD 7.2 also used the old packages, so you would need to convert it to PKGNG too.  

I never used the binary packages, but installed everything using the ports "make install" method,  and have recently started using portmaster.  I assume this does not affect me, right?

Thanks,

Marshall


----------



## SirDice (Jul 3, 2018)

mdudley said:


> I never used the binary packages, but installed everything using the ports "make install" method, and have recently started using portmaster. I assume this does not affect me, right?


It certainly does affect you. Even if you build from ports it ends up being a package. In your case I would simply make a list of the currently installed ports/packages, remove the whole lot with `pkg_delete -a` and install new packages based on your previously created list once you're done with the upgrade of the OS.

But, in all honesty, you're probably better off just reinstalling the whole machine, OS and all.


----------



## jef (Jul 3, 2018)

Having been through many years of upgrades and knowing the significant changes in FreeBSD since the 7.x days, I agree that a _rebuild _of the system is most likely to be the most robust and time-effective approach.

In the time it takes to do _one _of the upgrades, you can probably tar up your existing data, capture the list of installed packages, install 11.2 from scratch, adjust the contents of /etc for boot and network access, install the packages you actually need (decruft, especially as many packages have changed major versions and dependencies), adjust the contents of /usr/local/etc, and restore your user data. Especially if you're not on ZFS and want to be (or are, but want to be beadm-compatible), this would be a good time!

_Edit: Not to mention that you probably can buy a pair of SSDs that outperform whatever spinning-platter drive is in that box quite inexpensively, improving performance and reducing heat and power consumption._

_Edit: I also vaguely remember the boot partition being enlarged years ago -- that might cause problems with a 7.x => 11.2 upgrade._


----------



## mdudley (Jul 3, 2018)

Ok, I have decided to simply install 11.2.  In the download instructions it says:

Computers with more than 3 GB of memory should use amd64. 

The dmesg.boot says that it has 3,326 MB, so that says I should use the amd64.

Then it says:

If the computer is an older, 32-bit only model, use i386. 

When I do a uname it says it is i368, which is interpret to mean that it is a 32 bit processor.

So one place says to use the amd64 and the other the i386.  Is there an image I can use on a system that has more than 3 GB but is 32 bit?

Thanks,

Marshall


----------



## jef (Jul 3, 2018)

uname will report on the running kernel, which may only be 32-bit. Look at /var/run/dmesg.boot to determine the *processor. *It may well be that you've got a 32-bit kernel that only "sees" 3 GB of RAM. From the processor you can determine if it supports 64-bit instructions and addressing.

Personally, I only run 64-bit images on 64-bit CPUs, including machines with under 3 GB of RAM. I think it's more that if you aren't using a 64-bit image _on a machine that supports 64-bit addressing _you often can't access more than 3 GB of RAM.


----------



## SirDice (Jul 3, 2018)

mdudley said:


> When I do a uname it says it is i368, which is interpret to mean that it is a 32 bit processor.


No, it tells you the kernel is for i386. An i386 kernel runs fine on 64 bit hardware, so it's no guarantee the CPU is limited to it. 



> So one place says to use the amd64 and the other the i386. Is there an image I can use on a system that has more than 3 GB but is 32 bit?


What is the CPU type? Because that will define if the machine is even capable of running 64 bit. If the CPU is 32 bit only the choice has been made for you


----------



## mdudley (Jul 3, 2018)

OK, thanks.  The dmesg didn't say if it was 32 or 64, but it did identify it as an intel E5200, which is a 64 bit.

Thanks,

Marshall


----------

