Como eu sei quais algoritmos de descompactação são compilados no kernel do Linux?

7

Se /proc/config.gz não estiver disponível, como eu sei quais algoritmos de descompactação o kernel em execução é capaz de usar em cpio initramfs ?

compactado

O algoritmo gzip está sempre disponível, mesmo quando CONFIG_DECOMPRESS_GZIP não é y ao criar o kernel?

    
por MattBianco 23.07.2014 / 14:11

2 respostas

2

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
    
por 24.07.2014 / 03:26
0

Você pode conhecer o seu tipo de compressão entrando no diretório sys / power / tuxonice / compression, onde um arquivo chamado algoritmo vai para ele, ele terá o tipo de descompressão nele para mim foi escrito lzo.

    
por 12.09.2018 / 18:56