Difference between revisions of "Netconsole (Русский)"

From ArchWiki
Jump to: navigation, search
m (Начальная загрузка с запуском ядра)
m (Прием)
Line 61: Line 61:
 
nc -u -l 6666
 
nc -u -l 6666
 
</pre>
 
</pre>
or
+
или
 
<pre>
 
<pre>
 
nc -u -l -p 6666
 
nc -u -l -p 6666
 
</pre>
 
</pre>
 
  
 
== Начальная загрузка с запуском ядра ==
 
== Начальная загрузка с запуском ядра ==

Revision as of 16:10, 24 November 2012

netconsole это модуль Linux ядра, который отправляет все сообщения журнала ядра (т.е. dmesg) на удаленный компьютер по сети, без участия пространства пользователя (например, syslogd). Имя "netconsole" является некорректным, т.к. больше похож на удаленный сервис регистрации, нежели на "console".

Он может быть или встроен в ядро или загружен в виде модуля. Встроенный netconsole initializes инициализирует сразу после сетевых карт(NIC). Модуль используется в основном для захвата выхода "паники ядра" из зависшей машины, или в других ситуациях, когда пользователь пространство не доступно.

Документация доступна в подкаталог Documentation/networking/netconsole.txt

Установка

Установите gnu-netcat из official repositories.

Настройка

Опции Netconsole и других модулей ядра могут передаваться от загрузчика к ядру при его запуске посредством командной строки ядра, изменяя параметры загрузки. Пример для U-Boot, где первый адрес машины с которого слать, его порт и IP, и 2-й адрес машины куда отправляем логи, его порт, IP-и MAC-адрес:

fw_setenv usb_custom_params 'loglevel=7 netconsole=6666@192.168.1.28/eth0,6666@192.168.1.19/00:13:32:20:r9:a5'

Ведение журнала в системе осущетвляет syslog-ng или иной другой логгер, поэтому доступны уровнях протоколирования (вывод информации) определяется функцией протоколирования сообщений. Можно также передавать параметры netconsole в ядро во время выполнения (конфигурационного файла не требуется), затем запустить два экземпляра netconsole по мониторингу машин (один на чтение выхода, другой для ввода), и перезапустить его на машине или устройстве, таким образом вы логируетесь с динамической настройкой:

# 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

nc -l -u -p 6666 &
nc -u 192.168.1.28 6666

Возможно, придется выключить компьютер и маршрутизатор/брандмауэр и настроить перенаправление портов маршрутизатора для мониторинга и приема данных в netconsole.

Динамическая настройка

Netconsole может быть загружен как модуль ядра вручную после загрузки или автоматически при загрузке в зависимости от конфигурации этого модуля. См. kernel modules для настройки загрузки. Для загрузки вручную:

# 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
# 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'.

Прием

nc -u -l 6666

или

nc -u -l -p 6666

Начальная загрузка с запуском ядра

Просто добавьте netconsole к строке kernel. Он принимает строку параметров "netconsole" в следующем формате::

  netconsole=[src-port]@[src-ip]/[<dev>],[tgt-port]@<tgt-ip>/[tgt-macaddr]
        src-port      source for UDP packets (defaults to 6665)
        src-ip        source IP to use (interface address)
        dev           network interface (eth0)
        tgt-port      port for logging agent (6666)
        tgt-ip        IP address for logging agent
        tgt-macaddr   ethernet MAC address for logging agent (broadcast)

Примеры:

linux /vmlinuz-linux root=UUID=a322511e-b028-4f11-87b6-e48b5d99bbd8 ro netconsole=514@10.0.0.1/eth1,514@10.0.0.2/12:34:56:78:9a:bc
linux /vmlinuz-linux root=/dev/disk/by-label/ROOT ro netconsole=514@10.0.0.2/12:34:56:78:9a:bc

From: Net Console for Boot Debugging.