Translations:Handbook:Parts/Full/Installation/8/ja

From Gentoo Wiki
Jump to:navigation Jump to:search


任意自由選択: ファームウェアとマイクロコードのインストール

カーネルコンフィグの節へ進む前に知っておいたほうが良いこととして、一部のデバイスは、それを適切に動作させるために追加のファームウェアのインストールする必要がある、ということがあります。これはネットワークインターフェース、特に、デスクトップとラップトップの両方で広く使用される、無線ネットワークインターフェースで必要になることが多いです。AMD、Nvidia、Intel などのベンダによる最近のビデオチップも、完全に機能させるには外部のファームウェアが必要になることが多いです。最近のハードウェアのためのファームウェアの多くは sys-kernel/linux-firmware パッケージ内で入手可能です。これらのベンダによるグラフィックカードを使用するシステムでは、グラフィックカードを使えるようにするために、カーネルを構成してインストールする前にこのファームウェアパッケージを emerge しておくのが賢明です。

root #emerge --ask sys-kernel/linux-firmware

個別のグラフィックスハードウェアやネットワークインターフェースに加えて、CPU もまたファームウェアアップデートを必要とすることがあります。こうしたファームウェアは典型的にはマイクロコードと呼ばれます。新しいリビジョンのマイクロコードは、動作の不安定さ、セキュリティ上の懸念、その他の CPU ハードウェアのバグに対するパッチとして、必要になることがあります。

AMD CPU に対するマイクロコードアップデートは、典型的には先述の linux-firmware パッケージとともに配布されます。Intel CPU に対するマイクロコードは sys-firmware/intel-microcode パッケージ内で見つかりますので、これを個別にインストールする必要があります。マイクロコードアップデートを適用する方法についてのさらなる情報は、マイクロコードの記事を確認してください。

カーネルのコンフィギュレーションとコンパイル

これで、カーネルソースを設定、コンパイルする準備が整いました。この設定およびコンパイルには 3 つのアプローチがあります。

  1. カーネルをマニュアルで設定およびビルドする。
  2. Linux カーネルを自動的にビルド・インストールする genkernel を使用する。
  3. Linux カーネルを、他のパッケージと同様に自動的にビルド・インストールするディストリビューションカーネルを使用する。

環境を最適化するための最良の方法はマニュアル設定なので、デフォルトの選択肢としてマニュアル設定を説明します。

すべてのディストリビューションが構築されるその中心にあるのがLinuxカーネルです。カーネルレイヤーはユーザープログラムとハードウェアの間に存在します。Gentooではカーネルソースについて複数の選択肢があります。説明付きのすべてのカーネルソースのリストは、Kernel overview pageで見ることができます。

カーネルソースのインストール

ベースのシステムにカーネルを手動でインストールしてコンパイルする場合には、Gentoo はsys-kernel/ パッケージを推奨しています。

適切なカーネルソースを選択して、emergeでインストールします。

root #emerge --ask sys-kernel/

このコマンドはカーネルソースを /usr/src/ の下に、カーネルバージョン毎のパスを分けてインストールします。選択されたカーネルソースパッケージに対して USE=symlink が有効化されていなければ、シンボリックリンクは自動で作成されません。

現在実行しているカーネルに対応するソースを指すように、/usr/src/linux シンボリックリンクを維持することは慣例となっています。しかし、このシンボリックリンクはデフォルトでは作成されないでしょう。シンボリックリンクを作成する簡単な方法は、eselect の kernel モジュールを利用することです。

シンボリックリンクの目的と、それを管理する方法についてのさらなる情報は、Kernel/Upgrade を参照してください。

まず、インストールされているカーネルを一覧表示します:

root #eselect kernel list
Available kernel symlink targets:
  [1]   linux-

linux シンボリックリンクを作成するには、次を使用してください:

root #eselect kernel set 1
root #ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-

マニュアル設定

はじめに

カーネルのマニュアル設定は、しばしばLinuxユーザーがしなければならない最も難しい手続きと考えられます。これは真実ではありません。カーネルを数回設定してみれば、それが難しいと言われていたことなど忘れてしまうでしょう!

