GNU/Linux >> Linux の 問題 >  >> Linux

Linux カーネルをソースからコンパイルしてカスタム カーネルを構築する方法

Linux カーネルは、Ubuntu、CentOS、Fedora を含むすべての Linux オペレーティング システム ファミリの生命力です。

OS のインストール時にカーネルがデフォルトでインストールされるため、ほとんどの場合、カーネルをコンパイルする必要はありません。また、カーネルに重大な更新が行われた場合、yum または apt-get を使用して Linux システムのカーネルを更新できます。

ただし、特定の状況に遭遇する可能性があります。ソースからカーネルをコンパイルします。以下は、Linux システムでカーネルをコンパイルする必要がある状況です。

  • デフォルトのカーネルに含まれていない実験的な機能を有効にすること
  • デフォルトのカーネルで現在サポートされていない新しいハードウェアのサポートを有効にすること
  • カーネルをデバッグするには
  • または、カーネルの仕組みを学ぶために、カーネルのソース コードを調べて、自分でコンパイルすることもできます。

このチュートリアルでは、Linux カーネルをソースからコンパイルする方法を説明します。

また、ドライバーをコンパイルするだけの場合は、カーネルをコンパイルする必要がないことに注意してください。カーネルの linux-headers パッケージのみが必要です。

1.最新の安定したカーネルをダウンロード

最初のステップは、kernel.org から最新の安定したカーネルをダウンロードすることです。

# cd /usr/src/

# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.9.3.tar.xz

2.カーネルソースを解凍

2 番目のステップは、コンパイルのためにカーネル ソース ファイルを解凍することです。

# tar -xvJf linux-3.9.3.tar.xz

3.カーネルを構成する

カーネルには、約 3000 の構成オプションが含まれています。ほとんどの人がほとんどのハードウェアでカーネルを使用できるようにするために、Ubuntu、Fedora、Debian、RedHat、CentOS などの Linux ディストリビューションには、通常、ほとんどの一般的なハードウェアのサポートが含まれます。ディストリビューションから構成のいずれかを取得し、その上に独自の構成を追加したり、カーネルを最初から構成したり、カーネルによって提供されるデフォルトの構成を使用したりできます。

# cd linux-3.9.3

# make menuconfig

make menuconfig は、図に示すように、デフォルトの構成オプションを含むテキストベースのユーザー インターフェイスを起動します。このコマンドを機能させるには、「libncurses および libncurses-devel」パッケージをインストールしておく必要があります。

カーネルによって提供されるデフォルトの構成を使用します。 「保存」を選択し、構成をファイル名「.config」で保存します。

以下は「.config」ファイルのサンプルです:

CONFIG_MMU=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_HWEIGHT=y

4. Linux カーネルをコンパイルする

メインカーネルをコンパイルします:

# make

カーネル モジュールをコンパイルします。

# make modules

カーネル モジュールをインストールします。

# make modules_install

この時点で、システムに /lib/modules/3.9.3/ という名前のディレクトリが表示されます。

5.新しいカーネルをインストール

システムに新しいカーネルをインストールします:

# make install

make install コマンドは、/boot ディレクトリに次のファイルを作成します。

  • vmlinuz-3.9.3 – 実際のカーネル
  • System.map-3.9.3 – カーネルによってエクスポートされたシンボル
  • initrd.img-3.9.3 – initrd イメージは、ブート プロセス中に使用される一時的なルート ファイル システムです
  • config-3.9.3 – カーネル構成ファイル

コマンド「make install」は、デフォルトで grub.cfg も更新します。したがって、grub.cfg ファイルを手動で編集する必要はありません。

6. Linux を新しいカーネルで起動

コンパイルしたばかりの新しいカーネルを使用するには、システムを再起動してください。

# reboot

grub.cfg では、新しいカーネルがデフォルト ブートとして追加されるため、システムは新しいカーネルから起動します。新しいカーネルで問題が発生した場合に備えて、ブート中に grub メニューから古いカーネルを選択すると、システムを通常どおり使用できます。

システムが起動したら、uname コマンドを使用して、新しいバージョンの Linux カーネルがインストールされていることを確認します。

$ uname -r
3.9.3

Linux
  1. Ubuntu18.04LTSでソースからBrotliをコンパイルする方法

  2. CheckInstallを使用してソースからパッケージを構築する方法

  3. Linux でソースから Nginx をインストールして構成する方法

  1. Linux でソース コードからソフトウェアをコンパイルしてインストールする方法

  2. Linux ディストリビューションをビルドできるように、Darwin ディストリビューションをソースからコンパイルすることはできますか?

  3. カーネルソースコードから最小限のブート可能な Linux (ターミナルのみ) を作成するには?

  1. CentOS7でソースからBrotliをコンパイルする方法

  2. CコードからLinuxカーネルモジュールをロードする方法は?

  3. ソースから独自の glibc C 標準ライブラリをコンパイルして使用するにはどうすればよいですか?