• Bertrand Jacquin's avatar
    kbuild: handle module compression while running 'make modules_install'. · beb50df3
    Bertrand Jacquin authored
    Since module-init-tools (gzip) and kmod (gzip and xz) support compressed
    modules, it could be useful to include a support for compressing modules
    right after having them installed. Doing this in kbuild instead of per
    distro can permit to make this kind of usage more generic.
    
    This patch add a Kconfig entry to "Enable loadable module support" menu
    and let you choose to compress using gzip (default) or xz.
    
    Both gzip and xz does not used any extra -[1-9] option since Andi Kleen
    and Rusty Russell prove no gain is made using them. gzip is called with -n
    argument to avoid storing original filename inside compressed file, that
    way we can save some more bytes.
    
    On a v3.16 kernel, 'make allmodconfig' generated 4680 modules for a
    total of 378MB (no strip, no sign, no compress), the following table
    shows observed disk space gain based on the allmodconfig .config :
    
           |           time                |
           +-------------+-----------------+
           | manual .ko  |       make      | size | percent
           | compression | modules_install |      | gain
           +-------------+-----------------+------+--------
      -    |             |     18.61s      | 378M |
      GZIP |   3m16s     |     3m37s       | 102M | 73.41%
      XZ   |   5m22s     |     5m39s       |  77M | 79.83%
    
    The gain for restricted environnement seems to be interesting while
    uncompress can be time consuming but happens only while loading a module,
    that is generally done only once.
    
    This is fully compatible with signed modules while the signed module is
    compressed. module-init-tools or kmod handles decompression
    and provide to other layer the uncompressed but signed payload.
    Reviewed-by: default avatarWilly Tarreau <w@1wt.eu>
    Signed-off-by: default avatarBertrand Jacquin <beber@meleeweb.net>
    Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    beb50df3
Makefile 53.3 KB