Re: How to upgrade an EOL FreeBSD release or how to make it working again

From: Warner Losh <imp_at_bsdimp.com>
Date: Thu, 18 Jan 2024 22:06:08 UTC
On Wed, Jan 17, 2024 at 3:54 PM Mario Marietto <marietto2008@gmail.com>
wrote:

> Hello to everyone.
>
> I'm trying to copy the Chromebook's SNOW source files that have been included on the FreeBSD 11
> revision 269385 to the new FreeBSD 13 revision 373300. It has compiled correctly world,but when it
> starts to compile the kernel,it gives a lot of "unknown option" errors. Is there a way to fix them ?
>
> # svn co http://svn.freebsd.org/base/head@269385 ./head-269385 ; taken from this tutorial :
>
> https://wiki.freebsd.org/arm/Chromebook
>
> # svn co http://svn.freebsd.org/base/head ./head-373300
> # cp ./head-269395/sys/arm/conf/CHROMEBOOK-SNOW ./head-373300/sys/arm/conf
> # cd ./head-373300
> # make TARGET_ARCH=armv7 KERNCONF=CHROMEBOOK-SNOW buildworld buildkernel
>
> I tried also with : make TARGET_ARCH=armv6 KERNCONF=CHROMEBOOK-SNOW buildworld buildkernel,but it
> didn't make any difference.
>
> .....
> .....
> --------------------------------------------------------------
> >>> World build completed on Wed Jan 17 21:27:04 CET 2024
> >>> World built in 14203 seconds, ncpu: 16
> --------------------------------------------------------------
> make[1]: "/mnt/zroot2/zroot2/OS/Chromebook/head-373300/Makefile.inc1" line 341: SYSTEM_COMPILER: lib
> clang will be built for bootstrapping a cross-compiler.
> make[1]: "/mnt/zroot2/zroot2/OS/Chromebook/head-373300/Makefile.inc1" line 346: SYSTEM_LINKER: libcl
> ang will be built for bootstrapping a cross-linker.
>
> --------------------------------------------------------------
> >>> Kernel build for CHROMEBOOK-SNOW started on Wed Jan 17 21:27:04 CET 2024
> --------------------------------------------------------------
> ===> CHROMEBOOK-SNOW
> mkdir -p /usr/obj/mnt/zroot2/zroot2/OS/Chromebook/head-373300/arm.armv7/sys
>
> --------------------------------------------------------------
> >>> stage 1: configuring the kernel
> --------------------------------------------------------------
> cd /mnt/zroot2/zroot2/OS/Chromebook/head-373300/sys/arm/conf;  PATH=/usr/obj/mnt/zroot2/zroot2/OS/Ch
> romebook/head-373300/arm.armv7/tmp/bin:/usr/obj/mnt/zroot2/zroot2/OS/Chromebook/head-373300/arm.armv
> 7/tmp/usr/sbin:/usr/obj/mnt/zroot2/zroot2/OS/Chromebook/head-373300/arm.armv7/tmp/usr/bin:/usr/obj/m
> nt/zroot2/zroot2/OS/Chromebook/head-373300/arm.armv7/tmp/legacy/usr/sbin:/usr/obj/mnt/zroot2/zroot2/
> OS/Chromebook/head-373300/arm.armv7/tmp/legacy/usr/bin:/usr/obj/mnt/zroot2/zroot2/OS/Chromebook/head
> -373300/arm.armv7/tmp/legacy/bin:/usr/obj/mnt/zroot2/zroot2/OS/Chromebook/head-373300/arm.armv7/tmp/
> legacy/usr/libexec::/sbin:/bin:/usr/sbin:/usr/bin  config  -d /usr/obj/mnt/zroot2/zroot2/OS/Chromebo
> ok/head-373300/arm.armv7/sys/CHROMEBOOK-SNOW  -I '/mnt/zroot2/zroot2/OS/Chromebook/head-373300/sys/a
> rm/conf' -I '/mnt/zroot2/zroot2/OS/Chromebook/head-373300/sys/arm/conf'  '/mnt/zroot2/zroot2/OS/Chro
> mebook/head-373300/sys/arm/conf/CHROMEBOOK-SNOW'
> WARNING: duplicate option `DEBUG' encountered.
>
> ./head-373300/sys/arm/conf/CHROMEBOOK-SNOW: unknown option "IPI_IRQ_END" / "IPI_IRQ_START / ARM_L2_PIPT"
>
> and so on...
>
> these options are included inside the file "std.exynos5250" (that I have copied from the old to the new
>
> source code). What I'm trying to do to stop these error is to comment the offending lines :
>
>
> nano ./head-373300/sys/arm/samsung/exynos/std.exynos5250 :
>
> #options    IPI_IRQ_START=0
> #options    IPI_IRQ_END=15
>
>
These likely require changes to adopt exynos to INTRNG.


> #options    ARM_L2_PIPT
>
> This is likely a nop. It was for ARMv4/5 only and google tells me
exynos5250 was a dual core Cortex A-15, which is armv7.



> but I suspect that a lot of options will be missing and the more comments
> I will make,the more the chance that it will not work will increase. ...
>

There's likely a lot of work here...

Warner


>
> On Mon, Jan 15, 2024 at 7:48 PM Mario Marietto <marietto2008@gmail.com>
> wrote:
>
>> Hello.
>>
>> Do you have deleted forever the set of packages and ports for FreeBSD 11
>> or you keep them stored in DVDs that I can buy or download for a small
>> amount of money ? If yes,where ? To rebuild everything is out of my
>> expertise.
>>
>> On Mon, Jan 15, 2024 at 7:15 PM David Chisnall <theraven@freebsd.org>
>> wrote:
>>
>>> On 15 Jan 2024, at 16:46, Mario Marietto <marietto2008@gmail.com> wrote:
>>> >
>>> > The ARM Chromebook is based on armv7,it is still recent.
>>>
>>> For reference, the ARMv7 architecture was introduced in 2005.  The last
>>> cores that implemented the architecture were released in 2014.  This is not
>>> a ‘recent’ architecture, it’s one that’s 19 years old and has been largely
>>> dead for several years.
>>>
>>> > But let's change perspective for a moment,don't think about the ARM
>>> Chromebook. My question is : how to upgrade FreeBSD when it goes EOL.
>>>
>>> Generally, run `freebsd-update`.  This is a very different question from
>>> ‘how do I do a new install of an old an unsupported version?'
>>>
>>> > I ask this because there is a huge difference here between FreeBSD and
>>> Linux. Today if you need to use , for example Ubuntu 14.0, you can use it
>>> as is. Yes,there will be a lot of bugs,but it will work without crashes.
>>> But if you want to use an old FreeBSD system,nothing will work for you.
>>> So,do you know some methods to install even packages or ports ? You
>>> know,there are cases when you need to do some experiments so that you can
>>> keep your machine off the internet,so you aren't scared that someone can
>>> compromise it. Totally prohibiting the users to use an old system,removing
>>> ports and packages is not a choice that I approve of. And I'm not the only
>>> one that thinks like this.
>>>
>>> If you want to use an old and unsupported version of FreeBSD, no one is
>>> stopping you, but:
>>>
>>>  - You will need to build the releases.  The source code is still in
>>> git, you can.  The scripts for building the release images are right there
>>> in the repo.  Just grab the relevant release or releng branch and go.
>>>
>>>  - You will need to build packages.  Newer versions of the ports tree
>>> will not be tested with the older release, so you may need to use an older
>>> checkout of the ports tree.  Poudriere will build a package repo for you.
>>>
>>> In both cases, if you’re using older versions you almost certainly
>>> *will* have security vulnerabilities.  The project strongly advises you not
>>> to do this and not to blame us when you install known-insecure software and
>>> end up compromised.
>>>
>>> The project does not have enough active contributors to keep maintaining
>>> things indefinitely.  This is why release have a five-year supported
>>> lifetime.  If you want to pick up an old branch and maintain it, you’re
>>> welcome to.  In the past, companies have picked up old branches and
>>> maintained them for customers that had a dependency on them.  If you want
>>> to pay someone to maintain an old branch (and have deep pockets) then there
>>> are probably a few companies that will happily take your money.
>>>
>>> Maintaining binaries is a slightly different issue, but it’s not totally
>>> unrelated.  Keeping old packages around consumes disk space and costs the
>>> project money (remember, every package is mirrored across the CDN, so this
>>> isn’t just a single disk).  Even if it were free, philosophically, I think
>>> making it easy for users to install known-insecure software is a bad idea
>>> but if you want to keep a package repo with out-of-date packages online
>>> indefinitely then you can.  You can run Poudriere and even cross-compile
>>> from a fairly beefy cloud machine quite easily.
>>>
>>> It’s been a while since I did a full package build, but I would guess
>>> that you could do a single package build (all ports) for about $50 on a
>>> cloud VM, more (2-3x) if it’s emulated.  Storing the results for a small
>>> number of users will cost around $10-20/month.  If you think this is an
>>> important thing to do, then you are absolutely welcome to spend your own
>>> money on doing it.
>>>
>>> David
>>>
>>>
>>
>> --
>> Mario.
>>
>
>
> --
> Mario.
>