カーネルの設定

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

Other languages:
čeština • ‎Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎日本語 • ‎한국어 • ‎polski • ‎português do Brasil • ‎русский • ‎українська • ‎中文(中国大陆)‎
AMD64 Handbook
Installation
About the installation
Choosing the media
Configuring the network
Preparing the disks
Installing stage3
Installing base system
Configuring the kernel
Configuring the system
Installing tools
Configuring the bootloader
Finalizing
Working with Gentoo
Portage introduction
USE flags
Portage features
Initscript system
Environment variables
Working with Portage
Files and directories
Variables
Mixing software branches
Additional tools
Custom package repository
Advanced features
Network configuration
Getting started
Advanced configuration
Modular networking
Wireless
Adding functionality
Dynamic management


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

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

amd64ベースのシステムのために、Gentooは sys-kernel/gentoo-sourcesパッケージを推奨しています。

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

root #emerge --ask sys-kernel/gentoo-sources

このコマンドはカーネルソースを/usr/src/にインストールします。このディレクトリにあるlinuxがインストールされたカーネルソースへのシンボリックリンクとなります。

root #ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-3.16.5-gentoo

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

  1. カーネルをマニュアルで設定およびビルドする。
  2. Linuxカーネルを自動的にビルド・インストールするgenkernelを使用する。

ここでは、環境を最適化するのに最も適した"マニュアル設定"をデフォルトとして説明します。

デフォルト: マニュアル設定

はじめに

カーネルのマニュアル設定は、しばしば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 カーネルコンフィグレーションガイドには、さらに役立つ記述があるでしょう。

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

Make sure that every driver that is vital to the booting of the system (such as SCSI controller, etc.) is compiled in the kernel and not as a module, otherwise the system will not be able to boot completely.

Next select the exact processor type. It is also recommended to enable MCE features (if available) so that users are able to be notified of any hardware problems. On some architectures (such as x86_64), these errors are not printed to dmesg, but to /dev/mcelog. This requires the app-admin/mcelog package.

Also select Maintain a devtmpfs file system to mount at /dev so that critical device files are already available early in the boot process (CONFIG_DEVTMPFS and CONFIG_DEVTMPFS_MOUNT):

KERNEL Enabling devtmpfs support
Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [ ]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

Verify SCSI disk support has been activated (CONFIG_BLK_DEV_SD):

KERNEL Enabling SCSI disk support
Device Drivers --->
   SCSI device support  --->
      <*> SCSI disk support

Now go to File Systems and select support for the filesystems you use. Don't compile the file system that is used for the root filesystem as module, otherwise the Gentoo system will not be able to mount the partition. Also select Virtual memory and /proc file system. Select one or more of the following options as needed by the system (CONFIG_EXT2_FS, CONFIG_EXT3_FS, CONFIG_EXT4_FS, CONFIG_MSDOS_FS, CONFIG_VFAT_FS, CONFIG_PROC_FS, and CONFIG_TMPFS):

KERNEL Selecting necessary file systems
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)

If PPPoE is used to connect to the Internet, or a dial-up modem, then enable the following options (CONFIG_PPP, CONFIG_PPP_ASYNC, and CONFIG_PPP_SYNC_TTY):

KERNEL Selecting PPPoE necessary drivers
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によって使用されるものです。

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

Most systems also have multiple cores at their disposal, so it is important to activate Symmetric multi-processing support (CONFIG_SMP):

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

If USB input devices (like keyboard or mouse) or other USB devices will be used, do not forget to enable those as well (CONFIG_HID_GENERIC and CONFIG_USB_HID, CONFIG_USB_SUPPORT, CONFIG_USB_XHCI_HCD, CONFIG_USB_EHCI_HCD, CONFIG_USB_OHCI_HCD):

KERNEL Activating USB support for input devices
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


アーキテクチャに即したカーネルコンフィグ

32ビットプログラムもサポートさせたい(マルチライブラリ)のならば、IA32 エミュレーションを有効にすることを忘れないでください。Gentoo は、デフォルト設定ではマルチライブラリシステム(32ビット・64ビット両方の演算)をインストールします。そのため、no-multilib プロファイルを選択しないかぎりは、IA32 エミュレーションを有効にしなければなりません。

