こんにちは、Яeiです。
今回は現役エンジニアである私がLinuxディストリビューションとは何かについて解説したいと思います。
「OSは何?」という話の流れで「Linux」という単語を耳にする事があると思います。
しかし同じくOSの話をしている時に「RedHat」とか「Debian」といった単語もまた耳にすることがあります。
「Linuxって何者なの?」「RedHatとかDebianはOSと何の関係があるの?」という疑問に対して、当記事でその正体をクリアにしたいと思います。
目次
そもそもLinuxとは何か
Linuxとは何かという回答は以下の二通りあるようです。
①狭義の意味でのLinuxとは:Linuxカーネルのこと
②広義の意味でのLinuxとは:Linuxディストリビューションのこと
①のLinuxカーネルについてですが、誰しもがこの名を聞いてチキンを売っている方を想像されるかもしれませんが違います。
カーネルとはOSの核となる部分の名称となりまして、主に以下のような機能を持っております。
(今回は内容は分からなくてよいです。パソコンが動く上で大切なことをやっているんだな程度に理解しておいて下さい。)
・メモリー管理
・プロセス管理
・デバイスドライバー
・システムコールとセキュリティ
ここで注意してもらいたいのが、カーネルはOSの一部だそうで、OSそのものではないということです。
なので、狭義の意味でのLinuxとは、カーネルのことである(Linux≠OS)。とのことです。
②の広義の意味でのLinuxについては次の章で見てみましょう。
Linuxディストリビューションとは何か
先ほど、狭義の意味でのLinuxはカーネルだと説明しました。
しかし、カーネルだけではパソコンは動いてはくれません。
OSとして機能するには「カーネル+その他必要なファイル群」が必要となるのです。
つまり、以下のようになります。
OS=Linuxカーネル+最低限必要なファイル群
しかし、どんなファイルがあればパソコンが最低限動いてくれるのかの判断は素人にはとても難しいです。
そこで、親切な人たちが「Linuxカーネル」と「最低限必要なファイル群」をパッケージングして提供してくれているのです。
これがLinuxディストリビューションと呼ばれているものになります。
そのため、広義の意味ではLinux=Linuxディストリビューションを指していることが多いのです。
色んなディストリビューション
ところで「Linuxカーネル+最低限必要なファイル群」をパッケージングしてくれている団体は実は複数あります。
そのため、Linuxディストリビューションと言っても色んな種類があるのです。
大きな派閥でくくってみますと以下のような派閥でくくることができます。
・RedHat系
・Debian系
・Slackware系
そして、各ディストリビューションをシェア率でみると、2020年11月の段階では以下のようになっているそうです(WEBサイト向けシェア)。
参考:https://eng-entrance.com/linux-distribution-compare
順位 | ディストリビューション | 系統 | シェア率 |
---|---|---|---|
1 | Ubuntu | Debian系 | 46.7% |
2 | CentOS | Redhat系 | 18.7% |
3 | Debian | Debian系 | 17.4% |
4 | Gentoo | その他 | 2.0% |
5 | Red Hat | Redhat系 | 1.9% |
6 | Fedora | Redhat系 | 0.4% |
ただし、Cent OSについては昨年から「Cent OS8が終了し、CentOS Streamになりますよ」なんてニュースが世間をざわつかせており、今後のシェア率への影響は出てくると思われます。
(おまけ)DebianとCentOSのコマンドの違い
ところで、各ディストリビューション毎にどのような違いがあるのかは少し気になりました。
そこで、DebianとCentOSについて、コマンドの違いについて少し調べてみました。
今回は簡単な確認のためDockerイメージを用いて、それぞれ以下のバージョン同士を比較しました(当時のlatestイメージ)。
・debian:version(10.10)
・cent os:version(8.3.2011)
結論から述べますと、
Debianのみに存在したコマンド数:80
CentOSのみに存在したコマンド数:221
となりました。当然、CentOSの方がコマンド数が多いのでDockerイメージもCentOSの方が大きくなっております。
$ docker images
debian latest 0980b84bde89 2 weeks ago 114MB
centos latest 300e315adb2f 8 months ago 209MB
また、片方のみに入っているコマンドで、意外だったシリーズをまとめてみました。
観点は筆者が当たり前のように使っていたけど実は当たり前ではなかったシリーズになります。
知っている人からすると当然だと思いますが、参考程度に楽しんで頂けると幸いです。
(バージョンの違いだったりDockerイメージならではの可能性もありますので参考程度にご覧ください)
意外!debianのみに存在したコマンド
・which
・clear
・cmp
・diff
・perl
・apt-get
・dpkg
今まで使ってきたCentOS環境で当然のように使ってきたこれらのコマンドがDebianには入っていませんでした。
(正確にはDockerのDebian公式イメージ)
cmp、diffといったコマンドは結構利用頻度高いような気がしましたので意外でした。
clearとかwhichはまぁ何とかなる印象ですが、clearは入っていそうな印象だったのでこちらも意外でした。
perlについては「むしろ入っているのかい!」といった逆の意味で意外でした。
Debianのイメージにperlがデフォルトで入っているのはありがたいですね。
パッケージ管理システムとしてDebian系はapt-get、RedHat系(Cent OS)はyumを用いるという話は有名ですが、初見ですと戸惑うことが多いかと思います。
dpkgと次に記載するrpmも同様ですね。
私が今までいた環境では、Cent OSを利用してましたが、下の二つ以外は使えておりました。
つまり、今まで使っていた環境は誰かがわざわざインストールしてくれたのか、元々入っているパッケージだったのか。
どちらにしてもありがたい話でございました。
意外!cent osのみに存在したコマンド
・curl
・free
・ps
・top
・vi
・vmstat
・yum
・rpm
OSのパフォーマンスを確認するコマンドはDebianには足りない印象ですね。
free、ps、top、vmstatあたりは昔は良く使ったものですが、CentOS(というかRedHat系?)特有だったのですね。
Debian系にviが入っていないのはDockerイメージだからでしょうか。
当たり前のようで認識相違がありますので、使えるコマンドは確認しておくとよいかもしれません。
いざ、RedHat系からDebian系に移行!となった際に、不要なコマンドを入れる必要がなくなるかもしれませんから。
当記事は以上となります。
Linuxディストリビューションは一度理解してしまえば簡単な話ですが、知らないと困る話でもあります。
ちなみに、Dockerの場合は、LinuxカーネルはホストOSと共有して、ファイル配布形式でディストリビューションを切り分ける仕様だったりします。
この話は参考程度に「何かこんなこと話してたな」程度に覚えておいて頂けると良いと思います。
長々とお疲れさまでした。
丁寧で分かりやすい記事でした。良い復習になりました。
CentOS特有コマンドでyumを挙げるのであれば、対称性を考慮して、Debian特有ではapt-getやdpkgを挙げてほしいとは思いました!
コメントありがとうございます。
ご指摘頂きましたように、記載するなら対応するコマンドも挙げた方が親切でした。
記載はもう少し修正するかもしれませんが、取り急ぎ追記させて頂きました。
貴重かつ的確なご指摘ありがとうございました。