しかし、一つだけ真実があります。カーネルをマニュアルで設定する時、ハードウェア情報を知ることはとても役に立ちます。ほとんどの情報は、lspciコマンドを含むsys-apps/pciutilsをインストールすることで得られます。

root #emerge --ask sys-apps/pciutils
注意
chroot環境では、lspciが出力していると思われる(pcilib: cannot open /sys/bus/pci/devicesのような)pcilibの警告は、無視しても構いません。

システム情報を得るための別の方法は、lsmodを使ってインストールCDが使っているカーネルモジュールを把握することです。その情報は何を有効にすべきかとてもよいヒントを与えてくれるでしょう。

では、カーネルソースがあるディレクトリに移動して、make menuconfigを実行しましょう。このコマンドはメニューベースの設定画面を起動します。

root #cd /usr/src/linux
root #make menuconfig

Linuxカーネルの設定はとても多くのセクションを持っています。まず最初にいくつかの必須オプションを述べましょう(そうでない場合、Gentooは動作しない、もしくは追加の処置なしには正しく動作しません)。 Gentoo wikiのGentoo カーネルコンフィグレーションガイドには、さらに役立つ記述があるでしょう。

必須オプションを有効にする

もし sys-kernel/gentoo-sources を使用する場合は、Gentoo 固有のコンフィギュレーションオプションを有効化することを強く推奨します。これらは、正しく機能するために必要な最小限のカーネルの機能が有効化されることを確実にします:

KERNEL Gentoo 固有オプションを有効化する
Gentoo Linux --->
  Generic Driver Options --->
    [*] Gentoo Linux support
    [*]   Linux dynamic and persistent device naming (userspace devfs) support
    [*]   Select options required by Portage features
        Support for init systems, system and service managers  --->
          [*] OpenRC, runit and other script based systems and managers
          [*] systemd

通常、最後の 2 行の選択は init システムの選択(OpenRCsystemd か)に依存します。両方の init システムへのサポートを有効化しても害はありません。

もし sys-kernel/vanilla-sources を使用する場合は、この init システムに関する追加の選択項目は利用できないでしょう。サポートを有効化することは可能ですが、このハンドブックの範囲からは外れることです。

システムのブートに必須となるドライバ(SCSIコントローラ等)は、モジュールではなく、カーネルの一部としてコンパイルしなければなりません。そうでないと、システムは全くブートできないでしょう。

次に正確なプロセッサタイプを選択します。このとき、もし使えるのであればMCE機能を有効にすることが推奨されます。これによりハードウェアの異常が通知されるようになるでしょう。いくつかのアーキテクチャ(x86_64)で、これらのエラーはdmesgでは確認できませんが、/dev/mcelogにログが残ります。この機能を有効にするためにapp-admin/mcelogパッケージが必要になります。

また、Maintain a devtmpfs file system to mount at /devを選択することで、必須となるデバイスファイルがブートプロセスの初期段階で使えるようになります (CONFIG_DEVTMPFSCONFIG_DEVTMPFS_MOUNT):

KERNEL devtmpfsサポートを有効にする
Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [*]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

SCSI ディスクサポートが有効になっているか確認してください(CONFIG_BLK_DEV_SD):

KERNEL SCSIディスクサポートを有効にする
Device Drivers --->
   SCSI device support  --->
      <*> SCSI disk support

次にFile Systemsで、システムが使用するファイルシステムに必要なサポートを選択しましょう。ルートファイルシステムに使われるファイルシステムをモジュールとしてコンパイルしてはいけません。モジュールにした場合、システムがパーティションをマウントできないおそれがあります。また、ここでVirtual memory/proc file systemも選択してください。システムの必要に応じて以下の選択肢から1個以上を選択してください (CONFIG_EXT2_FS, CONFIG_EXT3_FS, CONFIG_EXT4_FS, CONFIG_MSDOS_FS, CONFIG_VFAT_FS, CONFIG_PROC_FS, and CONFIG_TMPFS):

