すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Linux:Alibaba Cloud Linux カーネル RPM パッケージの変更とコンパイル

最終更新日:Jun 09, 2025

特定のシナリオでは、特定のパフォーマンスまたはセキュリティ要件を満たすために、Alibaba Cloud Linux カーネルで特定の機能またはモジュールを有効にするか、デフォルトカーネルで特定の機能を無効にする必要がある場合があります。 これを行うには、Alibaba Cloud Linux カーネルのソースコードを変更し、Red Hat Package Manager (RPM) を使用してカスタムカーネル RPM パッケージを再コンパイルおよび再作成します。 これにより、使用中のカーネルが Alibaba Cloud Linux リリースと互換性があり、特定のビジネス要件に柔軟に対応できるようになります。 このトピックでは、Alibaba Cloud Linux Elastic Compute Service (ECS) 環境に基づくコンテナーで Alibaba Cloud Linux カーネルの RPM パッケージを変更およびコンパイルする方法について説明します。

前提条件

Alibaba Cloud Linux を実行する ECS インスタンスが作成されます。 詳細については、「ウィザードを使用してインスタンスを作成する」をご参照ください。

  • インスタンスは、Alibaba Cloud Linux 2 または 3 イメージを使用します。

  • インスタンスが使用するインスタンスタイプには、32 個以上の vCPU があります。

    説明

    RPM パッケージのコンパイルは、完了するまでに長い時間がかかります。 コンパイル効率を向上させるために、32 個以上の vCPU を搭載したインスタンスタイプを使用することをお勧めします。

手順 1: 環境を準備する

  1. Alibaba Cloud Linux カーネルの RPM パッケージを変更およびコンパイルする ECS インスタンスに接続します。

    詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。

  2. 次のコマンドを実行して、Alibaba Cloud Linux Docker イメージをダウンロードし、Docker コンテナーにアクセスします。

    # Docker をインストールします。
    sudo yum install -y docker
    # Docker イメージをプルします。
    sudo docker pull <image_url>
    # Docker コンテナーを起動します。
    sudo docker run -itd --net host --name alinux-build <image_url> bash
    # Docker コンテナーにアクセスします。
    sudo docker exec -it alinux-build bash

    上記のコマンドで、<image_url> を Alibaba Cloud Linux 2 または 3 に対応する Docker イメージの URL に置き換えます。 次の表に、Docker イメージの URL を示します。

    イメージ

    Docker イメージ URL

    Alibaba Cloud Linux 2

    alibaba-cloud-linux-2-registry.cn-hangzhou.cr.aliyuncs.com/alinux2/alinux2

    Alibaba Cloud Linux 3

    alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3

    この例では、Alibaba Cloud Linux 3 に対応する Docker イメージがダウンロードされます。 コマンド例:

    sudo yum install -y docker
    sudo docker pull alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3
    sudo docker run -itd --net host --name alinux-build alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3 bash
    sudo docker exec -it alinux-build bash

手順 2: ソースコードをダウンロードする

次のコマンドを実行して、変更する RPM パッケージをダウンロードします。

# ソースコードパッケージをダウンロードします。
yum install -y wget
wget <rpm_url>/<src.rpm_name>
# ソースコードパッケージをインストールします。
rpm -ivh <src.rpm_name>

この例では、kernel-5.10.134-13.1.al8.src.rpm という名前の Alibaba Cloud Linux 3 に対応する パッケージがダウンロードされます。 コマンド例:

yum install -y wget
wget https://mirrors.aliyun.com/alinux/3/plus/source/SRPMS/kernels/kernel-5.10.134-13.1.al8.src.rpm
rpm -ivh kernel-5.10.134-13.1.al8.src.rpm

src.rpm パッケージをインストールすると、src.rpm パッケージのファイルは /root/rpmbuild ディレクトリに保存されます。 ls /root/rpmbuild コマンドを実行して、ファイルをクエリできます。 コマンド出力例:

image

