88 lines
3.7 KiB
Plaintext
88 lines
3.7 KiB
Plaintext
s390 SCSI dump tool (zfcpdump)
|
|
|
|
System z machines (z900 or higher) provide hardware support for creating system
|
|
dumps on SCSI disks. The dump process is initiated by booting a dump tool, which
|
|
has to create a dump of the current (probably crashed) Linux image. In order to
|
|
not overwrite memory of the crashed Linux with data of the dump tool, the
|
|
hardware saves some memory plus the register sets of the boot cpu before the
|
|
dump tool is loaded. There exists an SCLP hardware interface to obtain the saved
|
|
memory afterwards. Currently 32 MB are saved.
|
|
|
|
This zfcpdump implementation consists of a Linux dump kernel together with
|
|
a userspace dump tool, which are loaded together into the saved memory region
|
|
below 32 MB. zfcpdump is installed on a SCSI disk using zipl (as contained in
|
|
the s390-tools package) to make the device bootable. The operator of a Linux
|
|
system can then trigger a SCSI dump by booting the SCSI disk, where zfcpdump
|
|
resides on.
|
|
|
|
The kernel part of zfcpdump is implemented as a debugfs file under "zcore/mem",
|
|
which exports memory and registers of the crashed Linux in an s390
|
|
standalone dump format. It can be used in the same way as e.g. /dev/mem. The
|
|
dump format defines a 4K header followed by plain uncompressed memory. The
|
|
register sets are stored in the prefix pages of the respective cpus. To build a
|
|
dump enabled kernel with the zcore driver, the kernel config option
|
|
CONFIG_ZFCPDUMP has to be set. When reading from "zcore/mem", the part of
|
|
memory, which has been saved by hardware is read by the driver via the SCLP
|
|
hardware interface. The second part is just copied from the non overwritten real
|
|
memory.
|
|
|
|
The userspace application of zfcpdump can reside e.g. in an intitramfs or an
|
|
initrd. It reads from zcore/mem and writes the system dump to a file on a
|
|
SCSI disk.
|
|
|
|
To build a zfcpdump kernel use the following settings in your kernel
|
|
configuration:
|
|
* CONFIG_ZFCPDUMP=y
|
|
* Enable ZFCP driver
|
|
* Enable SCSI driver
|
|
* Enable ext2 and ext3 filesystems
|
|
* Disable as many features as possible to keep the kernel small.
|
|
E.g. network support is not needed at all.
|
|
|
|
To use the zfcpdump userspace application in an initramfs you have to do the
|
|
following:
|
|
|
|
* Copy the zfcpdump executable somewhere into your Linux tree.
|
|
E.g. to "arch/s390/boot/zfcpdump. If you do not want to include
|
|
shared libraries, compile the tool with the "-static" gcc option.
|
|
* If you want to include e2fsck, add it to your source tree, too. The zfcpdump
|
|
application attempts to start /sbin/e2fsck from the ramdisk.
|
|
* Use an initramfs config file like the following:
|
|
|
|
dir /dev 755 0 0
|
|
nod /dev/console 644 0 0 c 5 1
|
|
nod /dev/null 644 0 0 c 1 3
|
|
nod /dev/sda1 644 0 0 b 8 1
|
|
nod /dev/sda2 644 0 0 b 8 2
|
|
nod /dev/sda3 644 0 0 b 8 3
|
|
nod /dev/sda4 644 0 0 b 8 4
|
|
nod /dev/sda5 644 0 0 b 8 5
|
|
nod /dev/sda6 644 0 0 b 8 6
|
|
nod /dev/sda7 644 0 0 b 8 7
|
|
nod /dev/sda8 644 0 0 b 8 8
|
|
nod /dev/sda9 644 0 0 b 8 9
|
|
nod /dev/sda10 644 0 0 b 8 10
|
|
nod /dev/sda11 644 0 0 b 8 11
|
|
nod /dev/sda12 644 0 0 b 8 12
|
|
nod /dev/sda13 644 0 0 b 8 13
|
|
nod /dev/sda14 644 0 0 b 8 14
|
|
nod /dev/sda15 644 0 0 b 8 15
|
|
file /init arch/s390/boot/zfcpdump 755 0 0
|
|
file /sbin/e2fsck arch/s390/boot/e2fsck 755 0 0
|
|
dir /proc 755 0 0
|
|
dir /sys 755 0 0
|
|
dir /mnt 755 0 0
|
|
dir /sbin 755 0 0
|
|
|
|
* Issue "make image" to build the zfcpdump image with initramfs.
|
|
|
|
In a Linux distribution the zfcpdump enabled kernel image must be copied to
|
|
/usr/share/zfcpdump/zfcpdump.image, where the s390 zipl tool is looking for the
|
|
dump kernel when preparing a SCSI dump disk.
|
|
|
|
If you use a ramdisk copy it to "/usr/share/zfcpdump/zfcpdump.rd".
|
|
|
|
For more information on how to use zfcpdump refer to the s390 'Using the Dump
|
|
Tools book', which is available from
|
|
http://www.ibm.com/developerworks/linux/linux390.
|