Initramfs: Difference between revisions

From coreboot
Jump to navigation Jump to search
mNo edit summary
m (phrasing)
Line 1: Line 1:
How to inject a separate initramfs file into a 2.6 vmlinux (as section .init.ramfs):
How to inject a separate initramfs file into vmlinux as section .init.ramfs.


First turn the initramfs into an ELF, excluding anything but the file data:
First turn the initramfs into an ELF, excluding everything but the file data:


     objcopy -I binary -O elf32-i386 -B i386 --redefine-sym _binary_initramfs_start=.init.ramfs -N _binary_initramfs_end -N _binary_initramfs_size initramfs initramfs.elf
     objcopy -I binary -O elf32-i386 -B i386 --redefine-sym _binary_initramfs_start=.init.ramfs -N _binary_initramfs_end -N _binary_initramfs_size initramfs initramfs.elf


Note that the symbol names _binary_initramfs_{start,end,size} depend on the input filename. objcopy does some translation here, e.g. a period (.) in the filename will become an underscore (_) in the symbols.
Note that the symbol names _binary_initramfs_{start,end,size} above depend on the input filename. objcopy does some translation here, e.g. a period (.) in the filename will become an underscore (_) in the symbols.


Now remove any existing .init.ramfs section in vmlinux and add the one in initramfs.elf:
Now remove any existing .init.ramfs section in vmlinux and add the one in initramfs.elf:

Revision as of 23:45, 6 August 2008

How to inject a separate initramfs file into vmlinux as section .init.ramfs.

First turn the initramfs into an ELF, excluding everything but the file data:

   objcopy -I binary -O elf32-i386 -B i386 --redefine-sym _binary_initramfs_start=.init.ramfs -N _binary_initramfs_end -N _binary_initramfs_size initramfs initramfs.elf

Note that the symbol names _binary_initramfs_{start,end,size} above depend on the input filename. objcopy does some translation here, e.g. a period (.) in the filename will become an underscore (_) in the symbols.

Now remove any existing .init.ramfs section in vmlinux and add the one in initramfs.elf:

   objcopy -I elf32-i386 -O elf32-i386 -R .init.ramfs --add-section .init.ramfs=initramfs.elf vmlinux vmlinux.withnewinitramfs

All done.