「Netconsole」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(en:Netconsoleへの転送ページ)
 
1行目: 1行目:
  +
[[Category:カーネル]]
#redirect[[en:Netconsole]]
 
  +
[[Category:ネットワーク]]
  +
[[en:Netconsole]]
  +
[[ru:Netconsole]]
  +
[[zh-CN:Netconsole]]
  +
'''netconsole''' はカーネルのログメッセージ (dmesg) をネットワークを通して他のコンピュータに送信するカーネルモジュールです。ユーザー空間は使いません (例: syslogd)。"netconsole" という名前は紛らわしいですが"コンソール"ではなく、実際は遠隔ログサービスに似ています。
  +
  +
ビルトインまたはモジュールとして使うことができます。ビルトインの ''netconsole'' は NIC カードが立ち上がって指定したインターフェイスが使えるようになったらすぐに初期化されます。モジュールは主としてヘッドレスマシンからカーネルパニックの出力をキャプチャするのに使います。もしくはユーザー空間が機能しなくなった場合に用います。
  +
  +
ドキュメントは Linux のカーネルツリー [https://www.kernel.org/doc/Documentation/networking/netconsole.txt Documentation/networking/netconsole.txt] にあります。
  +
  +
== センダーの設定 ==
  +
  +
=== ビルトイン設定 ===
  +
  +
Netconsole は以下のように {{ic|netconsole}} [[カーネルパラメータ]]で設定することができます:
  +
  +
netconsole=[src-port]@[src-ip]/[<dev>],[tgt-port]@<tgt-ip>/[tgt-macaddr]
  +
  +
それぞれのフィールドの意味は:
  +
  +
* {{ic|src-port}} &mdash; UDP パケットのソース (デフォルトは 6665)
  +
* {{ic|src-ip}} &mdash; 使用するソース IP (インターフェイスアドレス)
  +
* {{ic|dev}} &mdash; ネットワークインターフェイス (eth0)
  +
* {{ic|tgt-port}} &mdash; ログエージェントのポート (6666)
  +
* {{ic|tgt-ip}} &mdash; ログエージェントの IP アドレス
  +
* {{ic|tgt-macaddr}} &mdash; ログエージェントのイーサネット MAC アドレス (broadcast)
  +
  +
例:
  +
  +
netconsole=6665@192.168.1.28/eth0,6666@192.168.1.19/00:13:32:20:r9:a5'
  +
  +
{{Note|MAC アドレスは任意ですが、スラッシュは必要です: {{ic|...,6666@192.168.1.19/}}。}}
  +
  +
ログレベルは {{ic|loglevel}} カーネルパラメータで設定することができます、例:
  +
  +
loglevel=7
  +
  +
=== ランタイム設定 ===
  +
  +
Netconsole は起動後に''カーネルモジュール''として手動でロードしたり、モジュール設定によって起動時に自動的にロードさせることができます (詳しくは[[カーネルモジュール]]を参照)。
  +
  +
起動後に手動で {{ic|netconsole}} モジュールをロードするには:
  +
  +
{{bc|<nowiki>
  +
# set log level for kernel messages
  +
dmesg -n 8
  +
  +
modprobe configfs
  +
modprobe netconsole
  +
mount none -t configfs /sys/kernel/config
  +
  +
# 'netconsole' dir is auto created if the module is loaded
  +
mkdir /sys/kernel/config/netconsole/target1
  +
cd /sys/kernel/config/netconsole/target1
  +
  +
# set local IP address
  +
echo 192.168.0.111 > local_ip
  +
# set destination IP address
  +
echo 192.168.0.17 > remote_ip
  +
# set local network device name (find it trough ifconfig, examples: eth0, eno1, wlan0)
  +
echo eno1 > dev_name
  +
# find destination MAC address
  +
arping $(cat remote_ip) -f | grep -o ..:..:..:..:..:.. > remote_mac
  +
  +
echo 1 > enabled
  +
</nowiki>}}
  +
  +
これで Netconsole が設定されます。確認するには、{{ic|<nowiki>dmesg | tail</nowiki>}} を実行してください。"netconsole: network logging started" と表示されるはずです。利用可能なログレベルは {{ic|dmesg -h}} を実行することで確認できます。
  +
  +
== レシーバの設定 ==
  +
  +
[[公式リポジトリ]]から {{pkg|gnu-netcat}} または {{pkg|socat}} をインストールしてください。
  +
  +
nc -u -l 6666
  +
もしくは:
  +
nc -u -l -p 6666
  +
  +
ロギングは ''syslog-ng'' など Arch Linux で設定されたロガーによって行われるため、利用可能なログレベル (出力の詳細) はロガーのドキュメントで定義され、ログタイプによって異なる可能性があります。カーネルランタイムに ''netconsole'' パラメータを指定することで (設定ファイルは必要ありません)、監視する PC で2つの ''netconsole'' インスタンスを起動して (片方は出力を読み取り、片方は入力を読み取る)、ランタイム設定のようにログを取る PC やデバイスのインスタンスを再起動できます:
  +
  +
# set log level for kernel messages
  +
dmesg -n 8
  +
  +
netconsole=6666@192.168.1.28/eth0,6666@192.168.1.19/00:13:32:20:r9:a5
  +
  +
{{Note|MAC アドレスは任意です。}}
  +
  +
nc -l -u -p 6666 &
  +
nc -u 192.168.1.28 6666
  +
  +
# socat as alternative to nc in one command
  +
socat - udp4-datagram:192.168.1.28:6666,bind=6666
  +
  +
''Netconsole'' でデータを監視・入力するためには、PC やルーターのファイアウォールを無効化して、ルーターの転送ポートを適切に設定する必要があります。netconsole を [http://archlinuxarm.org/forum/viewtopic.php?f=18&t=3355 別のサブネット] でセットアップする場合は柔軟な設定をすることができ、別のネットワーク IP にデバイスを移動してもクラッシュしませんが、イーサネットインターフェイスにエイリアスを設定する [http://archlinuxarm.org/platforms/armv5/seagate-goflex-home#qt-platform_tabs-ui-tabs3 複雑な設定] をレシーバにする必要があります。
  +
  +
== 参照 ==
  +
  +
* [[ブートデバッグ#netconsole]]

2015年11月28日 (土) 15:02時点における版

netconsole はカーネルのログメッセージ (dmesg) をネットワークを通して他のコンピュータに送信するカーネルモジュールです。ユーザー空間は使いません (例: syslogd)。"netconsole" という名前は紛らわしいですが"コンソール"ではなく、実際は遠隔ログサービスに似ています。

ビルトインまたはモジュールとして使うことができます。ビルトインの netconsole は NIC カードが立ち上がって指定したインターフェイスが使えるようになったらすぐに初期化されます。モジュールは主としてヘッドレスマシンからカーネルパニックの出力をキャプチャするのに使います。もしくはユーザー空間が機能しなくなった場合に用います。

ドキュメントは Linux のカーネルツリー Documentation/networking/netconsole.txt にあります。

センダーの設定

ビルトイン設定

Netconsole は以下のように netconsole カーネルパラメータで設定することができます:

netconsole=[src-port]@[src-ip]/[<dev>],[tgt-port]@<tgt-ip>/[tgt-macaddr]

それぞれのフィールドの意味は:

  • src-port — UDP パケットのソース (デフォルトは 6665)
  • src-ip — 使用するソース IP (インターフェイスアドレス)
  • dev — ネットワークインターフェイス (eth0)
  • tgt-port — ログエージェントのポート (6666)
  • tgt-ip — ログエージェントの IP アドレス
  • tgt-macaddr — ログエージェントのイーサネット MAC アドレス (broadcast)

例:

netconsole=6665@192.168.1.28/eth0,6666@192.168.1.19/00:13:32:20:r9:a5'
ノート: MAC アドレスは任意ですが、スラッシュは必要です: ...,6666@192.168.1.19/

ログレベルは loglevel カーネルパラメータで設定することができます、例:

loglevel=7

ランタイム設定

Netconsole は起動後にカーネルモジュールとして手動でロードしたり、モジュール設定によって起動時に自動的にロードさせることができます (詳しくはカーネルモジュールを参照)。

起動後に手動で netconsole モジュールをロードするには:

# set log level for kernel messages
dmesg -n 8

modprobe configfs
modprobe netconsole
mount none -t configfs /sys/kernel/config

# 'netconsole' dir is auto created if the module is loaded 
mkdir /sys/kernel/config/netconsole/target1
cd /sys/kernel/config/netconsole/target1

# set local IP address
echo 192.168.0.111 > local_ip
# set destination IP address
echo 192.168.0.17 > remote_ip
# set local network device name (find it trough ifconfig, examples: eth0, eno1, wlan0)
echo eno1 > dev_name
# find destination MAC address
arping $(cat remote_ip) -f | grep -o ..:..:..:..:..:.. > remote_mac

echo 1 > enabled

これで Netconsole が設定されます。確認するには、dmesg | tail を実行してください。"netconsole: network logging started" と表示されるはずです。利用可能なログレベルは dmesg -h を実行することで確認できます。

レシーバの設定

公式リポジトリから gnu-netcat または socat をインストールしてください。

nc -u -l 6666

もしくは:

nc -u -l -p 6666

ロギングは syslog-ng など Arch Linux で設定されたロガーによって行われるため、利用可能なログレベル (出力の詳細) はロガーのドキュメントで定義され、ログタイプによって異なる可能性があります。カーネルランタイムに netconsole パラメータを指定することで (設定ファイルは必要ありません)、監視する PC で2つの netconsole インスタンスを起動して (片方は出力を読み取り、片方は入力を読み取る)、ランタイム設定のようにログを取る PC やデバイスのインスタンスを再起動できます:

# set log level for kernel messages
dmesg -n 8

netconsole=6666@192.168.1.28/eth0,6666@192.168.1.19/00:13:32:20:r9:a5
ノート: MAC アドレスは任意です。
nc -l -u -p 6666 &
nc -u 192.168.1.28 6666

# socat as alternative to nc in one command
socat - udp4-datagram:192.168.1.28:6666,bind=6666

Netconsole でデータを監視・入力するためには、PC やルーターのファイアウォールを無効化して、ルーターの転送ポートを適切に設定する必要があります。netconsole を 別のサブネット でセットアップする場合は柔軟な設定をすることができ、別のネットワーク IP にデバイスを移動してもクラッシュしませんが、イーサネットインターフェイスにエイリアスを設定する 複雑な設定 をレシーバにする必要があります。

参照