Linuxについて調べたことまとめ

1991年にフィンランドLinus Benedict Torvaldsによって開発された。当時、商用のUnixは高価であり、Unixの学習目的で作られたMinixは機能に大幅な制限があったため、Linus独自で開発を始めることとなった。ライセンスはGPL(GNU Public License)である。

 

Linuxの本体はLinuxカーネルである。カーネルC言語で書かれており、GCC(GNU Compiler Collection)でのコンパイルが可能である。Linuxカーネルに、UIを提供するShellと、その他ソフトウェアを同梱したものがdistributionとして提供されている。distributionとは配布パッケージのことである。

Shell上で使用するコマンドはShell組み込みコマンドと同梱されたソフトウェアに分類される。「type コマンド」でコマンドの種類を調べることができる。

例としてpwdはShellコマンド、lessはソフトウェアである。

Shellの機能でコマンドにエイリアスを作ることができるので、実際はtypeコマンドで調べないと、そのコマンドがどこに属しているかは分からない。

コマンドの種類は以下のように調べる。Shell builtinはシェルコマンド、lessはソフトウェア。

(MacOSXでタイプコマンドを実行)

f:id:bambinya:20150314164538p:plain

Linuxのディレクトリ構造は、ディストリビューションによって異なるが、基本的にはFHS(Filesystem Hierarchy Standard)に準拠している。FHSとは、LinuxUnix系OSの主なディレクトリ構造と内容を定めたもの。

FHS | The Linux Foundation からFHS 3.0 Draft 1のコピペ。暇なときによむ。

Directory Description
bin       Essential command binaries
boot      Static files of the boot loader
dev       Device files
etc       Host-specific system configuration
lib       Essential shared libraries and kernel modules
media     Mount point for removable media
mnt       Mount point for mounting a filesystem temporarily
opt       Add-on application software packages
run       Data relevant to running processes
sbin      Essential system binaries
srv       Data for services provided by this system
tmp       Temporary files
usr       Secondary hierarchy
var       Variable data

 

コンピューターの電源が入ってから、Linuxが起動するまで

  1. 電源ON
  2. 補助記憶装置に格納されているBIOS(Basic Input/Output System)が起動される
  3. BIOSがPOST(Power On Self Test)処理を実行、コンピューター周辺機器(ハードウェア)の動作確認を行う
  4. BIOSがbootstrap loaderを格納している起動デバイスを選択する
  5. BIOSが起動デバイスのMBR(Master Boot Record)と呼ばれる記憶領域から、GRUB(GRand Unified Bootloader)またはLILO(LInux Loader)を読み込む。この二つはLinuxが採用しているbootstrap loaderで、ディストリビューションによって異なる。起動するOSやカーネルを、設定から選ぶことができる
  6. GRUBまたはLILOが、Linuxカーネルを補助記憶装置から主記憶装置に読み込む
  7. カーネルの起動に必要な、カーネルモジュール(デバイスドライバ)を読み込むための一時的なルートファイルシステムが作られる
  8. /sbin/initを実行、initコマンドはLinuxシステムで最初に起動されるプロセス。プロセスIDは0である。SysVinitとUpstartの2種類が用意されている。ディストリビューションによって違う。動作は主に、プロセス制御スクリプトの実行、ランレベルの指定、デーモンプロセスの起動及び制御スクリプトの実行、基本設定、などがある

 

 ランレベルってなんですか?
OS起動時に選ぶことができる、実行レベルのこと。動作モードともいう。UNIX系のOSは複数ランレベル(動作モード)を提供することによって、システムの保守性を高めている。Linuxでは動作モードを7段階の実行レベル(ランレベル)に分けている。モードによって、OSは異なる機能を提供する。

 

ランレベルの確認と変更

現在のランレベルを確認するには$ runlevel

(MacOSXでは$ who -r で確認できる)

f:id:bambinya:20150315124530p:plain

ランレベルの変更は$telinit 数字 または $init 数字  で変更できる。

 

プロセス管理

システムリソースの使用状況を確認するコマンド

top...CPUやメモリの使用率、システムの平均負荷などを確認できる。Uptimeでも同じ結果が見られる。

free...メモリとスワップに関する情報を表示、一瞬のスナップショットなので、使用量を把握したい場合には正確ではないと思った方がよい。

vmstat...メモリやスワップに関する情報を継続的に表示、引数に表示間隔(秒)、表示回数を指定できる。

 

Linux系の有名なディストリビューションは以下のとおり。

RedHatRHEL(RedHat Enterprise Linux)として販売されている。RedHat Linux, Fedora, CentOS etc.

Debian...Debian GNU/Linux, Ubuntu etc.

Slackware...Slackware, Plamo Linux etc.

 

OSは大きく分けて、UNIX系とWindows系に分けられる。

UNIX系とは、1969年に開発されたUnixと似た振る舞いをするOSのこと。

Windows系とは、Microsoftが開発したOSシリーズのこと。

 

UNIX系OS...Solaris, MacOSX, Linux, FreeBSD, AIX, HP-UX

Windows系OS...Windows XP, Vista, 7, 8, 8.1