OSをインストールするのに必要な知識

# この記事の概要

私は大学と大学院で宇宙物理学を専攻していました。そこでは理論・観測のどちらの分野に進むにせよ、(スパコンなどの専用のものも含めて)計算機は必需品でした。ここでは1台のPC/AT互換機にWindowsとLinux(Unix互換OSの一つ)の2つのOSをインストールし、OSの起動時に切り替えて両方を使えるようにするための知識をご紹介します。

※ 私が大学院で勉強した時点の知識をデジタル化したものですので古い情報が記載されていることがあります。ご容赦ください。

# ハードウェアに関する知識

PCの仕組みを理解するために、CPU・メインメモリ・ハードディスク・それぞれの役割を見てみましょう。特にメインメモリとハードディスクの転送速度と性質の違いに注目して解説します。

## データ転送速度の比較

**CPU > Memory > HDD**

## CPU (Central Processing Unit)

メモリに置かれた機械語命令(機械語プログラム)を読み取り、メモリに置かれたデータの読み取り・演算、そしてその結果をメモリに書き出すための装置のことです。CPUが人間の脳にあたるとすると、チップセットはパソコンの各機能を実際に動かす手足に例えられます。CPUはパソコンの各部品から入ってくる情報を処理するのに対して、チップセットはパソコンに繋がっている機器の動作を管理します。

### レジスタ

何bit-cpuなどのように表記されている場合、大抵レジスタの幅を示しています。

### 何故48bitなどの中途半端なものが無いのか？

64bitであれば32bitの命令が2つ入る、という意味。64bitの大きな利点として

* より大きなデータを一度に取り扱えること
* 従来のデータを複数個同時に処理できること

が挙げられます。

### キャッシュ

頻繁に使用するデータをキャッシュメモリ上に読み込み、処理をすることによってメインメモリへのアクセスを減らし、処理を高速化させます。

### チップセット

#### ノースブリッジ

グラフィックス、メモリ

#### サウスブリッジ

オーディオ、USB、LAN、ハードディスク、PCI

## メインメモリ

プログラムを構成する命令やデータを記憶しておくという機能と、CPUの要求に応じて命令やデータをCPUに渡すとともに、データを指定された場所に書き込むという機能を提供します。現在広く用いられているのはDDR3-SDRAMという規格で、転送速度は15GB/sです。これは1秒間にDVD4枚の情報をやりとりできる速さです。

※ 現在はデフォルトでDDR4が搭載されているPCも出回っています。

## HDD 

メモリは電気が消えたら保持していたデータを消失してしまいます。HDDに記録されたデータは電気が消えても消失しません。現在広く用いられているのはSerial-ATAと呼ばれる規格で、300MB/s程度の転送速度です。

※ 現在では磁気ディスクが回転するHDDではなく、SSDを用いることも多くなっています。

## bitについて

10年ほど前までは32bit機が全盛期でした。現在は64bitが主流ですが、そもそもbitとは何でしょうか。

### bit

コンピュータが処理する最小の単位のことです。コンピュータでは通常、8bit(1byte)を一つの単位として扱います。1byteは0から2進数の11111111(10進数の255)までが表現可能です。

> ちなみに1byte文字は256通りを表現できることから0-9までの数字とアルファベットは23文字の大文字/小文字の違い、そしてピリオドやハイフンなどの記号も含めて256通りを全部表現できます。

> しかし日本語はひらがなが48文字(ゐとゑも含む)とカタカナ、そして他の漢字もあります。よって2byte(65536通り)が必要であるため、2byte文字と呼ばれます。

### 32bitと64bit

32bitでは4294967296byte = 4GBのデータまでしか扱えません。しかし最近のアプリケーションではメモリを大量に消費するソフトウェアが出現し、4GBのメモリ空間では手狭になっています。そのため現在の主流は64bitとなっています。

## BIOS(Basic Input/Output System)

コンピュータに接続されたディスクドライブ・キーボード・GPUなどの周辺機器を制御するプログラム群です。これらの機器に対応する基本的な入出力手段をOSやアプリケーションに対して提供することからこのように呼ばれています。
PC起動時にこれらのプログラム群を設定する画面を開くことで、周辺機器の使用/不使用の決定やどの順序でOSを探しに行くかなどを設定することが可能です。

# OSに関する知識

## そもそもOSとは?

Operating Systemの略称です。ハードウェアの違いを吸収し、プログラムに共通のインターフェースを与えるシステムプログラムのことを指します。以下にOSの基本的な機能を列挙します。

### カーネル

ハードウェアを管理し、ソフトウェアから操作できるように仲介します。

