Red Hat Training

A Red Hat training course is available for RHEL 8

35.2. SystemTap のクロスインストルメンテーションの初期化

SystemTap のクロスインストルメンテーションを初期化し、あるシステムで SystemTap スクリプトから SystemTap インストルメンテーションモジュールを構築して SystemTap が完全にデプロイされていない別のシステムで使用します。

前提条件

  • SystemTap のインストール」で説明されているように、SystemTap が ホストシステム にインストールされている。
  • ターゲットシステムsystemtap-runtime パッケージがインストールされている。

    # yum install systemtap-runtime
  • ホストシステムターゲットシステム の両方のアーキテクチャーが同じである。
  • ホストシステムターゲットシステム は、どちらも同じメジャーバージョンの Red Hat Enterprise Linux (Red Hat Enterprise Linux 8 など) を実行しており、異なるマイナーバージョン (8.1 や 8.2 など) を実行できます
注意

カーネルのパッケージ化のバグにより、複数の kernel-debuginfo パッケージおよび kernel-devel パッケージが 1 つのシステムにインストールされない場合があります。この場合、ホストシステム および ターゲットシステム のマイナーバージョンが一致している必要があります。これが発生した場合は、https://bugzilla.redhat.com/ でバグを報告してください。

手順

  1. それぞれの ターゲットシステム で実行しているカーネルを特定します。

    $ uname -r

    ターゲットシステム ごとにこの手順を繰り返します。

  2. Systemtap のインストール」で説明されている方法に従って、ホストシステム で各 ターゲットシステムターゲットカーネル と関連パッケージをインストールします。
  3. ホストシステム でインストルメンテーションモジュールを構築し、このモジュールをコピーして ターゲットシステム でこのモジュールを実行します。

    1. リモート実装の使用

      # stap --remote target_system script

      このコマンドは、ターゲットシステム で指定したスクリプトをリモートで実装します。これを成功させるには、ホストシステム から ターゲットシステム に SSH 接続を確立できることを確認する必要があります。

    2. 手動

      1. ホストシステム にインストルメンテーションモジュールを構築します。

        # stap -r kernel_version script -m module_name -p 4

        ここで、kernel_version は、手順 1 で判断した ターゲットカーネル のバージョンを参照します。スクリプト は、インストルメンテーションモジュール に変換するスクリプトを参照し、モジュール名 は、インストルメンテーションモジュール の希望の名前になります。-p4 オプションは、コンパイルしたモジュールを読み込み、実行しないように SystemTap に指示を出します。

      2. インストルメンテーションモジュールがコンパイルされたら、ターゲットシステムにコピーして、以下のコマンドを使用して読み込みます。

        # staprun module_name.ko