ハンドブック:Alpha/インストール/ディスク

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Handbook:Alpha/Installation/Disks and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎Türkçe • ‎español • ‎français • ‎polski • ‎português do Brasil • ‎русский • ‎українська • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Alpha ハンドブック
インストール
インストールについて
メディアの選択
ネットワーク設定
ディスクの準備
stage3のインストール
Gentooベースシステムのインストール
カーネルの設定
システムの設定
ツールのインストール
ブートローダの設定
締めくくり
Gentooの操作
Portageについて
USEフラグ
Portageの機能
Initスクリプトシステム
環境変数
Portageの操作
ファイルとディレクトリ
変数
ソフトウェアブランチの併用
追加ツール
カスタムPortageツリー
高度な機能
ネットワーク設定
はじめに
高度な設定
モジュール式ネットワーク
無線
機能の追加
動的な管理


ブロックデバイスの概要

ブロックデバイス

Gentoo Linuxの、そしてLinux一般の、Linuxファイルシステム、パーティション、ブロックデバイスを含めた、ディスク中心の考え方について詳しく見てみましょう。ディスクの入出力とファイルシステムについて理解することで、Gentoo Linuxインストールのためのパーティションとファイルシステムを構築できるようになります。

まずはブロックデバイスについて見ていきます。最も有名なブロックデバイスはおそらく、Linuxシステム上で1番目のドライブを表す、/dev/sdaでしょう。SCSIとSerial ATAドライブは/dev/sd*と名付けられます。より新しいlibataフレームワークがカーネルに組み込まれていれば、IDEデバイスも/dev/sd*と名付けられます。古いデバイスフレームワークを使っていれば、1番目のIDEドライブは/dev/hdaになるでしょう。

上のブロックデバイスは、ディスクへの抽象的なインターフェースを表しています。ユーザープログラムはこれらのブロックデバイスを用いて、デバイスがIDE、SCSI、もしくは他のものであるかどうかを心配することなしにディスクと通信することができます。プログラムは容易にディスク上の記憶領域を、ランダムアクセスできる512バイトごとの連続領域としてアドレッシングできます。


スライス

理論的にはディスク全体をLinuxシステムに使用することが出来ますが、実際にはほとんど行われません。その代わりに、ディスクブロックデバイス全体を小さく、より扱いやすいブロックデバイスに分割します。Alphaシステムでは、これはスライスと呼ばれます。

注意
これより先のセクションでは、インストールの説明でARC/AlphaBIOSのセットアップ用のパーティショニングを使用します。個人の好みに合わせて調整してください!

パーティション構成の設計

パーティション数とサイズ

パーティションの個数は環境に大きく依存します。例えば、多数のユーザがいる場合、セキュリティを向上し、バックアップを容易にするために/home/を分離することを推奨します。もしGentooがメールサーバとして動作する場合は、 /var/ を分離し、すべてのメールを /var/ に保存すべきでしょう。適切なファイルシステムの選択は、パフォーマンスを最大限向上します。ゲームサーバでは、ほとんどのゲームは/opt/にインストールされているので、/opt/を分離すべきでしょう。理由は/home/ディレクトリと同様にセキュリティとバックアップです。多くの場合、 /usr/ は大きく確保すべきです。/usr/には大部分のアプリケーションが配置されるだけでなく、既におよそ650MiBを使用しているGentoo ebuildリポジトリが、ほとんどの場合この場所に置かれるからです(既定の場所は/var/db/repos/gentooです)。このディスクスペース推定量は、既定では/var/cache/以下に保存されるbinpkgs/ディレクトリやdistfiles/ディレクトリを除外しています。

これらは管理者がやりたいことに大きく依存します。パーティションやボリュームを分離することには下記の利点があります。

  • それぞれのパーティションまたはボリュームに対して、最も性能が高いファイルシステムを選択できます
  • ゾンビプロセスがパーティションまたはボリュームに継続的に書き込みをした場合でも、システム全体の空き領域を使い切ることはありません
  • 必要ならば、複数のチェックを並行して実行することで、ファイルシステムチェックの時間を短縮できます (複数のパーティションよりも複数のディスクの方が効果があります)
  • リードのみ、nosuid(setuidビット無効)、noexec(実行ビット無効)等のマウントオプションによって、セキュリティが向上します

