Size of modules within initrd
        Posted  
        
            by 
                LiKao
            
        on Server Fault
        
        See other posts from Server Fault
        
            or by LiKao
        
        
        
        Published on 2012-11-14T15:20:11Z
        Indexed on 
            2012/11/14
            17:05 UTC
        
        
        Read the original article
        Hit count: 281
        
I am currently trying to manually replace the kernel within ubuntu-core on an embedded device with a custom kernel. However when I try to update the initrd my initrd becomes much bigger.
Here is what I did:
- Extract the initrd that was shipped with ubuntu
- Make a list of all modules within the old initrd
- get the same modules from the new module director at /lib/modules/new_kernel_version
- add these modules to the initrd and remove the old ones
If I do this my initrd becomes quite bigger than the original one, so I checked the individual modules. I picked the btrfs.ko filesystem driver as an example. So by comparing these two modules I noticed the one I just picked into the initrd was much bigger, which caused the difference in size.
-rw-r--r-- 1 root root 999K Nov 14 15:06 btrfs.ko
For the btrfs.ko within the shipped initrd.
-rw-r--r-- 1 root root 7.2M Nov 14 15:08 btrfs.ko
For the new btrfs.ko.
What is different between these two modules? Could this be caused by some faulty setting for the new kernel? When producing the kernel I copied /proc/config.gz and used make oldconfig to update it, so all optimisations should be the same for both kernels.
Or is there something else which is being done to the modules before they are put into the initrd? Maybe is there even some better way to build a new initrd for the new kernel in ubuntu altogether.
Update:
I just also tested with an initrd which I created from scratch using the mkinitrfs command within ubuntu, and it has the same size difference that I found for the initrd I manually updated.
© Server Fault or respective owner