Open2

カーネルとカーネルモジュールのコンパイルとインストールについて

ひでひで

コンパイルとは

  • ソースコードを実行可能な形式に変換する作業
  • 料理に例えると、レシピ(ソースコード)から実際の料理(実行可能なプログラム)を作る作業
  1. カーネルのコンパイルが必要な場合:
  • 特別なハードウェアのサポートが必要
  • カスタマイズした機能が欲しい
  • パフォーマンスの最適化を行いたい
  1. コンパイルの基本的な手順:

a) 準備:

# 必要なツールのインストール
sudo apt-get install build-essential kernel-package

b) ソースコードの取得:

# カーネルソースの取得
wget https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.x.x.tar.xz
tar xvf linux-6.x.x.tar.xz

c) 設定:

cd linux-6.x.x
make menuconfig  # 設定画面が表示される

d) コンパイル:

make            # カーネルのコンパイル
make modules    # モジュールのコンパイル

e) インストール:

sudo make modules_install  # モジュールのインストール
sudo make install         # カーネルのインストール
  1. 重要なポイント:

コンパイル前の注意:

  • バックアップを取る
  • 十分なディスク容量の確保
  • 必要な開発ツールの準備

設定のポイント:

  • 既存の設定をベースにする
  • 必要な機能のみを選択
  • 不要な機能は除外

安全対策:

  • 既存のカーネルは残しておく
  • ブートローダーの設定を確認
  • 緊急時の対応方法を知っておく
  1. よくある問題と対処:
  • コンパイルエラー → 依存パッケージの確認
  • 起動しない → 古いカーネルで起動
  • パフォーマンス問題 → 設定の見直し
  1. 実務での注意点:
  • 本番環境では十分なテスト必要
  • ディストリビューション提供のカーネルを推奨
  • カスタマイズは必要最小限に
ひでひで

makeコマンドをもっと詳しく

makeコマンド

  • プログラムのビルド(構築)を自動化するツール
  • Makefileという設定ファイルに基づいて動作
  • 複雑な作業を順序立てて実行

カーネル関連の主なmakeコマンド

  1. make menuconfig
  • 目的:カーネルの設定を対話的に行う
  • GUI的な設定画面が表示される
  • 各機能のON/OFF、モジュール化を選択
  • 例えるなら:レストランのメニュー選択のような感じ
  1. make
  • 目的:カーネル本体をコンパイル
  • ソースコードから実行可能なカーネルを作成
  • 例えるなら:選んだ材料で料理を作る工程
  1. make modules
  • 目的:カーネルモジュールをコンパイル
  • 選択したモジュールを個別にビルド
  • 例えるなら:メインの料理とは別にサイドメニューを作る
  1. make modules_install
  • 目的:コンパイルしたモジュールをシステムにインストール
  • 通常は /lib/modules/ 以下にインストール
  • 例えるなら:作ったサイドメニューを提供できる場所に置く
  1. make install
  • 目的:新しいカーネルをシステムにインストール
  • /boot ディレクトリにカーネルイメージを配置
  • ブートローダーの設定も更新
  • 例えるなら:メインの料理を提供できる状態にする
  1. make clean
  • 目的:ビルドで生成されたファイルを削除
  • コンパイル済みのファイルをクリーンアップ
  • 例えるなら:キッチンの掃除をする

よく使用されるオプション

make -j4      # 4つのプロセスで並列ビルド
make V=1      # 詳細な出力を表示
make O=dir    # 出力先ディレクトリを指定

実行順序の例

make clean        # クリーンアップ
make menuconfig   # 設定
make -j4         # カーネルのビルド
make modules     # モジュールのビルド
sudo make modules_install  # モジュールのインストール
sudo make install         # カーネルのインストール

注意点

  • root権限(sudo)が必要な操作がある
  • コンパイルには時間がかかる
  • エラーメッセージの確認が重要
  • バックアップを取っておくことが推奨