しかし、複数パーティションにはデメリットもあります。もし適切に設定されない場合、あるパーティションが空き領域をたくさん持ち、別のパーティションにはまったく空き領域がなくなるといったことが起こり得ます。特に/usr//var/いった重要なマウントポイントに対して、しばしば管理者は他のブートスクリプトが動作する前にパーティションをマウントするために、initrmfsを使用しなければならなくなるでしょう。これはいつも成り立つというわけではありません。結果はよく変わるのです。

また、 SCSIやSATAでは仕様上の制約により、GPTラベルを使用しない限りは 15個までしかパーティションを作れません。

スワップ領域について

スワップパーティションについて完璧なパーティションサイズというものはありません。スワップ領域の目的は、メインメモリ(RAM)が逼迫した際、カーネルにディスク領域を提供するためにあります。スワップ領域があれば、カーネルは最近最も使われていないメモリ領域をディスクに書き出し(スワップもしくはページアウト)、メモリを開放します。もちろん、もし急にメモリが必要になった場合は、これらのページはメモリに戻す(ページイン)必要があります。これには多少なりとも時間が必要です。(メインメモリと比較してディスクはとても遅いためです)

システムがメモリを大量に消費するアプリケーションを実行しないとき、またシステムが多くの空きメモリを持っているときは、それほど大きいスワップ領域は必要ではありません。しかし、スワップ領域はハイバネーションのときに全メモリを保存するためにも使われます。そのためハイバネーションが必要な場合は、より大きい、最低でもインストールされている全メモリと同程度のサイズのスワップ領域が必要です。


ディスクをパーティションに分けるのにfdiskを使う(SRMのみ)

以下のパートではSRM用に、この例のようなスライスレイアウトを作成する方法を説明します:

スライス 説明
/dev/sda1 スワップスライス
/dev/sda2 ルートスライス
/dev/sda3 フルディスク(必須)

スライスレイアウトはお好みで変更してください。

利用可能なディスクの特定

どのディスクがシステムで動作しているかを確認するためには、以下のコマンドを使用してください:

IDE ディスクの場合:

root #dmesg | grep 'drive$'

SCSI ディスクの場合:

root #dmesg | grep 'scsi'

出力では、どのディスクが検出されたか、そしてディスクに対応する/dev/の項目が表示されます。以下のパートではディスクは/dev/sdaにあるSCSIディスクであると仮定します。

そして fdisk を実行:

root #fdisk /dev/sda

すべてのスライスの削除

もしハードディスクが完全に空ならば、まずBSDディスクラベルを作成します。

Command (m for help):b
/dev/sda contains no disklabel.
Do you want to create a disklabel? (y/n) y
A bunch of drive-specific info will show here
3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  c:        1      5290*     5289*    unused        0     0

まず'c'-スライス(BSDディスクラベルを使用するのに必要)以外のすべてのスライスを削除することから始めます。以下で、どのようにスライスを削除するかを示しています(この例では'a'を使用します)。この作業を他のすべてのディスクにも行ってください(繰り返しますが、'c'-スライス以外です)。

pを使用して、存在するすべてのスライスを確認してください。dはスライスを削除するのに使います。

BSD disklabel command (m for help):p
8 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  a:        1       235*      234*    4.2BSD     1024  8192    16
  b:      235*      469*      234*      swap
  c:        1      5290*     5289*    unused        0     0
  d:      469*     2076*     1607*    unused        0     0
  e:     2076*     3683*     1607*    unused        0     0
  f:     3683*     5290*     1607*    unused        0     0
  g:      469*     1749*     1280     4.2BSD     1024  8192    16
  h:     1749*     5290*     3541*    unused        0     0
BSD disklabel command (m for help):d
Partition (a-h): a

すべてのスライスに対してこの作業を行ったあと、一覧は以下のようになるはずです:

BSD disklabel command (m for help):p
3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  c:        1      5290*     5289*    unused        0     0

スワップスライスの作成

Alphaベースのシステムでは独立したブートスライスを作成する必要はありません。しかしながら、最初のシリンダはabootイメージが置かれるため、使用することが出来ません。

3番目のシリンダより、合計サイズ1GBのスワップスライスを作成します。nを使用して新しいスライスを作成してください。スライスを作成したら、スライスのタイプを1(数字の一)、すなわちスワップに変更します。

