LinuCレベル2 201試験の出題範囲「2.01.4 Linuxカーネルのコンパイル」の解説まとめ

IT資格

LinuCレベル2 201試験の出題範囲「2.01.4 Linuxカーネルのコンパイル」の技術的内容についての解説をまとめました。

重要度2
概要Linuxカーネルの特定の機能を必要に応じて取り込んだり無効化するために、カーネルを適切に構成できる。また、必要に応じてLinuxカーネルをコンパイルし、新しいカーネルに変更点を書き込み、initrdイメージを作成し、新しいカーネルをインストールできる。
詳細/usr/src/linux//usr/src/linux/.configカーネルの MakefileKernel 2.6.x、3.x、4.x、5.x のmakeのターゲット。all, config, xconfig, menuconfig, gconfig, oldconfig, mrproper, bzImage, modules, modules_install, rpm-pkg, binrpm-pkg, deb-pkgカーネル構成をカスタマイズする。新しいカーネルおよび適切なカーネルモジュールを構築する。/lib/modules/kernel-version/, gzip, bzip2新しいカーネルおよび必要なモジュールをインストールする。module tools, depmodブートマネージャが新しいカーネルおよび関連付けられたファイルを探せるようにする。モジュールの構成ファイルDKMS を使用してカーネルのモジュールをコンパイルする。dkmsinitrd を構成する。Dracut,mkinitrd, mkinitramfs
LinuCレベル2 201試験 出題範囲 | LPI-Japan
仮想環境を含むLinuxのシステム設計・ネットワーク構築において、アーキテクチャに基づいた設計、導入、問題解決ができるエンジニアであることを認定します。試験センターの他に自宅でも受験できます。受験費用は税込16,500円。

ソースからのカーネルのビルドとインストール

makeコマンドの概要

makeコマンド意味
make config対話的に(質問形式で)設定を行う
make menuconfigターミナル上のGUIで設定を行う
make xconfigX上のGUIで設定を行う
make defconfigデフォルト状態の設定ファイルを作る
make oldconfig現在のカーネルの設定を引き継ぐ
make cloneconfig(oldconfigと同じ)
make allyesconfigすべての設定項目にyesを設定する
make allnoconfigほとんどの設定項目にnoを設定する
make randconfig設定項目にランダムな値を設定する
make clean設定ファイルを除いて一時ファイル等を削除
make mrproper設定ファイルを含めて一時ファイル等を削除

makeコマンド意味
make allカーネルとモジュールをビルド
make installビルドしたカーネルをインストール
make modulesカーネルモジュールをビルド
make modules_installカーネルモジュールをインストール
make rpmビルド後にrpmパッケージ化
make rpm-pkgソースを含むrpmパッケージを作る
make binrpm-pkgバイナリrpmパッケージを作る
make deb-pkgDebianパッケージを作る

FHS(FileSystem Hierarchy Standard)の概要

FHS(FileSystem Hierarchy Standard)は、Linuxのディレクトリ構成を定めた基準仕様のことです。例えば、/etcディレクトリに対して設定ファイルを保存しておくことにするなど、Linuxのディレクトリをどのように使うかという基準がFHSです。FHSの Hierarchy は階層を意味します。

「FHS」は、Linux(などのUNIX系OS)の標準的なディレクトリ構成を定めた標準仕様です。たとえば「/etcディレクトリには設定ファイルを置きましょう」など、ディレクトリの名前や構成、ファイルの名前などについての「標準」です。

FHS(Filesystem Hierarchy Standard) - Linux技術者認定 LinuC | LPI-Japan
Linuxを学習する上で出てくる素朴な疑問や、便利なテクニックなどを紹介しています。LinuCは、クラウド・DX時代に活躍するエンジニアに求められるLinuxを中心とした技術や知識を身につけることができるLinux技術者認定試験。出題範囲に...

/usr/src の概要

/usr/src/ は、カーネルのソースやビルドに必要なファイル・ディレクトリが保存されているディレクトリです。

「/usr/src」ディレクトリには、「プログラムのソースコード」が置かれます。カーネルのコンパイルを行う際に、ダウンロードしたカーネルのソースコードをこのディレクトリの下に配置したことがある、という経験のある方も多いのではないでしょうか。もちろん、Linuxカーネルだけでなく、インターネットなどから入手したソフトウェアをソースコードからコンパイルする場合、このディレクトリに配置することが慣例になっています。

「/usr/src」ディレクトリ - Linux技術者認定 LinuC | LPI-Japan
Linuxを学習する上で出てくる素朴な疑問や、便利なテクニックなどを紹介しています。LinuCは、クラウド・DX時代に活躍するエンジニアに求められるLinuxを中心とした技術や知識を身につけることができるLinux技術者認定試験。出題範囲に...

初期RAMディスク

初期 RAM ディスクは、システム起動時に仮の環境としてまずメモリ上にファイルシステムを展開し、そこでカーネルを動作させてから本来のファイルシステムをルートにマウントし直す、といった段階的なブートを実現する機能のことです。

初期RAMディスクは、Linux起動時に以下のような順番で動作します。

  • 電源投入
  • BIOS/UEFIの起動
  • ブートローダ(GRUB,GRUB2..)
  • カーネル(vmlinuz)とinitramfs(初期RAMディスク)の読み込み
  • カーネルの実行
  • initramfs(初期RAMディスク)の実行
  • initの実行(SysVinit,Systemd..)

初期RAMディスクのイメージファイル形式は2種類あります。initrd 形式と initramfs 形式です。

初期 RAM ディスクイメージの作成方法

初期 RAM ディスクイメージの作成方法を解説します。

mkinitrdコマンド と mkinitramfsコマンド

initrd 形式はマウント可能なファイルシステムイメージを gzip 圧縮したものです。
なので、gzip -d や gunzip コマンドで gzip を解凍した後、mount でマウントを行えば、イメージ内のディレクトリ・ファイルを参照することができます。
ただし、イメージファイルをマウントするためには、マウントオプションでループバック形式であることを伝える必要があります。これを行うためには mount -o loop のようにオプションを指定します。

initramfs 形式のイメージは cpio アーカイブを gzip 圧縮したものです。

initramfs 形式の初期 RAM ディスクイメージをgunzip コマンドで解凍した後、cpio コマンドでアーカイブからファイルへの書き出しを行えば、イメージ内のディレクトリ・ファイルを参照することができます。

DKMS(Dynamic Kernel Module Support)の概要

DKMS(Dynamic Kernel Module Support)は、カーネルと独立して自動的にカーネルモジュールを更新するための機能です。

参考資料

本記事を作成するために使用した参考資料を掲載します。

第3章 システムの初期化
Arch ブートプロセス - ArchWiki
タイトルとURLをコピーしました