Cara mengkompilasi kernel vanilla linux dari sumber di fedora

Cara mengkompilasi kernel vanilla linux dari sumber di fedora

Kernel adalah komponen terpenting dari sistem operasi: di antara yang lain, ini memberikan dukungan untuk berbagai jenis perangkat keras dan mengelola alokasi sumber daya.

Linux adalah kernel monolitik: meskipun fungsinya dapat dimasukkan secara statis atau dibangun dan dimuat sebagai terpisah modul, Itu selalu berjalan sebagai "sepotong tunggal" di ruang alamat yang sama. Dalam tutorial ini kita akan melihat cara mengunduh, mengkompilasi, dan menginstal kernel vanilla linux. Instruksi yang diberikan harus bekerja pada semua distribusi Linux, namun panduan ini difokuskan pada kompilasi kernel pada sistem fedora.

Dalam tutorial ini Anda akan belajar:

  • Cara mengkonfigurasi, mengkompilasi, dan menginstal kernel vanilla linux
  • Cara mengemas kernel yang dikompilasi dan modulnya


Menu Konfigurasi Berbasis NCurses untuk Kernel Linux

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Fedora
Perangkat lunak
  • GCC
  • melenturkan
  • membuat
  • banteng
  • OpenSSL-Devel
  • elfutils-libelf-devel
  • NCURSES-Devel (Diperlukan untuk menggunakan menu berbasis NCURSES untuk mengonfigurasi kernel)
  • QT-Devel (diperlukan untuk menggunakan antarmuka grafis QT untuk mengonfigurasi kernel)
  • RPM-Build (diperlukan untuk mengemas kernel dalam format RPM)
Lainnya Izin root untuk menginstal dependensi yang diperlukan dan kernel yang dikompilasi
Konvensi # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Menginstal dependensi

Untuk dapat mengkompilasi kernel Linux dari sumber, kita perlu menginstal beberapa paket dalam sistem kami:

$ sudo dnf menginstal gcc flex membuat bison openssl-devel elfutils-libelf-devel


Yang di atas hanyalah paket 'inti' yang kita butuhkan. Untuk memohon target konfigurasi tertentu, beberapa paket tambahan harus diinstal: ncurses-devel Dan qt-devel Paket, misalnya, diperlukan untuk mengkonfigurasi penggunaan kernel, masing-masing, dari ncurses berbasis dan antarmuka grafis QT, sedangkan RPM-Build Paket diperlukan untuk membangun rpm yang berisi kernel yang dikompilasi.

Mengunduh Sumber Tarball

Sebagai hal pertama, kita perlu mendapatkan tarball yang berisi sumber kernel linux stabil terbaru. Kami dapat mengunduh dan mengekstrak tarball hanya dengan satu perintah:

$ curl https: // cdn.inti.org/pub/linux/kernel/v5.X/Linux-5.1.5.ter.xz | tar -xj

Di akhir proses pengunduhan, di dalam direktori kerja kami saat ini, kami harus menemukan folder baru yang berisi kode sumber kernel. Kita perlu memasukkannya, dalam hal ini:

$ CD Linux-5.1.5

Pada titik ini kita dapat mengonfigurasi kernel. Pada paragraf berikutnya kita akan melihat target konfigurasi yang paling umum digunakan untuk menyelesaikan tugas.

Mengkonfigurasi kernel

Ada berbagai cara kita dapat mengonfigurasi kernel, dan mereka sesuai dengan yang berbeda target konfigurasi. Saat target konfigurasi dipanggil, jika file bernama .konfigurasi Berisi konfigurasi kernel yang valid ditemukan di direktori sumber, digunakan sebagai titik awal untuk pengaturan. Ini membuat kemungkinan untuk memperbarui atau memodifikasi konfigurasi yang sudah ada, mungkin yang dilengkapi dengan kernel yang diinstal secara default dalam distribusi kami, (dapat ditemukan di dalam /boot direktori, dinamai kernel yang digunakan).

Jika file tidak ditemukan, konfigurasi akan dimulai dari awal dan .konfigurasi file akan dihasilkan setelah kami menyimpan pengaturan kami. Mari kita lihat beberapa target konfigurasi kita bisa gunakan:

konfigurasi

Jika target ini dipanggil, pengguna diminta untuk mengonfigurasi kernel dengan menjawab serangkaian pertanyaan, dengan cara berikut:

* * Linux/x86 5.1.5 Konfigurasi Kernel * * * Kompiler: GCC (GCC) 9.1.1 20190503 (Red Hat 9.1.1-1) * * * Pengaturan Umum * Compile juga driver yang tidak akan memuat (compile_test) [n/y/?] 

Menuconfig

Target ini menggunakan yang bagus dan ramah pengguna ncurses antarmuka untuk memungkinkan kami menghasilkan atau memperbarui konfigurasi kernel. Seperti yang dikatakan sebelumnya, untuk dapat menggunakan antarmuka ini ncurses-devel Paket harus diinstal dalam sistem.



Konfigurasi berbasis ncurses inteface

Menggunakan antarmuka ini, kami dapat menekan H kunci saat menyoroti opsi tertentu untuk mendapatkan informasi dan saran tentang hal itu:



Memperoleh informasi tentang suatu opsi hanyalah masalah memilihnya dan tekan tombol H yang menekan Y pada suatu opsi akan memasukkannya ke dalam kernel secara statis (opsi akan ditandai dengan a *), mendesak N akan mengecualikannya, dan menekan M kunci akan memasukkannya sebagai modul (opsi akan ditandai dengan M). Untuk mencari opsi tertentu, kami dapat menggunakan / kunci dan berikan string atau regex untuk mencari:

