Initramfs

From coreboot
Revision as of 16:35, 19 September 2010 by Uwe (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The wiki is being retired!

Documentation is now handled by the same processes we use for code: Add something to the Documentation/ directory in the coreboot repo, and it will be rendered to https://doc.coreboot.org/. Contributions welcome!

This page describes how to inject a gzipped initramfs cpio file into vmlinux as section .init.ramfs:

Firs, 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. Then, 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

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