ウェブサイト検索

CentOS 7 で Linux カーネルをコンパイルする方法


カスタムでコンパイルされた Linux カーネルを実行すると、特にデフォルトのディストリビューションで提供されるカーネルでは利用できない特定のカーネル機能を有効または無効にしたい場合に常に役立ちます。

この記事では、CentOS 7 ディストリビューションのソースから最新の Linux カーネルをコンパイルして使用する方法を説明します (ここで提供される手順は RHELFedora でも機能します) )。

これらの複雑なセットアップを実行したくない場合は、サードパーティの RPM リポジトリを使用して CentOS 7 にカーネルをインストールまたはアップグレードする方法を説明する簡単な記事に従ってください。

カーネルのコンパイルに必要なパッケージをインストールする

まず、ソフトウェア パッケージ リポジトリを更新し、カーネルのコンパイルに必要な開発ツールをインストールし、次の yum コマンドを使用してncurses ライブラリをインストールします。

yum update
yum install -y ncurses-devel make gcc bc bison flex elfutils-libelf-devel openssl-devel grub2

CentOS 7 でカーネルをコンパイルしてインストールする

wget コマンドを使用して /usr/src/ ディレクトリに最新のカーネル 4.17 ソースをダウンロードするか、kernel.org にアクセスして最新のカーネルをダウンロードすることもできます。

cd /usr/src/
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.17.11.tar.xz

次のコマンドを使用して、アーカイブされたファイルを解凍し、ディレクトリを変更します。

tar -xvf linux-4.17.11.tar.xz
cd linux-4.17.11/

CentOS 7 でカーネルを構成する

カーネルは、CentOS 7 環境内で次の必須構成オプションを使用して正しく構成されている必要があります。

CONFIG_KVM_GUEST=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_BLK_DEV_SD
CONFIG_SCSI_VIRTIO=y
CONFIG_VIRTIO_NET=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y

実行中のカーネル設定 (.config) を /boot ディレクトリから新しいカーネルの linux-4.17.11 ディレクトリにコピーすることを強くお勧めします。

cp -v /boot/config-3.10.0-693.5.2.el7.x86_64 /usr/src/linux-4.17.11/.config

次に、make menuconfig コマンドを実行して、Linux カーネルを構成します。以下のコマンドを実行すると、すべてのメニューが表示されたポップアップ ウィンドウが表示されます。ここで、特定のカーネル機能を有効または無効にすることができます。これらのメニューに慣れていない場合は、ESC キーを押して終了してください。

cd /usr/src/linux-4.17.11/
make menuconfig

カーネル構成オプションを設定したら、保存をクリックして構成インターフェイスを保存し、メニューを終了します。

CentOS 7 でカーネルをコンパイルする

カーネルのコンパイルを開始する前に、システムのファイル システムに25 GB 以上の空き領域があることを確認してください。確認するには、次のように df コマンドを使用してファイル システムの空き容量を確認します。

df -h

次に、次のコマンドを使用してカーネルとモジュールをコンパイルしてインストールします (これには数時間かかる場合があります)。コンパイル プロセスでは、/boot ディレクトリにファイルが配置され、grub.conf ファイルに新しいカーネル エントリも作成されます。

make bzImage
make modules
make
make install
make modules_install

コンパイルが完了したら、システムを再起動し、新しくインストールされたカーネルを確認します。

uname -sr

それでおしまい。この記事が皆様のお役に立てれば幸いです。カーネルのコンパイルまたはインストール中に問題や困難に直面した場合は、以下のコメント フォームを使用して、お気軽に質問または投稿してください。