### メモリ空間の管理

物理メモリ・仮想メモリへのアドレスの割り当てを行います。

### プロセススケジュールリング

CPUを適切に割り当てるアルゴリズムです。

### GUIの提供

ユーザが使いやすいようにGraphical User Interfaceを備えているOSが多くあります。

## WindowsとLinuxは何が違う？

主な機能の違いを列挙します。

|Linux|Windows|
|---|---|
|オープンソース|クローズドソース|
|自由ライセンス|制限付きライセンス|
|CUI|GUI|

科学技術計算にLinuxが使われる理由は、「計算用ツールが無料で付いてくる」「装置に合わせてOSそのものを書き換えることができる」などの理由があります。

管理者権限が与えられているユーザのことを、LinuxではRootユーザ、WindowsではAdministratorと呼びます。

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

ディストリビューションは、自由に配布や利用のできるフリーソフトウェアだけを集め、無料で提供されるものです。主にDebian系, Redhat系, Slackware系があります。

### Ubuntu

Debian系Linux OS。GUIやパッケージマネージャなどが豊富。

### Vine

Redhat系Linux OS。

## ブートローダとは？

コンピュータの起動直後に動作し、OSをディスクから読み込んで起動するプログラムのことです。実際には起動ディスクのMBR(Master Boot Record)と呼ばれる領域に記録されたプログラムが別のプログラムを呼び出し、ブート処理は呼び出されたプログラムが行うという二重構造になっています。複数のOSに対応したブートローダでは、ブートローダに複数のOSを登録することにより、必要に応じて起動時にOSを選択することも可能です。Linuxに付属するLILO(LInux Loader)やWindows NTに付属するOS Loaderが有名です。

## デバイスドライバとは？

周辺機器を動作させるためのソフトウェアです。OSが周辺機器を制御するための橋渡しを行います。単にドライバと呼称されることもあります。周辺機器の使用や制御方法は製品によって大きく異なるため、OSが単独で全ての製品をサポートすることは困難です。そのため、周辺機器メーターは自社製品を制御するためのデバイスドライバを提供し、利用者はそれをOSに組み込んで使用します。デバイスドライバはOSごとに用意する必要があるため、利用者が少ないOS用のデバイスドライバは用意されていない場合もあります。

# ハードディスクの領域分けに関する知識

## なぜOSはHDDにインストールするのか？

上述の通り、メインメモリは電源を消すとその記録を消失します。OSは電源が落ちても消えないようにHDDにインストールします。容量の問題としても、一昔前まではメインメモリは32MBや1GBなどであったため、そこにOSは入らないという理由もあります。

## HDDをフォーマットするとはどのようなことか？

HDDやUSBなどの記憶装置では、記憶媒体(メディア)を利用できるようにするために、記憶領域を小さな部分に区分けし、どの部分に何を記録したかを管理するための領域を確保します。この操作をフォーマットと呼びます。媒体は使用する前に必ずフォーマットを行う必要があります。
フォーマットには物理フォーマットと論理フォーマットがあります。前者はディスクにどのようにデータを並べるかを決める作業、後者は物理フォーマットが終わった後でOSが使用する管理用データや実際に記録されるデータの論理的な位置を設定する作業で、OSによって形式が異なります。  
すでに利用されている媒体でフォーマットを行うと、それまで記録されていたデータはすべて消えてしまいます。そのため、HDDなど大容量の媒体をフォーマットする際には注意が必要です。

## Windows, Linuxで使われるフォーマット形式について

フォーマット形式によってハードディスクの書き込み速度が異なることがあります。

### NTFS

1パーティションあたりの最大容量は16EBです。NTFSはMicrosoftが使用を公開しておらず、基本的にWindowsでしか使用できません(ハッカーがソフトを作って無理やり対応させたという例はあります)。

### ext4

最大1EiBまでのボリュームサイズと最大16TiBまでのファイルサイズをサポートします。extファルシシュテムはext3およびext2に対する後方互換性を持ちます。すなわちext3およびext2ファイルシステムをext4ファイルシステムとしてマウントすることが可能です。
ext3ファイルシステムにおいては1つのディレクトリに入れられるサブディレクトリ数が32000個に制限されていますが、この制限がext4ファイルシステムでは64000個までに引き上げられています。
コンピュータが全体的に高速になるにつれて、Linuxはミッションクリティカルな用途で使用されるようになり、廟ベースの粒度のタイムスタンプでは不十分となっています。この解決として、ext4ではナノ秒単位でのタイムスタンプを提供しています。
遅延アロケーションは、全てのデータをディスクに書き出す前にファイルシステムがクラッシュするような場合に、データを損失する危険性があります。

