独り言

プログラミングの講師をしています。新人研修で扱う技術の解説と個人の技術メモ、技術書の紹介など

【Linux】Linux入門(Linuxの概要)

Linuxの基本的な解説です。

Linuxとは

Linuxリナックス)は、サーバーや組み込み系のシステム幅広い分野で利用されているコンピュータOSです。
UNIXというOSを真似てリーナス・トーバルズという人物が作り上げたOSがLinuxです。
コンピュータOSの中にはUNIXから派生して作られたOSもあります。(Mac OSなど)
LinuxUNIXから直接派生したOSではありませんが、UNIXと同じような操作性からUNIXライクなOSなどとも呼ばれます。

Linuxのライセンス

Linuxオープンソースと呼ばれ、誰でも自由に利用、修正、再配布することができます。
具体的には以下のような特徴があります。

  • プログラムを実行する自由
  • ソースの改変の自由
  • 利用・再配布の自由
  • 改良したプログラムをリリースする権利

Linuxは元々UNIXというOSを真似て作られたものですが、その背景にはライセンスの問題が絡んでいます。
それこそUNIXは元々はオープンソースで、ソースコードが公開されていたのですが、後にライセンスビジネスが始まり、無償で利用することができなくなってしまいました。
そこでリーナスが一から無償で使用できるOSとしてLinuxを作った背景があります。

Linuxディストリビューション

Linuxは狭義にはカーネルと呼ばれるOSの核の部分のことを指します。
しかし、実際にOSとして使用するには、カーネルだけではなく様々なソフトウェアが必要になります。
カーネルだけの状態から様々なソフトウェアを構築していくのは専門的な知識がないと難しいです。
そこで、様々な企業や団体が、LinuxのOSにあらかじめ必要なソフトウェアをインストールしておき、使いやすい状態で配布しています。
このように配布されているものをLinuxディストリビューションと呼びます。
配布している企業や団体のことをディストリビューターと呼びます。
これらディストリビューションは無償で使えるものもあれば有償のものもあります。
数多くの種類がありますが、有名どころでいうと、大きくRed Hat系とDebian系の2種類に分かれます。
Red Hat系には、FedoraRed Hat Enterprise LinuxCentOSなどがあります。
Debian系にはUbuntu、Kali Linuxなどがあります。

それぞれに特徴があり、使用できるコマンドもRed Hat系とDebian系で異なります。
Red Hat Enterprise Linuxは略してRHELとも呼ばれ、Red Hat社が開発、販売しているLinuxOSで、有償です。
CentOSRHELから商用パッケージを除去したもので、無償で利用することができます。
Ubuntuは使いやすさを売りにしているLinuxOSです。

コマンド操作

LinuxGUIによる操作も可能ですが、一般的にはCUIによる操作をすることが多いです。
GUIとは、Graphical User Interfaceの略で、マウス操作で直観的に操作できるような仕組みです。
WindowsMac OSなどがGUIです。
CUIはCharacter User Interfaceの略で、キーボードでの入力よる文字だけで操作をします。
テレビや映画などで黒い画面に文字だけを入力する画面を見たことがある人も多いかと思いますが、あのようなイメージです。
WindowsならコマンドプロンプトPowerShellMacの場合はターミナルで同じようなことができます。

ではなぜCUIの操作が一般的なのでしょうか。
GUIの場合、画面の描写に対して多くのコンピュータリソース(CPUやメモリ)を使用します。
例えばLinuxをサーバーOSとして使用する場合、システムの規模にもよりますが、大量のリクエストを高速にさばいて処理し、レスポンスを返すことが必要になります。
つまり画面描写の処理があると、サーバーの本来必要な処理以外の部分でリソースを使う必要が出てきてしまううので、サーバーをしての機能を最大限に発揮するにはCUIでの操作の方ができしています。

また、コマンド操作前提なこともあって、ほぼすべての操作がコマンドで実施できます。
慣れるまでは難しく感じますが、慣れるとGUIよりも素早く行える操作もあります。
ちなみにMac OSも元はUNIXからの派生なので、Linuxと同じようなコマンドが使えます。

LinuxカーネルではX Windows Systemと呼ばれるものが動いており、これを利用することでGUIによる操作も可能です。

環境構築

TODO

プロンプトの説明

Linuxの環境を作ってログインすると、環境にもよりますが以下のように表示されます。
[vagrant@localhost ~]$

これをプロンプトと呼びます。
プロンプトは、促すという意味の英語で、入力を促してる部分であることを表します。

一つ一つの要素を解説します。

  • vagrant:ユーザー名
  • localhost:マシン名
  • ~:作業場所。~はチルダと読み、ホームディレクトリを短く表現した形
  • $:一般ユーザーの権限を表す記号。管理者の場合は#になる。

システムの全体像

Windowsの場合、フォルダの構成はCドライブから始まりますが、LinuxにはCドライブのような概念はありません。
「/」がルートディレクトリといって、システムの一番上の階層を表します。
ちなみにwindowsでいうところのフォルダは、Linuxではディレクトリと呼ばれることが多いです。

ここではよく使われる階層を解説。

/bin
cat, cpなど、システムを動かすための基本コマンドがいっぱい入っている。

/dev
バイスファイルを格納する。ハードウェアを扱えるように用意された特殊なファイル。

/etc
アプリケーションなどの設定ファイルが入っている。
Linux自体の設定ファイルもここに入っている。

/home
各ユーザーのホームディレクトリが入っている。

/sbin
システム管理用のコマンドが入っている。
管理者ユーザー向けのコマンド。shutdownなど。

/usr
一般的なアプリケーションが格納されているディレクト
新しくアプリケーションをインストールする場合は、大抵ここに入る。

/var
システムのログファイルなど、頻繁に書き換わるファイルが置かれる。