Cara mengkompilasi kernel vanilla linux dari sumber di fedora
- 4422
- 175
- Jermaine Mohr
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
Kategori | Persyaratan, konvensi atau versi perangkat lunak yang digunakan |
---|---|
Sistem | Fedora |
Perangkat lunak |
|
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