Belirli çekirdek özelliklerini etkinleştirmek veya devre dışı bırakmak için özel Alibaba Cloud Linux çekirdek RPM paketleri oluşturun. Bu konuda, bir ECS örneğindeki Docker konteynerinde çekirdek kaynak kodunu nasıl değiştireceğiniz ve RPM paketlerini nasıl yeniden oluşturacağınız açıklanmaktadır.
Ön koşullar
Alibaba Cloud Linux çalıştıran bir ECS örneğinizin olması gerekir. Daha fazla bilgi için bkz. Create an instance with Custom Launch.
Görüntü: Alibaba Cloud Linux 2 veya Alibaba Cloud Linux 3.
-
Örnek türü: 32 vCPU veya daha fazlası önerilir.
NotÇekirdek derlemeleri yoğun kaynak gerektirir. Derleme süresini azaltmak için 32 veya daha fazla vCPU'ya sahip bir örnek kullanın.
Adım 1: Ortamı hazırlama
-
ECS örneğinize bağlanın.
Daha fazla bilgi için bkz. Log on to a Linux instance using Workbench.
-
Docker görüntüsünü indirin ve konteyneri başlatın.
#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<image_url>ifadesini Alibaba Cloud Linux sürümünüzün URL'si ile değiştirin.
Görüntü
Docker görüntüsü URL'si
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/alinux3Bu örnekte Alibaba Cloud Linux 3 için Docker görüntüsü kullanılmaktadır.
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
Adım 2: Kaynak kodunu indirme
Kaynak RPM paketini indirin ve yükleyin.
# 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>, Alibaba Cloud Linux 2 veya 3 için RPM paketi deposunun URL'sidir.
Görüntü
RPM paketi URL'si
Alibaba Cloud Linux 2
Alibaba Cloud Linux 3
https://mirrors.aliyun.com/alinux/3/plus/source/SRPMS/kernels/ <src.rpm_name>, değiştirmek istediğiniz kaynak RPM paketinin adıdır.
Bu örnekte, Alibaba Cloud Linux 3 için kernel-5.10.134-13.1.al8.src.rpm paketi indirilmektedir.
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
Dosyalar /root/rpmbuild dizinine yüklenir. Doğrulamak için ls /root/rpmbuild komutunu çalıştırın:

