Linuxとは何か
この記事は2024/10/01に作成されました。
最近では、WindowsもWSL2などを通じて、LinuxをWindowsから利用することができるなど、幅広く採用されています。もっとも、Linuxとはなんであるか、をざっくりと解説されているのは少ない気がするので、ここで学んでみましょう。
サーバーとしてのLinux
クライアント(ユーザーが普通に使用するPCやスマートフォンなど)からの要求に基づいて、何らかのサービスを提供するソフトウェアまたは物理デバイスのことをサーバーと呼んでいます。サーバーはソフトウェアだったり物理のPCみたいなものを指すこともあるため、文脈で意味が変わる点は注意が必要です。通常は長時間電源を切ることが無いため、信頼性が高い部品を組み合わせて作成されていることが多いですが、安価なものもあります。
ほとんどのクライアントでは画面があるのが一般的ですが、サーバーでは画面が存在しないのが通常です。操作は他のマシンから接続して行ないます。
サーバーはサーバーにソフトウェアを入れることでサービスを提供することができます。それぞれのソフトウェアで提供できるサービスが異なり、基本的に1つのソフトウェアで1つ以上のサービスを提供しています。そのため、サーバーを運用するときは提供するサービスを選択した上で、要件に見合ったソフトウェアを選択して導入する必要があります。
サーバーは同時に複数のクライアントからの接続を受入れて、導入されているソフトウェアで処理を行ない、結果を返しています。そのため、サーバーとして機能させているマシンは、簡単に停止することができません。
以下のようなソフトウエアがLinuxのサーバーでは主に利用されています。
- Apache:Webサーバー
- Nginx:Webサーバー
- Samba:Windows互換のファイルサーバー
- OpenSSH:ターミナルソフトから接続して操作するためのサーバー
- Postfix:メールサーバー(MTA)
- qmail:メールサーバー(MTA)
- Dovecot:POPサーバー
- Bind:DNSサーバー
- Firewalld:パケットフィルタ
サーバーのOS
どのOSを使ってもサーバーとして機能はしますが、サーバーは複数のクライアントが接続することを考慮する必要があります。例えば、Windowsの場合、同時接続数に制限があるため、Windows11のようなOSではサーバーとして機能することが難しいです。そのため、オープンソースで提供され、安価に利用可能なLinuxやBSDを使うケースが多くなっています。

Linuxとは
Unix互換のOSを作成する目的で作られたGPLライセンスで提供されているOSで、Unixが有料であったため、誕生したOSです。Unixは現在も存在しており、HP-UX、AIX、z/OS辺りが有名です。似たようなものでBSDというOSもあります。
Linux自体はカーネルだけの名前で、Windowsみたいにエクスプローラーやタスクマネージャー、メモ帳などは付いてきません。それどころか、そもそもマウスで操作するためのGUIもありません。
カーネルはCPU制御、メモリ制御などハードウェアの制御を主に行ないソフトウェアからの要求に基づいて、最適なコントロールを担うOSの中核部分です。どのOSにも必ずカーネルが存在します。
ディストリビューション
Linuxを実用的に使おうとするとカーネルだけでは何もできないので、他のソフトウェアと組み合わせることで初めてまともな機能を実現することができますが、選択して導入するのも非常な手間が掛かるため、ある程度選択されている状態のものが使われるのが一般的です。それをディストリビューションと呼び、必要と思われるソフトウェアを集めて、OS(とは限らない)として機能するように調整したもので、Linuxをカーネルとしたディストリビューションは多数存在します。ディストリビューションはソフトウェアの管理方法の違いで2種類に大別できます。
- rpm系
- RedHatEnterpriseLinux(RHEL)
- CentOS Steam
- Fedora
- AlmaLinux
- RockyLinux
- SUSE
- Oracle Linux
用途や重視する内容、情報の多さなどから選択するのが一般的です。Windows環境で使うWSL2では、デフォルトがUbuntuになっています。
ファイルの構造
Windowsなどでは、最上位がCドライブになっていますが、Linuxではハードウェアもファイルとして扱われるため、最上位は/というもので表されるなど、Windowsとはファイル構造が異なります。この違いにより、Windows上で動作するプログラムがLinux上では動作しない、などの現象を生むことがあります。ソフトウェアの設定などもテキストファイルを編集することで行ないますが、それらのファイルは、/etcディレクトリにまとまっていたり、ユーザーのファイルは/homeにまとまっていたり、Webサーバーで公開するようなファイルなどは/var/wwwなどのディレクトリにまとまっていたりします。この辺の構造もWindowsなどと異なるところです。
CUI
LinuxはそもそもGUI画面が存在しません。X Window Systemを組み合わせることでGUIも利用可能ですが、基本的にはShell(CUI)を使ってコントロールを行ないます。サーバーとして利用する場合は、ほとんどCUIを使って制御をしています。
そのため、サーバーを制御する場合はコマンドを使って制御するため、コマンドを覚える必要があります。
Linuxの利点
WindowsなどのサーバーOSに比べて安価に済ませることが可能であり、無料で使い勝手の良いディストリビューションが多数存在しています。比較的動作が軽量で、安定しているものが多いのも特徴でしょう。サーバーソフトウェアが豊富で運用事例が多数存在しています。やりたいことが明確であれば検索すれば大体方法が出てくるのも特徴でしょう。
そのため、各サーバーやパブリッククラウドなどでもOSではLinuxが使われている例が多いのです。
WSL2などでLinuxを使う訳
サーバーなどではLinuxが多く利用されているため、Windowsでサーバーで動作するプログラムなどを作成するときには、動作確認をWindows上でしたとしても本番のLinuxサーバーでは動かない可能性もあるわけです。そのため、Windows上に存在するLinuxを使うことで、Linux上に作成したプログラムを配置して実行すれば、直ぐに本番と同じような環境で確認ができます。また、慣れている人は、Linux上の開発環境を利用して、開発することも可能です。どうしても、Windowsでしか動作しないソフトウェアを使いつつ、Linux上で開発をしたい、などの場合に有効な手段となります。まとめ
Linuxを使っていきなりサーバーを構築して運用するのは難しくもあり、セキュリティ対策などいろいろと考慮するべき事項が多くなります。クライアントのWSL2などの環境や仮想環境上などで構築して、いろいろと触っていくことで、Linuxの特性を理解していくことができるでしょう。「Linux サーバー構築」などのキーワードで探すと、いろいろなやり方が出てきます。是非試してみてください。CTO/sekiguchi