!sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget)/translations/zh_CN/networking/netconsolemodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/zh_TW/networking/netconsolemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/it_IT/networking/netconsolemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ja_JP/networking/netconsolemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ko_KR/networking/netconsolemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/sp_SP/networking/netconsolemodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhC/var/lib/git/docbuild/linux/Documentation/networking/netconsole.rsthKubhsection)}(hhh](htitle)}(h Netconsoleh]h Netconsole}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(h5started by Ingo Molnar , 2001.09.17h](hstarted by Ingo Molnar <}(hhhhhNhNubh reference)}(hmingo@redhat.comh]hmingo@redhat.com}(hhhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:mingo@redhat.comuh1hhhubh >, 2001.09.17}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hF2.6 port and netpoll api by Matt Mackall , Sep 9 2003h](h*2.6 port and netpoll api by Matt Mackall <}(hhhhhNhNubh)}(hmpm@selenic.comh]hmpm@selenic.com}(hhhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:mpm@selenic.comuh1hhhubh >, Sep 9 2003}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(h@IPv6 support by Cong Wang , Jan 1 2013h](hIPv6 support by Cong Wang <}(hjhhhNhNubh)}(hxiyou.wangcong@gmail.comh]hxiyou.wangcong@gmail.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:xiyou.wangcong@gmail.comuh1hhjubh >, Jan 1 2013}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hAExtended console support by Tejun Heo , May 1 2015h](h'Extended console support by Tejun Heo <}(hj3hhhNhNubh)}(h tj@kernel.orgh]h tj@kernel.org}(hj;hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:tj@kernel.orguh1hhj3ubh >, May 1 2015}(hj3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hGRelease prepend support by Breno Leitao , Jul 7 2023h](h)Release prepend support by Breno Leitao <}(hjUhhhNhNubh)}(hleitao@debian.orgh]hleitao@debian.org}(hj]hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:leitao@debian.orguh1hhjUubh >, Jul 7 2023}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hNUserdata append support by Matthew Wood , Jan 22 2024h](h)Userdata append support by Matthew Wood <}(hjwhhhNhNubh)}(hthepacketgeek@gmail.comh]hthepacketgeek@gmail.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:thepacketgeek@gmail.comuh1hhjwubh>, Jan 22 2024}(hjwhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hGSysdata append support by Breno Leitao , Jan 15 2025h](h(Sysdata append support by Breno Leitao <}(hjhhhNhNubh)}(hleitao@debian.orgh]hleitao@debian.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:leitao@debian.orguh1hhjubh>, Jan 15 2025}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hPlease send bug reports to Matt Mackall Satyam Sharma , and Cong Wang h](h)Please send bug reports to Matt Mackall <}(hjhhhNhNubh)}(hmpm@selenic.comh]hmpm@selenic.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:mpm@selenic.comuh1hhjubh> Satyam Sharma <}(hjhhhNhNubh)}(hsatyam.sharma@gmail.comh]hsatyam.sharma@gmail.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:satyam.sharma@gmail.comuh1hhjubh>, and Cong Wang <}(hjhhhNhNubh)}(hxiyou.wangcong@gmail.comh]hxiyou.wangcong@gmail.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:xiyou.wangcong@gmail.comuh1hhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h Introduction:h]h Introduction:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hThis module logs kernel printk messages over UDP allowing debugging of problem where disk logging fails and serial consoles are impractical.h]hThis module logs kernel printk messages over UDP allowing debugging of problem where disk logging fails and serial consoles are impractical.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXIt can be used either built-in or as a module. As a built-in, netconsole initializes immediately after NIC cards and will bring up the specified interface as soon as possible. While this doesn't allow capture of early kernel panics, it does capture most of the boot process.h]hXIt can be used either built-in or as a module. As a built-in, netconsole initializes immediately after NIC cards and will bring up the specified interface as soon as possible. While this doesn’t allow capture of early kernel panics, it does capture most of the boot process.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h] introductionah ]h"] introduction:ah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h"Sender and receiver configuration:h]h"Sender and receiver configuration:}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hhhhhK&ubh)}(hPIt takes a string configuration parameter "netconsole" in the following format::h]hSIt takes a string configuration parameter “netconsole” in the following format:}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hj:hhubh literal_block)}(hXQnetconsole=[+][r][src-port]@[src-ip]/[],[tgt-port]@/[tgt-macaddr] where + if present, enable extended console support r if present, prepend kernel version (release) to the message src-port source for UDP packets (defaults to 6665) src-ip source IP to use (interface address) dev network interface name (eth0) or MAC address tgt-port port for logging agent (6666) tgt-ip IP address for logging agent tgt-macaddr ethernet MAC address for logging agent (broadcast)h]hXQnetconsole=[+][r][src-port]@[src-ip]/[],[tgt-port]@/[tgt-macaddr] where + if present, enable extended console support r if present, prepend kernel version (release) to the message src-port source for UDP packets (defaults to 6665) src-ip source IP to use (interface address) dev network interface name (eth0) or MAC address tgt-port port for logging agent (6666) tgt-ip IP address for logging agent tgt-macaddr ethernet MAC address for logging agent (broadcast)}hj[sbah}(h]h ]h"]h$]h&]hhuh1jYhhhK+hj:hhubh)}(h Examples::h]h Examples:}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hj:hhubjZ)}(hClinux netconsole=4444@10.0.0.1/eth1,9353@10.0.0.2/12:34:56:78:9a:bch]hClinux netconsole=4444@10.0.0.1/eth1,9353@10.0.0.2/12:34:56:78:9a:bc}hjwsbah}(h]h ]h"]h$]h&]hhuh1jYhhhK9hj:hhubh)}(hor::h]hor:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hj:hhubjZ)}(h*insmod netconsole netconsole=@/,@10.0.0.2/h]h*insmod netconsole netconsole=@/,@10.0.0.2/}hjsbah}(h]h ]h"]h$]h&]hhuh1jYhhhK=hj:hhubh)}(hor using IPv6::h]hor using IPv6:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hj:hhubjZ)}(h/insmod netconsole netconsole=@/,@fd00:1:2:3::1/h]h/insmod netconsole netconsole=@/,@fd00:1:2:3::1/}hjsbah}(h]h ]h"]h$]h&]hhuh1jYhhhKAhj:hhubh)}(h7or using a MAC address to select the egress interface::h]h6or using a MAC address to select the egress interface:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChj:hhubjZ)}(hPlinux netconsole=4444@10.0.0.1/22:33:44:55:66:77,9353@10.0.0.2/12:34:56:78:9a:bch]hPlinux netconsole=4444@10.0.0.1/22:33:44:55:66:77,9353@10.0.0.2/12:34:56:78:9a:bc}hjsbah}(h]h ]h"]h$]h&]hhuh1jYhhhKEhj:hhubh)}(hIt also supports logging to multiple remote agents by specifying parameters for the multiple agents separated by semicolons and the complete string enclosed in "quotes", thusly::h]hIt also supports logging to multiple remote agents by specifying parameters for the multiple agents separated by semicolons and the complete string enclosed in “quotes”, thusly:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhj:hhubjZ)}(hDmodprobe netconsole netconsole="@/,@10.0.0.2/;@/eth1,6892@10.0.0.3/"h]hDmodprobe netconsole netconsole="@/,@10.0.0.2/;@/eth1,6892@10.0.0.3/"}hjsbah}(h]h ]h"]h$]h&]hhuh1jYhhhKKhj:hhubh)}(hBuilt-in netconsole starts immediately after the TCP stack is initialized and attempts to bring up the supplied dev at the supplied address.h]hBuilt-in netconsole starts immediately after the TCP stack is initialized and attempts to bring up the supplied dev at the supplied address.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhj:hhubh)}(hPThe remote host has several options to receive the kernel messages, for example:h]hPThe remote host has several options to receive the kernel messages, for example:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKQhj:hhubhenumerated_list)}(hhh](h list_item)}(hsyslogd h]h)}(hsyslogdh]hsyslogd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKThjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hXnetcat On distributions using a BSD-based netcat version (e.g. Fedora, openSUSE and Ubuntu) the listening port must be specified without the -p switch:: nc -u -l -p ' / 'nc -u -l or:: netcat -u -l -p ' / 'netcat -u -l h](h)}(hnetcath]hnetcat}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhj0ubh)}(hOn distributions using a BSD-based netcat version (e.g. Fedora, openSUSE and Ubuntu) the listening port must be specified without the -p switch::h]hOn distributions using a BSD-based netcat version (e.g. Fedora, openSUSE and Ubuntu) the listening port must be specified without the -p switch:}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKXhj0ubjZ)}(hd nc -u -l -p ' / 'nc -u -l or:: netcat -u -l -p ' / 'netcat -u -l h]hd nc -u -l -p ' / 'nc -u -l or:: netcat -u -l -p ' / 'netcat -u -l }hjPsbah}(h]h ]h"]h$]h&]hhuh1jYhhhK\hj0ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hsocat h]h)}(hsocath]hsocat}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKbhjdubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix)uh1jhj:hhhhhKTubjZ)}(hsocat udp-recv: -h]hsocat udp-recv: -}hjsbah}(h]h ]h"]h$]h&]hhuh1jYhhhKfhj:hhubeh}(h]!sender-and-receiver-configurationah ]h"]"sender and receiver configuration:ah$]h&]uh1hhhhhhhhK&ubh)}(hhh](h)}(hDynamic reconfiguration:h]hDynamic reconfiguration:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKiubh)}(hDynamic reconfigurability is a useful addition to netconsole that enables remote logging targets to be dynamically added, removed, or have their parameters reconfigured at runtime from a configfs-based userspace interface.h]hDynamic reconfigurability is a useful addition to netconsole that enables remote logging targets to be dynamically added, removed, or have their parameters reconfigured at runtime from a configfs-based userspace interface.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhjhhubh)}(hTo include this feature, select CONFIG_NETCONSOLE_DYNAMIC when building the netconsole module (or kernel, if netconsole is built-in).h]hTo include this feature, select CONFIG_NETCONSOLE_DYNAMIC when building the netconsole module (or kernel, if netconsole is built-in).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKohjhhubh)}(hVSome examples follow (where configfs is mounted at the /sys/kernel/config mountpoint).h]hVSome examples follow (where configfs is mounted at the /sys/kernel/config mountpoint).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKrhjhhubh)}(h@To add a remote logging target (target names can be arbitrary)::h]h?To add a remote logging target (target names can be arbitrary):}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKuhjhhubjZ)}(h/cd /sys/kernel/config/netconsole/ mkdir target1h]h/cd /sys/kernel/config/netconsole/ mkdir target1}hjsbah}(h]h ]h"]h$]h&]hhuh1jYhhhKwhjhhubh)}(hNote that newly created targets have default parameter values (as mentioned above) and are disabled by default -- they must first be enabled by writing "1" to the "enabled" attribute (usually after setting parameters accordingly) as described below.h]hXNote that newly created targets have default parameter values (as mentioned above) and are disabled by default -- they must first be enabled by writing “1” to the “enabled” attribute (usually after setting parameters accordingly) as described below.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKzhjhhubh)}(hTo remove a target::h]hTo remove a target:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjZ)}(h0rmdir /sys/kernel/config/netconsole/othertarget/h]h0rmdir /sys/kernel/config/netconsole/othertarget/}hjsbah}(h]h ]h"]h$]h&]hhuh1jYhhhKhjhhubh)}(hKThe interface exposes these parameters of a netconsole target to userspace:h]hKThe interface exposes these parameters of a netconsole target to userspace:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh block_quote)}(hX=============== ================================= ============ enabled Is this target currently enabled? (read-write) extended Extended mode enabled (read-write) release Prepend kernel release to message (read-write) dev_name Local network interface name (read-write) local_port Source UDP port to use (read-write) remote_port Remote agent's UDP port (read-write) local_ip Source IP address to use (read-write) remote_ip Remote agent's IP address (read-write) local_mac Local interface's MAC address (read-only) remote_mac Remote agent's MAC address (read-write) transmit_errors Number of packet send errors (read-only) =============== ================================= ============ h]htable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j<hj9ubj=)}(hhh]h}(h]h ]h"]h$]h&]colwidthK!uh1j<hj9ubj=)}(hhh]h}(h]h ]h"]h$]h&]colwidthK uh1j<hj9ubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh]h)}(henabledh]henabled}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhubah}(h]h ]h"]h$]h&]uh1jfhjcubjg)}(hhh]h)}(h!Is this target currently enabled?h]h!Is this target currently enabled?}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjcubjg)}(hhh]h)}(h (read-write)h]h (read-write)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjcubeh}(h]h ]h"]h$]h&]uh1jahj^ubjb)}(hhh](jg)}(hhh]h)}(hextendedh]hextended}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubjg)}(hhh]h)}(hExtended mode enabledh]hExtended mode enabled}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubjg)}(hhh]h)}(h (read-write)h]h (read-write)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]uh1jahj^ubjb)}(hhh](jg)}(hhh]h)}(hreleaseh]hrelease}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubjg)}(hhh]h)}(h!Prepend kernel release to messageh]h!Prepend kernel release to message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubjg)}(hhh]h)}(h (read-write)h]h (read-write)}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2ubah}(h]h ]h"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]uh1jahj^ubjb)}(hhh](jg)}(hhh]h)}(hdev_nameh]hdev_name}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjRubah}(h]h ]h"]h$]h&]uh1jfhjOubjg)}(hhh]h)}(hLocal network interface nameh]hLocal network interface name}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjiubah}(h]h ]h"]h$]h&]uh1jfhjOubjg)}(hhh]h)}(h (read-write)h]h (read-write)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjOubeh}(h]h ]h"]h$]h&]uh1jahj^ubjb)}(hhh](jg)}(hhh]h)}(h local_porth]h local_port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubjg)}(hhh]h)}(hSource UDP port to useh]hSource UDP port to use}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubjg)}(hhh]h)}(h (read-write)h]h (read-write)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]uh1jahj^ubjb)}(hhh](jg)}(hhh]h)}(h remote_porth]h remote_port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubjg)}(hhh]h)}(hRemote agent's UDP porth]hRemote agent’s UDP port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubjg)}(hhh]h)}(h (read-write)h]h (read-write)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]uh1jahj^ubjb)}(hhh](jg)}(hhh]h)}(hlocal_iph]hlocal_ip}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj<ubah}(h]h ]h"]h$]h&]uh1jfhj9ubjg)}(hhh]h)}(hSource IP address to useh]hSource IP address to use}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjSubah}(h]h ]h"]h$]h&]uh1jfhj9ubjg)}(hhh]h)}(h (read-write)h]h (read-write)}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjjubah}(h]h ]h"]h$]h&]uh1jfhj9ubeh}(h]h ]h"]h$]h&]uh1jahj^ubjb)}(hhh](jg)}(hhh]h)}(h remote_iph]h remote_ip}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubjg)}(hhh]h)}(hRemote agent's IP addressh]hRemote agent’s IP address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubjg)}(hhh]h)}(h (read-write)h]h (read-write)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]uh1jahj^ubjb)}(hhh](jg)}(hhh]h)}(h local_mach]h local_mac}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubjg)}(hhh]h)}(hLocal interface's MAC addressh]hLocal interface’s MAC address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubjg)}(hhh]h)}(h (read-only)h]h (read-only)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]uh1jahj^ubjb)}(hhh](jg)}(hhh]h)}(h remote_mach]h remote_mac}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj&ubah}(h]h ]h"]h$]h&]uh1jfhj#ubjg)}(hhh]h)}(hRemote agent's MAC addressh]hRemote agent’s MAC address}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj=ubah}(h]h ]h"]h$]h&]uh1jfhj#ubjg)}(hhh]h)}(h (read-write)h]h (read-write)}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjTubah}(h]h ]h"]h$]h&]uh1jfhj#ubeh}(h]h ]h"]h$]h&]uh1jahj^ubjb)}(hhh](jg)}(hhh]h)}(htransmit_errorsh]htransmit_errors}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjtubah}(h]h ]h"]h$]h&]uh1jfhjqubjg)}(hhh]h)}(hNumber of packet send errorsh]hNumber of packet send errors}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjqubjg)}(hhh]h)}(h (read-only)h]h (read-only)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jfhjqubeh}(h]h ]h"]h$]h&]uh1jahj^ubeh}(h]h ]h"]h$]h&]uh1j\hj9ubeh}(h]h ]h"]h$]h&]colsKuh1j7hj4ubah}(h]h ]h"]h$]h&]uh1j2hj.ubah}(h]h ]h"]h$]h&]uh1j,hhhKhjhhubh)}(hThe "enabled" attribute is also used to control whether the parameters of a target can be updated or not -- you can modify the parameters of only disabled targets (i.e. if "enabled" is 0).h]hThe “enabled” attribute is also used to control whether the parameters of a target can be updated or not -- you can modify the parameters of only disabled targets (i.e. if “enabled” is 0).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h!To update a target's parameters::h]h"To update a target’s parameters:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjZ)}(hXcat enabled # check if enabled is 1 echo 0 > enabled # disable the target (if required) echo eth2 > dev_name # set local interface echo 10.0.0.4 > remote_ip # update some parameter echo cb:a9:87:65:43:21 > remote_mac # update more parameters echo 1 > enabled # enable target againh]hXcat enabled # check if enabled is 1 echo 0 > enabled # disable the target (if required) echo eth2 > dev_name # set local interface echo 10.0.0.4 > remote_ip # update some parameter echo cb:a9:87:65:43:21 > remote_mac # update more parameters echo 1 > enabled # enable target again}hjsbah}(h]h ]h"]h$]h&]hhuh1jYhhhKhjhhubh)}(hYou can also update the local interface dynamically. This is especially useful if you want to use interfaces that have newly come up (and may not have existed when netconsole was loaded / initialized).h]hYou can also update the local interface dynamically. This is especially useful if you want to use interfaces that have newly come up (and may not have existed when netconsole was loaded / initialized).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX*Netconsole targets defined at boot time (or module load time) with the `netconsole=` param are assigned the name `cmdline`. For example, the first target in the parameter is named `cmdline0`. You can control and modify these targets by creating configfs directories with the matching name.h](hGNetconsole targets defined at boot time (or module load time) with the }(hjhhhNhNubhtitle_reference)}(h `netconsole=`h]h netconsole=}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh param are assigned the name }(hjhhhNhNubj)}(h`cmdline`h]hcmdline}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh;. For example, the first target in the parameter is named }(hjhhhNhNubj)}(h `cmdline0`h]hcmdline0}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhd. You can control and modify these targets by creating configfs directories with the matching name.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hDLet's suppose you have two netconsole targets defined at boot time::h]hELet’s suppose you have two netconsole targets defined at boot time:}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjZ)}(hpnetconsole=4444@10.0.0.1/eth1,9353@10.0.0.2/12:34:56:78:9a:bc;4444@10.0.0.1/eth1,9353@10.0.0.3/12:34:56:78:9a:bch]hpnetconsole=4444@10.0.0.1/eth1,9353@10.0.0.2/12:34:56:78:9a:bc;4444@10.0.0.1/eth1,9353@10.0.0.3/12:34:56:78:9a:bc}hjdsbah}(h]h ]h"]h$]h&]hhuh1jYhhhKhjhhubh)}(hKYou can modify these targets in runtime by creating the following targets::h]hJYou can modify these targets in runtime by creating the following targets:}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjZ)}(h^mkdir cmdline0 cat cmdline0/remote_ip 10.0.0.2 mkdir cmdline1 cat cmdline1/remote_ip 10.0.0.3h]h^mkdir cmdline0 cat cmdline0/remote_ip 10.0.0.2 mkdir cmdline1 cat cmdline1/remote_ip 10.0.0.3}hjsbah}(h]h ]h"]h$]h&]hhuh1jYhhhKhjhhubh)}(hhh](h)}(hAppend User Datah]hAppend User Data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hCustom user data can be appended to the end of messages with netconsole dynamic configuration enabled. User data entries can be modified without changing the "enabled" attribute of a target.h]hCustom user data can be appended to the end of messages with netconsole dynamic configuration enabled. User data entries can be modified without changing the “enabled” attribute of a target.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hDirectories (keys) under `userdata` are limited to 53 character length, and data in `userdata//value` are limited to 200 bytes::h](hDirectories (keys) under }(hjhhhNhNubj)}(h `userdata`h]huserdata}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh1 are limited to 53 character length, and data in }(hjhhhNhNubj)}(h`userdata//value`h]huserdata//value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh are limited to 200 bytes:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjZ)}(hcd /sys/kernel/config/netconsole && mkdir cmdline0 cd cmdline0 mkdir userdata/foo echo bar > userdata/foo/value mkdir userdata/qux echo baz > userdata/qux/valueh]hcd /sys/kernel/config/netconsole && mkdir cmdline0 cd cmdline0 mkdir userdata/foo echo bar > userdata/foo/value mkdir userdata/qux echo baz > userdata/qux/value}hjsbah}(h]h ]h"]h$]h&]hhuh1jYhhhKhjhhubh)}(h5Messages will now include this additional user data::h]h4Messages will now include this additional user data:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjZ)}(h$echo "This is a message" > /dev/kmsgh]h$echo "This is a message" > /dev/kmsg}hjsbah}(h]h ]h"]h$]h&]hhuh1jYhhhKhjhhubh)}(hSends::h]hSends:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjZ)}(h812,607,22085407756,-;This is a message foo=bar qux=bazh]h812,607,22085407756,-;This is a message foo=bar qux=baz}hj sbah}(h]h ]h"]h$]h&]hhuh1jYhhhKhjhhubh)}(h1Preview the userdata that will be appended with::h]h0Preview the userdata that will be appended with:}(hj% hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjZ)}(htcd /sys/kernel/config/netconsole/cmdline0/userdata for f in `ls userdata`; do echo $f=$(cat userdata/$f/value); doneh]htcd /sys/kernel/config/netconsole/cmdline0/userdata for f in `ls userdata`; do echo $f=$(cat userdata/$f/value); done}hj3 sbah}(h]h ]h"]h$]h&]hhuh1jYhhhKhjhhubh)}(hIf a `userdata` entry is created but no data is written to the `value` file, the entry will be omitted from netconsole messages::h](hIf a }(hjA hhhNhNubj)}(h `userdata`h]huserdata}(hjI hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjA ubh0 entry is created but no data is written to the }(hjA hhhNhNubj)}(h`value`h]hvalue}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjA ubh: file, the entry will be omitted from netconsole messages:}(hjA hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjZ)}(hcd /sys/kernel/config/netconsole && mkdir cmdline0 cd cmdline0 mkdir userdata/foo echo bar > userdata/foo/value mkdir userdata/quxh]hcd /sys/kernel/config/netconsole && mkdir cmdline0 cd cmdline0 mkdir userdata/foo echo bar > userdata/foo/value mkdir userdata/qux}hjs sbah}(h]h ]h"]h$]h&]hhuh1jYhhhKhjhhubh)}(h0The `qux` key is omitted since it has no value::h](hThe }(hj hhhNhNubj)}(h`qux`h]hqux}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh& key is omitted since it has no value:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjZ)}(hTecho "This is a message" > /dev/kmsg 12,607,22085407756,-;This is a message foo=barh]hTecho "This is a message" > /dev/kmsg 12,607,22085407756,-;This is a message foo=bar}hj sbah}(h]h ]h"]h$]h&]hhuh1jYhhhKhjhhubh)}(h(Delete `userdata` entries with `rmdir`::h](hDelete }(hj hhhNhNubj)}(h `userdata`h]huserdata}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh entries with }(hj hhhNhNubj)}(h`rmdir`h]hrmdir}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjZ)}(h9rmdir /sys/kernel/config/netconsole/cmdline0/userdata/quxh]h9rmdir /sys/kernel/config/netconsole/cmdline0/userdata/qux}hj sbah}(h]h ]h"]h$]h&]hhuh1jYhhhKhjhhubhwarning)}(hXWhen writing strings to user data values, input is broken up per line in configfs store calls and this can cause confusing behavior:: mkdir userdata/testing printf "val1\nval2" > userdata/testing/value # userdata store value is called twice, first with "val1\n" then "val2" # so "val2" is stored, being the last value stored cat userdata/testing/value val2 It is recommended to not write user data values with newlines.h](h)}(hWhen writing strings to user data values, input is broken up per line in configfs store calls and this can cause confusing behavior::h]hWhen writing strings to user data values, input is broken up per line in configfs store calls and this can cause confusing behavior:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubjZ)}(hmkdir userdata/testing printf "val1\nval2" > userdata/testing/value # userdata store value is called twice, first with "val1\n" then "val2" # so "val2" is stored, being the last value stored cat userdata/testing/value val2h]hmkdir userdata/testing printf "val1\nval2" > userdata/testing/value # userdata store value is called twice, first with "val1\n" then "val2" # so "val2" is stored, being the last value stored cat userdata/testing/value val2}hj sbah}(h]h ]h"]h$]h&]hhuh1jYhhhKhj ubh)}(h>It is recommended to not write user data values with newlines.h]h>It is recommended to not write user data values with newlines.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1j hjhhhhhNubeh}(h]append-user-dataah ]h"]append user dataah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h%Task name auto population in userdatah]h%Task name auto population in userdata}(hj0 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj- hhhhhKubh)}(hX3Inside the netconsole configfs hierarchy, there is a file called `taskname_enabled` under the `userdata` directory. This file is used to enable or disable the automatic task name population feature. This feature automatically populates the current task name that is scheduled in the CPU sneding the message.h](hAInside the netconsole configfs hierarchy, there is a file called }(hj> hhhNhNubj)}(h`taskname_enabled`h]htaskname_enabled}(hjF hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj> ubh under the }(hj> hhhNhNubj)}(h `userdata`h]huserdata}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj> ubh directory. This file is used to enable or disable the automatic task name population feature. This feature automatically populates the current task name that is scheduled in the CPU sneding the message.}(hj> hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj- hhubh)}(h%To enable task name auto-population::h]h$To enable task name auto-population:}(hjp hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj- hhubjZ)}(hHecho 1 > /sys/kernel/config/netconsole/target1/userdata/taskname_enabledh]hHecho 1 > /sys/kernel/config/netconsole/target1/userdata/taskname_enabled}hj~ sbah}(h]h ]h"]h$]h&]hhuh1jYhhhMhj- hhubh)}(hXlWhen this option is enabled, the netconsole messages will include an additional line in the userdata field with the format `taskname=`. This allows the receiver of the netconsole messages to easily find which application was currently scheduled when that message was generated, providing extra context for kernel messages and helping to categorize them.h](h{When this option is enabled, the netconsole messages will include an additional line in the userdata field with the format }(hj hhhNhNubj)}(h`taskname=`h]htaskname=}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh. This allows the receiver of the netconsole messages to easily find which application was currently scheduled when that message was generated, providing extra context for kernel messages and helping to categorize them.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj- hhubh)}(h Example::h]hExample:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj- hhubjZ)}(hZecho "This is a message" > /dev/kmsg 12,607,22085407756,-;This is a message taskname=echoh]hZecho "This is a message" > /dev/kmsg 12,607,22085407756,-;This is a message taskname=echo}hj sbah}(h]h ]h"]h$]h&]hhuh1jYhhhM hj- hhubh)}(hZIn this example, the message was generated while "echo" was the current scheduled process.h]h^In this example, the message was generated while “echo” was the current scheduled process.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj- hhubeh}(h]%task-name-auto-population-in-userdataah ]h"]%task name auto population in userdataah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h*Kernel release auto population in userdatah]h*Kernel release auto population in userdata}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMubh)}(hXWithin the netconsole configfs hierarchy, there is a file named `release_enabled` located in the `userdata` directory. This file controls the kernel release (version) auto-population feature, which appends the kernel release information to userdata dictionary in every message sent.h](h@Within the netconsole configfs hierarchy, there is a file named }(hj hhhNhNubj)}(h`release_enabled`h]hrelease_enabled}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh located in the }(hj hhhNhNubj)}(h `userdata`h]huserdata}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh directory. This file controls the kernel release (version) auto-population feature, which appends the kernel release information to userdata dictionary in every message sent.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(h'To enable the release auto-population::h]h&To enable the release auto-population:}(hj! hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubjZ)}(hGecho 1 > /sys/kernel/config/netconsole/target1/userdata/release_enabledh]hGecho 1 > /sys/kernel/config/netconsole/target1/userdata/release_enabled}hj/ sbah}(h]h ]h"]h$]h&]hhuh1jYhhhMhj hhubh)}(h Example::h]hExample:}(hj= hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubjZ)}(hsecho "This is a message" > /dev/kmsg 12,607,22085407756,-;This is a message release=6.14.0-rc6-01219-g3c027fbd941dh]hsecho "This is a message" > /dev/kmsg 12,607,22085407756,-;This is a message release=6.14.0-rc6-01219-g3c027fbd941d}hjK sbah}(h]h ]h"]h$]h&]hhuh1jYhhhM!hj hhubhnote)}(hThis feature provides the same data as the "release prepend" feature. However, in this case, the release information is appended to the userdata dictionary rather than being included in the message header.h]h)}(hThis feature provides the same data as the "release prepend" feature. However, in this case, the release information is appended to the userdata dictionary rather than being included in the message header.h]hThis feature provides the same data as the “release prepend” feature. However, in this case, the release information is appended to the userdata dictionary rather than being included in the message header.}(hj_ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM'hj[ ubah}(h]h ]h"]h$]h&]uh1jY hj hhhhhNubeh}(h]*kernel-release-auto-population-in-userdataah ]h"]*kernel release auto population in userdataah$]h&]uh1hhjhhhhhMubh)}(hhh](h)}(h&CPU number auto population in userdatah]h&CPU number auto population in userdata}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{ hhhhhM-ubh)}(hXInside the netconsole configfs hierarchy, there is a file called `cpu_nr` under the `userdata` directory. This file is used to enable or disable the automatic CPU number population feature. This feature automatically populates the CPU number that is sending the message.h](hAInside the netconsole configfs hierarchy, there is a file called }(hj hhhNhNubj)}(h`cpu_nr`h]hcpu_nr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh under the }(hj hhhNhNubj)}(h `userdata`h]huserdata}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh directory. This file is used to enable or disable the automatic CPU number population feature. This feature automatically populates the CPU number that is sending the message.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM/hj{ hhubh)}(h*To enable the CPU number auto-population::h]h)To enable the CPU number auto-population:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM4hj{ hhubjZ)}(h>echo 1 > /sys/kernel/config/netconsole/target1/userdata/cpu_nrh]h>echo 1 > /sys/kernel/config/netconsole/target1/userdata/cpu_nr}hj sbah}(h]h ]h"]h$]h&]hhuh1jYhhhM6hj{ hhubh)}(hXXWhen this option is enabled, the netconsole messages will include an additional line in the userdata field with the format `cpu=`. This allows the receiver of the netconsole messages to easily differentiate and demultiplex messages originating from different CPUs, which is particularly useful when dealing with parallel log output.h](h{When this option is enabled, the netconsole messages will include an additional line in the userdata field with the format }(hj hhhNhNubj)}(h`cpu=`h]hcpu=}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh. This allows the receiver of the netconsole messages to easily differentiate and demultiplex messages originating from different CPUs, which is particularly useful when dealing with parallel log output.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM8hj{ hhubh)}(h Example::h]hExample:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM>hj{ hhubjZ)}(hSecho "This is a message" > /dev/kmsg 12,607,22085407756,-;This is a message cpu=42h]hSecho "This is a message" > /dev/kmsg 12,607,22085407756,-;This is a message cpu=42}hj sbah}(h]h ]h"]h$]h&]hhuh1jYhhhM@hj{ hhubh)}(h0In this example, the message was sent by CPU 42.h]h0In this example, the message was sent by CPU 42.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMDhj{ hhubjZ )}(hXIf the user has set a conflicting `cpu` key in the userdata dictionary, both keys will be reported, with the kernel-populated entry appearing after the user one. For example:: # User-defined CPU entry mkdir -p /sys/kernel/config/netconsole/target1/userdata/cpu echo "1" > /sys/kernel/config/netconsole/target1/userdata/cpu/value Output might look like:: 12,607,22085407756,-;This is a message cpu=1 cpu=42 # kernel-populated valueh](h)}(hIf the user has set a conflicting `cpu` key in the userdata dictionary, both keys will be reported, with the kernel-populated entry appearing after the user one. For example::h](h"If the user has set a conflicting }(hj( hhhNhNubj)}(h`cpu`h]hcpu}(hj0 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj( ubh key in the userdata dictionary, both keys will be reported, with the kernel-populated entry appearing after the user one. For example:}(hj( hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMHhj$ ubjZ)}(h# User-defined CPU entry mkdir -p /sys/kernel/config/netconsole/target1/userdata/cpu echo "1" > /sys/kernel/config/netconsole/target1/userdata/cpu/valueh]h# User-defined CPU entry mkdir -p /sys/kernel/config/netconsole/target1/userdata/cpu echo "1" > /sys/kernel/config/netconsole/target1/userdata/cpu/value}hjH sbah}(h]h ]h"]h$]h&]hhuh1jYhhhMLhj$ ubh)}(hOutput might look like::h]hOutput might look like:}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMPhj$ ubjZ)}(hQ12,607,22085407756,-;This is a message cpu=1 cpu=42 # kernel-populated valueh]hQ12,607,22085407756,-;This is a message cpu=1 cpu=42 # kernel-populated value}hjd sbah}(h]h ]h"]h$]h&]hhuh1jYhhhMRhj$ ubeh}(h]h ]h"]h$]h&]uh1jY hj{ hhhhhNubeh}(h]&cpu-number-auto-population-in-userdataah ]h"]&cpu number auto population in userdataah$]h&]uh1hhjhhhhhM-ubeh}(h]dynamic-reconfigurationah ]h"]dynamic reconfiguration:ah$]h&]uh1hhhhhhhhKiubh)}(hhh](h)}(hExtended console:h]hExtended console:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMXubh)}(hIf '+' is prefixed to the configuration line or "extended" config file is set to 1, extended console support is enabled. An example boot param follows::h]hIf ‘+’ is prefixed to the configuration line or “extended” config file is set to 1, extended console support is enabled. An example boot param follows:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMZhj hhubjZ)}(hDlinux netconsole=+4444@10.0.0.1/eth1,9353@10.0.0.2/12:34:56:78:9a:bch]hDlinux netconsole=+4444@10.0.0.1/eth1,9353@10.0.0.2/12:34:56:78:9a:bc}hj sbah}(h]h ]h"]h$]h&]hhuh1jYhhhM^hj hhubh)}(hsLog messages are transmitted with extended metadata header in the following format which is the same as /dev/kmsg::h]hrLog messages are transmitted with extended metadata header in the following format which is the same as /dev/kmsg:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM`hj hhubjZ)}(h7,,,;h]h7,,,;}hj sbah}(h]h ]h"]h$]h&]hhuh1jYhhhMchj hhubh)}(hsIf 'r' (release) feature is enabled, the kernel release version is prepended to the start of the message. Example::h]hvIf ‘r’ (release) feature is enabled, the kernel release version is prepended to the start of the message. Example:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMehj hhubjZ)}(h;6.4.0,6,444,501151268,-;netconsole: network logging startedh]h;6.4.0,6,444,501151268,-;netconsole: network logging started}hj sbah}(h]h ]h"]h$]h&]hhuh1jYhhhMhhj hhubh)}(hNon printable characters in are escaped using "\xff" notation. If the message contains optional dictionary, verbatim newline is used as the delimiter.h]hNon printable characters in are escaped using “xff” notation. If the message contains optional dictionary, verbatim newline is used as the delimiter.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMjhj hhubh)}(hIf a message doesn't fit in certain number of bytes (currently 1000), the message is split into multiple fragments by netconsole. These fragments are transmitted with "ncfrag" header field added::h]hIf a message doesn’t fit in certain number of bytes (currently 1000), the message is split into multiple fragments by netconsole. These fragments are transmitted with “ncfrag” header field added:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMnhj hhubjZ)}(h"ncfrag=/h]h"ncfrag=/}hj sbah}(h]h ]h"]h$]h&]hhuh1jYhhhMrhj hhubh)}(huFor example, assuming a lot smaller chunk size, a message "the first chunk, the 2nd chunk." may be split as follows::h]hxFor example, assuming a lot smaller chunk size, a message “the first chunk, the 2nd chunk.” may be split as follows:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMthj hhubjZ)}(hY6,416,1758426,-,ncfrag=0/31;the first chunk, 6,416,1758426,-,ncfrag=16/31; the 2nd chunk.h]hY6,416,1758426,-,ncfrag=0/31;the first chunk, 6,416,1758426,-,ncfrag=16/31; the 2nd chunk.}hj% sbah}(h]h ]h"]h$]h&]hhuh1jYhhhMwhj hhubeh}(h]extended-consoleah ]h"]extended console:ah$]h&]uh1hhhhhhhhMXubh)}(hhh](h)}(hMiscellaneous notes:h]hMiscellaneous notes:}(hj> hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj; hhhhhM{ubj )}(hthe default target ethernet setting uses the broadcast ethernet address to send packets, which can cause increased load on other systems on the same ethernet segment.h]h)}(hthe default target ethernet setting uses the broadcast ethernet address to send packets, which can cause increased load on other systems on the same ethernet segment.h]hthe default target ethernet setting uses the broadcast ethernet address to send packets, which can cause increased load on other systems on the same ethernet segment.}(hjP hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjL ubah}(h]h ]h"]h$]h&]uh1j hj; hhhhhNubhtip)}(hsome LAN switches may be configured to suppress ethernet broadcasts so it is advised to explicitly specify the remote agents' MAC addresses from the config parameters passed to netconsole.h]h)}(hsome LAN switches may be configured to suppress ethernet broadcasts so it is advised to explicitly specify the remote agents' MAC addresses from the config parameters passed to netconsole.h]hsome LAN switches may be configured to suppress ethernet broadcasts so it is advised to explicitly specify the remote agents’ MAC addresses from the config parameters passed to netconsole.}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjf ubah}(h]h ]h"]h$]h&]uh1jd hj; hhhhhNubje )}(hzto find out the MAC address of, say, 10.0.0.2, you may try using:: ping -c 1 10.0.0.2 ; /sbin/arp -n | grep 10.0.0.2h](h)}(hBto find out the MAC address of, say, 10.0.0.2, you may try using::h]hAto find out the MAC address of, say, 10.0.0.2, you may try using:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj~ ubjZ)}(h1ping -c 1 10.0.0.2 ; /sbin/arp -n | grep 10.0.0.2h]h1ping -c 1 10.0.0.2 ; /sbin/arp -n | grep 10.0.0.2}hj sbah}(h]h ]h"]h$]h&]hhuh1jYhhhMhj~ ubeh}(h]h ]h"]h$]h&]uh1jd hj; hhhhhNubje )}(hin case the remote logging agent is on a separate LAN subnet than the sender, it is suggested to try specifying the MAC address of the default gateway (you may use /sbin/route -n to find it out) as the remote MAC address instead.h]h)}(hin case the remote logging agent is on a separate LAN subnet than the sender, it is suggested to try specifying the MAC address of the default gateway (you may use /sbin/route -n to find it out) as the remote MAC address instead.h]hin case the remote logging agent is on a separate LAN subnet than the sender, it is suggested to try specifying the MAC address of the default gateway (you may use /sbin/route -n to find it out) as the remote MAC address instead.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jd hj; hhhhhNubjZ )}(hthe network device (eth1 in the above case) can run any kind of other network traffic, netconsole is not intrusive. Netconsole might cause slight delays in other traffic if the volume of kernel messages is high, but should have no other impact.h]h)}(hthe network device (eth1 in the above case) can run any kind of other network traffic, netconsole is not intrusive. Netconsole might cause slight delays in other traffic if the volume of kernel messages is high, but should have no other impact.h]hthe network device (eth1 in the above case) can run any kind of other network traffic, netconsole is not intrusive. Netconsole might cause slight delays in other traffic if the volume of kernel messages is high, but should have no other impact.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jY hj; hhhhhNubjZ )}(hXBif you find that the remote logging agent is not receiving or printing all messages from the sender, it is likely that you have set the "console_loglevel" parameter (on the sender) to only send high priority messages to the console. You can change this at runtime using:: dmesg -n 8 or by specifying "debug" on the kernel command line at boot, to send all kernel messages to the console. A specific value for this parameter can also be set using the "loglevel" kernel boot option. See the dmesg(8) man page and Documentation/admin-guide/kernel-parameters.rst for details.h](h)}(hXif you find that the remote logging agent is not receiving or printing all messages from the sender, it is likely that you have set the "console_loglevel" parameter (on the sender) to only send high priority messages to the console. You can change this at runtime using::h]hXif you find that the remote logging agent is not receiving or printing all messages from the sender, it is likely that you have set the “console_loglevel” parameter (on the sender) to only send high priority messages to the console. You can change this at runtime using:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubjZ)}(h dmesg -n 8h]h dmesg -n 8}hj sbah}(h]h ]h"]h$]h&]hhuh1jYhhhMhj ubh)}(hX or by specifying "debug" on the kernel command line at boot, to send all kernel messages to the console. A specific value for this parameter can also be set using the "loglevel" kernel boot option. See the dmesg(8) man page and Documentation/admin-guide/kernel-parameters.rst for details.h]hX(or by specifying “debug” on the kernel command line at boot, to send all kernel messages to the console. A specific value for this parameter can also be set using the “loglevel” kernel boot option. See the dmesg(8) man page and Documentation/admin-guide/kernel-parameters.rst for details.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubeh}(h]h ]h"]h$]h&]uh1jY hj; hhhhhNubh)}(hXNetconsole was designed to be as instantaneous as possible, to enable the logging of even the most critical kernel bugs. It works from IRQ contexts as well, and does not enable interrupts while sending packets. Due to these unique needs, configuration cannot be more automatic, and some fundamental limitations will remain: only IP networks, UDP packets and ethernet devices are supported.h]hXNetconsole was designed to be as instantaneous as possible, to enable the logging of even the most critical kernel bugs. It works from IRQ contexts as well, and does not enable interrupts while sending packets. Due to these unique needs, configuration cannot be more automatic, and some fundamental limitations will remain: only IP networks, UDP packets and ethernet devices are supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj; hhubeh}(h]miscellaneous-notesah ]h"]miscellaneous notes:ah$]h&]uh1hhhhhhhhM{ubeh}(h] netconsoleah ]h"] netconsoleah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjffootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjHerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j#j j7j4jjj j j* j' j j jx ju j} jz j8 j5 jju nametypes}(j#j7jj j* j jx j} j8 juh}(j hj4jjj:j jj' jj j- ju j jz j{ j5 j jj; u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.