Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Jan 2024 15:06:08 -0700
From:      Warner Losh <imp@bsdimp.com>
To:        Mario Marietto <marietto2008@gmail.com>
Cc:        David Chisnall <theraven@freebsd.org>, Mark Millard <marklmi@yahoo.com>, John F Carr <jfc@mit.edu>,  freebsd-arm <freebsd-arm@freebsd.org>, freebsd-hackers <freebsd-hackers@freebsd.org>,  FreeBSD Mailing List <freebsd-questions@freebsd.org>,  "freebsd-xen@freebsd.org" <freebsd-xen@freebsd.org>, FreeBSD Current <freebsd-current@freebsd.org>,  =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <royger@freebsd.org>
Subject:   Re: How to upgrade an EOL FreeBSD release or how to make it working again
Message-ID:  <CANCZdfqQfivfLiTO9dwgcygbq3AUhYFfu-E6VgPqyaFigEzxsw@mail.gmail.com>
In-Reply-To: <CA%2B1FSih9Du6b3xdDhXXdQfqtT53-HqUU1%2BihB9xYs9d%2BCX78iw@mail.gmail.com>
References:  <CA%2B1FSihU4WJWbbD9k9th4GXvyAKTL3URic-BAFUY7Og=wLn27A@mail.gmail.com> <CA390EE5-3339-4A15-8087-C28B309FA523@mit.edu> <CA%2B1FSih6j0QP9nKkxFCjMCeuMdvJca3WxVsi8%2BQaN2sV8YO-zw@mail.gmail.com> <D435604C-70F1-454D-B3AE-CD4D7C99D383@FreeBSD.org> <CA%2B1FSijqbF9CNw_oAHAEbLqb02Hq5L79WJV=RDfrtGgqgMp1%2Bg@mail.gmail.com> <CA%2B1FSih9Du6b3xdDhXXdQfqtT53-HqUU1%2BihB9xYs9d%2BCX78iw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--000000000000bd9405060f3f9248
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Jan 17, 2024 at 3:54=E2=80=AFPM Mario Marietto <marietto2008@gmail.=
com>
wrote:

> Hello to everyone.
>
> I'm trying to copy the Chromebook's SNOW source files that have been incl=
uded on the FreeBSD 11
> revision 269385 to the new FreeBSD 13 revision 373300. It has compiled co=
rrectly world,but when it
> starts to compile the kernel,it gives a lot of "unknown option" errors. I=
s there a way to fix them ?
>
> # svn co http://svn.freebsd.org/base/head@269385 ./head-269385 ; taken fr=
om 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/con=
f
> # cd ./head-373300
> # make TARGET_ARCH=3Darmv7 KERNCONF=3DCHROMEBOOK-SNOW buildworld buildker=
nel
>
> I tried also with : make TARGET_ARCH=3Darmv6 KERNCONF=3DCHROMEBOOK-SNOW b=
uildworld 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" lin=
e 341: SYSTEM_COMPILER: lib
> clang will be built for bootstrapping a cross-compiler.
> make[1]: "/mnt/zroot2/zroot2/OS/Chromebook/head-373300/Makefile.inc1" lin=
e 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 2=
024
> --------------------------------------------------------------
> =3D=3D=3D> CHROMEBOOK-SNOW
> mkdir -p /usr/obj/mnt/zroot2/zroot2/OS/Chromebook/head-373300/arm.armv7/s=
ys
>
> --------------------------------------------------------------
> >>> stage 1: configuring the kernel
> --------------------------------------------------------------
> cd /mnt/zroot2/zroot2/OS/Chromebook/head-373300/sys/arm/conf;  PATH=3D/us=
r/obj/mnt/zroot2/zroot2/OS/Ch
> romebook/head-373300/arm.armv7/tmp/bin:/usr/obj/mnt/zroot2/zroot2/OS/Chro=
mebook/head-373300/arm.armv
> 7/tmp/usr/sbin:/usr/obj/mnt/zroot2/zroot2/OS/Chromebook/head-373300/arm.a=
rmv7/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/zroot=
2/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/mn=
t/zroot2/zroot2/OS/Chromebo
> ok/head-373300/arm.armv7/sys/CHROMEBOOK-SNOW  -I '/mnt/zroot2/zroot2/OS/C=
hromebook/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=3D0
> #options    IPI_IRQ_END=3D15
>
>
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=E2=80=AFPM Mario Marietto <marietto2008@gmai=
l.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=E2=80=AFPM 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 =E2=80=98recent=E2=80=99 architecture, it=E2=80=99s one that=E2=80=99=
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 fro=
m
>>> =E2=80=98how do I do a new install of an old an unsupported version?'
>>>
>>> > I ask this because there is a huge difference here between FreeBSD an=
d
>>> 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 c=
an
>>> keep your machine off the internet,so you aren't scared that someone ca=
n
>>> compromise it. Totally prohibiting the users to use an old system,remov=
ing
>>> ports and packages is not a choice that I approve of. And I'm not the o=
nly
>>> 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 th=
ere
>>> 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 ol=
der
>>> checkout of the ports tree.  Poudriere will build a package repo for yo=
u.
>>>
>>> In both cases, if you=E2=80=99re using older versions you almost certai=
nly
>>> *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 maintainin=
g
>>> 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=E2=
=80=99re
>>> welcome to.  In the past, companies have picked up old branches and
>>> maintained them for customers that had a dependency on them.  If you wa=
nt
>>> to pay someone to maintain an old branch (and have deep pockets) then t=
here
>>> are probably a few companies that will happily take your money.
>>>
>>> Maintaining binaries is a slightly different issue, but it=E2=80=99s no=
t totally
>>> unrelated.  Keeping old packages around consumes disk space and costs t=
he
>>> project money (remember, every package is mirrored across the CDN, so t=
his
>>> isn=E2=80=99t just a single disk).  Even if it were free, philosophical=
ly, I think
>>> making it easy for users to install known-insecure software is a bad id=
ea
>>> 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-compil=
e
>>> from a fairly beefy cloud machine quite easily.
>>>
>>> It=E2=80=99s 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=E2=80=99s emulated.  Storing the results fo=
r 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 ow=
n
>>> money on doing it.
>>>
>>> David
>>>
>>>
>>
>> --
>> Mario.
>>
>
>
> --
> Mario.
>

