« Previous 1 2 3 Next »
Creating and evaluating kernel crash dumps
Crash Test
De Luxe
If the first dump attempts were successful, you can proceed with the fine tuning step. The first item on the agenda is reserving memory for the crash kernel. The generic statement is:
crashkernel=Range1:Size1[,Range2:Size2, ... ] [@address]
In the specific case of
crashkernel=512M-2G:64m,2G-:128M
this means: "For a RAM size of 512MB up to 2GB, the system reserves 64MB; this becomes 128MB if you have more than 2GB of RAM." This step simplifies the configuration of the boot loader for a heterogeneous hardware environment. Regardless of RAM; the crashkernel entry is always the same. On SUSE, YaST does this automatically. The size and range information can also be stated in kilobytes according to the kernel documentation; however, that is not relevant in practical terms.
In the default configuration, the system saves the kernel dump on the local disk. For systems with a lot of memory, this behavior can quickly become a problem. Fortunately, the kexec/kdump combination also allows you to save on the network. You have a choice between NFS and SSH/SCP. Table 1 lists the available options.
Table 1
Storage Options for the Kernel Dump
| Variant | Description |
|---|---|
raw /dev/sdc1
|
Uses dd to write the dump on the partition /dev/sdc1.
|
ext3 /dev/sdc1
|
Mounts /dev/sdc1 as an ext3 filesystem and stores the dump on it.
|
ext4 LABEL=/dump
|
Mounts the filesystem with this label and stores the dump on it. |
net mynfs.server.com:/export/dump
|
Integrates the server's NFS share and writes the dump on it. |
net user@my.ssh.server.com
|
Uses SCP to store the dump on the server using an appropriate account. |
Writing a dump via SSH/SCP presupposes a non-interactive authentication key. Thus, it's a good idea to create a separate and restricted target user account.
Emergency Switch
The approach shown here for provoking a kernel dump will not work if the system stops responding and, for example, a login is impossible. One option is to trigger on a particular keyboard shortcut that is mapped to a SysRq key. In fact, you just need to press Alt+SysRq+C at the same time to trigger a kernel dump.
Again, the challenge is in the details. Many keyboards do not have a separate SysRq key, in which case the Print key assumes this function. However, the graphical user interface might intercept precisely this keyboard combination to create a screenshot. You can work around this by additionally pressing the Ctrl key.
Sometimes, you can trigger SysRq through a second assignment with the function (Fn) key. The list is almost infinite. Again, you need to test so that, in the event of an emergency, you will find the right buttons to press. Incidentally, the SysRequest keys can do much more than just trigger a kernel dump (see Table 2).
Table 2
Magic SysRequest Keys
| Key | Description |
|---|---|
| b | Immediate reboot of the system (without umount or sync).
|
| c | System crash and start the kernel dump (if configured). |
| l | Display a backtrace for all active CPUs on the console. |
| m | Write information about memory on the console. |
| s | Sync all mounted filesystems. |
| t | List all active processes on the console. |
| w | List processes in state D on the console. |
Sometimes the administrator has no physical access to the server keyboard, and you might not be able to pass keypresses on the local keyboard to the server, but normally, you can map certain key combinations to others.
Non-Maskable Interrupts
If the keyboard shortcut fails, you still have the option of using a non-maskable interrupt (NMI). You can start by configuring the Linux kernel so that it processes a panic routine when it receives an NMI and thus triggers the kernel dump. This procedure is easily done via the Sysctl interface.
The required parameter is kernel.unknown_nmi_panic and must be set to 1 (Listing 2). Techniques for managing remote computers, such as iLO (integrated Lights-Out) by HP or DRAC (Dell Remote Access Controller) by Dell, let you manually trigger an NMI event, which then triggers a kernel dump. Note that other problems, for example, defective hardware or firmware, can also trigger an NMI. Such events will not necessarily prompt a system crash in normal operation and might just show up as a message in syslog ("Uhhuh. NMI received. Dazed and confused, but trying to continue").
Listing 2
Panic Routine for NMI Event
# cat /proc/sys/kernel/unknown_nmi_panic 1 # sysctl kernel.unknown_nmi_panic kernel.unknown_nmi_panic = 1 # grep nmi /etc/sysctl.conf kernel.unknown_nmi_panic = 1 #
The above configuration changes this behavior, and the server always boots.
« Previous 1 2 3 Next »
Buy this article as PDF
(incl. VAT)
Buy ADMIN Magazine
Subscribe to our ADMIN Newsletters
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Most Popular
Focus On Self-Hosting
• Running Your Own Matrix Server with Synapse
• Reliable Network Storage with TrueNAS Community Edition
• Self-Hosted File Syncing with Seafile
• Wiring the Modern Stack with Node-RED
• Self-Hosted Collaboration with Forgejo
• Self-Hosted PaaS with Coolify
• Build and Host Docker Images
• Self-Hosted Pritunl VPN Server with MFA
Support Our Work
ADMIN content is made possible with support from readers like you. Please consider contributing when you've found an article to be beneficial.