BSD disklabel command (m for help):n
Partition (a-p): a
First cylinder (1-5290, default 1): 3
Last cylinder or +size or +sizeM or +sizeK (3-5290, default 5290): +1024M
BSD disklabel command (m for help):t
Partition (a-c): a
Hex code (type L to list codes): 1

これらの段階を終えたら、レイアウトは以下のような感じになるはずです:

BSD disklabel command (m for help):p
3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  a:        3      1003      1001       swap
  c:        1      5290*     5289*    unused        0     0

ルートスライスの作成

それではルートスライスを、スワップスライスの最後のシリンダの次より作成します。pコマンドを使用して、スワップスライスの終了位置を確認してください。この例では、終了位置は1003ですので、ルートスライスを1004より作成します。

現在fdiskにはバグがあり、fdiskが、利用可能なシリンダ数が実際のシリンダ数よりも1多いと見なしている問題があります。言い換えると、最後のシリンダを指定する時、シリンダ数を1つ減らしてください(この例では5290)。

スライスを作成したら、タイプを8、つまりext2に変更します。

BSD disklabel command (m for help):n
Partition (a-p): b
First cylinder (1-5290, default 1): 1004
Last cylinder or +size or +sizeM or +sizeK (1004-5290, default 5290): 5289
BSD disklabel command (m for help):t
Partition (a-c): b
Hex code (type L to list codes): 8

結果的にスライスレイアウトはこのようになるはずです:

BSD disklabel command (m for help):p
3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  a:        3      1003      1001       swap
  b:     1004      5289      4286       ext2
  c:        1      5290*     5289*    unused        0     0

スライスレイアウトを保存し終了する

wを打ちfdiskを終了してください。この操作はスライスレイアウトの保存もします。

Command (m for help):w

ディスクをパーティションに分けるのにfdiskを使う(ARC/AlphaBIOSのみ)

以下のパートではARC/AlphaBIOS用に、この例のようなパーティションレイアウトを作成する方法を説明します:

パーティション 説明
/dev/sda1 ブートパーティション
/dev/sda2 スワップパーティション
/dev/sda3 ルートパーティション

パーティションレイアウトはお好みで変更してください。

利用可能なディスクの特定

どのディスクが動作しているかを確認するためには、以下のコマンドを使用してください:

IDE ディスクの場合:

root #dmesg | grep 'drive$'

SCSI ディスクの場合:

root #dmesg | grep 'scsi'

この出力から、どのディスクが検出されたか、そしてディスクに対応する/dev/の項目がどれかを確認するのは簡単なはずです。以下のパートではディスクは/dev/sdaにあるSCSIディスクであると仮定します。

そして fdisk を実行:

root #fdisk /dev/sda

すべてのパーティションの削除

もしハードディスクが完全に空ならば、まずDOSディスクラベルを作成します。

Command (m for help):o
Building a new DOS disklabel.

まずすべてのパーティションを削除することから始めます。以下で、どのようにパーティションを削除するかを示しています(この例では'1'を使用します)。この作業を他のすべてのパーティションにも行ってください。

pを使用して、存在するすべてのパーティションを確認してください。dはパーティションを削除するのに使います。

command (m for help):p
Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
  
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         478      489456   83  Linux
/dev/sda2             479        8727     8446976    5  Extended
/dev/sda5             479        1433      977904   83  Linux Swap
/dev/sda6            1434        8727     7469040   83  Linux
command (m for help):d
Partition number (1-6): 1

ブートパーティションの作成

MILOを使用して起動しているAlphaシステムでは、小さなvfatのブートパーティションを作成しなければなりません。

Command (m for help):n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-8727, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-8727, default 8727): +16M
Command (m for help):t
Selected partition 1
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)

スワップパーティションの作成

合計サイズ1GBのスワップパーティションを作成します。nを使用して新しいパーティションを作成してください。

Command (m for help):n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (17-8727, default 17): 17
Last cylinder or +size or +sizeM or +sizeK (17-8727, default 8727): +1000M
Command (m for help):t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)

これらの段階を終えたら、レイアウトは以下のような感じになるはずです:

Command (m for help):p
Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
  
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          16       16368    6  FAT16
/dev/sda2              17         971      977920   82  Linux swap

ルートパーティションの作成

それではルートパーティションを作成します。繰り返しますが、nコマンドを使用してください。

Command (m for help):n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (972-8727, default 972): 972
Last cylinder or +size or +sizeM or +sizeK (972-8727, default 8727): 8727

