AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 553185
Accepted
balon
balon
Asked: 2019-11-21 07:19:02 +0800 CST2019-11-21 07:19:02 +0800 CST 2019-11-21 07:19:02 +0800 CST

Como demonstro o tipo de compactação do kernel na prática?

  • 772

Eu tenho que descobrir o tipo de compressão do kernel linux do meu sistema arch linux, mas não consigo encontrar uma maneira de obtê-lo mais do que a teoria: agora bzip2 (bz), anteriormente gzip (z).

No meu computador eu executo o comando:

$ file /boot/vmlinuz-linux
/boot/vmlinuz-linux: Linux kernel x86 boot executable bzImage, version 5.3.11-arch1-1 (linux@archlinux) #1 SMP PREEMPT Tue, 12 Nov 2019 22:19:48 +0000, RO-rootFS, swap_dev 0x5, Normal VGA

Olhando para a teoria, vejo que bzImagedeve ser compactado por gzip (z), mas não consigo provar:

O bzImage foi compactado usando gzip até o Linux 2.6.30 que introduziu mais algoritmos. Embora haja o equívoco popular de que o prefixo bz significa que a compactação bzip2 é usada (o pacote bzip2 geralmente é distribuído com ferramentas prefixadas com bz, como bzless, bzcat etc.), esse não é o caso.

Existe alguma maneira de provar isso na minha própria máquina? ou a própria teoria, neste caso, é "empírica"?

linux linux-kernel
  • 3 3 respostas
  • 8030 Views

3 respostas

  • Voted
  1. Best Answer
    Stephen Kitt
    2019-11-21T08:00:41+08:002019-11-21T08:00:41+08:00

    Para determinar conclusivamente qual compactação foi usada para uma determinada imagem do kernel, sem precisar executá-la ou encontrar sua configuração, você pode seguir a abordagem usada pelo próprio extract-vmlinuxscript do kernel:

    • procure a assinatura do compressor na imagem:

      • gunzip:\037\213\010
      • xz:\3757zXZ\000
      • bzip2:BZh
      • lzma:\135\0\0\0
      • lzo:\211\114\132
      • lz4:\002!L\030
      • zstd:(\265/\375
    • tente extrair os dados da imagem, começando pelo deslocamento de qualquer assinatura que encontrar;

    • verifique se o resultado (se houver) é uma imagem ELF.

    Eu adaptei o script aqui para que ele relate apenas o tipo de compactação. Não estou incluindo aqui porque está licenciado apenas sob a GPL 2.

    • 9
  2. Andy Dalton
    2019-11-21T07:43:11+08:002019-11-21T07:43:11+08:00

    Você pode ver quais métodos de compactação seu kernel suporta. Apenas um pode ser selecionado, então isso prova qual é.

    Aqui, estou usando o gzip:

    $ zgrep CONFIG_KERNEL_ /proc/config.gz
    CONFIG_KERNEL_GZIP=y
    # CONFIG_KERNEL_BZIP2 is not set
    # CONFIG_KERNEL_LZMA is not set
    # CONFIG_KERNEL_XZ is not set
    # CONFIG_KERNEL_LZO is not set
    # CONFIG_KERNEL_LZ4 is not set
    
    • 5
  3. Dasel
    2019-11-21T07:51:28+08:002019-11-21T07:51:28+08:00

    VMlinuz foi compactado em gzip como você pode ver nos links a seguir:

    http://www.linfo.org/vmlinuz.html

    https://www.ibm.com/developerworks/community/blogs/mhhaque/entry/anatomy_of_the_initrd_and_vmlinuz?lang=en

    https://en.wikipedia.org/wiki/Vmlinux

    Ironicamente, a página diz que muita gente confunde a extensão com bzip2 como você pode ver abaixo:

    Um kernel compilado chamado arquivo zImage é criado em alguns sistemas mais antigos e é mantido em sistemas mais recentes para compatibilidade com versões anteriores. Tanto zImage quanto bzImage são compactados com gzip . A diferença é que zImage descompacta em memória baixa (ou seja, os primeiros 640kB), e bzImage descompacta em memória alta (mais de 1MB). Há um equívoco comum de que bzImage é compactado com o utilitário bzip2; na verdade, o b significa grande.

    Espero que você ache a informação útil.

    • 0

relate perguntas

  • Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve