Linux🐧の勉強📝はじめました🍼
【結論】
Linuxとは、当時大学生だったリーナス・トーバルズが生み出したOS。
カーネル層のソースは公開義務があるが、ユーザー層のソースは公開義務がない。
【目次】
はじめに
インフラエンジニア??になりそうなのでLinuxの勉強を始めました。
よって、まずは前職で得たLinux知識の一部をブログにまとめてみました。
Linuxとは
当時大学生だった、リーナス・トーバルズが生み出したOSSのOSです。
ソースは以下に公開されており、誰でも無料で見ることができます。
Linux source code: (v5.1.14) - Bootlin
OSSにはライセンスがあり、LinuxはGPLライセンスであるため、Linuxソースをカスタマイズした場合、カスタマイズソースもOSSとして公開しないといけません。
コンピュータプログラムのソースコードの公開を原則とし、誰でも自由に入手、使用、改変、再配布することを認めている。また、GPLで公開されているプログラムを改変したり、自らのプログラムの一部として組み込んだ場合など、派生的・二次的な著作物を作成した場合には、これにもGPLを適用して公開しなければならないと定めている
どこで使われているの?
OSとしてLinuxを採用しています。
よって、Androidスマホを発売しているメーカーは、自社が発売するスマホの構成に合わせてLinuxをカスタマイズする必要があります。
先ほど、「LinuxはGPLライセンスでカスタマイズしたソースは全て公開しないといけない。」と書きました。
よって、当然スマホを発売しているメーカーも、Linuxカスタマイズ部分に関してはソース公開義務が生じます。
各メーカーがサイトで公開しています。
携帯電話(開発者向けサポート情報) - FMWORLD.NET(個人) : 富士通
Open source archives - Open Devices - Sony Developer World
メーカーのライセンス対策
全てのソースを公開してしまうと、スマホの差別化が図れません。
よって、カメラのように差別化したい部分のソースに関しては、Linuxカーネル層ではなくLinuxユーザー層で動作させることによって、ソース公開義務を回避しています。
下図はスマホのソースの簡略版のブロック図です。
このように階層を分けて階層間はAPIでやり取りすることによって、開発者の担当範囲と負担を分担することができます。
上図で注目すべきは赤色の部分です。
本来なら、Linuxカーネル層で実装するはずのカメラ制御処理を、Linuxユーザー層で実装することによって、ソース公開の義務を回避しています。
ちなみに、Linuxユーザー層で「Androidフレームワーク」から直接「カメラ制御プロセス」を呼ばないのは、開発している会社が違うからです
「Androidフレームワーク」はGoogleが開発しており、「カメラ制御プロセス」はメーカーが開発しています。
「Androidフレームワーク」の開発の主導権を握っているのはgoogleです。
メーカーが「Androidフレームワーク」に手を加えてしまうと、googleが設計方針を変えるたびに、それに合わせてメーカーも「Androidフレームワーク」のカスタマイズ部分を変更する必要があります。
googleの設計方針変更に振り回されないためのAPIなので、一見すると良さそうに見える「Androidフレームワーク」から直接「カメラ制御プロセス」を呼ぶのはナンセンスです。
参考情報
Linux source code: (v5.1.14) - Bootlin
GPL(GNU General Public License)とは - IT用語辞典 e-Words
携帯電話(開発者向けサポート情報) - FMWORLD.NET(個人) : 富士通
Open source archives - Open Devices - Sony Developer World
さいごに
前職の先輩に聞いた知識を、ドヤ顔でブログに書いていくスタイいるです🤪