Difference between revisions of "Initramfs"

From coreboot
Jump to: navigation, search
m (improve formatting and grammar a little)
m (whitespace)
Line 6: Line 6:
  
 
2. Remove any previous .init.ramfs section in vmlinux and add the new one from initramfs.elf:
 
2. Remove any previous .init.ramfs section in vmlinux and add the new one from initramfs.elf:
    objcopy -I elf32-i386 -O elf32-i386 -R .init.ramfs --add-section .init.ramfs=initramfs.elf vmlinux vmlinux.withnewinitramfs
+
objcopy -I elf32-i386 -O elf32-i386 -R .init.ramfs --add-section .init.ramfs=initramfs.elf vmlinux vmlinux.withnewinitramfs
  
 
3. Done! Please test using vmlinux.withnewinitramfs as payload with coreboot and let us know the result!
 
3. Done! Please test using vmlinux.withnewinitramfs as payload with coreboot and let us know the result!

Revision as of 19:52, 9 October 2008

How to inject a gzipped initramfs cpio file into vmlinux as section .init.ramfs:

1. Turn the initramfs into an ELF binary, 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 so e.g. a period (.) in the filename becomes an underscore (_) in the symbol names.

2. Remove any previous .init.ramfs section in vmlinux and add the new one from initramfs.elf:

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

3. Done! Please test using vmlinux.withnewinitramfs as payload with coreboot and let us know the result!