Antarmuka ncurses untuk mencari opsi tertentu

xconfig

Dengan memohon ini membuat target, kemungkinan untuk mengkonfigurasi kernel melalui antarmuka grafis berdasarkan pada Qt toolkit jika qt-devel Paket diinstal dalam sistem.



Antarmuka konfigurasi berbasis QT

oldconfig

Target ini berguna saat kami ingin menggunakan konfigurasi kernel yang sudah ada sebagai titik awal. Saat kami memohon target ini, kami diminta untuk mengkonfigurasi hanya fitur yang tersedia di kernel yang kami konfigurasi tetapi tidak termasuk dalam file konfigurasi asli.

LocalModConfig

Memanggil target ini akan menghasilkan atau memperbarui file konfigurasi kernel baru di dasar modul yang saat ini dimuat pada sistem. Hanya mereka yang akan dimasukkan dalam konfigurasi, yang lain akan dinonaktifkan. Ini dapat digunakan sebagai cara cepat untuk mendapatkan kernel yang disesuaikan berdasarkan keadaan mesin saat ini.

localyesconfig

Target ini bekerja serupa dengan LocalModConfig Dengan satu perbedaan besar: fungsi yang disediakan oleh modul yang saat ini dimuat dalam sistem akan dimasukkan secara statis ke dalam kernel.

Menyusun dan memasang kernel

Setelah selesai mengkonfigurasi kernel, kami dapat mengkompilasi kode sumber. Yang harus kita lakukan adalah menjalankan:

$ make


Operasi mungkin memakan waktu, tergantung pada fitur yang kami putuskan untuk dimasukkan ke dalam kernel. Untuk mempercepat proses yang bisa kita jalankan membuat dengan -J opsi dan tentukan jumlah pekerjaan yang akan dijalankan secara bersamaan: nilai yang sering digunakan untuk opsi ini adalah jumlah inti CPU logis + 1. Pada mesin dengan 4 core logis, karena itu kami akan menjalankan:

$ make -j5

Setelah dikompilasi, untuk menginstal kernel, kami dapat dengan mudah dijalankan:

$ sudo membuat instal

File inti kernel akan disalin di dalam /boot direktori. Untuk mengkompilasi dan menginstal modul kernel, sebagai gantinya, kita dapat menjalankan:

$ sudo membuat modul_install

Modul kernel akan dipasang di direktori di bawah /lib/modul dinamai Versi Kernel. Akhirnya, agar kernel baru tersedia dan dapat dipilih saat boot, kita harus meregenerasi konfigurasi grub:

$ sudo grub2 -mkconfig -o/boot/grub2/grub.CFG

Mengemas kernel

Alih -alih memasang kernel yang dikompilasi secara langsung seperti yang kami lakukan di atas, agar dapat mengelola pemasangan dan penghapusannya melalui System Package Manager, kami dapat membuat file Paket RPM. Untuk menyelesaikan tugas, kita harus menggunakan satu di antara RPM-PKG Dan BINRPM-PKG target. Yang pertama akan membangun paket rpm sumber dan biner, yang kedua hanya yang biner. Agar target ini berjalan dengan benar, RPM-Build Paket harus diinstal. Untuk membangun hanya paket rpm biner, kami akan menjalankan:

$ Make Binrpm-pkg

Jika operasi dilakukan tanpa kesalahan, rpmBuild Pohon direktori akan dibuat di direktori rumah kami. Paket RPM yang dibangun akan tersedia di subdirektori ~/rpmbuild/rpms Dinamai sesuai arsitektur sistem.

Pilihan lain adalah mengemas kernel dan modulnya di dalam tarball terkompresi, dengan menggunakan satu di antara TARGZ-PKG, tarbz2-pkg Dan tarxz-pkg target, tergantung pada kompresi yang ingin kami gunakan. Tarball akan dibuat di dalam direktori sumber kernel.



Kesimpulan

Dalam tutorial ini kami belajar untuk mengetahui mengapa Linux disebut kernel monolitik, dan bagaimana komponennya dapat dikonfigurasi secara statis atau sebagai modul. Kami melihat cara mengunduh kernel vanilla dan berbagai metode yang dapat kami gunakan untuk mengonfigurasinya. Akhirnya, kami melihat cara mengkompilasinya, mengemasnya dan menginstalnya di sistem kami. Satu saran terakhir: Jika Anda memutuskan untuk mengkompilasi ulang kernel, selalu merupakan ide yang baik untuk memohon salah satu dari target pembersih sebelum melanjutkan:

  • membersihkan: Menghapus sebagian besar file yang dihasilkan tetapi menjaga konfigurasi dan cukup dukungan build untuk membangun modul eksternal
  • MrProper: Menghapus semua file yang dihasilkan + konfigurasi + berbagai file cadangan
  • Distclean: Mengeksekusi mrProper dan juga menghapus cadangan editor dan file patch

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Unduh Linux
  • File Konfigurasi Linux: 30 Teratas Paling Penting
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 22.04 Jammy Jellyfish…
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Can Linux mendapatkan virus? Menjelajahi kerentanan Linux…
  • Hal -hal yang harus diinstal pada Ubuntu 22.04
  • Cara Dual Boot Kali Linux dan Windows 10