Difference between revisions of "Ramdisk"
(New page: Both CN Linux kernel and ION Linux kernel requires ramdisk image to boot. A ramdisk basically contains minimum Linux utilities, init scripts , configuration files, kernel modules, etc whi...) |
|||
Line 1: | Line 1: | ||
− | Both CN Linux kernel and ION Linux kernel requires ramdisk | + | Both CN Linux kernel and ION Linux kernel requires ramdisk to |
− | boot. | + | boot. Ramdisk images basically contain minimum Linux utilities, init |
− | scripts , configuration files, kernel modules, etc which are required | + | scripts , configuration files, kernel modules, etc, which are required |
− | by boot process. | + | by OS boot process. |
ION ramdisk is an ELF file that contains a cpio format archive of | ION ramdisk is an ELF file that contains a cpio format archive of |
Revision as of 16:19, 24 April 2009
Both CN Linux kernel and ION Linux kernel requires ramdisk to boot. Ramdisk images basically contain minimum Linux utilities, init scripts , configuration files, kernel modules, etc, which are required by OS boot process.
ION ramdisk is an ELF file that contains a cpio format archive of system files. Two ION ramdisk images are currently generated.
- BGP-ION-ramdisk-for-CNL.elf
- Default ION ramdisk for ZeptoOS
- BGP-ION-ramdisk-for-CNK.elf
- Use this one if you need to run IBM CNK on Compute node
- IBM CIOD starts intead of ZOID
Our ramdisks are similar to IBM default ION ramdisk but we add some extra files to support our features. The extra files are located in ramdisk/ION/ramdisk-add. The build-ramdisk script is used to create ION ramdisk. The default path of the build-ramdisk script is /bgsys/drivers/ppcfloor. The build-ramdisk script path can be configured by the main configure script.
CN ramdisk is also a gzip'ed cpio format archive of system files, but CN ramdisk is embedded into CN kernel image(BGP-CN-zImage-with-initrd.elf). CN ramdisk is created by our local ramdisk build scritp( ramdisk/CN/create-bgp-cn-linux-ramdisk.pl ). Both build-ramdisk and create-bgp-cn-linux-ramdisk.pl uses the gen_init_cpio command which is from Linux kernel.
How to create ramdisk images
If you type make at the top level directory (without any make target), kernel images and ramdisk images are always (re-)created from prebuild objects. So recrearing all images everytime is not matter, just type make at the top directory.
In case you actually need to create ION ramdisk individually, do:
$ make bgp-ion-ramdisk-cnl
If you want to create CN ramdisk(technically create CN kernel image with new ramdisk contents), do:
$ make bgp-cn-linux
NOTE: ramdisk/CN/bgp-cn-ramdisk.cpio.gz is a newly built CN ramdisk.
How to modify ramdisk contents
For ION ramdisk, you can copy files to a directory under ramdisk/ION/ramdisk-add/ and build ramdisk. Here is an example.
$ vi ramdisk/ION/ramdisk-add/etc/yourfile $ make bgp-ion-ramdisk-cnl
BGP-ION-ramdisk-for-CNL.elf contains /etc/yourfile.
For CN ramdisk, you can add some commands to the @cmdlists array in ramdisk/CN/create-bgp-cn-linux-ramdisk.pl. Here is an example to add a file.
$ vi ramdisk/CN/tree/etc/yourfile $ vi ramdisk/CN/create-bgp-cn-linux-ramdisk.pl # the following line to @cmdlists "file /etc/yourfile $cwd/tree/etc/yourfile 0755 0 0", $ make bgp-cn-linux
The line that you added is a gen_init_cpio command. You can also create a directory, device file, symbolick link, pipe file, socket file as well. "$cwd" in the previous example is create-bgp-cn-linux-ramdisk.pl specific variable. It will be replaced with the directory where the script is located. $cwd will be ramdisk/CN/ for example.
file <name> <location> <mode> <uid> <gid> dir <name> <mode> <uid> <gid> nod <name> <mode> <uid> <gid> <dev_type> <maj> <min> slink <name> <target> <mode> <uid> <gid> pipe <name> <mode> <uid> <gid> sock <name> <mode> <uid> <gid> <name> name of the file/dir/nod/etc in the archive <location> location of the file in the current filesystem <target> link target <mode> mode/permissions of the file <uid> user id (0=root) <gid> group id (0=root) <dev_type> device type (b=block, c=character) <maj> major number of nod <min> minor number of nod
How to extract files from existing ramdisk image
If you want to extract file from existing ramdisk image, do the following steps (ION ramdisk only).
$ ./packages/tools/z-extract-cpio-from-ramdisk.sh existingramdisk.elf ramdisk.cpio $ mkdir treeroot && cd treeroot $ cpio -idv < ../ramdisk.cpio