FreeBSD/mipsのこと

FreeBSDのmipsサポートをやめるってWarnerから話が流れてます。

https://lists.freebsd.org/archives/freebsd-arch/2021-October/000107.html

FreeBSD/mipsは元々Juniper Systemsが書いていたコードを2007年くらいにCisco SystemsにいたWarnerがメインラインに突っ込んだのが原型のようです。

https://news.mynavi.jp/article/20090330-asiabsdcon5/

初期のSOCのターゲットはBroadcom,IDT,Atherosだったようですが、その後Atherosが開発が進んだようです。これはAtherosのSOCの2世代目をターゲットにしていたのでモジュールのメモリも大きいものが多かったので実用になったのではないかと思われます。その後rayなどがRalinkのサポートを入れて、9の頃ZRouter.orgが始まり、10でEtherswitchが入り、11でMediatekが再実装され、12でBroadcomを再実装したbhndが入りました。

FreeBSDのmipsサポートはかなり遅く始まったので、2000年以降のmips32(4k)のみのサポートになっています。

14Rで消される事になりますが、FreeBSD/mipsは13CURRENTの途中でgcc4からclangに変更され、その時点でカーネルが落ちるようになったので、12Rが実質的最後のリリースになります。

OSのアーキテクチャサポートは大半はkernelの中のサポートによります。FreeBSDのkernelは現在古くからのhintsに基づくシステムとLinuxと同様にFDTに基づくシステムが混在しています。FDT向けの修正がhintsの方を壊したりすることが発生していて、いろいろやっていくのは難しい状態です。

gccでのクロスのフルビルドは1時間以内でできるのですが、clangになってパラビルドしても5時間近くかかるようになりました。

佐藤先生から誰かが面倒見るんだったら、続けられるんじゃないと言われましたが、ZRouter.orgを始めたウクライナのrayは忙しくて対応できないとのことでした。

mips関係のcommiterのmentorだったadrianは上のメールにありますが、敵前逃亡してしまいました。adrianは元々rayと一緒にZRouter.orgをやっていたようなのですが喧嘩別れしたようで、どうも信用できないと思ってましたが、やっぱりでした。

後から調べて知ったのですが、ZRouter.orgはmipsとEthernet switchをターゲットにして始められたですが、rayが手がけたRalinkとBroadcomは別の実装になりEthernet switchはrayの実装が採用されず、geomの圧縮は名前が変わったりでどうも陰謀の香りを感じてしまいます。

rayはadrianと軋轢はないし、今は古いmipsより新しいコンピュータに興味があるって言ってます。

5年くらい間に私がいじりだす前にはZRouter.orgは、2,3年放置状態な上にhgにあった独自ソースツリーでのビルドでした。これを私がreyのEthernet switchの実装を抜いたりして、headに戻してビルドできるようにしました。rayはかなり以前に興味を失っていたのかもしれません。

clangのmipsサポートは怪しいという話がありますが、14CURRENTでカーネルが落ちる問題はMDのUFSをマウントするところで、bootしてからかなり後なのでclangの問題というよりFreeBSDの潜在的な問題の可能性が高いと思います。詳細が思い出せないのですが、以前も同じ所で落ちる現象があって、いつの間にか解決した事があったような気がします。

mipsアーキテクチャは今後新しいプロダクトはでないですが、開発が続けられないと脆弱性が見つかるなどの問題が考えられます。

しかし不特定多数がログインしたりしない。インターネットの直接つながっていない。不特定多数にサービスをしてない。などの場合には致命的な脆弱性が見つかる可能性はきわめて低いかと考えられます。

12Rで使っていくことはできますが、心残りは以下のようなことです。

* mipsアーキテクチャのサポートはヨーロッパの人が多くその人たちがFreeBSDから離れていくかもしれない
* FDT用のgeom_mapにオートスキャンを入れたかった
* Ralink系のifのrtが若干不安定
* RalinkのSPIドライバが複数のCSが使えない
* RalinkのGPIO v1にPPSサポートを入れたが、v2に入れられなかった
* mips/mediatekはまだ5年くらいしかたってないし、面白い実装で完成度も高くもったいない
* MIPS16のサポートしたい
* ASE DSPをサポートしたい
* 24K,74Kの最適化がしたい
* gcc,binutilをアップデートしたい
* USBサポートが不安定
* soundがなんかおかしい
* athrosのmrubyのパフォーマンスが芳しくない
* BHDNがifのサポートがなく未完成
* EtherSwitchの動作環境が無くなる
* FreeBSDの32Bitサポートが形骸化する
* BIG EndianとLittle EndianのCPUが存在する珍しいアーキテクチャのサポートが無くなる
* armな人にはいい加減な人もいてFreeBSDの行く末が心配
* clangは結構怪しくてFreeBSDが一緒に心中してしまわないか心配
* などなど

ZRouter.orgみたいなものはNetBSDの方が親和性が高いのではという意見もありますが、ZRouter.orgには二つの側面があり、一つはビルドシステムで、もう一つは実行環境になります。一からNetBSDのビルドシステムを勉強して作りこんでいくのは現実的じゃないし、実行環境として使っているrayが作ったISO9660圧縮fsやgeom_flashmap、またunionfsみたいものがNetBSDになければそれも作らなければならないので、ほぼ不可能です。

大手メーカーのCPUはパフォーマンスのために小細工をしがちなのですがmipsは良くも悪くも小細工がないところが好きだったりします。また2000年以降の半導体はずいぶん消費電力も小さくなっていたり、ずいぶんたくさん生産されており、なんらか使い続けられる方法を考えたいと思っています。

先日私がi386で作ったesp-targもpcmciaのサポートが12Rで終わっているので12Rでしか使えません。

いろいろデバイスの削除なども行われているのでi386の実機サポートも実質12Rで終了とも思えます。

amd64の13Rで12Rはビルドできるが将来のバージョンでは保障されない。もしビルドできなくなったときはBastilleBSDなどで13Rを再現すればよいのかもしれない。

12RはまだSTABLEですがEOL(2024 年 6 月 30 日)になったらforkしていじっていくことも考えたいと思います。

以前勤めていたY社のプロダクションサーバはFreeBSD 6で終わり(peterさんが6のまましばらくメンテしてました)だったのですがZRouter.orgは12で終わりになりそうです。

いまから思えばclangの採用でFreeBSDは大きくバランスを崩してしまったようにも思えます。とはいえclangのmipsを使ったプロジェクトはほとんど無く、使われてないとおかしくなっても気付かず、直せない状態になってサポート終了となる可能性もあり、clangのためにもならない気がする。

12がリリースされた直後くらいにamd64を実装したpeterさんがバージョンを再設計してはツイートしてたのですが、今らか思えば大変重要な助言だった気がします。

3年くらい前に4Kを消すとか言って、結局できなかったんだけど、これ自体ほとんど意味無いし、今回いきなり全部消すっていうのは、やっぱりなんらかの陰謀があるんじゃなんじゃないかと思う。

11R,12Rで作られた物もあるのに、あまりにも急すぎる気がします。なんらかの力が働いたのではないかと考えています。FreeBSD/mipsにはヨーロッパの旧東側の地域の開発者がいろいろ関わっていました。おそらくFreeBSDのスポンサーの米国国防省がそのことをあまりよく思っていない事も、今回の決定の要因ではないかと想像されます。

敵前逃亡したメンターの人も止めるってのが先にあって、被害者だったのかもしれません。

FreeBSDプロジェクトは死に体で、先細りで非常に厳しい状態であることは理解できますが、一段とプロジェクトは縮小する事になり、なんとも寂しいもかぎりです。