Re: Initramfs from existing vmlinuz

From: Martin Schlemmer
Date: Thu Dec 25 2008 - 12:56:12 EST


>>> On 2008/12/24 at 01:37 PM, "Martin Schlemmer" <Martin.Schlemmer@xxxxxxxxx>
wrote:
>>>> On 2008/12/24 at 01:34 AM, Willy Tarreau <w@xxxxxx> wrote:
>> On Wed, Dec 24, 2008 at 12:28:53AM +0200, Martin Schlemmer wrote:

Hi

>>> I had a bit of an accident, and wondered if somebody already had to try to
>> extract the initramfs image from an existing vmlinuz?
>>>
>>> I did try google, but either my search terms was not right, or nobody
>> really touched on the subject before, because all the results mostly dealt
>> with an external image.
>>>
>>> Any advice will be appreciated.
>>
>> yes, it happens to me from time to time.
>> You first have to extract and uncompress the ELF image from vmlinuz. For
>> this, look for the gzip signature 1F 8B 08 in your vmlinuz, and feed all
>> data starting from this point to zcat. Either you do the same on the
>> resulting file -and you may find several compressed images- or you simply
>> pass it through "objdump -h". It will show you a .init.ramfs section. Use
>> the fourth field as the file offset, and dump from that position. You'll
>> find your initramfs, likely starting with 1F 8B 08 since it's supposed
>> to be compressed with gzip.
>>
>> You need an hex editor, dd, zcat and objdump for this. It's not much
>> complicated once you have the tools, but it might require a few attempts
>> before finding the right image (I tend to find config.gz before initramfs).
>>
>
> Appreciated, I should be able to go from here now - just getting the starting
> point is sometimes the main issue.
>

Simple Perl script to do above in case anybody might find it useful in the future.


M


Attachment: extract_initramfs.pl
Description: Binary data