Linuxを使う人は僕のようなLinuxを好きな人だけではない。
中には仕事だけで触っている人もいるし、ノンプログラマでノンエンジニアな人もいる。
Linuxという言葉、仕事上の概要はしっていても中身は知らない人はいるだろう。
お客さんにLinux対応を求められた場合、何をするか、どう見積もりをするかという業務はしっていても、Linuxを実際に使ったことがない人。
業務で決められた狭い範囲で環境構築などは手順に沿って出来るけれども、それ以上のことはしない人。
そういう方々はLinuxの仕事上での関係はあるけれども深くは知らないと思う。
そういう方々がよくある勘違いで間違った言葉を使って、Linuxを使っている人に誤解を与えるかもしれない。
「よくある勘違いをしていませんか?」
そう訴えていきたい。
Red Hat Enterprise Linux = Linuxではない
Linux7.5などという表現をしてくる方がいる。
それは違う。
7.5はRed Hat Enterprise Linux(RHEL)のバージョンなのだ。
現在のLinuxのバージョンは最新版は4.17で、RHELはもっと古くて3.10を使っている。
RHELはLinuxディストリビューションの一つ。つまりLinux系OSのうちの一つにすぎない。
LinuxディストリビューションとはLinuxを使ったOSを配布しやすいようにパッケージングしたもので、この世に沢山存在する。
「Linuxを使った」という意味は後述する。
RHEL7.5の7.5はカーネルのバージョンじゃない
くどいようだが7.5はRHELのバージョンである。
カーネルのバージョンというのは先程書いた4.17が今現在最新のバージョンになっている。
uname -aコマンドでカーネルのバージョンが分かるぞ。
OS全体 = カーネルではない
OSというのはどこまでを含ませるか難しいところだが、僕がいいたいことはこうだ。
例えばRHEL7.4ではなにかバグが問題になっていたけれども、77.5に上げればOKというシチュエーションが合った時に、「このバグは前のカーネルのバグです」的なことを言うべからずという話だ。
そのバグはカーネルとは関係ない別のソフトウェアの担当かもしれない。
さてLinuxカーネルとは何かというと、これがLinuxたらしめる魂の部分で、ハードウェアとソフトウェアの橋渡しをしてデバイスなどの管理をし、プロセスを管理し、ソフトウェア側にシステムコールを提供してコンピュータを操作できるようにするという、ソフトウェア側の中心部分になっている。
先程のLinuxを使ったというのはつまり、Linuxカーネルを使ったということだ。
WindowsなどではWindows全体で一つのパッケージとして売っているけれども、
Linuxは基本バラバラ提供をしている。
Linuxカーネルはリーナス・トーバルス氏とその仲間たちが開発し提供している。
OSにはそれだけでは足りない。
ディスク上にあるカーネルを起動するためのブートローダーはGNUプロジェクトが提供するGRUBなどを使う。
シェル、デスクトップ環境、デーモン管理ツール、ネットワーク関連、色々なソフトがいろんな個人、団体、企業によって作られていて、それらを寄せ集めてWindowsのような広い意味でのOSの形になっている。
カーネルという言葉を使う場合は本当に狭い意味で、本当にカーネルが関係している部分なのかわからずカーネルと言う言葉をつかってはならぬ。
最初のたとえの場合、そのバグが例えばネットワークの暗号化の仕組みのバグだとしてもそれはカーネルとは別のソフトが提供しているのでカーネルのバグとは言えないのだ。
Linux = Unixではない
LinuxはUnix系OSの一つではあるけれどもUnixの系譜には入っていない。
シェルの操作感が似ているからか、Linuxで対応できるならIBMで出しているAIXなどのUnixでも対応できるだろうとかいう楽観は禁物だ。
中身が全然別物なのだ。
カーネルが別物なので、OSよりのC言語などで書いた物はそのままコンパイルできないだろう。できる場合もあるかもしれないけれど、できないかもしれない。楽観はできない。
さいごに
Linuxは仕事向けのものだと思っている人が多いかもしれないけれども、
もともとが個人の趣味から出発しているもので、特定の企業が営利のためにつくったものではない。
仕事でやることしか出来ないと思うかもしれないけれども、使ってみるとそれは沢山ある顔のうちの一つだと言うことが分かる。
あまり商用ソフトはないが、DIYみたいで非常に面白い