GNU/Linux >> Belajar Linux >  >> Linux

Pengujian integrasi berkelanjutan untuk kernel Linux

Dengan 14.000 perubahan per rilis dari lebih dari 1.700 pengembang yang berbeda, jelas bahwa kernel Linux bergerak dengan cepat, dan membawa banyak kerumitan. Bug kernel berkisar dari gangguan kecil hingga masalah yang lebih besar, seperti sistem crash dan kehilangan data.

Seiring panggilan untuk continuous integration (CI) meningkat untuk semakin banyak proyek, tim Continuous Kernel Integration (CKI) memaju dengan satu misi:mencegah bug digabungkan ke kernelnya.

Masalah pengujian Linux

Banyak distribusi Linux menguji kernel Linux bila diperlukan. Pengujian ini sering terjadi sekitar waktu rilis, atau saat pengguna menemukan bug.

Masalah yang tidak terkait terkadang muncul, dan pengelola berebut untuk menemukan tambalan mana dalam kumpulan perubahan yang penuh dengan puluhan ribu tambalan yang menyebabkan bug baru yang tidak terkait. Mendiagnosis bug mungkin memerlukan perangkat keras khusus, serangkaian pemicu, dan pengetahuan khusus tentang bagian kernel tersebut.

CI dan Linux

Sebagian besar repositori perangkat lunak modern memiliki semacam pengujian CI otomatis yang dilakukan pengujian sebelum mereka menemukan jalannya ke repositori. Pengujian otomatis ini memungkinkan pengelola menemukan masalah kualitas perangkat lunak, bersama dengan sebagian besar bug, dengan meninjau laporan CI. Proyek yang lebih sederhana, seperti pustaka Python, hadir dengan banyak alat untuk mempermudah proses ini.

Linux harus dikonfigurasi dan dikompilasi sebelum pengujian apa pun. Melakukannya membutuhkan waktu dan sumber daya komputasi. Selain itu, kernel itu harus boot di mesin virtual atau di mesin bare metal untuk pengujian. Mendapatkan akses ke arsitektur sistem tertentu memerlukan biaya tambahan atau emulasi yang sangat lambat. Dari sana, seseorang harus mengidentifikasi serangkaian tes yang memicu bug atau memverifikasi perbaikannya.

Cara kerja tim CKI

Tim CKI di Red Hat saat ini mengikuti perubahan dari beberapa kernel internal, serta kernel upstream seperti pohon kernel stabil. Kami mengamati dua peristiwa penting di setiap repositori:

  1. Saat pengelola menggabungkan pull request atau patch, dan komit yang dihasilkan dalam repositori berubah.

  2. Saat pengembang mengusulkan perubahan untuk penggabungan melalui tambal sulam atau antrean tambalan stabil.

Saat peristiwa ini terjadi, otomatisasi mulai beraksi dan pipeline CI GitLab memulai proses pengujian. Setelah pipeline menjalankan skrip linting, menggabungkan patch apa pun, dan mengkompilasi kernel untuk beberapa arsitektur, pengujian sebenarnya dimulai. Kami mengkompilasi kernel dalam waktu kurang dari enam menit untuk empat arsitektur dan mengirimkan umpan balik ke milis stabil biasanya dalam dua jam atau kurang. Lebih dari 100.000 tes kernel dijalankan setiap bulan dan lebih dari 11.000 pipeline GitLab telah selesai (sejak Januari 2019).

Setiap kernel di-boot pada arsitektur aslinya, yang meliputi:

● aarch64:ARM 64-bit, seperti Cavium (sekarang Marvell) ThunderX.

● ppc64/ppc64le:Sistem IBM POWER endian besar dan kecil.

● s390x:mainframe IBM Zseries.

● x86_64:Workstation, laptop, dan server Intel dan AMD.

Beberapa pengujian dijalankan pada kernel ini, termasuk Linux Test Project (LTP), yang berisi banyak sekali pengujian menggunakan rangkaian pengujian umum. Tim CKI saya melakukan open-source lebih dari 44 pengujian dengan lebih banyak lagi yang akan dilakukan.

Terlibatlah

Upstream pengujian kernel berkembang dari hari ke hari. Banyak perusahaan menyediakan keluaran uji untuk berbagai kernel, termasuk Google, Intel, Linaro, dan Sony. Setiap upaya difokuskan untuk membawa nilai ke kernel hulu serta basis pelanggan masing-masing perusahaan.

Jika Anda atau perusahaan Anda ingin bergabung, silakan datang ke Linux Plumbers Conference 2019 di Lisbon, Portugal. Bergabunglah bersama kami di Kernel CI hackfest selama dua hari setelah konferensi, dan dorong masa depan pengujian kernel yang cepat.

Untuk detail lebih lanjut, tinjau slide dari ceramah Texas Linux Fest 2019 saya.


Linux
  1. Kernel Linux Untuk Nintendo Wii?

  2. Kali di Subsistem Windows untuk Linux

  3. Kali Linux untuk Gemini PDA

  1. Panduan terminal Linux untuk pemula

  2. Analisis kernel Linux dengan ftrace

  3. Kernel Linux:5 inovasi teratas

  1. Siklus hidup pengujian kernel Linux

  2. Distribusi Linux Populer untuk Pengujian Keamanan

  3. Linux – Bagaimana Mengaktifkan User_namespaces Di Kernel? (untuk `unshare` tanpa hak.)?