Home / mkdump / Version 1.0
Name Modified Size InfoDownloads / Week
Parent folder
mkdutils.taz 2005-09-07 13.0 kB
mkexec-2.6.9-1.0-update1.taz 2005-08-26 37.1 kB
minik-2.6.9-1.0-update1.patch 2005-08-26 47.7 kB
mkexec-2.4.27-0.1.taz 2005-03-31 41.0 kB
mini_kernel_tech_note.txt 2005-03-31 10.2 kB
mini_kernel_dump_intro.txt 2005-03-31 9.5 kB
README.mkdump 2005-03-31 4.4 kB
README-2.4.mkdump 2005-03-31 3.9 kB
Totals: 8 Items   166.9 kB 0
README for Mini Kernel Dump

Support kernel version and architechture
----------------------------------------

- kernel 2.6.9
- i386, x86_64


Make mini dump kernel
---------------------

1) apply the patch "minik-2.6.9-1.0.patch" to the kernel 2.6.9

  # cd /usr/src/linux-2.6.9-minik
  # patch -p1 < minik-2.6.9-1.0.patch

  note: to construct a mini kernel, use 2.6.9
  note: ignore arch/x86_64/kernel/head.S, setup.c, setup64.c, and
        arch/x86_64/boot/compressed/head.S reject. it is a cvs "Id"
        related problem. 

2) configration

  # make menuconfig

  to make small kernel:
   - must not SMP
   - must not SWAP
   - not NETWORK
   - no filesystem need
   - select block device driver at your system statically

  note: if your machine does not support PAE (ex. Pentium M),
        config as follows.
     General setup -->
        [*] Make dump mini kernel
        [ ]   --- Run the mini kernel on PAE mode (default) (i386)
         ^ not check this box.

3) make

  # make bzImage

  note: not use bzImage with mkexec, but use arch/i386/boot/compressed/vmlinux.bin

4) to run the mini kernel stand alone (only for test)

  It is available to run the mini kernel stand alone. In this case use bzImage.
  Specify "mem=" and "dump_dev=" options. For example of grub/menu.lst,

  ------------
  title Linux-2.6.9minik
    kernel (hd0,7)/boot/vmlinuz-2.6.6minik mem=8M dump_dev=0x300007 
  -----------

  The load address of the mini kernel (and so on) is hard coded in
  arch/[i386|x86_64]/boot/compressed/head.S. Please check before do test.

  caution: for x86_64, the value of "mem=" must be specified the real value
    minus 1. For example, you want to use 8MB of memory, specify as "mem=7M".

Make mkexec
-----------

1) expand "mkexec-2.6.9-1.0.taz"

  # tar xvzf mkexec-2.6.9-1.0.taz

2) apply a patch to the kernel 2.6.9

  # cd /usr/src/linux-2.6.9
  # patch -p1 < ~/mkexec/PATCH/mkexec-v1.patch
  # make menuconfig
    apply same configration as the usual system
  # make; make modules_install; make install

  note: ignore arch/x86_64/kernel/head.S reject. it is a cvs "Id"
        related problem.

3) make mkexec kernel module

  # cd ~/mkexec
  # vi kernel/Makefile.base
    edit "KVER", "KDIR" and "KMODDIR" to your system
  # ln -s asm-i386 include/asm
    ("ln -s asm-x86_64 include/asm" for x86_64)
  # make ARCH=i386
    ("make ARCH=x86_64" for x86_64)

  note: use kernel/mkexec.ko


Run Mini Kernel Dump
--------------------

1) load mkexec.ko

  # insmod ~/mkexec/kernel/mkexec.ko

2) load mini dump kernel

  # echo 4 > /proc/mkexec/mem
    specify memory size of mini dump kernel. must be multiple of 4. 4 or 8 is enough.

    caution: for x86_64, specify the real value minus 1. For example, you want to use 
             8MB of memory, type "echo 7 > /proc/mkexec/mem".

  # echo "0x800012" > /proc/mkexec/dumpdev
    specify the device number of the dump device. higher 12 bit is major, lower 20 bit
    is minor. check device number of your device to use "ls -l".
  # echo "..." > /proc/mkexec/parameter
    specify kernel parameter to the mini dump kernel. this is an option.
  # echo ".../vmlinux.bin" > /proc/mkexec/path
    specify the mini dump kernel's birary path
  # echo 1 > /proc/mkexec/stats
    this causes loading the mini dump kernel's binary to the memory.

3) start the mini dump kernel

  If BUG(), panic() or nmi_watchdog occurs the mini dump kernel will be initiated.
  (note: for x86_64, the mini kernel is initiated at panic() only. set "panic_on_oops"
         to initiate the mini kernel with BUG() and nmi_watchdog.)

  To take dump manually, "echo 2 > /proc/mkexec/stats". 


To do
-----
* do dump successfully when kernel stack overflow condition
* code cleanup
* support IA-64, ppc64
* follow up new kernel version

Update from the beta release 1
------------------------------
* support x86_64
* support the cpu not support PAE (ex. Pentium M)

Update from the beta release 2
------------------------------
* we check the code from crash (panic(), BUG() etc) occur to the mini kernel start
  carefully, and make no deadlock or hang condition occur completely. 

Update from the beta release 3
------------------------------
* Even if CONFIG_ACPI=y is specified with x86_64 architecture, mini-kernel doesn't
  hang. 

---
Portions Copyright 2004 NTT DATA CORPORATION.
Portions Copyright 2004 VA Linux Systems Japan K.K.
Source: README.mkdump, updated 2005-03-31