こんにちは、ティアフォーの伊藤です。コロナで自粛中、テレワークに励んでいますが、つい時間を忘れて稼働時間が長くなってしまう今日この頃です。
私はAutowareのプラットフォーム開発を担当していまして、OSやROSといった低レイヤーの部分を中心に見ています。今回はそのOSの部分についてお話したいと思います。
さて、現在Autowareが公式にサポートしているOSはUbuntuになります。
Ubuntuはフリーで使用できる、とても有名なLinuxディストリビューションです。Autowareが研究段階の時から使用されています。
しかしながらAutowareを実用化するにあたり、今までなんとなく使ってきたUbuntuをこのまま使用し続けてよいのか、という議論がありました。
Linuxのディストリビューションには3つの流派があります。
- Red Hat系(Red Hat, CentOS, Fedoraなど)
- Debian系(Debian, Ubuntuなど)
- Slackware系(Slackwareなど)
AutowareではDebian系のUbuntuを使っていますので、まずはDebian系の中でDebian対Ubuntuを比較してどちらを採用すべきなのかを検討していきました。
Debian vs Ubuntu
検討では様々な側面について比較しましたが、その代表的なものを紹介したいと思います。
ソフトウェアの安定性
Basic Foundation
Debian
- オリジナルのLinuxディストリビューション。
- unstableブランチから開発開始→ ReleaseCriticalバグなし → testingブランチに昇格 → フリーズ/チェック/細かいバグ修正 → stableとしてリリース。
- ReleaseCriticalバグがなくなるまでリリースはされない。
- ボランティアが活動の主体。
Ubuntu
- Debianをフォークしたもの(testingブランチをベースに開発)。
- ユーザ指向、最新のハードウェアに対応、安定性に不安?
- Ubuntu独自の修正もあり安定性に不安?
- Canonical社が活動の主体(ボランティアも協業)。
Ubuntuは安定性の面で不安視されていますが、別にテストされていないわけではありません。テストはCanonical社が行っていますので、この点については同等と言えるかもしれません。
Linux kernel
Debian
- 安定したkernelを導入する傾向。
- ポイントリリースでkernelのバージョンを上げない。
Ubuntu
- 新しめのkernelを導入する傾向。
- ポイントリリースでkernelのバージョンを上げてくる(メジャーバージョンを上げてくることもある)。
Ubuntuはポイントリリースでkernelのバージョンを上げてきますが、その際にドライバも更新されてしまい、今まで動いていたものが動かなくなる可能性があります。もっとも自動更新をオフにしておけばよいですが、うっかり設定し忘れすることがあり、これは十分なリスクになり得ます。この点についてはDebianのほうが優勢と言えるでしょう。
【補足:Software release timeline】
各ソフトウェアのリリース日の関連性を以下にまとめました。UbuntuはDebianに比べて新しいkernelを導入する傾向にあると思われます。

