Linux の基礎知識

【Linuxの基礎知識】Linuxとは何か? Linuxの基本概要を理解しよう!

2020年4月4日

Linuxは主にサーバー用として利用されるOSです。大規模な基幹システムの開発者、ロボットや家電開発等の組み込み系エンジニア、ネットワーク機器やデータベースに携わるインフラエンジニアは触れることが多いでしょう。そんなLinuxをイチから学習する方に向けて、「Linuxとは何か?」「Linuxの基本」をご説明します。

Linuxの歴史

LinuxはWindowsやmacOSといったOS(オペレーティングシステム)のひとつです。CUI(キャラクタユーザインターフェース)ベースのOSであり、コマンドを実行することでPCを操作します。CUIはWindowsのコマンドプロンプト、macOSのターミナルに相当するもので、いずれのOSでもCUIでの操作は可能です。

また、LinuxはGUI(グラフィカルユーザインターフェース)での操作にも対応しています。GUIはマウスやタッチパッドを用いてファイルをドラッグアンドドロップするなど、視覚的にPCを操作する方式です。普段、PCを利用するほとんどのユーザーはGUIでPCを操作しています。

Linuxは、1991年にリーナス・トーバルズが自身の学習用のOSとして原型を開発しました。その後、リーナス・トーバルズはLinuxをOSS(オープンソースソフトウェア)として世界中に公開しています。

公開されたLinuxは、多くのエンジニアの手により開発・改良が進められ、実用性、利便性の高さから、世界中の多くの企業で利用されるようになりました。 Linuxは現在もOSSとして公開されており、世界中のエンジニアによって開発、改良が行なわれています。

ディストリビューションとは

ディストリビューションはLinuxの配布形態(種類)のことを指します。そもそもLinuxとは、カーネル(OSの核となる機能)の名称です。ディストリビューションは、Linuxカーネルをベースとして、ユーザーが利用しやすいようにパッケージ化されたものを指します。

ディストリビューションは多くの種類が存在しますが、主流はRedHat系のCentOS、Debian系のubuntuの2つです。多くの企業では主にRedHat系OSが採用されています。

LinuxとUNIXの違い

LinuxとUNIXはUI(ユーザインターフェース)や操作性など、類似点が多くありますが、厳密に2つのOSは全く異なります。LinuxとUNIXの大きな違いは、Linuxは無償のOSSであることに対し、UNIXは有償であること、LinuxはUNIXを参考として作成されたOSであることの2点です。

OSSとは?

オープンソースソフトウェア(英: Open Source Software、略称: OSS)とは、利用者の目的を問わずソースコードを使用、調査、再利用、修正、拡張、再配布が可能なソフトウェアの総称です。

Linuxが公開された後、今日まで独自の発展を遂げています。LinuxはOSSであるため、無償で誰でも利用することができます。個人でソースコードの解析を行うことも、カスタマイズすることも可能です。

それに対してUNIXは、商標が取得されており、Linuxのようにソースコードは公開されていません。UNIXを学習するためには流通しているUNIX OSを購入する必要があります。加えて、UNIXと名乗るためにはライセンス料も必要となります。

UNIXを学習することで、Linuxの理解を深めることは可能ですが、これからLinuxの学習を始める場合は、最初からLinuxを使って学習することをおすすめします。参考までに、UNIX OSはSun Microsystems社のSolaris、身近なところではApple社のmacOSもUNIXをベースに作成されています。

カーネルとは?

カーネルはOSの中に位置しています。

カーネルとは、OSの核となる部分で、コンピュータを操作するうえでの最も基本的な処理、CPUやメモリ、ディスクの制御などを行います。

例えば、Word(アプリケーション)で作成した文章をプリンター(ハードウェア)で印刷するとき、「カーネル」が間に入って「Word」を「印刷する」という要求を「プリンター」に伝えているということです。

コマンドプロンプト画面から「カーネル」に対してプリント出力を実行するまでの流れ

つまり、コマンドプロント画面から「Shell」を通して、人間の言葉を機械語に翻訳してから、各「H/W(ハードウエア)」へ命令しているのです。

狭義の"Linux"とは、このカーネル部分のみを指しています。"Linux"の生みの親として名高い「リーナス氏」は、すべての機能を作った人みたいに思われがちですが、実は、このカーネルを開発した人なのです。それでは、実際に「Linuxの起動のしくみ」を見ていきましょう。

Linuxの起動のしくみ

コンピューターの電源をいれてからログインするまでに、コンピューターの内部ではどのような処理が行われているのでしょうか?