--000000000000bd9405060f3f9248
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Wed, Jan 17, 2024 at 3:54=E2=80=AF=
PM Mario Marietto &lt;<a href=3D"mailto:marietto2008@gmail.com">marietto200=
8@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><div dir=3D"ltr"><div><div dir=3D"ltr"><pre dir=3D"ltr"><code>He=
llo to everyone.<br><br>I&#39;m trying to copy the Chromebook&#39;s SNOW so=
urce files that have been included on the FreeBSD 11 <br>revision 269385 to=
 the new FreeBSD 13 revision 373300. It has compiled correctly world,but wh=
en it<br>starts to compile the kernel,it gives a lot of &quot;unknown optio=
n&quot; errors. Is there a way to fix them ? <br><br></code></pre><pre><cod=
e># svn co <a href=3D"http://svn.freebsd.org/base/head@269385" target=3D"_b=
lank">http://svn.freebsd.org/base/head@269385</a>; ./head-269385 ; taken fro=
m this tutorial :<br><br></code><a href=3D"https://wiki.freebsd.org/arm/Chr=
omebook" target=3D"_blank">https://wiki.freebsd.org/arm/Chromebook</a><br><=
code>
# svn co <a href=3D"http://svn.freebsd.org/base/head" target=3D"_blank">htt=
p://svn.freebsd.org/base/head</a> ./head-373300
# cp ./head-269395/sys/arm/conf/CHROMEBOOK-SNOW ./head-373300/sys/arm/conf
# cd ./head-373300
# make TARGET_ARCH=3Darmv7 KERNCONF=3DCHROMEBOOK-SNOW buildworld buildkerne=
l<br><br>I tried also with : </code><code>make TARGET_ARCH=3Darmv6 KERNCONF=
=3DCHROMEBOOK-SNOW buildworld buildkernel</code><code>,but it <br>didn&#39;=
t make any difference.
<br></code></pre><pre><code>.....
.....
--------------------------------------------------------------
&gt;&gt;&gt; World build completed on Wed Jan 17 21:27:04 CET 2024
&gt;&gt;&gt; World built in 14203 seconds, ncpu: 16
--------------------------------------------------------------
make[1]: &quot;/mnt/zroot2/zroot2/OS/Chromebook/head-373300/Makefile.inc1&q=
uot; line 341: SYSTEM_COMPILER: lib
clang will be built for bootstrapping a cross-compiler.
make[1]: &quot;/mnt/zroot2/zroot2/OS/Chromebook/head-373300/Makefile.inc1&q=
uot; line 346: SYSTEM_LINKER: libcl
ang will be built for bootstrapping a cross-linker.

