Todos os produtos
Search
Central de documentação

Alibaba Cloud Linux:Modify and build Alibaba Cloud Linux kernel RPM packages

Última atualização: Jun 29, 2026

Compile pacotes RPM personalizados do kernel do Alibaba Cloud Linux para ativar ou desativar recursos específicos. Este tópico descreve como modificar o código-fonte do kernel e recompilar os pacotes RPM em um contêiner docker em uma instância ECS.

Pré-requisitos

Uma instância ECS com o Alibaba Cloud Linux. Para mais informações, consulte Criar uma instância com Inicialização Personalizada.

  • Imagem: Alibaba Cloud Linux 2 ou Alibaba Cloud Linux 3.

  • Tipo de instância: Recomenda-se 32 vCPUs ou mais.

    Nota

    A compilação do kernel consome muitos recursos. Use uma instância com 32 ou mais vCPUs para reduzir o tempo de compilação.

Etapa 1: Preparar o ambiente

  1. Conecte-se à sua instância ECS.

    Para mais informações, consulte Fazer login em uma instância Linux usando o Workbench.

  2. Baixe a imagem docker e inicie o contêiner.

    #Install Docker.
    sudo yum install -y docker
    #Pull a Docker image.
    sudo docker pull <image_url>
    #Start the Docker container.
    sudo docker run -itd --net host --name alinux-build <image_url> bash
    #Access the Docker container.
    sudo docker exec -it alinux-build bash

    Substitua <image_url> pela URL da sua versão do Alibaba Cloud Linux.

    Imagem

    URL da imagem docker

    Alibaba Cloud Linux 2

    alibaba-cloud-linux-2-registry.cn-hangzhou.cr.aliyuncs.com/alinux2/alinux2

    Alibaba Cloud Linux 3

    alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3

    Este exemplo usa a imagem docker do Alibaba Cloud Linux 3.

    sudo yum install -y docker
    sudo docker pull alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3
    sudo docker run -itd --net host --name alinux-build alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3 bash
    sudo docker exec -it alinux-build bash

Etapa 2: Baixar o código-fonte

Baixe e instale o pacote RPM de source.

# Download the source code package.
yum install -y wget
wget <rpm_url>/<src.rpm_name>
# Install the source code package.
rpm -ivh <src.rpm_name>

Este exemplo baixa o pacote kernel-5.10.134-13.1.al8.src.rpm do Alibaba Cloud Linux 3.

yum install -y wget
wget https://mirrors.aliyun.com/alinux/3/plus/source/SRPMS/kernels/kernel-5.10.134-13.1.al8.src.rpm
rpm -ivh kernel-5.10.134-13.1.al8.src.rpm

Os arquivos são instalados no diretório /root/rpmbuild. Execute ls /root/rpmbuild para verificar:

image

