Menguji Patch

wchilders@nearce.com Versi F38 Last review: 2021-08-11
Panduan singkat untuk menguji apakah sebuah patch menyelesaikan masalah Anda.

Kadang-kadang, ketika mencoba menyelesaikan masalah kernel (terutama yang spesifik pada perangkat keras Anda), Anda mungkin diminta untuk menerapkan sebuah patch untuk memverifikasi apakah masalah tersebut telah diperbaiki sebelum patch tersebut dimasukkan.

Ini adalah panduan singkat tentang cara mendapatkan sumber kernel Fedora untuk versi Fedora Anda, menerapkan patch, dan membangun kernel untuk diuji. Panduan ini ditujukan bagi pengguna yang tidak akrab dengan proses pengembangan kernel Fedora, dan hanya memerlukan pemahaman dasar tentang alat yang terkait.

Persiapan Awal

Pertama, jika belum terpasang, Anda perlu menginstal fedpkg (utilitas pemaketan RPM milik Fedora):

sudo dnf install fedpkg

Selanjutnya, Anda perlu mengambil kode sumber (langkah ini akan membuat subdirektori baru bernama "kernel" dan meletakkan semua berkas yang diperlukan di sana):

fedpkg clone --anonymous kernel

Lalu, masuk ke direktori "kernel" yang telah dibuat:

cd kernel

Setelah berada di direktori kernel, Anda perlu berpindah ke cabang (branch) untuk versi Fedora Anda dengan menggunakan perintah berikut, di mana "<fedora version>" adalah versi Fedora Anda:

fedpkg switch-branch f<fedora version>

Sebagai contoh, jika Anda menggunakan Fedora 34, jalankan:

fedpkg switch-branch f34

Terakhir, Anda perlu menambahkan akun Anda ke grup "mock" menggunakan perintah berikut, di mana "<username>" adalah nama pengguna Fedora Anda:

usermod -a -G mock <username>

Agar perubahan ini berlaku, Anda dapat keluar dan masuk kembali, atau menjalankan perintah berikut:

newgrp -

Menerapkan Patch

Untuk menerapkan patch, ambil berkas .patch yang diminta untuk Anda terapkan, dan simpan di direktori "kernel" yang dibuat pada langkah sebelumnya dengan nama:

linux-kernel-test.patch

Membangun Paket

Untuk membangun paket kernel, pastikan Anda sudah berada di direktori "kernel".

Langkah berikutnya mungkin memakan waktu cukup lama, jadi pastikan Anda memiliki waktu luang di mana komputer dapat bekerja tanpa gangguan.

Kemudian, jalankan perintah berikut:

fedpkg mockbuild

Akhirnya, silakan nikmati minuman hangat, berjalan-jalan, bermain dengan hewan peliharaan Anda, atau bersantai dan kembali nanti.

Menginstal Paket

Untuk menginstal paket, pastikan Anda berada di direktori "kernel". Dari sana, masuk ke direktori "results_kernel":

cd results_kernel

Direktori ini akan berisi satu subdirektori dengan nama versi kernel. Gunakan perintah ls untuk mengetahui namanya, misalnya:

ls
5.13.9

Masuk ke direktori tersebut:

cd 5.13.9

Ulangi proses ini sekali lagi:

ls
200.fc34
cd 200.fc34

Terakhir, jika Anda menjalankan ls sekali lagi, Anda akan melihat beberapa berkas ".rpm". Sebagai contoh:

ls -1
build.log
hw_info.log
installed_pkgs.log
kernel-5.13.9-200.fc34.x86_64.src.rpm
kernel-5.13.9-200.fc34.x86_64.rpm
kernel-core-5.13.9-200.fc34.x86_64.rpm
kernel-debug-5.13.9-200.fc34.x86_64.rpm
kernel-debug-core-5.13.9-200.fc34.x86_64.rpm
kernel-debug-debuginfo-5.13.9-200.fc34.x86_64.rpm
kernel-debug-devel-5.13.9-200.fc34.x86_64.rpm
kernel-debuginfo-5.13.9-200.fc34.x86_64.rpm
kernel-debuginfo-common-x86_64-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-extra-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-internal-5.13.9-200.fc34.x86_64.rpm
kernel-devel-5.13.9-200.fc34.x86_64.rpm
kernel-modules-5.13.9-200.fc34.x86_64.rpm
kernel-modules-extra-5.13.9-200.fc34.x86_64.rpm
kernel-modules-internal-5.13.9-200.fc34.x86_64.rpm
root.log
state.log

Hapus semua berkas .src.rpm dengan perintah berikut:

rm *.src.rpm

Daftarnya sekarang seharusnya terlihat seperti ini:

ls -1
build.log
hw_info.log
installed_pkgs.log
kernel-5.13.9-200.fc34.x86_64.rpm
kernel-core-5.13.9-200.fc34.x86_64.rpm
kernel-debug-5.13.9-200.fc34.x86_64.rpm
kernel-debug-core-5.13.9-200.fc34.x86_64.rpm
kernel-debug-debuginfo-5.13.9-200.fc34.x86_64.rpm
kernel-debug-devel-5.13.9-200.fc34.x86_64.rpm
kernel-debuginfo-5.13.9-200.fc34.x86_64.rpm
kernel-debuginfo-common-x86_64-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-extra-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-internal-5.13.9-200.fc34.x86_64.rpm
kernel-devel-5.13.9-200.fc34.x86_64.rpm
kernel-modules-5.13.9-200.fc34.x86_64.rpm
kernel-modules-extra-5.13.9-200.fc34.x86_64.rpm
kernel-modules-internal-5.13.9-200.fc34.x86_64.rpm
root.log
state.log

Terakhir, instal semua paket rpm di direktori ini menggunakan dnf:

dnf install ./*.rpm

Menguji Kernel

Setelah semuanya berhasil diinstal, lakukan reboot. Kernel yang telah Anda bangun seharusnya otomatis dipilih oleh GRUB saat sistem Anda dinyalakan. Biarkan komputer melakukan boot, lalu periksa apakah masalah Anda telah teratasi.

Kembali ke Versi Sebelumnya

Jika Anda telah selesai melakukan pengujian dan ingin kembali ke kernel sebelumnya, lakukan reboot kembali. Kali ini saat GRUB muncul, pilih kernel yang lebih lama (misalnya, jika yang baru Anda bangun adalah 5.13.9, pilih 5.13.8 dari daftar) menggunakan tombol panah.

Setelah Anda masuk kembali, gunakan perintah berikut untuk membatalkan instalasi kernel tadi:

sudo dnf history undo last

Anda kemudian akan diminta untuk menghapus paket kernel yang baru saja diinstal. Jika Anda melihat paket lain, gunakan dnf history untuk menemukan transaksi yang ingin dibatalkan. Anda perlu mencari nomor di awal baris yang berisi versi kernel yang telah diinstal:

dnf history --reverse
...
24 | install ./kernel-5.13.9-200.fc34.x86_64.rpm ...
...

Nomor ini, misalnya "24", dapat digunakan untuk membatalkan instalasi melalui perintah berikut:

sudo dnf history undo 24

Akhirnya, jika Anda melakukan reboot, kernel baru (misalnya 5.13.9) tidak akan lagi muncul di GRUB, dan kernel sebelumnya akan otomatis dipilih (misalnya 5.13.8).