手順 3: ソースコードを変更する

  1. 次のコマンドを実行して、依存関係をインストールします。

    yum install -y rpm-build yum-utils
    yum-builddep -y <src.rpm_name>

    上記のコマンドで、<src.rpm_name> を変更する src.rpm パッケージの名前に置き換えます。 この例では、<src.rpm_name>kernel-5.10.134-13.1.al8.src.rpm に置き換えられます。

    yum install -y rpm-build yum-utils
    yum-builddep -y kernel-5.10.134-13.1.al8.src.rpm
  2. 次のコマンドを実行して、ソースコードパッケージを解凍します。

    # ソースコードディレクトリに移動します。
    cd /root/rpmbuild/SOURCES
    # ソースコードパッケージを解凍します。
    tar xf <圧縮されたソースコードパッケージの名前>

    上記のコマンドで、<圧縮されたソースコードパッケージの名前> をビジネス要件に基づいて置き換えます。 この例では、<圧縮されたソースコードパッケージの名前> は linux-5.10.134-13.1.al8.tar.xz に置き換えられます。

    cd /root/rpmbuild/SOURCES
    tar xf linux-5.10.134-13.1.al8.tar.xz
  3. 次のコマンドを実行して、解凍されたソースコードパッケージが配置されているディレクトリに移動します。

    cd <解凍されたソースコードパッケージの名前>

    上記のコマンドで、<解凍されたソースコードパッケージの名前> をビジネス要件に基づいて置き換えます。 この例では、<解凍されたソースコードパッケージの名前> は linux-5.10.134-13.1.al8 に置き換えられます。

    cd linux-5.10.134-13.1.al8
  4. (オプション) config の構成を変更します。

    ビジネス要件に基づいて、ソースコードまたは config ファイル (構成ファイル) を変更します。 ビジネス要件に基づいて、ソースコードを変更する方法を選択します。 config ファイルを変更するには、次の操作を実行します。

    1. 次のコマンドを実行して、すべての config ファイルを一覧表示し、変更する config ファイルを選択します。

      ls /root/rpmbuild/SOURCES

      image

      次の表に、/root/rpmbuild/SOURCES ディレクトリにある config ファイルを示します。

      config ファイル

      説明

      kernel-5.10.134-aarch64.config

      Arm アーキテクチャとリリースバージョンの構成ファイル。

      kernel-5.10.134-aarch64-debug.config

      テストにのみ使用できる Arm アーキテクチャとデバッグバージョンの構成ファイル。

      kernel-5.10.134-x86_64.config

      x86 アーキテクチャとリリースバージョンの構成ファイル。

      kernel-5.10.134-x86_64-debug.config

      テストにのみ使用される x86 アーキテクチャとデバッグバージョンの構成ファイル。

      ほとんどの場合、プラットフォームが Arm アーキテクチャか x86 アーキテクチャかに基づいて kernel-5.10.134-aarch64.config ファイルまたは kernel-5.10.134-x86_64.config ファイルを選択するか、両方のプラットフォームの構成を変更できます。

    2. 次のコマンドを実行して、config ファイルを変更します。

      この例では、x86 アーキテクチャの kernel-5.10.134-x86_64.config ファイルが使用されます。

      1. config ファイルをソースコードディレクトリにコピーします。

        cd /root/rpmbuild/SOURCES
        cp kernel-5.10.134-x86_64.config linux-5.10.134-13.1.al8/.config
      2. ソースコードディレクトリに移動します。

        cd linux-5.10.134-13.1.al8
      3. config ファイルのデフォルト値を更新します。

        make olddefconfig
      4. menuconfig を使用して config ファイルを変更し、適切な依存関係構成を確保します。

        make menuconfig

        menuconfig インターフェースにアクセスします。 / キーを押して、変更が必要な項目を検索し、ビジネス要件に基づいて項目を変更できます。

        image

      5. 変更された config ファイルをコピーして、元の構成を上書きします。

        cp .config ../kernel-5.10.134-x86_64.config
      6. 親ディレクトリに戻ります。

        cd ..
      説明

      Arm アーキテクチャの config ファイルも同じ方法で変更できます。

  5. 次のコマンドを実行して、カーネルバージョンを更新します:

    cd /root/rpmbuild/SPECS
    vi kernel.spec

    I キーを押して挿入モードに入ります。 Esc キーを押し、:wq と入力して、Enter キーを押して config ファイルを保存して閉じます。

    変更の推奨事項:

    • カーネルに*-x形式のメジャーバージョン (5.10.134-12など) がある場合は、メジャーバージョンを*-x.y.z形式のバージョンに変更することを推奨します (5.10.134-12.0.1など)。 このようにして、バージョンと公式バージョンを区別できます。

    • カーネルに*-x.y形式のマイナーバージョンがある場合(5.10.134-12など) 、マイナーバージョンを *-x.y.z形式のバージョンに変更することを推奨します(5.10.134-13.1.1など)。

    次の例では、5.10.134-13.1 バージョン番号が 5.10.134-13.1.1 に更新されます。

    config ファイルで、%define pkgrelease %{?KREL:%{KREL}}%{?!KREL:13.1} を見つけて、%define pkgrelease %{?KREL:%{KREL}}%{?!KREL:13.1.1} に変更します。 1

    kernel.spec ファイルの changelog セクションに変更の説明を追加することもできます。 2