Etapa 3: Modificar o código-fonte

  1. Instale as dependências de compilação.

    yum install -y rpm-build yum-utils
    yum-builddep -y <src.rpm_name>

    Substitua <src.rpm_name> pelo nome do seu pacote RPM de source. Exemplo: kernel-5.10.134-13.1.al8.src.rpm.

    yum install -y rpm-build yum-utils
    yum-builddep -y kernel-5.10.134-13.1.al8.src.rpm
  2. Extraia o pacote de source.

    # Enter the source code directory.
    cd /root/rpmbuild/SOURCES
    # Decompress the source code package.
    tar xf <Name of the compressed source code package>

    Neste exemplo, <source_archive_name> corresponde a linux-5.10.134-13.1.al8.tar.xz.

    cd /root/rpmbuild/SOURCES
    tar xf linux-5.10.134-13.1.al8.tar.xz
  3. Acesse o diretório extraído.

    cd <Name of the decompressed source code package>

    Neste exemplo, <extracted_source_directory_name> corresponde a linux-5.10.134-13.1.al8.

    cd linux-5.10.134-13.1.al8
  4. (Opcional) Modifique os arquivos de configuração.

    Modifique o código-fonte ou um arquivo config. As etapas a seguir mostram como modificar um arquivo config.

    1. Liste os arquivos de configuração disponíveis.

      ls /root/rpmbuild/SOURCES

      image

      O diretório /root/rpmbuild/SOURCES contém quatro arquivos config.

      Arquivo config

      Descrição

      kernel-5.10.134-aarch64.config

      Arquitetura Arm, versão de lançamento.

      kernel-5.10.134-aarch64-debug.config

      Arquitetura Arm, versão de depuração. Apenas para testes.

      kernel-5.10.134-x86_64.config

      Arquitetura x86, versão de lançamento.

      kernel-5.10.134-x86_64-debug.config

      Arquitetura x86, versão de depuração. Apenas para testes.

      Selecione o arquivo correspondente à sua arquitetura. Se necessário, modifique ambas as plataformas.

    2. Modifique o arquivo de configuração.

      Este exemplo usa o arquivo kernel-5.10.134-x86_64.config para a arquitetura x86.

      1. Copie o arquivo de configuração para o diretório de source.

        cd /root/rpmbuild/SOURCES
        cp kernel-5.10.134-x86_64.config linux-5.10.134-13.1.al8/.config
      2. Acesse o diretório de source.

        cd linux-5.10.134-13.1.al8
      3. Aplique valores padrão para novas opções de configuração.

        make olddefconfig
      4. Use make menuconfig para modificar as opções do kernel. Esse comando gerencia as dependências de configuração automaticamente.

        make menuconfig

        Na interface do menuconfig, pressione / para pesquisar opções.

        image

      5. Copie a configuração modificada para substituir a original.

        cp .config ../kernel-5.10.134-x86_64.config
      6. Retorne ao diretório pai.

        cd ..
      Nota

      Use o mesmo método para modificar o arquivo de configuração da arquitetura Arm.

  5. Atualize o número da versão no arquivo spec.

    cd /root/rpmbuild/SPECS
    vi kernel.spec

    Pressione I para entrar no modo de inserção. Ao terminar, pressione Esc, digite :wq e pressione Enter para salvar e sair.

    Recomendações de versionamento: Atualize o número da versão para distinguir sua compilação dos lançamentos oficiais. Por exemplo:

    • Altere uma versão principal como 5.10.134-12 para 5.10.134-12.0.1.

    • Altere uma versão secundária como 5.10.134-13.1 para 5.10.134-13.1.1.

    Este exemplo atualiza o número da versão de 5.10.134-13.1 para 5.10.134-13.1.1.

    No arquivo, localize a linha %define pkgrelease %{?KREL:%{KREL}}%{?!KREL:13.1} e atualize-a para %define pkgrelease %{?KREL:%{KREL}}%{?!KREL:13.1.1}.1

    Também é possível descrever as alterações na seção de changelog do arquivo kernel.spec. 2

Etapa 4: Recompilar os pacotes RPM

  1. Recompacte o código-fonte modificado.

    Neste exemplo, o nome do diretório de source é linux-5.10.134-13.1.al8.

    1. Acesse o diretório SOURCES.

      cd /root/rpmbuild/SOURCES/
    2. Renomeie o diretório de source.

      Na etapa anterior, o número da versão foi atualizado de 5.10.134-13.1 para 5.10.134-13.1.1. Portanto, renomeie o diretório de source para linux-5.10.134-13.1.1.al8.

      mv linux-5.10.134-13.1.al8 linux-5.10.134-13.1.1.al8
    3. Recompacte o diretório em um tarball.

      tar cJf linux-5.10.134-13.1.1.al8.tar.xz linux-5.10.134-13.1.1.al8
    4. Remova o diretório de source original e o tarball antigo.

      rm -rf linux-5.10.134-13.1.al8
      rm -f linux-5.10.134-13.1.al8.tar.xz
  2. Recompile o pacote RPM de source.

    cd /root
    rpmbuild -bs rpmbuild/SPECS/kernel.spec

    A saída mostra a localização do pacote recompilado: /root/rpmbuild/SRPMS/kernel-5.10.134-13.1.1.al8.src.rpm.

    image

  3. (Opcional) Faça downgrade do pacote dwarves.

    Se a versão do kernel do RPM de source instalado for 5.10.134-13.1.al8 ou anterior, a compilação exige o pacote dwarves-1.22-1.al8 para evitar erros.

    yum downgrade dwarves-1.22-1.al8 -y
  4. Recompile os pacotes RPM.

    rpmbuild --rebuild /root/rpmbuild/SRPMS/<src.rpm_name>

    Substitua <src.rpm_name> pelo nome do pacote RPM de source modificado. Exemplo: kernel-5.10.134-13.1.1.al8.src.rpm.

    rpmbuild --rebuild /root/rpmbuild/SRPMS/kernel-5.10.134-13.1.1.al8.src.rpm

    A compilação leva um tempo considerável. A saída a seguir indica sucesso. 1