全部产品
Search
文档中心

Alibaba Cloud Linux:Memodifikasi dan mengkompilasi paket RPM kernel Alibaba Cloud Linux

更新时间:Jun 28, 2025

Dalam skenario tertentu, Anda mungkin perlu mengaktifkan fitur atau modul tertentu di kernel Alibaba Cloud Linux atau menonaktifkan fitur tertentu di kernel default untuk memenuhi persyaratan kinerja atau keamanan. Untuk melakukannya, modifikasi kode sumber kernel Alibaba Cloud Linux dan gunakan Red Hat Package Manager (RPM) untuk mengkompilasi ulang serta membuat ulang paket RPM kernel kustom. Ini memastikan bahwa kernel yang digunakan tetap kompatibel dengan rilis Alibaba Cloud Linux dan dapat secara fleksibel memenuhi persyaratan bisnis tertentu. Topik ini menjelaskan cara memodifikasi dan mengkompilasi paket RPM kernel Alibaba Cloud Linux dalam kontainer berbasis lingkungan Elastic Compute Service (ECS) Alibaba Cloud Linux.

Prasyarat

Sebuah Instance ECS yang menjalankan Alibaba Cloud Linux telah dibuat. Untuk informasi lebih lanjut, lihat Buat instance menggunakan wizard.

  • Instance tersebut menggunakan gambar Alibaba Cloud Linux 2 atau 3.

  • Tipe instance yang digunakan memiliki 32 vCPU atau lebih.

    Catatan

    Kompilasi paket RPM memerlukan waktu yang lama untuk diselesaikan. Kami merekomendasikan agar Anda menggunakan tipe instance yang memiliki 32 vCPU atau lebih untuk meningkatkan efisiensi kompilasi.

Langkah 1: Persiapkan lingkungan

  1. Hubungkan ke Instance ECS tempat Anda ingin memodifikasi dan mengkompilasi paket RPM kernel Alibaba Cloud Linux.

    Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk terhubung ke instance Linux melalui SSH.

  2. Jalankan perintah berikut untuk mengunduh gambar Docker Alibaba Cloud Linux dan mengakses kontainer Docker:

    #Instal Docker.
    sudo yum install -y docker
    #Tarik gambar Docker.
    sudo docker pull <image_url>
    #Mulai kontainer Docker.
    sudo docker run -itd --net host --name alinux-build <image_url> bash
    #Akses kontainer Docker.
    sudo docker exec -it alinux-build bash

    Dalam perintah sebelumnya, ganti <image_url> dengan URL gambar Docker yang sesuai dengan Alibaba Cloud Linux 2 atau 3. Tabel berikut menjelaskan URL gambar Docker.

    Gambar

    URL gambar 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

    Dalam contoh ini, gambar Docker yang sesuai dengan Alibaba Cloud Linux 3 diunduh. Contoh perintah:

    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

Langkah 2: Unduh kode sumber

Jalankan perintah berikut untuk mengunduh paket RPM yang ingin Anda modifikasi:

# Unduh paket kode sumber.
yum install -y wget
wget <rpm_url>/<src.rpm_name>
# Instal paket kode sumber.
rpm -ivh <src.rpm_name>

Dalam contoh ini, paket src.rpm yang sesuai dengan Alibaba Cloud Linux 3, bernama kernel-5.10.134-13.1.al8.src.rpm, diunduh. Contoh perintah:

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

Setelah Anda menginstal paket src.rpm, file dari paket src.rpm disimpan di direktori /root/rpmbuild. Anda dapat menjalankan perintah ls /root/rpmbuild untuk menanyakan file. Contoh keluaran perintah:

image