## パーティションとは？

ハードディスク内に分割された領域のことです。一台のハードディスクを複数の領域に区切って、あたかも複数台のハードディスクがあるかのように利用することができます。分割できる個数や容量はOSやマザーボードのBIOSなどの対応状況により異なります。パーディションごとに違うOSをインストールして、複数のOSを一台のハードディスクの中に共存させることもできます。また、パーティションを「OS用の領域」「データ用の領域」などに分けておけば、ファイル情報が消失するなどの事故が起きた際に被害を小さくすることができます。小容量のパーティションをたくさん作れば、読み書き時の最小単位であるクラスタのサイズも小さくすることができ、ハードディスクの使用効率をあげることができます。

### プライマリパーティションとは？

システム起動が可能なパーティションで、作成すると1つのパーティションに1つのドライブ名が割り当てられます。プライマリパーティションの場合、作成可能な数に制限があり、Windows XPでは1つのディスクにはそれ以上のパーティションを作成することができなくなります。

### 拡張パーティションと論理パーティション

システム起動ができないパーティションで、作成しただけではドライブとして認識されません。パーティション作成後、論理ドライブを作成する必要があります。拡張パーティションのメリットは、拡張パーティションの中に複数の論理ドライブを作成することができる点です。拡張パーティションの中に論理ドライブを作成すると、作成した論理ドライブそれぞれにドライブ名が割り当てられます。1つのディスクの中に作成できる論理ドライブ数にはドライブ文字の限界内で制限がありません。

## MBR(マスターブートレコード)とは？

この意味の前にPCが起動する仕組みを考えてみましょう。HDDからオペレーティングシステムを起動する場合、次のようなステップが実行されています。

* POST (Power-On Self Test)が実行される
* BIOSがブートデバイスを検索
* 最初のブートデバイスのMBRをメモリ上にロードし、制御を渡す(ブートデバイスがメディアの場合はブートセクターに制御を渡す)
* MBRのブートストラップコードはパーティションテーブルを検索し、ブート識別子がアクティブ(0x80)なパーティションのブートセクターをメモリ上にロードして制御を渡す
* ブートセクターに記録されたプログラムはOSローダをメモリ上にロードし、制御を渡す(DOS/Windowsの場合はIO.SYSが、Windows NT/2000の場合はNTLDRがロードされる)
* OSの起動開始

PCの起動時に最初の読み込まれるHDD上の部分をセクタと呼びます。HDDの先頭に置かれ、ハードディスク内に収められたOSをどのように起動するかなどの情報が記録されています。PCを起動するとMBRが最初に読み込まれ、ブートローダのプログラムが動作します。ブートローダはパーティションの位置や大きさなどを記録したパーティションテーブルを読み込み、起動するパーティションのブートセクタと呼ばれる領域を読み込みます。ブートセクタに置かれたプログラムは、そのパーティションに置かれたOSを起動します。MBRの情報が破壊されてしまうと、PCは起動できません。

## SWAP(スワップ)領域とは？

コンピュータシステムの動作中にメインメモリ(実メモリ)を使いきりそうになり、空き容量が不足した場合に、実メモリから使用中の内容の一部を取り出して退避するための領域がHDD上に存在します。これをSWAP領域と呼びます。SWAPに退避した内容に再びアクセせうするためには、実メモリ上に復元する処理が必要です。これをスワップインと呼びます。その逆の操作である、退避する処理をスワップアウトと呼びます。実メモリと比べるとHDDえへのアクセスは格段に劣るため、処理速度は落ちます。またスワップアウトやスワップインが頻繁に発生すると、CPUの処理能力の多くがそれらの処理に割り当てられてしまい、アプリケーションの動作の妨げになります。そのためシステム全般の処理性能も大幅に低下します。このスワップアウト・スワップインが頻発する状態をスラッシングと呼びます。
昨今、必要仮想メモリを全て実メモリでまかなえるなら、スワップ領域は必要ありません。いくら大きく定義しても良いですが、実メモリから溢れないわけですからほとんど使われることはないでしょう。しかし、安全策として実メモリと同等ぐらいを確保することが慣習になっています。 
Windowsでは仮想メモリという名称でSWAP領域が確保されています。メモリをたくさん積んでいる場合、これを解放しても良いでしょう。

# ネットワークに関する知識

## IPアドレスとは？

