Kernel

From ZeptoOS
Revision as of 14:55, 23 April 2009 by Kazutomo (talk | contribs) (→‎BUILD)
Jump to navigationJump to search

We currently provide two Linux kernels because of GPFS support on ION.

  • 2.6.19 based kernel : Zepto CN kernel
    • IBM V1R3 patch and zepto patch applied
    • 64KB pagesize and bigmemory region available
    • Device drivers for compute node devices such as DMA, lockbox, etc
    • Allow to run MPICH/DCMF code through Zepto Compute Binary(ZCB)
    • Can be used as enhanced ION kernel (no GPFS modules available)
  • 2.6.16 based kernel : Zepto ION kernel
    • IBM V1R3 patch applied
    • Essentially same as IBM ION kernel. Support GPFS

Kernel directory structure

Kernel directory basically consists of three main directories ; prebuilt, config and tarball.

|-- prebuilt
|   |-- 2.6.16
|   |   `-- ION
|   `-- 2.6.19
|       |-- CN
|       `-- objs
|-- tarball
`-- config

The prebuilt directory contains prebuilt kernel images and kernel modules. While prebuilt ION kernel ELF file is found, no CN kernel ELF file is found here. This is because CN kernel ramdisk is embedded in kernel and we wanted to provide a way to replace the CNK ramdisk without invoking CN build process which requires untar'ing source code. Instead CN kernel objects are found in prebuilt directory and a CN kernel ELF is created from the objects and ramdisk every time when you invoke certain make target.

The tarball directory contains kernel tarballs separately for ION and CN Linux kernel. Technically, those tarball are a snopshot of the Zepto kernel git repository. The directory might contain a .patch file that contains difference between the last snapshot and the current git HEAD since we wanted to avoid creating a snapshot from git even for small modification. Associated git log file can be found in this directory. A .SNAPSHOT_HEAD file indicates the git revision at the time when a snapshot is created, so this information is used to create a patch file.

linux-2.6.19.2-BGP-V1R3.git.log
linux-2.6.19.2-BGP-V1R3.patch
linux-2.6.19.2-BGP-V1R3.SNAPSHOT_HEAD
linux-2.6.19.2-BGP-V1R3.tar.bz2

The config directory contains Linux kernel config. A config file is basically associated to a tarball by kernel version. i.e, bgp-cn-2.6.19.2-dot-config for linux-2.6.19.2-BGP-V1R3.tar.bz2 See also Makefile.

Build kernel

Makefile in the kernel directory has many options. Just type 'make' it will show you help message. If you need to build (or rebuild) kernel from source code, use bgp-ion-linux-build or bgp-cn-linux-build target. By default it extracts ION or CN kernel tarball in a directory named work, apply a patch if any and start kernel build. Once kernel has successfully been built, kernel images (in both Zepto top directory and tmp directory) will be replaced with newly built images. ION kernel source code is extracted in work/linux-2.6.16.46-297-BGP-V1R3 and CN kernel source is in work/linux-2.6.19.2-BGP-V1R3. Here is an example of build, rebuilding kernel.

$ cd kernel
$ make bgp-cn-linux-build
....
$ ls -al ../BGP-CN-zImage-with-initrd.elf
$ vi work/linux-2.6.19.2-BGP-V1R3/kernel/sched.c
$ make bgp-cn-linux-build
....
$ ls -al ../BGP-CN-zImage-with-initrd.elf