KERNEL 必要なファイルシステムを選択する
File systems --->
  <*> Second extended fs support
  <*> The Extended 3 (ext3) filesystem
  <*> The Extended 4 (ext4) filesystem
  <*> Reiserfs support
  <*> JFS filesystem support
  <*> XFS filesystem support
  <*> Btrfs filesystem support
  DOS/FAT/NT Filesystems  --->
    <*> MSDOS fs support
    <*> VFAT (Windows-95) fs support
 
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] Tmpfs virtual memory file system support (former shm fs)

もしインターネットに接続するために、PPPoEもしくはダイヤルアップモデムを使う場合、次のオプションを有効にしてください (CONFIG_PPP, CONFIG_PPP_ASYNC, and CONFIG_PPP_SYNC_TTY):

KERNEL PPPoEに必要なドライバを選択する
Device Drivers --->
  Network device support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

2つの圧縮オプションは選択しても差し支えありませんが、必須というわけでもありません。PPP over Ethernetオプションも同様です。これはカーネルモードのPPPoEをするために設定された時だけにpppによって使用されるものです。

カーネルにネットワークカード(イーサネットもしくはワイヤレス)のサポートを組み込むことを忘れてはいけません。

多くのシステムではマルチコアを使用できます。Symmetric multi-processing supportを有効にすることは重要です (CONFIG_SMP):

KERNEL SMPサポートを有効にする
Processor type and features  --->
  [*] Symmetric multi-processing support
注意
マルチコアシステムでは、それぞれのコアが1プロセッサとカウントされます。

USB接続の入力装置(キーボードやマウス)などのUSBデバイスを使用する場合、以下を必ず有効にしてください (CONFIG_HID_GENERIC and CONFIG_USB_HID, CONFIG_USB_SUPPORT, CONFIG_USB_XHCI_HCD, CONFIG_USB_EHCI_HCD, CONFIG_USB_OHCI_HCD):

KERNEL 入力装置のためにUSBサポートを有効にする
Device Drivers --->
  HID support  --->
    -*- HID bus support
    <*>   Generic HID driver
    [*]   Battery level reporting for HID devices
      USB HID support  --->
        <*> USB HID transport layer
  [*] USB support  --->
    <*>     xHCI HCD (USB 3.0) support
    <*>     EHCI HCD (USB 2.0) support
    <*>     OHCI HCD (USB 1.1) support

Architecture specific kernel configurations

Note
Placeholder for architecture-specific kernel build information

Compiling and installing

Note
Placeholder for instructions for building and installing the kernel sources

任意自由選択: initramfsのビルド