インターネットやイントラネットなどのネットワークに接続されたコンピュータや通信機器1台ずつに割り振られた識別番号のことです。インターネット上ではこの数値に重複があってはならないため、IPアドレスの割り当てなどの管理は各国のNIC(ネットワークインフォメーションセンター)が行なっています。 
インターネットなどのネットワークは機器間の通信にIP(Internet Protocol)というプロトコル(通信規約)が用いられています。IPアドレスはこのIPで運用されるネットワークにおける個々の通信機器やコンピュータの住所のようなものです。現在広く普及しているIPv4(Internet Protocl version 4)ではIPアドレスに8bitずつ4つに区切られた32bitの数値が使われます。「211.9.36.148」のように、0から255前の10進数の数字を4つ並べて表現されます。
現在のIPv4では32bitの数値で識別できる上限である約42億台($2^{32}$)までしか一つのネットワークに接続することができず、インターネットで利用するIPアドレスが足りなくなることが懸念されています。このため、企業などの多くの機器を利用するところでは、組織内ネットワークを自由に利用し、プライベートアドレスを用います。そしてインターネットとの境界にグローバルアドレスとのアドレス交換を行う機器を設置すると行った運用方法が普及しています。

## グローバルIPアドレスとプライベートIPアドレス

### グローバルIPアドレス

後述するプライベートIPアドレス、リンクローカルアドレス、特殊用途のIPアドレスなどを除いたものをグローバルIPアドレスと呼び、インターネットの接続用に利用されます。そのため、ICANNを頂点とした階層的な移譲関係によって世界的な管理が行われています。日本では日本ネットワークインフォメーションセンター(JPNIC)が管理を行なっています。

### プライベートIPアドレス

プライベートIPアドレス(ローカルIPアドレス)はプライベートネットワーク(外部から利用できない社内LANなど)のアドレスとして使うことができます。異なるプライベートネットワークを相互接続してルーティングすることも可能です。
通常、LANではプライベートIPを使用し、WANではグローバルIPアドレスを使用します。LANはルータの内側くらいの意味だと思ってください。

## アドレスクラス

IPアドレスの値によってIPアドレスをいくつかのカテゴリに分類したものです。IPアドレスの最上位部分のビットパターンの値によってクラスAからクラスEまでの5つに分類されます。

### クラスA

最上位の1bitが0ならばそのIPアドレスはクラスAに属します。具体的には0.0.0.0-127.255.255.255がこのクラスAに該当します。これは全IPアドレス空間(約42億個)のうち半分に相当します。 
クラスAでは、ネットマスクの値は255.0.0.0となります。この結果、IPアドレスは1byteのネットワークアドレス部と3byteのホストアドレス部に分けられることになります。クラスAではIPアドレスの最上位bitは常に0で固定されるため、最終的にはネットワークアドレスでは0-127までの全部で128個が利用できます。そしてそれぞれのネットワーク内には最大でそれぞれ約1600万台(0.0.0-255.255.255)のホストを収容できます。

### クラスB

最上位の2bitが1-0ならばそのIPアドレスはクラスBに属します。具体的には128.0.0.0-191.255.255.255が該当します。これは全IPアドレス空間のうち1/4に相当します。 
クラスBではネットマスクの値は255.255.0.0となります。この結果、IPアドレスは2byteのネットワークアドレス部分と2byteのホストアドレス部分に分けられます。クラスAではIPアドレスの最上位の2bitは常に1-0に固定なので、ネットワークアドレスとしては128.0-191.255までの約1万6千個が利用でき、さらにそれぞれのネットワーク内には最大でそれぞれ0.0-255.255の約6万5千のホストを収容することができます。

### クラスC

最上位の3bitが1-1-0ならばそのIPアドレスはクラスCに属します。具体的には192.0.0.0-223.255.255.255が該当します。これは全IPアドレス空間のうち1/8に相当します。 
クラスCではネットマスクの値は255.255.255.0となります。この結果、IPアドレスは3byteのネットワークアドレス部分と1byteのホストアドレス部分に分けられます。クラスAではIPアドレスの最上位の3bitは常に1-1-0に固定なので、ネットワークアドレスとしては192.0.0-223.255.255までの約200万個が利用でき、さらにそれぞれのネットワーク内には最大でそれぞれ0-255の256のホストを収容することができます。

### クラスD

最上位の4bitが1-1-1-0ならばそのIPアドレスはクラスDに属します。具体的には224.0.0.0-239.255.255.255が該当します。クラスDはマルチキャスト通信で使われる特別なIPアドレスです。マルチキャスト通信を使ったマルチメディア・アプリケーションなどで使われています。例えば、同じ内容の音声や映像データなどを一斉に放送するような用途に用いられます。一般的なノードにクラスDのIPアドレスだけを付与することはできません。

### クラスE