Langkah 3: Modifikasi kode sumber

  1. Jalankan perintah berikut untuk menginstal dependensi:

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

    Dalam perintah sebelumnya, ganti <src.rpm_name> dengan nama paket src.rpm yang ingin Anda modifikasi. Dalam contoh ini, <src.rpm_name> diganti dengan 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. Jalankan perintah berikut untuk mengekstraksi paket kode sumber:

    # Masuk ke direktori kode sumber.
    cd /root/rpmbuild/SOURCES
    # Ekstrak paket kode sumber.
    tar xf <Nama paket kode sumber terkompresi>

    Dalam perintah sebelumnya, ganti <Nama paket kode sumber terkompresi> berdasarkan kebutuhan bisnis Anda. Dalam contoh ini, <Nama paket kode sumber terkompresi> diganti dengan 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. Jalankan perintah berikut untuk masuk ke direktori tempat paket kode sumber diekstraksi:

    cd <Nama paket kode sumber diekstraksi>

    Dalam perintah sebelumnya, ganti <Nama paket kode sumber diekstraksi> berdasarkan kebutuhan bisnis Anda. Dalam contoh ini, <Nama paket kode sumber diekstraksi> diganti dengan linux-5.10.134-13.1.al8.

    cd linux-5.10.134-13.1.al8
  4. (Opsional) Modifikasi konfigurasi config.

    Modifikasi kode sumber atau file config (file konfigurasi) berdasarkan kebutuhan bisnis Anda. Pilih metode untuk memodifikasi kode sumber berdasarkan kebutuhan bisnis Anda. Untuk memodifikasi file config, lakukan operasi berikut:

    1. Jalankan perintah berikut untuk mencantumkan semua file config dan pilih file config yang ingin Anda modifikasi:

      ls /root/rpmbuild/SOURCES

      image

      Tabel berikut menjelaskan file config di direktori /root/rpmbuild/SOURCES.

      File config

      Deskripsi

      kernel-5.10.134-aarch64.config

      File konfigurasi untuk arsitektur Arm dan versi rilis.

      kernel-5.10.134-aarch64-debug.config

      File konfigurasi untuk arsitektur Arm dan versi debug, yang hanya dapat digunakan untuk pengujian.

      kernel-5.10.134-x86_64.config

      File konfigurasi untuk arsitektur x86 dan versi rilis.

      kernel-5.10.134-x86_64-debug.config

      File konfigurasi untuk arsitektur x86 dan versi debug, yang hanya digunakan untuk pengujian.

      Dalam kebanyakan kasus, Anda dapat memilih file kernel-5.10.134-aarch64.config atau kernel-5.10.134-x86_64.config berdasarkan apakah platform adalah arsitektur Arm atau x86, atau modifikasi konfigurasi untuk kedua platform.

    2. Jalankan perintah berikut untuk memodifikasi file config:

      Dalam contoh ini, file kernel-5.10.134-x86_64.config untuk arsitektur x86 digunakan.

      1. Salin file config ke direktori kode sumber.

        cd /root/rpmbuild/SOURCES
        cp kernel-5.10.134-x86_64.config linux-5.10.134-13.1.al8/.config
      2. Masuk ke direktori kode sumber.

        cd linux-5.10.134-13.1.al8
      3. Segarkan nilai default di file config.

        make olddefconfig
      4. Gunakan menuconfig untuk memodifikasi file config untuk memastikan konfigurasi dependensi yang tepat.

        make menuconfig

        Akses antarmuka menuconfig. Anda dapat menekan tombol / untuk mencari item yang memerlukan modifikasi dan modifikasi item berdasarkan kebutuhan bisnis Anda.

        image

      5. Salin file config yang dimodifikasi untuk menimpa konfigurasi asli.

        cp .config ../kernel-5.10.134-x86_64.config
      6. Kembali ke direktori induk.

        cd ..
      Catatan

      Anda dapat memodifikasi file config untuk arsitektur Arm dengan cara yang sama.

  5. Jalankan perintah berikut untuk memperbarui versi kernel:

    cd /root/rpmbuild/SPECS
    vi kernel.spec

    Tekan tombol I untuk masuk ke mode Sisipkan. Tekan tombol Esc, masukkan :wq, lalu tekan tombol Enter untuk menyimpan dan menutup file config.

    Saran untuk modifikasi:

    • Jika kernel memiliki versi utama dalam format *-x, seperti 5.10.134-12, kami sarankan Anda mengubah versi utama menjadi format *-x.y.z, seperti 5.10.134-12.0.1. Dengan cara ini, Anda dapat membedakan versi dari versi resmi.

    • Jika kernel memiliki versi minor dalam format *-x.y, seperti 5.10.134-13.1, kami sarankan Anda mengubah versi minor menjadi format *-x.y.z, seperti 5.10.134-13.1.1.

    Dalam contoh berikut, nomor versi 5.10.134-13.1 diperbarui menjadi 5.10.134-13.1.1.

    Dalam file config, temukan %define pkgrelease %{?KREL:%{KREL}}%{?!KREL:13.1} dan ubah menjadi %define pkgrelease %{?KREL:%{KREL}}%{?!KREL:13.1.1}. 1

    Anda juga dapat menambahkan deskripsi perubahan di bagian changelog file kernel.spec. 2

Langkah 4: Buat ulang paket RPM

  1. Jalankan perintah berikut untuk mengkompres ulang paket src.rpm.

    Dalam contoh ini, paket kode sumber linux-5.10.134-13.1.al8 digunakan.

    1. Masuk ke direktori SOURCES.

      cd /root/rpmbuild/SOURCES/
    2. Ubah nama file direktori kode sumber.

      Dalam contoh ini, versi 5.10.134-13.1 diubah menjadi versi5.10.134-13.1.1 dan nama file direktori kode sumber dimodifikasi menjadi linux-5.10.134-13.1.1.al8. Ubah nama file berdasarkan kebutuhan bisnis Anda.

      mv linux-5.10.134-13.1.al8 linux-5.10.134-13.1.1.al8
    3. Kompres ulang paket kode sumber menjadi paket TAR.

      tar cJf linux-5.10.134-13.1.1.al8.tar.xz linux-5.10.134-13.1.1.al8
    4. Hapus direktori yang diekstraksi dan paket terkompresi asli.

      rm -rf linux-5.10.134-13.1.al8
      rm -f linux-5.10.134-13.1.al8.tar.xz
  2. Jalankan perintah berikut untuk membuat ulang paket src.rpm:

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

    Contoh keluaran perintah berikut menunjukkan bahwa paket src.rpm package disimpan di direktori /root/rpmbuild/SRPMS/kernel-5.10.134-13.1.1.al8.src.rpm.

    image

  3. (Opsional) Jalankan perintah berikut untuk menurunkan versi paket dwarves:

    Jika versi kernel yang terkandung dalam paket src.rpm adalah 5.10.134-13.1.al8 atau lebih awal, gunakan dwarves-1.22-1.al8 untuk kompilasi. Jika tidak, kesalahan kompilasi mungkin terjadi.

    yum downgrade dwarves-1.22-1.al8 -y
  4. Jalankan perintah berikut untuk membuat ulang paket RPM:

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

    Dalam perintah sebelumnya, ganti <src.rpm_name> dengan nama baru paket src.rpm. Dalam contoh ini, nama baru paket src.rpm adalah 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

    Kompilasi paket RPM memerlukan waktu yang lama untuk diselesaikan. Contoh keluaran perintah berikut menunjukkan bahwa paket RPM dibuat ulang. 1