Linux🐧の勉強📝はじめました🍼

f:id:hira98:20190623142444p:plain

【結論】

【目次】

はじめに

インフラエンジニア??になりそうなのでLinuxの勉強を始めました。

よって、まずは前職で得たLinux知識の一部をブログにまとめてみました。

Linuxとは

当時大学生だった、リーナス・トーバルズが生み出したOSSのOSです。

ソースは以下に公開されており、誰でも無料で見ることができます。

Linux source code: (v5.1.14) - Bootlin

OSSにはライセンスがあり、LinuxGPLライセンスであるため、Linuxソースをカスタマイズした場合、カスタマイズソースもOSSとして公開しないといけません。

コンピュータプログラムのソースコードの公開を原則とし、誰でも自由に入手、使用、改変、再配布することを認めている。また、GPLで公開されているプログラムを改変したり、自らのプログラムの一部として組み込んだ場合など、派生的・二次的な著作物を作成した場合には、これにもGPLを適用して公開しなければならないと定めている

引用:http://e-words.jp/w/GPL.html

どこで使われているの?

一番身近なのは、Androidスマホです。

OSとしてLinuxを採用しています。

よって、Androidスマホを発売しているメーカーは、自社が発売するスマホの構成に合わせてLinuxをカスタマイズする必要があります。

先ほど、「LinuxGPLライセンスでカスタマイズしたソースは全て公開しないといけない。」と書きました。

よって、当然スマホを発売しているメーカーも、Linuxカスタマイズ部分に関してはソース公開義務が生じます。

各メーカーがサイトで公開しています。

携帯電話(開発者向けサポート情報) - FMWORLD.NET(個人) : 富士通

Open source archives - Open Devices - Sony Developer World

メーカーのライセンス対策

全てのソースを公開してしまうと、スマホの差別化が図れません。

よって、カメラのように差別化したい部分のソースに関しては、Linuxカーネル層ではなくLinuxユーザー層で動作させることによって、ソース公開義務を回避しています。

下図はスマホのソースの簡略版のブロック図です。

このように階層を分けて階層間はAPIでやり取りすることによって、開発者の担当範囲と負担を分担することができます。

f:id:hira98:20190623143331p:plain

上図で注目すべきは赤色の部分です。

本来なら、Linuxカーネル層で実装するはずのカメラ制御処理を、Linuxユーザー層で実装することによって、ソース公開の義務を回避しています。

ちなみに、Linuxユーザー層で「Androidフレームワーク」から直接「カメラ制御プロセス」を呼ばないのは、開発している会社が違うからです

Androidフレームワーク」はGoogleが開発しており、「カメラ制御プロセス」はメーカーが開発しています。

Androidフレームワーク」の開発の主導権を握っているのはgoogleです。

メーカーが「Androidフレームワーク」に手を加えてしまうと、googleが設計方針を変えるたびに、それに合わせてメーカーも「Androidフレームワーク」のカスタマイズ部分を変更する必要があります。

googleの設計方針変更に振り回されないためのAPIなので、一見すると良さそうに見える「Androidフレームワーク」から直接「カメラ制御プロセス」を呼ぶのはナンセンスです。

参考情報

リーナス・トーバルズ - Wikipedia

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

さいごに

前職の先輩に聞いた知識を、ドヤ顔でブログに書いていくスタイいるです🤪