最上位の4bitが1-1-1-1ならばそのIPアドレスはクラスEに属します。具体的には240.0.0.0-255.255.255.255が該当します。ただしこのクラスは実験的な目的のためにTCP/IP(IPv4)の開発当初から予約されており、実際に使われることはありません。

クラスA, B, Cのアドレスクラスでは、それぞれが以下のようなデフォルトのネットマスクの値(ネットワークアドレスとホストアドレスをわかるためのマスクの値)が決まっています。

* A: 255.0.0.0
* B: 255.255.0.0
* C: 255.255.255.0

## DHCPとは、固定IPとは？

インターネットなどのネットワークに一時的に接続するコンピュータに、IPアドレスなど必要な情報を自動的に割り当てるプロトコルのことです。ネットワーク設定を主導で行わなくてもすぐに適切な設定で接続することができます。ネットワーク設定に詳しくないユーザでも簡単に接続できる仕組みです。またネットワーク管理者は多くのクライアントを容易に一元管理することができます。
DHCPで設定情報を提供する機能を持ったコンピュータやネットワーク機器をDHCPサーバと呼びます。これはゲートウェイサーバやDNSサーバのIPアドレスやサブネットマスク、そしてクライアントに割り当ててもよいIPアドレスの範囲など、ネットワークに接続するために必要な情報が設定されており、ネットワークに接続したばかりのコンピュータにこれらの情報を提供します。接続していたコンピュータが通信を切断すると、自動的にアドレスなどを回収し、新たに接続してきた他のコンピュータに割り当てます。
企業のネットワークなどではサーバコンピュータが他のネットワーク管理機能などとともにDHCPサーバとして稼働している場合が多いです。家庭のインターネット接続環境ではブロードバンドルータなどがDHCPサーバ機能を内蔵している場合が多いです。

## ネットマスクとは？

IPアドレスは単なる32bitの数値なので、2つのパートから成り立っていると言われても、IPアドレスの数値だけではどこがネットワークアドレス部でどこがホストアドレス部下を判断することはできません。そこで登場するのがネットマスク、もしくはサブネットマスクと呼ばれる32bit幅の数値です。たとえばWindows2000におけるIPアドレスの例では、IPアドレスのすぐ下にはサブネットマスクの値が同時に表示されています。この数値こそが、ネットワークアドレスとホストアドレスを分離するための鍵となる数値です。一般的にはIPアドレスをセットする場合には、必ずこのネットマスクの値も同時にセットします。DHCPなどでIPアドレスを自動配布している場合には、やはりDHCPサーバが同時にネットマスクの値も配布していることになります。先ほど、同じネットワークに属しているホストとは同じネットワークの値を共有していると記述しましたが、同時に同じネットマスクの値も共有していることになります。
ネットマスクとは簡単に言えば、IPアドレスからネットワークアドレス部を抽出するためのマスクの値のことです。具体てKに言えば、論理演算におけるAND演算を行うためのマスク用の数値です。マスクの値のbitが0ならば出力は入力値に関わらず0ですが、bitが1ならば出力には入力と同じ値が現れます。

## ゲートウェイとは？

ファイヤーウォールの一形態のことを指します。ゲートウェイは、ネットワーク間の接続を中継する機器またはソフトウェアのことです。この目的は異なるネットワーク感のプロトコルの違いを吸収するためという役割が大きなものでした。しかし、ネットワークの主流がインターネットになってからは、ネットワークの出入り口で何らかの処理を行うコンピュータとしての意味合いが強くなっています。例えばゲートウェイを通すことで、必ずウィルスチェックを行うような場合です。このようにすることで各パソコンのユーザー側でウィルスのパターンファイルを管理するてm場から解放されるというメリットがあります。ルーターもファイヤーウォールの一形態です。

## DNSサーバ(ネームサーバ)

単なる数値の羅列であるIPアドレスは人間にとって覚えにくいものです。そのため、コンピュータやネットワークに名前(ドメイン名やホスト名)がつけられている場合が多く、DNS(Domain Name System)というシステムによってIPアドレスとの相互変換が行われます。このため、普段インターネットを利用するときにIPアドレスそのものを目にしたり意識するような場面は少なくなります。

## 同じLAN内にある2台の計算機に同一のIPアドレスを割り振る...

同一LAN内に同じIPアドレスのコンピュータがある場合、それらのコンピュータから別のコンピュータやサーバにデータを送信することはできます。しかし、逆に他のコンピュータやサーバからそれら2つのコンピュータにデータを送ろうとすると、IPアドレスが同じなのでどちらに送信すればよいかわからなくなります。そのため通信が著しく不安定になったり通信不能になったりします。