【補足:CIPについて】
なんとDebianには、CIP(Civil Infrastructure Platform)というDebianベースのSLTS(Super Long Term Support)があります。
Home - Civil Infrastructure Platform
サポート期間が10年以上ありますが、対象はKernelとbusybox+αのみになります。そのため、このままでは対象が限定的ですので、他のパッケージもサポートを受ける場合、cybertrust社のEM Linux(有償)を導入する必要があります。または、自前でメンテナンスをしていく(セキュリティパッチをあてていく)ことになります。
また10年以上も同じプラットフォームを使い続けるのか、という問題もありますが、工場等の設備には非常に適しているディストリビューションと言えるでしょう。
なお、CIPとコラボレーションする予定のプロジェクトに、ELISA(Enabling Linux In Safety Application)というものがあり、こちらはセーフティ分野においてシステム構築や認証を支援するツールやプロセスを作成するオープンソースプロジェクトです。CIPを使うならばELISAに参画したり何らかの形でコラボレーションすると、機能安全に優れたアプリケーションを開発できるかもしれません。
以上、少し話がそれてしまいました。
ELISA - Advancing Open Source Safety-Critical Systems
プロダクト計画との親和性
Release cycle
Debian
- リリースはあらかじめ計画されておらず、プロダクトのリリース計画が立てづらい、と言われている。
- 歴史的には2年おきのリリース。
- ポイントリリースは不定期(ミスが判明してすぐ再リリースすることもある)。
Ubuntu
- リリースはあらかじめ計画されており、プロダクトのリリース計画が立てやすい。
- ポイントリリースもあらかじめ計画されている。
バグがなくなるまでなかなかリリースされないことが、かつてのDebianのデメリットでした。Ubuntuはそれを解消するために計画重視のリリースになっています。どちらかというと、ディストリビューションのリリース計画があらかじめ決まっていたほうが、プロダクトへの導入計画も立てやすいですね。
サポートおよびサポート体制
Support period
Debian
- フルサポート3年。
- 無償セキュリティアップデート2年。
- 対応はボランティア次第のところもある。
- 対応に関心のある企業がお金を出してサポートさせる場合もある。
- プロプライエタリ系の対応は遅れる。
Ubuntu
- 無償セキュリティアップデート5年。
- 追加で5年間の有償セキュリティアップデートを受けることが可能。
- バックにCanonicalの強み。
- プロプライエタリ系もCanonicalが手を回して対応させる場合もある。
- NVIDIAのデフォルトOSがUbuntu。
- Tensor FlowもUbuntuをサポート。
サポートの面からするとバックにCanonicalがいるUbuntuのほうがサポートが厚そうに見えますね。
ROSとの親和性
Target platform
Debian
- ROSのサポート期間が2つのDebianサポート期間にまたがった場合は、最初のDebianのみをサポート。
Ubuntu
- ROS2の主要なプラットフォームはCanonicalのUbuntuリリース。
ROS2のプライマリプラットフォームは、Ubuntuと定められています。Autoware AutoはROS2を使用していますので、自然にそれに習うという感じになるでしょうか。
Buildfarm
Debian
自らCI環境を構築する必要性がある。 CIでエラーが発生した場合の対処とOSRFへの働きかけが必要。
Ubuntu
- Ubuntuの最新リリースバージョンでのみ、ROSディストリビューションで定期的にパッケージをビルドする。
OSRF側でUbuntuを使用してCIを回しているので安心ですね。ただ、DebianでもCI環境を構築できますし、OSRF(Open Source Robotics Foundation)とCIに関するノウハウを共有できたりと、OSRFに貢献をしていきたい場合はDebianもよいかもしれません。
OTAとの親和性
Snap
Debian
- Snapは使用可能だが、OTA用のシステムは自ら構築する必要がある。
Ubuntu
- 有償サポートでPrivate StoreやCIを使用可能。
- Public Storeで問題なければ無料で使用可能。
OTAでSnapを使用する場合、自前でソフトウェアのアップデートシステムを構築するパワーがあればDebianでもよいと思います。それに対し、Public Storeで一般公開しても問題がないとか、Private StoreやCIを手っ取り早く使いたい場合はUbuntuでもよいと思います。こちらは製品の開発方針に拠るところがありまして、優劣はつけ難いです。
使用しているユーザー数
Enterprise(2020年8月現在)
Debian
- 17.7%
Ubuntu
- 45.3%
Webサーバで採用されているLinuxのシェアになりますが、世間ではUbuntuが流行っているようです。
【補足:Historical trends in the usage statistics of Linux subcategories for websites】

引用:https://w3techs.com/technologies/history_details/os-linux
ROS1 2018 Version Survey
Debian
- 約5%
Ubuntu
- 約90%
ROSを使用している開発者は、ほとんどがUbuntuユーザーです。圧倒的なシェアですが、オープンソースとして使ってもらいやすくするならUbuntuのほうがよさそうですね。
【補足:ROS1 2018 Version Survey】
Which operating system(s) do you actively use on your ROS1 development workstation?

Which operating system(s) do you actively use on your ROS1 robots?

情報元:https://discourse.ros.org/t/ros1-2018-version-survey-the-results-are-in/4547
プラットフォーム移行にかかるコスト
コスト
Debian
- かかる。
- 開発者全員に波及する問題。
Ubuntu
- ほぼゼロ。
実はティアフォーの開発者は皆Ubuntuを使用しておりまして、Debianへ移行する場合は、大きなコスト(時間)がかかってしまいます。したがって、Ubuntuの場合は現状のまま使い続けていればよいのでコストはかかりませんね。
まとめ
以上、いろいろな側面からDebianとUbuntuを比較していきましたが、オープンソースとしてまずAutowareを普及させたいことを重視して、
- ROS2の主要なプラットフォームはUbuntuなので、まずはAutowareもUbuntu上で動作させるべき。
- Ubuntuは利用者数が多くCommunityも大きいので、Autowareの普及をより最大化できる。
- 途中でkernelが更新されるなどUbuntuにもデメリットはあるが、なんとか運用でカバーする。
という理由から現状はUbuntuを選択しています。
ただ、Ubuntuに替わるOSが台頭してくるようになれば、Autowareエコシステムの基盤になる可能性も十分にありますし、積極的に検討していきたいと考えています。今後とも様々なOSの動向を注視していきたいと思います。
最後に
ティアフォーではオープンソースの自動運転ソフトウェア「Autoware」だけではなく、Autowareを下支えするROSやプラットフォームOSの開発や性能改善等も行っております。今回はLinuxについて触れましたが、RTOSの研究や採用検討も進めております。
*本記事に記載されている会社名、製品名、サービス名は、当社または各社、各団体の商標もしくは登録商標です
オープンソースのソフトウェアを一緒に開発していきませんか?
ティアフォーでは、「自動運転の民主化」というビジョンに共感を持ち、自らそれを実現する意欲に満ち溢れた新しい仲間を募集しています。
Media Contact
pr@tier4.jp
Share the post
LinkedIn | Twitter | Facebook | Instagram