Adım 3: Kaynak kodunu değiştirme
-
Derleme bağımlılıklarını yükleyin.
yum install -y rpm-build yum-utils yum-builddep -y <src.rpm_name><src.rpm_name>ifadesini kaynak RPM paketinizin adıyla değiştirin. Örnek: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 -
Kaynak paketini çıkarın.
# Enter the source code directory. cd /root/rpmbuild/SOURCES # Decompress the source code package. tar xf <Name of the compressed source code package>Bu örnekte,
<source_archive_name>değerilinux-5.10.134-13.1.al8.tar.xzolarak belirtilmiştir.cd /root/rpmbuild/SOURCES tar xf linux-5.10.134-13.1.al8.tar.xz -
Çıkarılan dizine gidin.
cd <Name of the decompressed source code package>Bu örnekte,
<extracted_source_directory_name>değerilinux-5.10.134-13.1.al8olarak belirtilmiştir.cd linux-5.10.134-13.1.al8 -
(İsteğe bağlı) Yapılandırma dosyalarını değiştirin.
Kaynak kodunu veya bir
configdosyasını değiştirebilirsiniz. Aşağıdaki adımlarda birconfigdosyasının nasıl değiştirileceği gösterilmektedir.-
Mevcut yapılandırma dosyalarını listeleyin.
ls /root/rpmbuild/SOURCES
/root/rpmbuild/SOURCESdizini dört adetconfigdosyası içermektedir.
config dosyası
Açıklama
kernel-5.10.134-aarch64.config
Arm mimarisi, yayın sürümü.
kernel-5.10.134-aarch64-debug.config
Arm mimarisi, hata ayıklama sürümü. Yalnızca test amaçlıdır.
kernel-5.10.134-x86_64.config
x86 mimarisi, yayın sürümü.
kernel-5.10.134-x86_64-debug.config
x86 mimarisi, hata ayıklama sürümü. Yalnızca test amaçlıdır.Mimarinize uygun olan dosyayı seçin. Gerekirse her iki platform için de değişiklik yapabilirsiniz.
-
Yapılandırma dosyasını değiştirin.
Bu örnekte x86 mimarisi için
kernel-5.10.134-x86_64.configdosyası kullanılmaktadır.-
Yapılandırma dosyasını kaynak dizinine kopyalayın.
cd /root/rpmbuild/SOURCES cp kernel-5.10.134-x86_64.config linux-5.10.134-13.1.al8/.config -
Kaynak dizinine gidin.
cd linux-5.10.134-13.1.al8 -
Yeni yapılandırma seçenekleri için varsayılan değerleri uygulayın.
make olddefconfig -
Çekirdek seçeneklerini değiştirmek için
make menuconfigkomutunu kullanın. Bu işlem, yapılandırma bağımlılıklarını otomatik olarak yönetir.make menuconfigmenuconfigarayüzünde seçenekleri aramak için/tuşuna basın.
-
Değiştirilen yapılandırmayı orijinal dosyanın üzerine yazacak şekilde geri kopyalayın.
cp .config ../kernel-5.10.134-x86_64.config -
Üst dizine dönün.
cd ..
NotArm mimarisi için yapılandırma dosyasını değiştirmek üzere aynı yöntemi kullanabilirsiniz.
-
-
-
Spec dosyasındaki sürüm numarasını güncelleyin.
cd /root/rpmbuild/SPECS vi kernel.specEkleme moduna geçmek için
Ituşuna basın. İşleminiz bittiğindeEsctuşuna basın,:wqyazın ve kaydedip çıkmak içinEntertuşuna basın.Sürüm numarası önerileri: Derlemenizi resmi sürümlerden ayırt etmek için sürüm numarasını güncelleyin. Örneğin:
5.10.134-12gibi bir ana sürümü5.10.134-12.0.1olarak değiştirin.5.10.134-13.1gibi bir alt sürümü5.10.134-13.1.1olarak değiştirin.
Bu örnekte sürüm numarası
5.10.134-13.1değerinden5.10.134-13.1.1değerine güncellenmektedir.Dosyada
%define pkgrelease %{?KREL:%{KREL}}%{?!KREL:13.1}satırını bulun ve%define pkgrelease %{?KREL:%{KREL}}%{?!KREL:13.1.1}şeklinde güncelleyin.
Değişikliklerinizi ayrıca
kernel.specdosyasının değişiklik günlüğü bölümünde de açıklayabilirsiniz.
Adım 4: RPM paketlerini yeniden oluşturma
-
Değiştirilen kaynak kodunu yeniden sıkıştırın.
Bu örnekte kaynak dizini adı
linux-5.10.134-13.1.al8şeklindedir.-
SOURCESdizinine gidin.cd /root/rpmbuild/SOURCES/ -
Kaynak dizinini yeniden adlandırın.
Önceki adımda sürüm numarası
5.10.134-13.1değerinden5.10.134-13.1.1değerine güncellenmiştir. Bu nedenle kaynak dizininilinux-5.10.134-13.1.1.al8olarak yeniden adlandırın.mv linux-5.10.134-13.1.al8 linux-5.10.134-13.1.1.al8 -
Dizini bir tar dosyası olarak yeniden sıkıştırın.
tar cJf linux-5.10.134-13.1.1.al8.tar.xz linux-5.10.134-13.1.1.al8 -
Orijinal kaynak dizinini ve eski tar dosyasını kaldırın.
rm -rf linux-5.10.134-13.1.al8 rm -f linux-5.10.134-13.1.al8.tar.xz
-
-
Kaynak RPM paketini yeniden oluşturun.
cd /root rpmbuild -bs rpmbuild/SPECS/kernel.specÇıktı, yeniden oluşturulan paket konumunu gösterir:
/root/rpmbuild/SRPMS/kernel-5.10.134-13.1.1.al8.src.rpm.
-
(İsteğe bağlı)
dwarvespaketini önceki bir sürüme düşürün.Yüklediğiniz kaynak RPM çekirdek sürümü
5.10.134-13.1.al8veya daha eskiyse, hataları önlemek için derleme işlemindedwarves-1.22-1.al8sürümü gereklidir.yum downgrade dwarves-1.22-1.al8 -y -
RPM paketlerini yeniden oluşturun.
rpmbuild --rebuild /root/rpmbuild/SRPMS/<src.rpm_name><src.rpm_name>ifadesini değiştirdiğiniz kaynak RPM paketi adıyla değiştirin. Örnek:kernel-5.10.134-13.1.1.al8.src.rpm.rpmbuild --rebuild /root/rpmbuild/SRPMS/kernel-5.10.134-13.1.1.al8.src.rpmDerleme işlemi önemli ölçüde zaman alır. Aşağıdaki çıktı başarılı olduğunu gösterir.
