Auto-Protect カーネルモジュールの手動コンパイル
search cancel

Auto-Protect カーネルモジュールの手動コンパイル

book

Article ID: 235639

calendar_today

Updated On:

Products

Endpoint Protection

Issue/Introduction

Symantec Endpoint Protection for Linux (SEPFL) の Auto-Protect カーネルモジュールを手動でコンパイルする方法、および実施する必要のある追加手順について知りたい。オペレーティングシステムのカーネルを更新した場合、または自動コンパイルが失敗した後に詳細な出力をキャプチャする場合に、この操作を行う必要がある場合があります。

Environment

Symantec Endpoint Protection for Linux 14.3 MP1 (14.3.1169.0100) 以下

Resolution

技術情報

この文書は、Linux 用の Symantec Endpoint Protection クライアントをインストール済みで、AutoProtect カーネルモジュールが有効にならない場合を想定しています。カスタム AutoProtect カーネルモジュールを構築するための自動コンパイルの前提条件を満たしていない、またはコンパイラがエラーを返して AutoProtect カーネルモジュールを有効にできないことが原因である可能性があります。"Kernel release not specified" は、以下の要件が満たされていない場合にコンパイルで返される典型的なエラーです。

詳しくは SEP for Linux クライアントの自動コンパイル を参照してください。

必要条件

AutoProtect カーネルモジュールをビルドするには、gcc と Linux カーネルソースをインストールする必要があります。以下の表は、gcc パッケージに加えてご利用のディストリビューションにインストールする必要があるパッケージをまとめたものです。

ディストリビューション インストールするカーネルパッケージ 特殊なビルドコマンド
CentOS kernel-devel-$(uname -r)
kernel-headers-$(uname -r)
 
Debian linux-headers-$(uname -r)
linux-headers-$(uname -r) build-essential
(注を参照)
./build.sh --kernel-dir /usr/src/linux-headers-$(uname -r)
Fedora kernel-devel-$(uname -r)
kernel-headers-$(uname -r)
./build.sh --kernel-dir /usr/src/kernels/$(uname -r)
SUSE Linux Enterprise Server (SLES) kernel-$flavor-devel-$version (注を参照) ./build.sh --kernel-dir /lib/modules/$(uname -r)/build
Open Enterprise Server kernel-source ./build.sh --kernel-dir /lib/modules/$(uname -r)/build
Oracle Unbreakable Enterprise Kernel (UEK) kernel-uek-devel-$(uname -r) ./build.sh --kernel-dir /lib/modules/$(uname -r)/build
RedHat kernel-devel-$(uname -r)
kernel-headers-$(uname -r)
./build.sh --kernel-dir /lib/modules/$(uname -r)/build
Ubuntu 9.10 and earlier linux-source ./build.sh --kernel-dir /lib/modules/$(uname -r)
Ubuntu 10.04 and later linux-headers-$(uname -r) build-essential
​(注を参照)
./build.sh --kernel-dir /usr/src/linux-headers-$(uname -r)

特殊なビルドコマンドでは、文字列 $(uname -r) は現在実行中のオペレーティングシステムカーネルバージョンを表します。ビルドコマンドで $(uname -r) を使用すると、ビルドするカーネルモジュールは現在動作しているカーネルに対応したものになります。別のカーネルバージョン用にビルドする場合は、$(uname -r) をビルドするカーネルバージョンに置き換える必要があります。また、ビルドしようとするバージョンのカーネルソースがインストールされていることを確認する必要があります。

上の表にあるパッケージは、リポジトリから利用可能な最新のカーネルソースをインストールします。もし、ご利用のディストリビューションで最新の利用可能なカーネルを実行していない場合は、実行中のカーネルと同じカーネルソースをダウンロードし、$(uname -r) を置き換えてください。

注意: Debian は、一般的な linux-headers パッケージを提供していません。代わりに、linux-headers をダウンロードする際に、正しいアーキテクチャの種類を指定してダウンロードする必要があります。利用できるパッケージは、(Debian 5.0.4 時点で)以下の通りです。

  • linux-headers-2.6-486
  • linux-headers-2.6-686
  • linux-headers-2.6-686-bigmem
  • linux-headers-2.6-amd64
  • linux-headers-2.6-openvz-686
  • linux-headers-2.6-vserver-686
  • linux-headers-2.6-vserver-686-bigmem
  • linux-headers-2.6-xen-686

注: Ubuntu 10.10 で linux-source をインストールしても、linux-headers はインストールされないようです。これを解決するには、正しいバージョンの Linux ヘッダーパッケージ (例: linux-headers-generic, linux-headers-generic-pae, linux-headers-server, linux-headers-virtual) をインストールする必要があります。

注: 現在実行中のカーネルに適合する SLES 開発パッケージの $flavor と $version を取得するには、"uname -r" コマンドの出力を参照してください。

3.0.101-80-default # for example

これを用いて、パッケージリポジトリを検索します (ここでは強調のため太字と下線を追加):

zypper search -s kernel-default-devel | grep 3.0.101-80

の検索出力を参照してください。

v | kernel-default-devel | package | 3.0.101-80.1     | x86_64 | SLES11-SP4-Updates

パッケージをインストールします(この例の devel パッケージのバージョンには .1 が付くことに注意してください)。

sudo zypper install kernel-default-devel-3.0.101-80.1

注: RedHat Enterprise Linux 8 は elfutils-libelf-devel パッケージも必要です。

モジュールのビルド

AutoProtect カーネルモジュールは、ターミナルプログラムを使用して root 権限でビルドする必要があります。

  1. ap-kernelmodule.tar.gz (SEP 12.1 RU5 以降では src/ap-kernelmodule.tar.bz2) と同じディレクトリで、ファイルを解凍してください。

    tar -xf ap-kernelmodule.tar.gz # For .tar.bz2 extension install bzip2 (sudo yum install bzip2)

  2. 解凍したディレクトリに移動します。

    cd ap-kernelmodule

     
  3. ビルドコマンドを実行します。上の表で特別なビルドコマンドがあれば、それを使用します。

    ./build.sh

    ビルドが完了すると "Build succeeded" と表示されるはずです。表示されない場合は、ビルドコマンドの出力を見てエラーメッセージがないか確認してください。ビルドが成功した場合、

    • 12.1.5 の場合は、残りのステップを続行してください。
    • 12.1.6 以降の場合、ビルドスクリプトは自動的に AutoProtect カーネルモジュールを所定の場所に移動し、サービスを再起動します。最後のステップでは、AutoProtect が有効になっていることを確認できます。
     
  4. 新しくビルドされた AutoProtect カーネルモジュールのあるディレクトリに移動します。

    cd bin.ira
     
  5. 新しくビルドした AutoProtect カーネルモジュールを autoprotect ディレクトリに移動します。

    mv * /opt/Symantec/autoprotect/
     
  6. autoprotect と rtvscand のサービスを再起動します。

    /etc/init.d/autoprotect restart
    /etc/init.d/rtvscand restart
     
  7. AutoProtect が有効になっていることを確認します。

    /opt/Symantec/symantec_antivirus/sav info -a

Additional Information

[英語文書] Manually compile Auto-Protect kernel modules for Endpoint Protection for Linux