RHEL互換ディストリの作り方を手探ってみる1(大晦日ハッカソン)
- 2020年はSTAY HOMEのため、帰省できないため何かやりたかった
- ひとりでもくもく会をやってもいいのだが、折角だから大晦日ハッカソンに参加してみる
- 自己啓発として、RHEL互換(かも知れない)ディストリの作り方を手探ってみることにした
大晦日ハッカソン
2012年より、毎年大晦日に開催されているイベントっぽい何かです。
omisoka-hackathon.connpass.com
内容としては、
以上。
2020年は、コロナ渦対策のSTAY HOMEで、旅行も帰省もできないので。ちょっと参加してみようと思ったのです。
何をやるか
とはいいつつも、何かをこれまで作ってきたわけでもなく、何か作りたいものがあるわけでもない。1日で材料から集めてモノを作っても、中途半端になるに決まってる。
そこで、「何かモノを作るのではなく、知見をためよう。知見であれば中間報告であっても、ブログで公開するなり、会社の勉強会で語るなりすれば、それはれっきとした成果物になるだろう。」と言い訳をして、手を動かして何かを手探っていこうと思った次第です。
ネタ探し
1ヶ月前のとある出来事
ところで、1月ほど前にある出来事があり、業界でちょっとした騒動になりました。
超意訳すると、RHEL*1という商用Linuxディストリビューションのクローンとして無償公開されていた CentOS が、突如2021年に開発終了するとアナウンスされたものです*2。
元々、CentOS はクローン元の RHEL と同様に2028年まで開発されると予想されていたので、これに期待して構築されたシステムは RHEL の購入、 Oracle Linux などの他のクローンへの移行、Debian などの他のディストリへの移行のいずれかを強いられることになりました。
RHELクローン(互換ディストリビューション)とは
そもそも、RHELクローンとは何でしょうか。
RHELは商用のLinuxディストリビューションですが、製品の多くはオープンソースプロジェクトの成果物のうえに成り立っています。そのため、RHEL はそれ自身もオープンソースとして公開されています*3。
そして、RHEL の EULA*4には、以下の記載があります。
1. License Grant. Subject to the following terms, Red Hat, Inc. ("Red Hat") grants to you a perpetual, worldwide license to the Programs (most of which include multiple software components) pursuant to the GNU General Public License v.2. The license agreement for each software component is located in the software component's source code and permits you to run, copy, modify, and redistribute the software component (subject to certain obligations in some cases), both in source code and binary code forms, with the exception of (a) certain binary only firmware components and (b) the images identified in Section 2 below. The license rights for the binary only firmware components are located with the components themselves. This EULA pertains solely to the Programs and does not limit your rights under, or grant you rights that supersede, the license terms of any particular component. 2. Intellectual Property Rights. The Programs and each of their components are owned by Red Hat and other licensors and are protected under copyright law and under other laws as applicable. Title to the Programs and any component, or to any copy, modification, or merged portion shall remain with Red Hat and other licensors, subject to the applicable license. The "Red Hat" trademark and the "Shadowman" logo are registered trademarks of Red Hat in the U.S. and other countries. This EULA does not permit you to distribute the Programs or their components using Red Hat's trademarks, regardless of whether the copy has been modified. You may make a commercial redistribution of the Programs only if (a) permitted under a separate written agreement with Red Hat authorizing such commercial redistribution, or (b) you remove and replace all occurrences of Red Hat trademarks. Modifications to the software may corrupt the Programs. You should read the information found at http://www.redhat.com/about/corporate/trademark/ before distributing a copy of the Programs.
要するに、オープンソースライセンスの下に公開されているソースコードは、RedHatの商標やロゴ、その他独占的な権限を有するものを全て排除した場合に限り、そのライセンスに抵触しない範囲で再利用して良いことになっています。
そこで、RHEL のソースコードから RedHat が権利を有するものを削除し、再配布されている Linux ディストリビューションがあります。それが、RHEL クローンと呼ばれるものです。
過去には様々な RHEL クローンがありましたが、2020年現在、プロダクトに耐えうるものは Oracle Linux と Asianux です*5。Asianux は有償のため、無償のものは Oracle Linux のみです。なお、このアナウンスを受けて、CentOS に代わる新たな RHEL クローンを作ろうというプロジェクトがいくつか立ち上がっています。
RHELクローンの作り方
さて、やっと本題になりました。大晦日ハッカソンでは、この RHELクローンの作り方を手探っていくことにします。
大まかには以下の流れになるはずです。
- RHEL のサブスクリプションを得る
- RHEL のソースコード (SRPM) を入手
- ソースコードの全てから、RedHat に関わる商標やその他権利を有するモノを仕分け・排除
- 上記の結果、動かなくなってしまうものがあれば、それを補填するモノを開発
- リビルド
SRPMを入手してビルドするだけなら、RHEL を開発で使ったことがある人なら難なくできる作業です。しかし、RedHat が権利を持つものを削除したうえで、RedHatの権利を侵害すること無く同等の機能を補填し、RHEL と同じ動きをするものを作るとなると、簡単にはいきません。
RHEL クローンは、莫大な資金と人的リソースを費やして開発されているものなので、大晦日にちょっと手を出したくらいで何か形になるとは思いません。ひとつでも知見を得られれば、それで成功だと思っています*6。
おわりに
- 2020年の大晦日ハッカソンでは、RHEL クローン(RHEL 互換ディストリビューション)の作り方を手探っていく
- 目標は、何らかの知見を得ることで、RHEL クローンを作ることでは無い(そもそも無理)
- 得られた知見は、別途整理して、何らかの形でまとめる
*2:より正確には、RHEL のクローンとしての CentOS が開発終了。RHEL のアップストリームとしての CentOS Stream は継続される。
*3: RHEL のサブスクリプションを持っている人には全てのソースコードを詰め込んだ 20GB強もの ISO ファイルがダウンロードできる
*4:End User License Agreement。https://www.redhat.com/ja/about/agreements
*5: ただし、汎用品として。他にも Red Hawk Linux などの特定用途に特化した製品はあります。
*6:そもそも環境の構築方法を調べるだけで1日終わるかもしれないし…