いくつかの特別なケースで initramfs - initial ram-based file system (訳注: 起動時の RAM ベースのファイルシステム) のビルドが必要になります。最もよくある理由は、重要なディレクトリ(/usr//var/等)が別パーティションにある場合です。initramfsがあれば、initramfsの中にあるツールを使うことで、これらのパーティションをマウントすることができます。

initramfs が無いと、ファイルシステムをマウントするツールがまだマウントされていないファイルシステムの中にある情報を必要としている場合、システムが正しく起動できないリスクがあります。initramfs はカーネルブートの直後かつ制御が init ツールに移る前に必要なファイルをアーカイブに引き込みます。initramfs のスクリプトはシステムがブートを継続するために必要なパーティションを正しくマウントすることを保証します。

Important
genkernel を使用する場合は、カーネルおよび initramfs の両方をビルドでこれを使用するべきです。genkernel を initramfs の生成のためだけに使用する場合は、genkernel--kernel-config=/path/to/kernel.config を渡すのがきわめて重要です。そうしないと、生成された initramfs が手動でビルドされたカーネルと同時に動作しない場合があります。手動でビルドされたカーネルはハンドブックのサポート範囲外であることに注意してください。詳細についてはカーネルコンフィギュレーションの記事を確認してください。

initramfsをインストールするために、最初にsys-kernel/dracutをインストールしましょう。そしてinitramfsを生成します。

root #emerge --ask sys-kernel/dracut
root #dracut --kver=

initramfsは/boot/に保存されます。生成されるファイルは単純にinitramfsで始まります。

root #ls /boot/initramfs*

次はカーネルモジュールです。

別の方法: genkernelを使用する

もしマニュアル設定に気後れしてしまった場合、genkernel を使うことを考えてみてください。genkernel は自動的にカーネルを設定し、ビルドします。

genkernelはインストールCDのカーネルの設定とほぼ同じようにカーネルを設定します。これはカーネルのビルドにgenkernelを使った場合、システムはインストールCDと同じように対応するハードウェアをブート時に検出することを意味します。genkernelは自身のカーネルをコンパイルすることを好まないユーザには有用なソリューションとなり得ます。genkernel は、それが実行されているハードウェア向けのカスタムカーネル設定を自動的に生成するものではないことに注意してください。

では、genkernelの使い方を見てみましょう。最初にsys-kernel/genkernelをemergeします。

root #emerge --ask sys-kernel/genkernel

次に、/etc/fstabファイルを編集します。2番目のフィールドに/boot/を含む行は、その1番目のフィールドで正しいデバイス指定します。もしハンドブックのパーティショニング例の通りであれば、このデバイスはほぼ間違いなくext4ファイルシステムを持つでしょう。この場合、エントリは次のようになります。

root #nano -w /etc/fstab
FILE /etc/fstab/bootマウントポイントを設定する
/boot	ext4	defaults	0 2
注意
Gentooインストールでは、/etc/fstabはさらにもう一回編集されますが、/bootの設定はgenkernelアプリケーションがそれを読み込むために今必要です

genkernel allを実行してカーネルソースをコンパイルしましょう。ただ、genkernelはほとんどすべてのハードウェアをサポートするカーネルを生成するため、コンパイルが完了するまでにかなりの時間が必要になることに注意しましょう。

注意
もしルートパーティションまたはボリュームがファイルシステムとしてext4を使用していない場合、おそらく、genkernel --menuconfig allを使ってマニュアルでカーネルを設定し、カーネルにこの特別なファイルシステムを(モジュールではなく)組み込む必要があるでしょう。また、LVM2のユーザーはおそらく引数に--lvmを加えることになるでしょう。
root #genkernel all

genkernel完了後、カーネル、モジュール群、初期RAMディスク(initramfs)が生成されるでしょう。このドキュメントの後半でブートローダーを設定する際、このカーネルとinitrdを使うことになります。ブートローダーの設定に必要になるため、カーネルとinitrdの名前をメモしておきましょう。"真の"システムが起動する前に(インストールCDがするように)ハードウェアを自動的に検出しなければならないため、initrdはブート後すぐに起動します。

root #ls /boot/vmlinu* /boot/initramfs*


カーネルモジュール

モジュールの設定

Note
ハードウェアモジュールを手作業で列挙する必要はありません。ほとんどの場合、udev は接続を検出したハードウェアのモジュールを自動でロードします。ですが、自動で検出されるモジュールを列挙することは特に有害ではありません。時として変なハードウェアは、ドライバをロードするのにこうした手助けが必要になることがあります。

/etc/modules-load.d/*.confファイルに、自動的にロードしなければならないモジュールを改行区切りで記載してください。モジュールに追加のオプションを与える必要があれば、/etc/modprobe.d/*.confファイルで設定すべきです。

すべての利用可能なモジュールを把握するためには、次のfindコマンドを実行してください。"<kernel version>"をたった今コンパイルしたカーネルのバージョンで置き換えることを忘れないでください。

root #find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less

たとえば、3c59x.koモジュール(特定の3Comネットワークカード)を自動的にロードするためには、/etc/modules-load.d/network.confにモジュール名を記載してください。実際のファイル名はローダにとって重要ではありません。

root #mkdir -p /etc/modules-load.d
root #nano -w /etc/modules-load.d/network.conf
FILE /etc/modules-load.d/network.conf強制的に3c59x モジュールをロードする
3c59x

では、システムの設定に進み、インストールを続けましょう。