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