はじめに
こんにちは。みどりがめです🐢
面談時に「Linuxって何?どういうもの?」と聞かれたことがありました。ぼんやりとした回答となり、Linuxの基礎概念について、自分の理解度の低さを痛感したことがありました。
本記事では当時の反省も踏まえて、Linuxの基本的な概念部分について詳しく記載していきます。
OSとは
Linuxの前に前提知識としてOSについて記述していきます。
コンピュータのソフトウェアは大きく分けてOS(オペレーティング・システム、基本ソフトウェア)とアプリケーションソフトウェア(応用ソフトウェア)に分類できます。
私達が普段利用している、GoogleなどのWebブラウザ、メールソフト、表計算ソフト、ゲームソフトなどはいずれもアプリケーションです。
一方でOSはハードウェアをコントロールしたり、アプリケーションが動作する環境を提供する役割を持っています。つまり、OSはハードウェアとアプリケーションを仲介するソフトウェアと言えます。
OSの入っていないコンピュータだけでは何もできず、OSをインストールすることによって初めて、人間やアプリケーションがコンピュータを扱えるようになります。
OSの例としては、WindowsやmacOS、UNIX、そして本記事で扱うLinux等があります。
物理マシンと仮想マシン
物理マシンはみなさんの手元にあるコンピュータのことを指します。
対して仮想マシンは物理マシンと同じ機能をソフトウェアで実現したコンピュータのことを指します。仮想マシンの実態は物理マシン上のファイルであり、このファイルが物理コンピュータ上で実行されることで物理コンピュータと同じ機能をソフトウェアで実現しています。仮想マシンを用意するには仮想化ソフトウェアが必要です。(VirtualBoxなど)
Linuxの歴史
Linuxが誕生したのは1991年です。当時は大学の研究者やIT企業によって数々のOSが生み出されていました。ところがLinuxを開発したのは、フィンランドの大学にいた一人の学生、「リーナス・トーバルス」でした。彼の名前にちなんでLinuxという名称が付けられました。リーナスはLinuxのプロトタイプをインターネット上で公開し、興味を持った開発者がともに開発に参加していきました。企業が主導するのではなく、技術者の自由な参加によってLinuxは大きく成長していきました。
Linuxとは?
ようやく本題です。
LinuxはよくOSと言う意味で使われますが、厳密にはLinux OSの中のカーネルの名称を指します。
ここで、いきなり出てきたカーネルについて説明します。OSの中核部分であるプログラムで、プロセス管理、メモリ管理、ネットワーク管理、デバイス管理などを担当します。
カーネルは人間でいうと心臓のようなものですが、人間が心臓だけあってもどうにもならないのと同様に、OSもカーネルだけではソフトウェア製品として利用することができません。
カーネルだけではなく、アプリケーションが利用するソフトウェアライブラリ、ユーザーに使い勝手を提供するユーザーインターフェース、OSをコンピュータにインストールするためのインストーラーなどが必要になります。それを一つ一つ組み込んでいくことはとても骨の折れる作業です。
そこで、Linuxカーネルにライブラリ、ツール、インストーラーが組み込まれて一つの製品として提供されています。これをディストリビューションといいます。私達がLinux OSとして利用するのは、1つのOSの製品として完成された「Linuxディストリビューション」です。
Linuxの特徴
UNIXに似たOSである
LinuxはUNIXと似ているが、UNIXを源流として発展したOSではなく、UNIXを参考に同等に動作するようにゼロから作り上げられたOSです。
多彩なディストリビューション
OSが動作するハードウェアのことをプラットフォームと言います。LinuxはPCやサーバー、携帯電話までとても幅広いハードウェア上で動作します。Red Hat系では、Fedora(フェードラ)、Cent OS(セントオーエス)、Debian系ではUbuntu(ウブントゥ)、Raspbian(ラズビアン)等が挙げられます。
最適なシステム構成が可能
Linuxはシステムに合わせて機能を細かく調整できます。貧弱なハードウェア向けに機能を削ぎ落としたり軽量化したり、組み込み機器向けに最適化したりと自由度の高いカスタマイズができます。
オープンソースであること
WindowsやMac OSとLinuxでの大きな違いの1つとしてLinuxがオープンソースであることが挙げられます。Linuxはソースコードが完全に公開されていて誰でも読むことができます。また、読むだけではなく、ソースコードを修正したり、機能を追加することができます。(オープンソースという。)オープンソースを推進しているOSI(Open Source Intiative)ではオープンソースの定義として以下の10項目を定めています。
- ソフトウェアを自由に販売したり無料で配布したりできること。
- ソースコードを入手できること。
- ソフトウェアを改良したり派生ソフトウェアを作成したりできること。
- 他社のソースコードの完全性を維持すること。
- 個人やグループを差別しないこと。
- 利用分野に対して差別しないこと。
- 再配布するときに追加ライセンスを必要としないこと。
- ライセンスは特定の製品に依存しないこと。
- 一緒に配布される他のソフトウェアを制限しないこと。
- 技術的に中立であること。
終わりに
ご覧いただきありがとうございました。ご指摘等がございましたら頂けますと嬉しいです。
引き続き、プログラミング学習について定期的に発信していきますのでよろしくお願いします!
また、もしよろしければtwitterもフォローしていただけると嬉しいです!🐢
コメント