2019 年 10 月 23 日
組込みOS最前線 #3 OSS パッチ提供の舞台裏
組込みOS最前線 #3 セミナーに参加した記者による各セッションのレポートをお届けします。
OSSパッチ提供の舞台裏
サイバートラストでは、IoTや組込みLinuxの最新動向を紹介するセミナーを開催しています。組込み機器におけるLinux OSの利用を推進するために、組込みOSや関連技術、コミュニティの動向などを共有することを目的にしたものです。
ここでは、6月21に開催されたセミナー「IoTデバイス保守編」から、豊岡拓氏のセッション「OSSパッチ提供の舞台裏」の模様をレポートします。
豊岡氏のセッションでは、LinuxなどのOSSについてパッチをアップストリームに提供する意義と、実際にLinuxカーネルにパッチを提供する方法について解説されました。
製品メーカーにとってOSへのパッチは「非競争領域」
豊岡氏は、組込みLinuxの構成から話を始めました。組込みLinuxは、Linuxカーネルをはじめ、さまざまなOSSの組み合わせで作られています。それぞれのOSSはコミュニティで開発されており、そこで開発されるものをアップストリームと呼びます。
なお、組込みLinuxにするためにベンダーがOSSを取り込むときには、独自の修正がなされることが多いとのことです。この独自に開発した部分をアップストリームに上げるのが、OSSパッチ提供です。「アップストリーム化」や「メインライン化」と呼ばれることもあります。
では誰がOSSパッチ提供をしているのでしょうか。Linuxカーネルの組織別パッチ貢献数を見ると、企業からの貢献がほとんどです。つまり、企業戦略と結びついていることがわかります。
なぜ企業がOSSパッチをするのかには、それぞれの理由があります。たとえば、独自開発部分のメンテナンスコスト削減や、自社技術の標準化、自社だけで不可能な技術開発の実現、同一業界内でのプラットフォーム共通化などが考えられます。
その中でも豊岡氏は、IoTデバイスのセキュリティメンテナンスの場合を例に挙げました。
課題としては、まず、最新OSのセキュリティ修正を自社製品に取り込みたいということがあります。IoTデバイスのセキュリティ対策は法規制の動きもあるからです。ただし、アップストリームでは既知の脆弱性に対応していても、自社製品出荷時のOSバージョンでは対応できていなかったりします。とはいえ、OSに独自改造を加えていたり、独自のデバイスドライバがあったりして、自社製品のOSをアップデートするにはコストが大きいこともあります。
その解決法の1つとして、独自の部分をアップストリーム化してしまうというものがあります。これで、その部分のパッチを自社で適用する必要がなくなるため、アップデートのコストが減ります。また、コミュニティの中でメンテナンスすることで、セキュアに保てることにもつながります。
独自の改造をアップストリーム化することについて、「自社で独自に開発したコードを公開したら競争力がなくなってしまうのでは?」という反対意見もあったります。しかし、最終製品のメーカーにとって、OSそのものは非競争領域です。「非競争領域はOSSを上手に活用し、競争領域へ注力するほうが大事」と豊岡氏は説明しました。
Linuxカーネルにパッチを投稿した実例
アップストリームにパッチを提供する方法について、実際に豊岡氏がLinuxカーネルにパッチを提供した例が語られました。
このパッチは、Linuxカーネルのトレース(動作履歴保存)サブシステムにスナップショット取得機能を追加するというものです。
背景としては、高信頼性を求められる製品でRAS機能を多数追加しており、次世代製品への移植コストが課題となっていたことがあります。そこで、前述のパターンのように、Linuxカーネルのアップストリームにこの機能を入れてもらうことで、次世代製品でそのまま利用できるようにしたいと豊岡氏は考えたそうです。
手順としては、まずパッチを用意します。コードのパッチだけでなく、説明したメッセージも必要です。
これをLMKLというメーリングリストに投稿します。Linuxではサブシステムごごにメンテナーがいるので、トレースサブシステムのメンテナーにCc:する必要があります。
投稿したところ、1か月ぐらいで返事が来たそうです。そのメールではいくつかの指摘事項をもらいました。その指摘を反映して再投稿したそうです。指摘の中には、パッチを分割したほうがよいという点もあったので、4つのパッチに分割しました。4つのうち、再度レビューで指摘を受けたものもありましたが、さらに直し、最終的にはすべて取り込まれました。
この経験から豊岡氏は、4つの「やるべきでないこと」を挙げました。
1つめは、パッチといいつつ、仕様だけ出してコードを出さないことです。
2つめは、まったくテストされていないパッチを出すことです。
3つめは、レビュー後の対応で、レビューで指摘された点に理由なく対応せずにパッチを出し直すことです。
4つめは、取り込まれた後に変更部分に関する問合せを無視することです。そうすると、使われていないと判断され、あるとき削除されることにもなる可能性があるそうです。
豊岡氏は最後に、なぜOSSパッチ提供をするのかについては「企業の場合、自社の戦略を様々なレベルで実現するため」と、どうやってOSSパッチ提供をしているのかについては「コミュニティへパッチの原案を投稿し、レビュープロセスにより改善されたものがアップストリームに取り込まれる」とまとめました。
今後も、組み込みOS最前線から、興味深いテーマを選んでお届けしたいと思います。
産業グレードの長期利用を実現する IoT・組込み用 Linux ディストリビューション 「EMLinux」を無償で評価していただけます。