Tous les produits
Search
Centre de documentation

Alibaba Cloud Linux:Modifier et compiler des packages RPM du noyau Alibaba Cloud Linux

Dernière mise à jour :Aug 12, 2026

Compilez des packages RPM personnalisés du noyau Alibaba Cloud Linux pour activer ou désactiver des fonctionnalités spécifiques. Cette rubrique explique comment modifier le code source du noyau et recompiler les packages RPM dans un conteneur Docker sur une instance ECS.

Prérequis

Une instance ECS exécutant Alibaba Cloud Linux est requise. Pour plus d'informations, consultez Créer une instance avec lancement personnalisé.

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

  • Type d'instance : 32 vCPU ou plus recommandés.

    Remarque

    La compilation du noyau consomme beaucoup de ressources. Utilisez une instance dotée d'au moins 32 vCPU pour réduire la durée de compilation.

Étape 1 : Préparer l'environnement

  1. Connectez-vous à votre instance ECS.

    Pour plus d'informations, consultez Se connecter à une instance Linux via Workbench.

  2. Téléchargez l'image Docker et démarrez le conteneur.

    #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

    Remplacez <image_url> par l'URL correspondant à votre version d'Alibaba Cloud Linux.

    Image

    URL de l'image 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

    Cet exemple utilise l'image Docker pour 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

Étape 2 : Télécharger le code source

Téléchargez et installez le package RPM 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>

Cet exemple télécharge le package kernel-5.10.134-13.1.al8.src.rpm pour 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

Les fichiers s'installent dans le répertoire /root/rpmbuild. Exécutez ls /root/rpmbuild pour vérifier :

image

Étape 3 : Modifier le code source

  1. Installez les dépendances de compilation.

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

    Remplacez <src.rpm_name> par le nom de votre package RPM source. Exemple : 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. Extrayez le package source.

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

    Dans cet exemple, <source_archive_name> correspond à 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. Accédez au répertoire extrait.

    cd <Name of the decompressed source code package>

    Ici, <extracted_source_directory_name> correspond à linux-5.10.134-13.1.al8.

    cd linux-5.10.134-13.1.al8
  4. (Facultatif) Modifiez les fichiers de configuration.

    Vous pouvez modifier le code source ou un fichier config. Les étapes suivantes illustrent la modification d'un fichier config.

    1. Listez les fichiers de configuration disponibles.

      ls /root/rpmbuild/SOURCES

      image

      Le répertoire /root/rpmbuild/SOURCES contient quatre fichiers config.

      Fichier config

      Description

      kernel-5.10.134-aarch64.config

      Architecture Arm, version de production.

      kernel-5.10.134-aarch64-debug.config

      Architecture Arm, version de débogage. Réservée aux tests.

      kernel-5.10.134-x86_64.config

      Architecture x86, version de production.

      kernel-5.10.134-x86_64-debug.config

      Architecture x86, version de débogage. Réservée aux tests.

      Sélectionnez le fichier correspondant à votre architecture. Vous pouvez également modifier les deux plateformes si nécessaire.

    2. Modifiez le fichier de configuration.

      Cet exemple utilise le fichier kernel-5.10.134-x86_64.config pour l'architecture x86.

      1. Copiez le fichier de configuration vers le répertoire source.

        cd /root/rpmbuild/SOURCES
        cp kernel-5.10.134-x86_64.config linux-5.10.134-13.1.al8/.config
      2. Placez-vous dans le répertoire source.

        cd linux-5.10.134-13.1.al8
      3. Appliquez les valeurs par défaut aux nouvelles options de configuration.

        make olddefconfig
      4. Utilisez make menuconfig pour modifier les options du noyau. Cet outil gère automatiquement les dépendances de configuration.

        make menuconfig

        Dans l'interface menuconfig, appuyez sur / pour rechercher des options.

        image

      5. Copiez la configuration modifiée pour écraser le fichier original.

        cp .config ../kernel-5.10.134-x86_64.config
      6. Revenez au répertoire parent.

        cd ..
      Remarque

      Cette même méthode s'applique à la modification du fichier de configuration pour l'architecture Arm.

  5. Mettez à jour le numéro de version dans le fichier spec.

    cd /root/rpmbuild/SPECS
    vi kernel.spec

    Appuyez sur I pour passer en mode insertion. Une fois terminé, appuyez sur Esc, saisissez :wq, puis validez avec Enter pour enregistrer et quitter.

    Recommandations de versionnage : Mettez à jour le numéro de version pour distinguer votre compilation des versions officielles. Par exemple :

    • Passez d'une version majeure comme 5.10.134-12 à 5.10.134-12.0.1.

    • Passez d'une version mineure comme 5.10.134-13.1 à 5.10.134-13.1.1.

    Dans cet exemple, le numéro de version passe de 5.10.134-13.1 à 5.10.134-13.1.1.

    Dans le fichier, localisez la ligne %define pkgrelease %{?KREL:%{KREL}}%{?!KREL:13.1} et remplacez-la par %define pkgrelease %{?KREL:%{KREL}}%{?!KREL:13.1.1}.1

    Vous pouvez également décrire vos modifications dans la section changelog du fichier kernel.spec. 2

Étape 4 : Recompiler les packages RPM

  1. Recompressez le code source modifié.

    Dans cet exemple, le répertoire source se nomme linux-5.10.134-13.1.al8.

    1. Accédez au répertoire SOURCES.

      cd /root/rpmbuild/SOURCES/
    2. Renommez le répertoire source.

      L'étape précédente a mis à jour le numéro de version de 5.10.134-13.1 à 5.10.134-13.1.1. Renommez donc le répertoire source en 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. Recompressez le répertoire dans une archive tar.

      tar cJf linux-5.10.134-13.1.1.al8.tar.xz linux-5.10.134-13.1.1.al8
    4. Supprimez le répertoire source original ainsi que l'ancienne archive.

      rm -rf linux-5.10.134-13.1.al8
      rm -f linux-5.10.134-13.1.al8.tar.xz
  2. Recompilez le package RPM source.

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

    La sortie indique l'emplacement du package recompilé : /root/rpmbuild/SRPMS/kernel-5.10.134-13.1.1.al8.src.rpm.

    image

  3. (Facultatif) Rétrogradez le package dwarves.

    Si la version du noyau RPM source installée est 5.10.134-13.1.al8 ou antérieure, la compilation nécessite dwarves-1.22-1.al8 pour éviter des erreurs.

    yum downgrade dwarves-1.22-1.al8 -y
  4. Recompilez les packages RPM.

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

    Remplacez <src.rpm_name> par le nom de votre package RPM source modifié. Exemple : 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

    La compilation prend un temps considérable. La sortie suivante confirme le succès de l'opération. 1