KERNEL プロセッサの型式と機能を選択
Processor type and features  --->
   [ ] Machine Check / overheating reporting 
   [ ]   Intel MCE Features
   [ ]   AMD MCE Features
  Processor family (AMD-Opteron/Athlon64)  --->
    ( ) Opteron/Athlon64/Hammer/K8
    ( ) Intel P4 / older Netburst based Xeon
    ( ) Core 2/newer Xeon
    ( ) Intel Atom
    ( ) Generic-x86-64
Executable file formats / Emulations  --->
   [*] IA32 Emulation

Enable GPT partition label support if that was used previously when partitioning the disk (CONFIG_PARTITION_ADVANCED and CONFIG_EFI_PARTITION):

KERNEL Enable support for GPT
-*- Enable the block layer --->
   Partition Types --->
      [*] Advanced partition selection
      [*] EFI GUID Partition support

システムブートに UEFI を用いている場合には、Linux カーネルの EFI スタブサポートと EFI 変数を有効にしましょう:

KERNEL Enable support for UEFI
Processor type and features  --->
    [*] EFI runtime service support 
    [*]   EFI stub support
    [*]     EFI mixed-mode support
 
Firmware Drivers  --->
    EFI (Extensible Firmware Interface) Support  --->
        <*> EFI Variable Support via sysfs

コンパイルおよびインストール

さあ、カーネルのコンフィグレーションが完了し、コンパイルとインストールをする時がきました。コンフィグレーションを終了させ、コンパイル作業を開始しましょう:

root #make && make modules_install
注意
make -jX とすることで、ビルドを並行処理させることができます( X には、並行処理を許可するビルドプロセスの数を整数で指定します。 /etc/portage/make.conf の説明中の、 MAKEOPTS 変数についてと同様です。

カーネルのコンパイルが完了したら、カーネルのイメージを /boot/ にコピーします。これは make install コマンドで行います。

root #make install

カーネルイメージとともに、System.map ファイルやカーネルコンフィグファイルも、 /boot/ にコピーされます。


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

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

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

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

root #emerge --ask sys-kernel/genkernel
root #genkernel --install initramfs

In order to enable specific support in the initramfs, such as LVM or RAID, add in the appropriate options to genkernel. See genkernel --help for more information. In the next example support is enabled for LVM and software RAID (mdadm):

root #genkernel --lvm --mdadm --install initramfs

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

root #ls /boot/initramfs*

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

別の方法: genkernelを使用する

もしマニュアル設定に気後れしてしまった場合、genkernelがお薦めです。genkernelは自動的にカーネルを設定、ビルドします。

genkernelはインストールCDのカーネルが自動的に設定されるのとほぼ同じ方法でカーネルを設定します。これはカーネルのビルドにgenkernelを使った場合、インストールCDと同じようにブート時にすべてのハードウェアを検出することを意味します。genkernelはいかなるカーネルのマニュアル設定も要求しないため、ユーザー自身のカーネルをコンパイルすることを好まないユーザには理想的なソリューションです。

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

root #emerge --ask sys-kernel/genkernel

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

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

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

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

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

root #ls /boot/kernel* /boot/initramfs*

カーネルモジュール

モジュールの設定

/etc/conf.d/modulesに自動的にロードしなければならないモジュールを記載してください。必要であれば、モジュールに追加のオプションを与えることもできます。

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

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

たとえば、3c59x.koモジュール(特定の3Comネットワークカード)を自動的にロードするためには、/etc/conf.d/modulesにモジュール名を記載してください。

root #nano -w /etc/conf.d/modules
modules="3c59x"

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

任意自由選択: ファームウェアのインストール

いくつかのドライバは、動作可能にするために追加のファームウェアのインストールを必要とします。これはしばしばネットワークインターフェース、特に無線ネットワークで必要になります。ファームウェアの多くはsys-kernel/linux-firmwareにパッケージされています。

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