手順 4: RPM パッケージを再作成する

  1. 次のコマンドを実行して、src.rpm パッケージを再圧縮します。

    この例では、linux-5.10.134-13.1.al8 ソースコードパッケージが使用されます。

    1. SOURCES ディレクトリに移動します。

      cd /root/rpmbuild/SOURCES/
    2. ソースコードディレクトリのファイル名を変更します。

      この例では、バージョン 5.10.134-13.1 がバージョン 5.10.134-13.1.1 に変更され、ソースコードディレクトリのファイル名が linux-5.10.134-13.1.1.al8 に変更されます。 ビジネス要件に基づいてファイル名を変更します。

      mv linux-5.10.134-13.1.al8 linux-5.10.134-13.1.1.al8
    3. ソースコードパッケージを TAR パッケージに再圧縮します。

      tar cJf linux-5.10.134-13.1.1.al8.tar.xz linux-5.10.134-13.1.1.al8
    4. 解凍されたディレクトリと元の圧縮パッケージを削除します。

      rm -rf linux-5.10.134-13.1.al8
      rm -f linux-5.10.134-13.1.al8.tar.xz
  2. 次のコマンドを実行して、src.rpm パッケージを再作成します。

    cd /root
    rpmbuild -bs rpmbuild/SPECS/kernel.spec

    次のコマンド出力例は、src.rpm package/root/rpmbuild/SRPMS/kernel-5.10.134-13.1.1.al8.src.rpm ディレクトリに保存されていることを示しています。

    image

  3. (オプション) 次のコマンドを実行して、dwarves パッケージをダウングレードします。

    src.rpm パッケージに含まれるカーネルバージョンが 5.10.134-13.1.al8 以前の場合は、コンパイルに dwarves-1.22-1.al8 を使用します。 そうしないと、コンパイルエラーが発生する可能性があります。

    yum downgrade dwarves-1.22-1.al8 -y
  4. 次のコマンドを実行して、RPM パッケージを再作成します。

    rpmbuild --rebuild /root/rpmbuild/SRPMS/<src.rpm_name>

    上記のコマンドで、<src.rpm_name> を src.rpm パッケージの新しい名前に置き換えます。 この例では、src.rpm パッケージの新しい名前は kernel-5.10.134-13.1.1.al8.src.rpm です。

    rpmbuild --rebuild /root/rpmbuild/SRPMS/kernel-5.10.134-13.1.1.al8.src.rpm

    RPM パッケージのコンパイルは、完了するまでに長い時間がかかります。 次のコマンド出力例は、RPM パッケージが再作成されたことを示しています。 1