Difference between revisions of "Netconsole (Русский)"
m (Add category) |
|||
(7 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
+ | [[Category:Logging (Русский)]] | ||
+ | [[Category:Networking (Русский)]] | ||
[[Category:Kernel (Русский)]] | [[Category:Kernel (Русский)]] | ||
− | |||
[[Category:Русский]] | [[Category:Русский]] | ||
[[en:Netconsole]] | [[en:Netconsole]] | ||
+ | [[ja:Netconsole]] | ||
+ | [[zh-hans:Netconsole]] | ||
{{Unmaintained (Русский)}} | {{Unmaintained (Русский)}} | ||
'''netconsole''' это модуль Linux ядра, который отправляет все сообщения журнала ядра (т.е. [[dmesg]]) на удаленный компьютер по сети, без участия пространства пользователя (например, syslogd). Имя "netconsole" является некорректным, т.к. больше похож на удаленный сервис регистрации, нежели на "console". | '''netconsole''' это модуль Linux ядра, который отправляет все сообщения журнала ядра (т.е. [[dmesg]]) на удаленный компьютер по сети, без участия пространства пользователя (например, syslogd). Имя "netconsole" является некорректным, т.к. больше похож на удаленный сервис регистрации, нежели на "console". | ||
Line 12: | Line 15: | ||
== Установка == | == Установка == | ||
− | Установите {{pkg|gnu-netcat}} из [[ | + | Установите {{pkg|gnu-netcat}} из [[Official repositories (Русский)]]. |
== Настройка == | == Настройка == | ||
Line 35: | Line 38: | ||
== Динамическая настройка == | == Динамическая настройка == | ||
− | Netconsole может быть загружен как модуль ядра вручную после загрузки или автоматически при загрузке в зависимости от конфигурации этого модуля. См. [[kernel modules]] для настройки загрузки. Для загрузки вручную: | + | Netconsole может быть загружен как модуль ядра вручную после загрузки или автоматически при загрузке в зависимости от конфигурации этого модуля. См. [[kernel modules (Русский)]] для настройки загрузки. Для загрузки вручную: |
<pre> | <pre> | ||
# set log level for kernel messages | # set log level for kernel messages | ||
Line 52: | Line 55: | ||
# set destination IP address | # set destination IP address | ||
echo 192.168.0.17 > remote_ip | 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 | # find destination MAC address | ||
− | arping | + | arping -I $(cat dev_name) $(cat remote_ip) -f | grep -o ..:..:..:..:..:.. > remote_mac |
echo 1 > enabled | echo 1 > enabled | ||
Line 84: | Line 89: | ||
linux /vmlinuz-linux root=/dev/disk/by-label/ROOT ro netconsole=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: [[Boot debugging#Net_Console|Net Console for Boot Debugging]]. | + | From: [[Boot debugging#Net_Console|Net Console for Boot Debugging]]{{Broken section link}}. |
Latest revision as of 13:32, 10 February 2019
netconsole это модуль Linux ядра, который отправляет все сообщения журнала ядра (т.е. dmesg) на удаленный компьютер по сети, без участия пространства пользователя (например, syslogd). Имя "netconsole" является некорректным, т.к. больше похож на удаленный сервис регистрации, нежели на "console".
Он может быть или встроен в ядро или загружен в виде модуля. Встроенный netconsole инициализирует сразу после сетевых карт(NIC). Модуль используется в основном для захвата выхода "паники ядра" из зависшей машины, или в других ситуациях, когда пользователь пространство не доступно.
Документация доступна в подкаталоге Documentation/networking/netconsole.txt
Contents
Установка
Установите 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 # set local network device name (find it trough ifconfig, examples: eth0, eno1, wlan0) echo eno1 > dev_name # find destination MAC address arping -I $(cat dev_name) $(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[broken link: invalid section].