Cara Menyusun Kernel Vanilla Linux Dari Sumber di Fedora

Cara Menyusun Kernel Vanilla Linux Dari Sumber di Fedora

Kernel adalah komponen yang paling penting dalam sistem pengendalian: antara perkara lain, ia memberikan sokongan untuk pelbagai jenis perkakasan dan menguruskan peruntukan sumber.

Linux adalah kernel monolitik: walaupun fungsinya boleh dimasukkan secara statik atau dibina dan dimuatkan sebagai berasingan modul, ia selalu berjalan sebagai "sekeping tunggal" di ruang alamat yang sama. Dalam tutorial ini kita akan melihat cara memuat turun, menyusun dan memasang kernel vanila linux. Arahan yang disediakan harus berfungsi pada semua pengagihan Linux, namun panduan ini memberi tumpuan kepada menyusun kernel pada sistem fedora.

Dalam tutorial ini anda akan belajar:

  • Cara mengkonfigurasi, menyusun dan memasang kernel Vanilla Linux
  • Cara membungkus kernel yang disusun dan modulnya


Menu Konfigurasi Berasaskan NCurses untuk kernel Linux

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Fedora
Perisian
  • GCC
  • flex
  • buat
  • Bison
  • OpenSSL-Devel
  • Elfutils-libelf-devel
  • ncurses-devel (perlu menggunakan menu berasaskan ncurses untuk mengkonfigurasi kernel)
  • QT-Devel (perlu menggunakan antara muka grafik QT untuk mengkonfigurasi kernel)
  • RPM-BUILD (diperlukan untuk membungkus kernel dalam format rpm)
Yang lain Kebenaran akar untuk memasang kebergantungan yang diperlukan dan kernel yang disusun
Konvensyen # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak

Memasang kebergantungan

Untuk dapat menyusun kernel Linux dari sumber kita perlu memasang beberapa pakej dalam sistem kami:

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


Yang di atas hanya pakej 'teras' yang kita perlukan. Untuk memohon konfigurasi khusus mensasarkan beberapa pakej tambahan mesti dipasang: ncurses-devel dan Qt-devel Pakej, sebagai contoh, diperlukan untuk mengkonfigurasi penggunaan kernel, masing-masing, berasaskan ncurses dan antara muka grafik QT, sementara RPM-BUILD Pakej diperlukan untuk membina RPM yang mengandungi kernel yang disusun.

Memuat turun Tarball Sumber

Sebagai perkara pertama, kita perlu mendapatkan tarball yang mengandungi sumber kernel Linux yang stabil terkini. Kita boleh memuat turun dan mengeluarkan tarball dengan hanya satu arahan:

$ curl https: // cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.1.5.tar.xz | tar -xj

Pada akhir proses muat turun, di dalam direktori kerja semasa kami, kami harus mencari folder baru yang mengandungi kod sumber kernel. Kita perlu memasukkannya, dalam kes ini:

$ CD Linux-5.1.5

Pada ketika ini kita dapat mengkonfigurasi kernel. Dalam perenggan seterusnya kita akan melihat sasaran konfigurasi yang paling biasa digunakan untuk menyelesaikan tugas.

Mengkonfigurasi kernel

Terdapat pelbagai cara kita dapat mengkonfigurasi kernel, dan mereka sesuai dengan yang berbeza sasaran konfigurasi. Apabila sasaran konfigurasi dipanggil, jika fail bernama .konfigurasi Mengandungi konfigurasi kernel yang sah terdapat dalam direktori sumber, ia digunakan sebagai titik permulaan untuk persediaan. Ini mungkin untuk mengemas kini atau mengubah suai konfigurasi yang sudah ada, mungkin yang dilengkapi dengan kernel yang dipasang secara lalai dalam pengedaran kami, (ia boleh didapati di dalam /boot direktori, dinamakan sempena kernel yang digunakan).

Sekiranya fail tidak dijumpai, konfigurasi akan bermula dari awal dan .konfigurasi fail akan dijana sebaik sahaja kami menyimpan persediaan kami. Mari lihat beberapa sasaran konfigurasi kita boleh guna:

konfigurasi

Sekiranya sasaran ini dipanggil, pengguna diminta untuk mengkonfigurasi kernel dengan menjawab beberapa soalan, dalam fesyen berikut:

* * Linux/x86 5.1.5 Konfigurasi Kernel * * * Compiler: GCC (GCC) 9.1.1 20190503 (Red Hat 9.1.1-1) * * * Persediaan Umum * Menyusun juga pemandu yang tidak akan memuatkan (compile_test) [n/y/?] 

Menuconfig

Sasaran ini menggunakan yang bagus dan mesra pengguna ncurses antara muka untuk membolehkan kita menjana atau mengemas kini konfigurasi kernel. Seperti yang dikatakan sebelum ini, dapat menggunakan antara muka ini ncurses-devel Pakej mesti dipasang dalam sistem.



Inteface Konfigurasi Berbasis NCurses

Menggunakan antara muka ini, kita boleh menekan h Kunci apabila menyerlahkan pilihan khusus untuk mendapatkan maklumat dan cadangan mengenainya:



Mendapatkan maklumat mengenai pilihan hanyalah soal memilihnya dan tekan kekunci H menekan Y Pada pilihan akan memasukkannya ke dalam kernel secara statik (pilihan akan ditandakan dengan a *), menekan N akan mengecualikannya, dan menekan M kunci akan memasukkannya sebagai modul (pilihan akan ditandakan dengan M). Untuk mencari pilihan tertentu, kita boleh menggunakan / Kunci dan berikan rentetan atau regex untuk mencari:

