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.
RemarqueLa 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
-
Connectez-vous à votre instance ECS.
Pour plus d'informations, consultez Se connecter à une instance Linux via Workbench.
-
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 bashRemplacez
<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>
-
<rpm_url>correspond à l'URL du dépôt de packages RPM pour Alibaba Cloud Linux 2 ou 3.Image
URL du package RPM
Alibaba Cloud Linux 2
Alibaba Cloud Linux 3
https://mirrors.aliyun.com/alinux/3/plus/source/SRPMS/kernels/
<src.rpm_name>désigne le nom du package RPM source à modifier.
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 :

Étape 3 : Modifier le code source
-
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 -
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 -
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 -
(Facultatif) Modifiez les fichiers de configuration.
Vous pouvez modifier le code source ou un fichier
config. Les étapes suivantes illustrent la modification d'un fichierconfig.-
Listez les fichiers de configuration disponibles.
ls /root/rpmbuild/SOURCES
Le répertoire
/root/rpmbuild/SOURCEScontient quatre fichiersconfig.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.
-
Modifiez le fichier de configuration.
Cet exemple utilise le fichier
kernel-5.10.134-x86_64.configpour l'architecture x86.-
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 -
Placez-vous dans le répertoire source.
cd linux-5.10.134-13.1.al8 -
Appliquez les valeurs par défaut aux nouvelles options de configuration.
make olddefconfig -
Utilisez
make menuconfigpour modifier les options du noyau. Cet outil gère automatiquement les dépendances de configuration.make menuconfigDans l'interface
menuconfig, appuyez sur/pour rechercher des options.
-
Copiez la configuration modifiée pour écraser le fichier original.
cp .config ../kernel-5.10.134-x86_64.config -
Revenez au répertoire parent.
cd ..
RemarqueCette même méthode s'applique à la modification du fichier de configuration pour l'architecture Arm.
-
-
-
Mettez à jour le numéro de version dans le fichier spec.
cd /root/rpmbuild/SPECS vi kernel.specAppuyez sur
Ipour passer en mode insertion. Une fois terminé, appuyez surEsc, saisissez:wq, puis validez avecEnterpour 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}.
Vous pouvez également décrire vos modifications dans la section changelog du fichier
kernel.spec.
Étape 4 : Recompiler les packages RPM
-
Recompressez le code source modifié.
Dans cet exemple, le répertoire source se nomme
linux-5.10.134-13.1.al8.-
Accédez au répertoire
SOURCES.cd /root/rpmbuild/SOURCES/ -
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 enlinux-5.10.134-13.1.1.al8.mv linux-5.10.134-13.1.al8 linux-5.10.134-13.1.1.al8 -
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 -
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
-
-
Recompilez le package RPM source.
cd /root rpmbuild -bs rpmbuild/SPECS/kernel.specLa sortie indique l'emplacement du package recompilé :
/root/rpmbuild/SRPMS/kernel-5.10.134-13.1.1.al8.src.rpm.
-
(Facultatif) Rétrogradez le package
dwarves.Si la version du noyau RPM source installée est
5.10.134-13.1.al8ou antérieure, la compilation nécessitedwarves-1.22-1.al8pour éviter des erreurs.yum downgrade dwarves-1.22-1.al8 -y -
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.rpmLa compilation prend un temps considérable. La sortie suivante confirme le succès de l'opération.