--------------------------------------------------------------
&gt;&gt;&gt; Kernel build for CHROMEBOOK-SNOW started on Wed Jan 17 21:27:0=
4 CET 2024
--------------------------------------------------------------
=3D=3D=3D&gt; CHROMEBOOK-SNOW
mkdir -p /usr/obj/mnt/zroot2/zroot2/OS/Chromebook/head-373300/arm.armv7/sys

--------------------------------------------------------------
&gt;&gt;&gt; stage 1: configuring the kernel
--------------------------------------------------------------
cd /mnt/zroot2/zroot2/OS/Chromebook/head-373300/sys/arm/conf;  PATH=3D/usr/=
obj/mnt/zroot2/zroot2/OS/Ch
romebook/head-373300/arm.armv7/tmp/bin:/usr/obj/mnt/zroot2/zroot2/OS/Chrome=
book/head-373300/arm.armv
7/tmp/usr/sbin:/usr/obj/mnt/zroot2/zroot2/OS/Chromebook/head-373300/arm.arm=
v7/tmp/usr/bin:/usr/obj/m
nt/zroot2/zroot2/OS/Chromebook/head-373300/arm.armv7/tmp/legacy/usr/sbin:/u=
sr/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/h=
ead-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 &#39;/mnt/zroot2/zroot2/OS=
/Chromebook/head-373300/sys/a
rm/conf&#39; -I &#39;/mnt/zroot2/zroot2/OS/Chromebook/head-373300/sys/arm/c=
onf&#39;  &#39;/mnt/zroot2/zroot2/OS/Chro
mebook/head-373300/sys/arm/conf/CHROMEBOOK-SNOW&#39;
WARNING: duplicate option `DEBUG&#39; encountered.
</code><br>
./head-373300/sys/arm/conf/CHROMEBOOK-SNOW: unknown option &quot;IPI_IRQ_EN=
D&quot; / &quot;IPI_IRQ_START / ARM_L2_PIPT&quot;<br></pre><pre>and so on..=
.<br><br></pre><pre>these options are included inside the file &quot;std.ex=
ynos5250&quot; (that I have copied from the old to the new<br></pre><pre>so=
urce code). What I&#39;m trying to do to stop these error is to comment the=
 offending lines :<br></pre><pre><br>nano ./head-373300/sys/arm/samsung/exy=
nos/std.exynos5250 :<br>
#options    IPI_IRQ_START=3D0<br>#options    IPI_IRQ_END=3D15<br></pre></di=
v></div></div></blockquote><div><br></div><div>These likely require changes=
 to adopt exynos to INTRNG.</div><div>=C2=A0</div><blockquote class=3D"gmai=
l_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,20=
4,204);padding-left:1ex"><div dir=3D"ltr"><div><div dir=3D"ltr"><pre>#optio=
ns    ARM_L2_PIPT</pre></div></div></div></blockquote><div>This is likely a=
 nop. It was for ARMv4/5 only and google tells me exynos5250 was a dual cor=
e Cortex A-15, which is armv7.</div><div><br></div><div>=C2=A0</div><blockq=
uote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1p=
x solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>but I susp=
ect 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. ...</div></div></=
blockquote><div><br></div><div>There&#39;s likely a lot of work here...</di=
v><div><br></div><div>Warner</div><div>=C2=A0</div><blockquote class=3D"gma=
il_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,2=
04,204);padding-left:1ex"><br><div class=3D"gmail_quote"><div dir=3D"ltr" c=
lass=3D"gmail_attr">On Mon, Jan 15, 2024 at 7:48=E2=80=AFPM Mario Marietto =
&lt;<a href=3D"mailto:marietto2008@gmail.com" target=3D"_blank">marietto200=
8@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><div dir=3D"ltr"><div>Hello.</div><div><br></div><div>Do you hav=
e 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. <br></div></=
div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On=
 Mon, Jan 15, 2024 at 7:15=E2=80=AFPM David Chisnall &lt;<a href=3D"mailto:=
theraven@freebsd.org" target=3D"_blank">theraven@freebsd.org</a>&gt; wrote:=
<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8=
ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 15 Jan 2024,=
 at 16:46, Mario Marietto &lt;<a href=3D"mailto:marietto2008@gmail.com" tar=
get=3D"_blank">marietto2008@gmail.com</a>&gt; wrote:<br>
&gt; <br>
&gt; The ARM Chromebook is based on armv7,it is still recent.<br>
<br>
For reference, the ARMv7 architecture was introduced in 2005.=C2=A0 The las=
t cores that implemented the architecture were released in 2014.=C2=A0 This=
 is not a =E2=80=98recent=E2=80=99 architecture, it=E2=80=99s one that=E2=
=80=99s 19 years old and has been largely dead for several years.<br>
<br>
&gt; But let&#39;s change perspective for a moment,don&#39;t think about th=
e ARM Chromebook. My question is : how to upgrade FreeBSD when it goes EOL.=
<br>
<br>
Generally, run `freebsd-update`.=C2=A0 This is a very different question fr=
om =E2=80=98how do I do a new install of an old an unsupported version?&#39=
;<br>
<br>
&gt; 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.=C2=
=A0 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,t=
here are cases when you need to do some experiments so that you can keep yo=
ur machine off the internet,so you aren&#39;t scared that someone can compr=
omise it. Totally prohibiting the users to use an old system,removing ports=
 and packages is not a choice that I approve of. And I&#39;m not the only o=
ne that thinks like this.<br>
<br>
If you want to use an old and unsupported version of FreeBSD, no one is sto=
pping you, but:<br>
<br>
=C2=A0- You will need to build the releases.=C2=A0 The source code is still=
 in git, you can.=C2=A0 The scripts for building the release images are rig=
ht there in the repo.=C2=A0 Just grab the relevant release or releng branch=
 and go.<br>
<br>
=C2=A0- You will need to build packages.=C2=A0 Newer versions of the ports =
tree will not be tested with the older release, so you may need to use an o=
lder checkout of the ports tree.=C2=A0 Poudriere will build a package repo =
for you.=C2=A0 <br>
<br>
In both cases, if you=E2=80=99re using older versions you almost certainly =
*will* have security vulnerabilities.=C2=A0 The project strongly advises yo=
u not to do this and not to blame us when you install known-insecure softwa=
re and end up compromised.<br>
<br>
The project does not have enough active contributors to keep maintaining th=
ings indefinitely.=C2=A0 This is why release have a five-year supported lif=
etime.=C2=A0 If you want to pick up an old branch and maintain it, you=E2=
=80=99re welcome to.=C2=A0 In the past, companies have picked up old branch=
es and maintained them for customers that had a dependency on them.=C2=A0 I=
f 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.=
<br>
<br>
Maintaining binaries is a slightly different issue, but it=E2=80=99s not to=
tally unrelated.=C2=A0 Keeping old packages around consumes disk space and =
costs the project money (remember, every package is mirrored across the CDN=
, so this isn=E2=80=99t just a single disk).=C2=A0 Even if it were free, ph=
ilosophically, I think making it easy for users to install known-insecure s=
oftware is a bad idea but if you want to keep a package repo with out-of-da=
te packages online indefinitely then you can.=C2=A0 You can run Poudriere a=
nd even cross-compile from a fairly beefy cloud machine quite easily.<br>
<br>
It=E2=80=99s been a while since I did a full package build, but I would gue=
ss that you could do a single package build (all ports) for about $50 on a =
cloud VM, more (2-3x) if it=E2=80=99s emulated.=C2=A0 Storing the results f=
or a small number of users will cost around $10-20/month.=C2=A0 If you thin=
k this is an important thing to do, then you are absolutely welcome to spen=
d your own money on doing it.<br>
<br>
David<br>
<br>
</blockquote></div><br clear=3D"all"><br><span class=3D"gmail_signature_pre=
fix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature">Mario.<br></d=
iv>
</blockquote></div><br clear=3D"all"><br><span class=3D"gmail_signature_pre=
fix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature">Mario.<br></d=
iv>
</blockquote></div></div>

--000000000000bd9405060f3f9248--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfqQfivfLiTO9dwgcygbq3AUhYFfu-E6VgPqyaFigEzxsw>