26.7. SystemTap のクロスインストルメンテーションの初期化
SystemTap のクロスインストルメンテーションを初期化して、あるシステム上で SystemTap スクリプトから SystemTap インストルメンテーションモジュールをビルドし、SystemTap が完全にデプロイされていない別のシステムでこのモジュールを使用します。
前提条件
- SystemTap のインストール で説明されているように、SystemTap がホストシステムにインストールされている。
systemtap-runtimeパッケージが各ターゲットシステムにインストールされている。# dnf install systemtap-runtime- ホストシステムとターゲットシステムが両方とも同じアーキテクチャーである。
ホストシステムとターゲットシステムの両方で、同じメジャーバージョンの Red Hat Enterprise Linux (Red Hat Enterprise Linux 10 など) が実行されている。
重要カーネルパッケージのバグにより、複数の
kernel-debuginfoパッケージとkernel-develパッケージを 1 つのシステムにインストールできない場合があります。このような場合、ホストシステムとターゲットシステムのマイナーバージョンが同じである必要があります。バグが発生した場合は、Red Hat JIRA でバグを報告してください。
手順
各ターゲットシステムで実行されているカーネルを特定します。
$ uname -r- 各 ターゲット システムに対して上記のステップを繰り返します。
- Systemtap のインストール で説明されている方法に従って、ホストシステムで各ターゲットシステムのターゲットカーネルと関連パッケージをインストールします。
ホストシステムでインストルメンテーションモジュールをビルドし、このモジュールをターゲットシステムにコピーして、次のいずれかの方法でこのモジュールを実行します。
ホストシステムからターゲットシステムへの SSH 接続が可能な場合は、リモート実装を使用します。
# stap --remote <target_system> scriptこれを正常に実行するには、ホストシステムからターゲットシステムへの SSH 接続が確立できることを確認する必要があります。
手動:
ホストシステムでインストルメンテーションモジュールをビルドします。
# stap -r <kernel_version> script -m <module_name> -p 4<kernel_version>はステップ 1 で特定したターゲットカーネルのバージョン、scriptはインストルメンテーションモジュールに変換するスクリプト、<module_name>はインストルメンテーションモジュールの任意の名前です。-p4オプションは、SystemTap にコンパイルしたモジュールを読み込まないように指示します。インストルメンテーションモジュールをコンパイルしたら、それをターゲットシステムにコピーし、次のコマンドを使用してロードします。
# staprun <module_name>.ko