これらの段階を終えたら、レイアウトは以下のような感じになるはずです:

Command (m for help):p
Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
  
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          16       16368    6  FAT16
/dev/sda2              17         971      977920   82  Linux swap
/dev/sda3             972        8727     7942144   83  Linux

パーティションレイアウトを保存し終了する

wを打ち、fdiskでの変更を保存してください。

Command (m for help):w

パーティションを作成したので、ファイルシステムを作成するに進んでください。



ファイルシステムを作成する

はじめに

パーティションが作成できたら、その上にファイルシステムを作成します。次の節ではLinuxがサポートする各種ファイルシステムを紹介します。どのファイルシステムを使うかをすでに決めているなら、パーティションにファイルシステムを適用するへ進みましょう。そうでなければ、次の節を読んで利用可能なファイルシステムについて知るのがよいでしょう。

ファイルシステム

利用可能なファイルシステムは複数あります。そのうちいくつかはアーキテクチャalpha上で安定して動作するとされています--重要なパーティションに実験的なファイルシステムを選択するときは、事前にファイルシステムのサポート状況を十分に知っておくことを推奨します。

btrfs
スナップショット、チェックサムによる自己修復、透過的圧縮、サブボリューム、RAIDの統合など、多くの先進機能を提供する次世代のファイルシステムです。いくつかのディストリビューションはこれをすぐに使えるオプションとして提供し始めていますが、未だ製品に使える状態ではありません。ファイルシステムが壊れたという報告はよくあります。開発者はユーザーに、安全のため最新のカーネルバージョンを使うようしきりに促しています。古いカーネルには既知の問題があるからです。この状況は何年も続いており、事態が変わってきたと判断するには早すぎます。問題への修正が古いカーネルにバックポートされることは滅多にありません。このファイルシステムを使う際は十分注意を払うようにしてください。
ext2
試練を受けた本当のLinuxファイルシステムですが、メタデータジャーナリングがないため、起動時に行われる毎回のext2ファイルシステムチェックは時間のかかるものになります。今ではジャーナルの効く新世代の、整合性を非常に素早くチェックできるファイルシステムの選択肢が数多くありますから、一般的にはそちらのほうが、ジャーナルの効かない対抗馬より好まれます。ジャーナルの効くファイルシステムは、システム起動の際たまたまファイルシステムに不整合があった場合の長い遅延を防いでくれます。
ext3
ジャーナルが有効になった ext2 ファイルシステムであり、full data及びordered dataジャーナリングといった強力なジャーナリングモードに加え、高速な修復のためのメタデータジャーナリングをサポートします。HTreeインデックスによって、ほぼすべての状況で高いパフォーマンスが可能になります。簡単にいえば、ext3 はとても優れた信頼できるファイルシステムです。
ext4
もともと ext3 のフォークとして作られた ext4 は、新機能、パフォーマンスの向上と、ディスク上でのフォーマットの適度な変更による、サイズ制限の撤廃を提供します。ボリュームは1EBまで広げることができ、最大のファイルサイズは16TBです。古典的なext2/3のbitmap block割当ての代わりに、ext4 はextentを使い、大きなファイルでのパフォーマンスを向上し、断片化を減らしています。ext4は他にもより洗練されたアロケーションアルゴリズム(遅延割当てと複数ブロック割当て)を提供し、ファイルシステムドライバーに、ディスク上のデータのレイアウトを最適化するより多くの方法を与えています。ext4 は推奨される、全目的、全プラットフォームのファイルシステムです。
f2fs
Flash-Friendly File Systemはもともと、SamsungによってNANDフラッシュメモリで利用するために作られました。2016年Q2現在、このファイルシステムはまだ未熟なものと思われますが、GentooをmicroSDカードやUSBスティックや他のフラッシュベースの記憶装置にインストールする際にはすばらしい選択でしょう。
JFS
IBMの高パフォーマンスジャーナリングファイルシステムです。JFSは軽量、高速かつ信頼できる、B+木ベースのファイルシステムで、様々な条件で良いパフォーマンスが出ます。
ReiserFS
B+木ベースのジャーナルが有効なファイルシステムで、全体的に良いパフォーマンスが出ます。特に、大量の小さなファイルを扱う際は、CPUサイクルを多く消費するものの、高いパフォーマンスを得ることができます。ReiserFSは他のファイルシステムと比べるとあまり保守されていないように思われます。
XFS
メタデータジャーナリングのあるファイルシステムで、堅牢な機能セットを持ち、スケーラビリティに最適化されています。XFSはどうやら、様々なハードウェアの問題に対してはあまり寛大ではないようです。
vfat
別名FAT32。Linuxでサポートされていますが、いかなるパーミッションの設定もサポートされていません。ほとんど、他のOS(主にMicrosoft Windows)との相互運用性のために使われていますが、いくつかのシステムファームウェア(たとえばUEFI)でも必要になります。
NTFS
この "New Technology" ファイルシステムは、Microsoft Windowsのフラッグシップファイルシステムです。上記のvfatと同様、BSDやLinuxが正しく動作するために必要なパーミッション設定や拡張属性を保持しないため、ルートファイルシステムとして使うことはできません。Microsoft Windowsとの相互運用のためにのみ使うべきです(「のみ」の強調に注意してください)。