簡単な流れ

  • 電源を投入する
  • BIOSを起動、デバイス認識・初期化
  • ブートデバイスから(HDD)MBRをロード
  • ブートローダーを起動
  • ブートローダが「カーネル」イメージをロード
  • カーネルを起動
  • カーネルが「systemd(旧/sbin/init)」を実行する

BIOSとは(Basic Input/Output System)

BIOSとは、インストールしたマシンの電源ボタンを押下時に、一番初めに立ち上がるプログラムです。マシンを立ち上げた時点では、まだカーネルが認識されていないため、予めマザーボードの内臓チップに組み込まれているBIOSが起動します。

起動したBIOSがブートデバイス(HDD、CDROM、USB)等を認識して、必要なブートローダー(起動プログラム)を読み込みます。

ブートデバイスとは?

ブートデバィスとは、起動に使う装置のことであり、一般的にはハードディスクを指します。なかにはCDROMやフロッピーディスクで起動している環境もあります。

起動したBIOS内に設定されているブートデバイス情報から、該当するデバイスを認識します。

BIOSによるブートデバイスの選択

イメージ例では、予めBIOS設定画面で、ハードディスク(Hard Drive)をブートデバイスとして選択しています。

BIOS設定画面で、ハードディスク(Hard Drive)をブートデバイスとして選択

ブートローダーとは?

ブートローダーとは、OSを読み込む(Loadする)ためのプログラムを指します。ブートローダーは、ブートデバイスの先頭を読み込み、その部分にあるプログラムを実行します。

OSが起動する時には、「小さなプログラムが次の大きなプログラムを読み込む」という作業が繰り返されカーネルが読み込まれます。

ココがポイント

このカーネルこそが、Linuxの本体です。Linuxの起動とは、カーネルが読み込まれてからの動作を言います。

この動作のことを「ブートストラップ(bootstrap)」と呼びます。

systemdとは?

Systemdとは、Linuxの起動処理やシステム管理を行う仕組みを指します。Systemd が実行されると「default.target」というファイルが読み込まれ「default.target」の定義に従ってサービスなどを起動します。

「テキストモード」「グラフィカルモード」「マルチユーザー・ターゲット(旧LANレベル)」等の設定情報は、このSystemdで管理されています。

ココに注意

RedHat7/CentOS7以上は、Linux起動の仕組みが大きく変更されました。
Kernelイメージロードまでは以前と同様ですが、RedHat7/CentOS7以上からは、initプログラムがsystemdへのシンボリックリンクになっています。「inittab」は未使用となりました。

一通りの処理を終えて、いよいよLinuxが立ち上がります。

GUIモードで起動したイメージ

まとめ

この記事では、インフラ系エンジニアが頻繁に利用する「Linux」の基本概要についてご説明いたしました。Linuxの歴史やUNIXとの違いなど、ご理解いただけましたでしょうか。

また「"Linux"の起動のしくみ」にも触れました。一見、難しそうと思われる”Linux”も、仕組みを知ってしまえばそれほど複雑でもないことが分かると思います。

続いての2記事目では「Linuxのインストールからログインまでの流れ」を解説しております。あわせて目を通して、Linuxの理解をより深めていきましょう。

よく読まれている記事

1

独立前は、誰もが不安でいっぱい。近い将来、フリーランスとして独立を考えている方が独立初期に躓かないために「独立前にやるべきことチェックリスト」をご紹介します。 当記事は前編となる「お金まわり編」。全て ...

2

ゲームなどのエンタメ分野での導入が進んでいるVR。言葉自体は耳にしたことがあっても、その意味を詳しく知らないという人も多いのではないでしょうか。また、次世代の新たな技術をビジネスに積極的に活用していく ...

3

フリーランスの確定申告には、青色申告と白色申告の2種類があります。いったいどちらの申告方法を選ぶべきなのでしょうか。 この記事では、青色申告と白色申告、それぞれのメリット・デメリットを把握することでベ ...

4

フリーランスの仕事場は、自宅をはじめとし、カフェや図書館、コワーキングスペースなど自由に選べます。しかし全ての場所で100%集中ができるどうかは、人それぞれです。どのような環境が自身の仕事場として快適 ...

5

フリーランスのITエンジニアとして、一番難しいのは「自己管理」と言えるでしょう。 自分の体調管理はもとより、仕事のスケジュール等すべて自分で管理します。もちろんフリーランスに有給休暇等ありませんから休 ...

-Linux の基礎知識

Copyright© Beエンジニア , 2020 All Rights Reserved.