Changes

Jump to: navigation, search

Remote console setup

317 bytes added, 02:57, 27 November 2018
rm translate tags
In case you are experiencing a kernel crash ([[oops]]) and have already [[Hardware testing|tested your hardware]], you should report what kernel says to the console (i.e. an [[oops]] text) to [httphttps://bugzillabugs.openvz.org/ Bugzillabug tracker]. Sometimes kernel crashes so badly that <tt>syslogd</tt> is not working and what kernel says is never written to a file. If this is the case, you have to catch what kernel says. There are several ways possible. == KDump == With RHEL6-based servers, kdump is pre-configured. See http://kb.odin.com/en/10044 to check the configuration. Dumps can be found under <code>/var/crash/</code> directory.
== Manual/Photo ==
</pre>
<!--T:10-->
{{Warning|make sure kernel command line does '''not''' contain the word '''<code>quiet</code>''', otherwise most of the kernel messages will not be printed to console.}}
<!--T:11-->
For example, in GRUB boot loader configuration file <tt>/boot/grub/grub.conf</tt> it looks like this:
<pre>
Kernel loaded with such parameters will send all kernel messages to /dev/ttyS0 (first serial port, a.k.a. COM1). If you have several ports, make sure that your null modem cable is connected to the appropriate port.
==== Receiving side ====<!--T:13-->
On the second node you should run any software that can log from /dev/ttyS0.
<!--T:14-->
It can be usual
<pre>
Save the file, then recompile the kernel:
<pre> # make bzImage && make modules && make modules_install</pre>
Update your bootloader for the new updated kernel. In my case I use LILO so I just type lilo at the prompt.
Next you want your netconsole to send the request to somewhere. Load netconsole module, specifying the remote server parameters:
<pre> # modprobe netconsole netconsole=4444@10.0.2.1/eth0,6666@10.0.2.2/00:05:5D:34:11:AF</pre>
This will load the module with your settings. Replace your local IP address with where <tt>10.0.2.1</tt> is, <tt>eth0</tt> with your network interface card device, <tt>6666</tt> with the remote netconsole port (UDP), and <tt>10.0.2.2</tt> with your remote netconsole server IP. Also add in the mac address of your remote netconsole server, which in my case was 00:05:5D:34:11:AF. You can get the MAC address using arp utility:
=== Setting from initrd ===
To durable logging log the boot process before root filesystem mounting is mounted, network device driver and netconsole module modules must be loaded from initd. 
RedHat 5/CentOS 5:
chmod +x /etc/sysconfig/mkinitrd/netconsole
echo 'options netconsole netconsole=<sport>@<saddr>/<dev>,<dport>@<daddr>/<dmac>' >> /etc/modprobe.conf
 
Debian/Ubuntu:
echo '<network-driver-module>' >> /etc/initramfs-tools/modules
echo 'netconsole netconsole=<sport>@<saddr>/<dev>,<dport>@<daddr>/<dmac>' >> /etc/initramfs-tools/modules
and rebuild initrd.
=== Setting up rsyslogd ===
/etc/rsyslog.d/netconsole.conf
/etc/rsyslog.d/netconsole.conf  $template NetconsoleFile,"/var/log/netconsole/%FROMHOST%-%FROMHOST$NOW%.log"
$template NetconsoleFormat,"%rawmsg%"
$EscapeControlCharactersOnReceive off
$DropTrailingLFOnReception off
$RepeatedMsgReduction off
$RuleSet NetconsoleRuleset
$UDPServerRun 6666
=== Setting up remote side ===  Set up '''netcat''' ('''nc''' on some Linux distributions) on your console server to listen on port 6666 UDP:  netcat -u -l -p6666
Setup '''netcat''' ('''nc''' on some Linux distributions) on your console server to listen on port 6666 UDP:
<pre>netcat -u -l -p6666</pre>
or
<pre> nc -lu 6666</pre> 
or
<pre> socat udp-listen:6666,reuseaddr -</pre> 
When your kernel prints something on the console, the text will be also captured on this netconsole server.
For automatic care about capturing on console server you can use init respawn feature in this way:
<pre> echo "n1:23:respawn:/bin/netcat -u -l -p 6666 >> /var/log/netconsole" >> /etc/inittab telinit q</pre>
==== Adding date/time to messages ====
</pre>
<!--T:53-->
For more details, see man logrotate.
=== Testing netconsole ===  First , check log level of console messages on OpenVZ side by:
<pre> cat /proc/sys/kernel/printk</pre>
First number should be 7 for testing. You can arrange it by:
<pre> sysctl -w kernel.printk="7 4 1 7"</pre>
After testing you can restore previous setting the same way.
* [[Kernel debug options]]
== External links ==
* [http://kb.odin.com/en/10044 How to configure kdump (kernel crash dump)]
 
[[Category:QA]]
[[Category:HOWTO]]
[[Category:Kernel]]
[[Category:Troubleshooting]]

Navigation menu