Antara muka ncurses untuk mencari pilihan tertentu

xconfig

Dengan menggunakan ini menjadikan sasaran, ia mungkin untuk mengkonfigurasi kernel melalui antara muka grafik berdasarkan Qt toolkit jika Qt-devel pakej dipasang dalam sistem.



Antara muka konfigurasi berasaskan QT

OldConfig

Sasaran ini berguna apabila kita mahu menggunakan konfigurasi kernel yang sudah ada sebagai titik permulaan. Apabila kita memanggil sasaran ini, kita diminta untuk mengkonfigurasi hanya ciri -ciri yang terdapat di dalam kernel yang kita konfigurasi tetapi tidak termasuk dalam fail konfigurasi asal.

localmodconfig

Memohon sasaran ini akan menjana atau mengemas kini fail konfigurasi kernel baru di dasar modul yang kini dimuatkan pada sistem. Hanya mereka yang akan dimasukkan dalam konfigurasi, yang lain akan dilumpuhkan. Ini boleh digunakan sebagai cara cepat untuk mendapatkan kernel yang disesuaikan berdasarkan keadaan semasa mesin.

Localyesconfig

Sasaran ini berfungsi sama seperti localmodconfig Dengan satu perbezaan besar: fungsi yang disediakan oleh modul yang kini dimuatkan dalam sistem akan dimasukkan ke dalam kernel.

Menyusun dan memasang kernel

Sebaik sahaja kita selesai mengkonfigurasi kernel, kita dapat menyusun kod sumber. Yang harus kita lakukan hanyalah menjalankan:

$ buat


Operasi mungkin mengambil sedikit masa, bergantung kepada ciri -ciri yang kami memutuskan untuk disertakan dalam kernel. Untuk mempercepat proses yang dapat kita jalankan buat dengan -j pilihan dan tentukan bilangan pekerjaan untuk dijalankan secara serentak: Nilai yang sering digunakan untuk pilihan ini ialah bilangan teras CPU logik + 1. Pada mesin dengan 4 teras logik, kami akan menjalankan:

$ Make -j5

Sebaik sahaja disusun, untuk memasang kernel kita hanya boleh menjalankan:

$ sudo membuat pemasangan

Fail teras kernel akan disalin di dalam /boot direktori. Untuk menyusun dan memasang modul kernel, sebaliknya, kita boleh menjalankan:

$ sudo membuat modul_stall

Modul kernel akan dipasang di direktori di bawah /lib/modul dinamakan sempena versi kernel. Akhirnya, untuk kernel baru tersedia dan boleh dipilih di boot, kita mesti menjana semula konfigurasi grub:

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

Pembungkusan kernel

Daripada memasang kernel yang disusun secara langsung seperti yang kita lakukan di atas, untuk dapat menguruskan pemasangan dan penyingkirannya melalui pengurus pakej sistem, kami boleh membuat Pakej RPM. Untuk melaksanakan tugas kita mesti menggunakannya di antara RPM-PKG dan Binrpm-pkg sasaran. Yang pertama akan membina kedua -dua pakej sumber dan binari rpm, yang kedua hanya binari. Untuk sasaran ini berjalan dengan betul, RPM-BUILD Pakej mesti dipasang. Untuk membina hanya pakej rpm binari, kami akan menjalankan:

$ membuat binrpm-pkg

Sekiranya operasi dilakukan tanpa kesilapan, rpmBuild Pokok direktori akan dibuat di direktori rumah kami. Pakej RPM yang dibina akan tersedia dalam subdirektori ~/rpmbuild/rpms dinamakan sempena seni bina sistem.

Pilihan lain adalah membungkus kernel dan modulnya di dalam tarball yang dimampatkan, dengan menggunakan satu antara Targz-pkg, tarbz2-pkg dan Tarxz-pkg sasaran, bergantung pada mampatan yang ingin kami gunakan. Tarball akan dibuat di dalam direktori sumber kernel.



Kesimpulan

Dalam tutorial ini, kami belajar mengetahui mengapa Linux dipanggil kernel monolitik, dan bagaimana komponennya dapat dikonfigurasi secara statik atau sebagai modul. Kami melihat cara memuat turun kernel vanila dan pelbagai kaedah yang boleh kita gunakan untuk mengkonfigurasinya. Akhirnya, kami melihat cara menyusunnya, membungkusnya dan memasangnya dalam sistem kami. Salah satu nasihat terakhir: Sekiranya anda memutuskan untuk menyusun semula kernel, selalu ada idea yang baik untuk memanggil salah satu daripada sasaran pembersihan Sebelum meneruskan:

  • Bersih: Menghapuskan fail yang paling banyak dijana tetapi simpan konfigurasi dan cukup membina sokongan untuk membina modul luaran
  • Mrproper: Mengeluarkan semua fail yang dihasilkan + konfigurasi + pelbagai fail sandaran
  • distclean: Melaksanakan MRProper dan juga membuang fail sandaran dan patch editor

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Muat turun linux
  • Fail Konfigurasi Linux: 30 teratas yang paling penting
  • Perkara yang perlu dilakukan setelah memasang Ubuntu 22.04 Jur -ubur Jammy ..
  • Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
  • Bolehkah linux mendapat virus? Meneroka kelemahan Linux ..
  • Perkara yang perlu dipasang di Ubuntu 22.04
  • Cara Dual Boot Kali Linux dan Windows 10