Algoritmos de compactação são declarados em lib/decompress.c . O Gzip é definido em lib/decompress_inflate.c e não recebe nenhum status especial; ele só estará lá se CONFIG_DECOMPRESS_GZIP for y quando o kernel for compilado.
A lista de algoritmos de compactação disponíveis é o compressed_formats estrutura. Como está definido como static , não está disponível em outros arquivos de origem. A única função que o utiliza é, portanto, a função decompress_method em lib/decompress.c . Portanto, a única maneira de obter um kernel para usar a tabela de algoritmos suportados é tentar descompactar algo que comece com a seqüência mágica apropriada de dois bytes e ver se essa função retorna o nome do algoritmo.
Você pode dizer quais funções de descompactação são suportadas, pesquisando a lista de símbolos do kernel ( /proc/kallsyms ). As funções não são identificadas como tal, então você precisa assar na lista de nomes de símbolos.
</proc/kallsyms cut -d " " -f 3 |
grep -xF -e gunzip -e bzip2 -e unlzma -e unxz -e unlzo -e unlz4