ext2、ext3、ext4を(8GB以下の)小さいパーティションに使用するときは、十分なinode数を確保できるように適切なオプションを指定してファイルシステムを作成する必要があります。mke2fs (mkfs.ext2)アプリケーションは、「inodeあたりのバイト数」を指定することで、ファイルシステムが持つべきinode数を計算することができます。もっと小さいパーティションでは、計算されたinode数よりも大きい値を設定するとよいでしょう。

ext2,ext3そしてext4では、それぞれ次のコマンドで実行できます:

root #mkfs.ext2 -T small /dev/<device>
root #mkfs.ext3 -T small /dev/<device>
root #mkfs.ext4 -T small /dev/<device>

上のコマンドは通常では、「inodeあたりのバイト数」を16kBから4kBに減らすので、ファイルシステムに4倍のinode数を確保できます。比率を指定することで、さらに細かく調節することもできます:

root #mkfs.ext2 -i <ratio> /dev/<device>

パーティションにファイルシステムを適用する

パーティションまたはボリュームの上にファイルシステムを作成するには、ファイルシステムごとに異なるユーザースペースのユーティリティが利用可能です。下表でファイルシステムの名前をクリックすると、それぞれに追加の情報が得られます:

ファイルシステム 作成コマンド Minimal CD にある? パッケージ
btrfs mkfs.btrfs はい sys-fs/btrfs-progs
ext2 mkfs.ext2 はい sys-fs/e2fsprogs
ext3 mkfs.ext3 はい sys-fs/e2fsprogs
ext4 mkfs.ext4 はい sys-fs/e2fsprogs
f2fs mkfs.f2fs はい sys-fs/f2fs-tools
jfs mkfs.jfs はい sys-fs/jfsutils
reiserfs mkfs.reiserfs はい sys-fs/reiserfsprogs
xfs mkfs.xfs はい sys-fs/xfsprogs
vfat mkfs.vfat はい sys-fs/dosfstools
NTFS mkfs.ntfs はい sys-fs/ntfs3g

例えば、パーティション構造例の通りに、ブートパーティション(/dev/sda1)をext2に、ルートパーティション(/dev/sda3)をext4に設定するには、次のコマンドが使えます:

root #mkfs.ext2 /dev/sda1
root #mkfs.ext4 /dev/sda3

それでは、新しく作成したパーティション(または論理ボリューム)にファイルシステムを作成しましょう。

スワップパーティションを有効にする

mkswapはスワップパーティションを初期化するために使われるコマンドです:

root #mkswap /dev/sda2

スワップパーティションを有効化するには、swaponを使います:

root #swapon /dev/sda2

上述のコマンドで、スワップを作成して有効化しましょう。

ルートパーティションのマウント

パーティションが初期化され、ファイルシステムを格納したので、それらのパーティションをマウントする時です。 mount コマンドを使用しますが、作成されたすべてのパーティションに必要なマウントディレクトリを作成することを忘れないでください。例として、 rootパーティションをマウントします。

root #mount /dev/sda3 /mnt/gentoo
Note
もし/tmp/を別のパーティションに置く必要があるなら、マウントしたあと権限の変更を忘れずに行ってください:
root #chmod 1777 /mnt/gentoo/tmp
/var/tmpについても同様です。

このあと解説の中で、proc ファイルシステム(仮想的なカーネルとのインターフェース)が、他のカーネル擬似ファイルシステムと同様にマウントされますが、まず最初は、Gentooインストールファイルをインストールします。