Saya tertarik mengkompilasi kernel baru di bawah Ubuntu 12,04 x86 64 bit.
Saya menemukan halaman wiki ini yang pada dasarnya adalah cermin untuk blog ini dan ada banyak langkah ( git , dll.) Yang tampak tidak berguna bagi saya.
Dengan rilis / distro sebelumnya, saya biasa membuat .config
file dan memodifikasi Makefile
jika perlu, kemudian jalankan make
dan selesai.
Apakah ada cara sederhana untuk melakukan ini di Ubuntu?
Jawaban:
1. Gunakan
apt-get source
untuk mengunduh versi Ubuntu dari kernelmemberikan folder yang berisi, misalnya:
Perbedaan bolded mencakup semua penyesuaian Ubuntu / Debian.
2. Untuk membangun kernel stock dengan milik Anda sendiri
.config
, gunakanmake-kpkg
metode Debian "kuno"Ini adalah cara kuno alternatif yang dijelaskan dalam wiki:
Jika Anda mengkompilasi kernel untuk pertama kalinya:
Kemudian
cd
ke direktori sumber (di sini,linux-3.2.0
), dan jalankanmake oldconfig
untuk membuat.config
file dengan konfigurasi kernel Anda yang sedang berjalan, atau salin bagian ketiga.config
ke direktori ini.Bergantung pada apakah Anda menginginkan konfigurasi teks atau grafis, instal:
(Teks)
(Grafis)
Dan kemudian jalankan:
(Teks)
(Grafis)
Setelah selesai, jalankan:
di mana
N
berapa banyak pekerjaan yang harus dijalankan secara paralel (biasanya jumlah CPU yang Anda miliki), danmy-very-own-kernel
merupakan string khusus untuk mengidentifikasi bangunan ini.Setelah selesai, gambar kernel dan file header akan siap sebagai deb di direktori induk; Anda dapat menginstalnya dengan
sudo dpkg -i
, yang juga akan mengurus penambahan entri GRUB, dll.sumber
linux-3.2.0
direktori dan menjalankanpatch -p1 <../patch.diff
?apt-get source ...
Sudah melakukannya untukmu!fakeroot debian/rules editconfigs
,fakeroot debian/rules clean
,fakeroot debian/rules binary
Adalah benar cara, bebas masalah.Inilah langkah-langkahnya. Prosedur ini berdasarkan pada nixCraft 's How to: Compile Linux kernel 2.6 - tetapi dimodernisasi secara signifikan.
Unduh dan ekstrak kode sumber kernel yang ingin Anda buat.
Anda bisa mendapatkan kode sumber kernel hulu di kernel.org . Versi 3.16.1 (kernel stabil terbaru saat penulisan ini) akan digunakan di sini. Jadi, Anda mungkin perlu memodifikasi perintah ini jika Anda menggunakan versi yang berbeda.
Kode sumber kernel saat ini disediakan di. tar . arsip xz , jadi klik tautan "tar.xz" oleh versi apa pun yang Anda inginkan:
Setelah masuk
cd
ke direktori tempat Anda mengunduh arsip, Anda dapat mengekstraknya dengantar
:Instal alat bantu yang diperlukan dan lakukan konfigurasi kernel.
Untuk mendapatkan Ubuntu toolchain (
gcc
,make
, dan sebagainya) menginstal build-essential metapackage:Dua cara yang mudah digunakan untuk mengkonfigurasi apa yang masuk ke kernel Anda disediakan oleh
make
targetxconfig
danmenuconfig
.xconfig
menjalankan utilitas konfigurasi grafis, sementaramenuconfig
berbasis teks (yaitu, antarmuka muncul sepenuhnya dalam terminal Anda). Masing-masing memerlukan beberapa perangkat lunak tambahan yang tidak disediakan oleh build-essential .Untuk mengkonfigurasi secara grafis , instal libqt4-dev dan pkg-config dan jalankan
make xconfig
:Untuk mengkonfigurasi di terminal , instal
libncurses5-dev
(terima kasih kepada Hannu untuk info ini) dan jalankanmake menuconfig
:Bangun kernel yang sudah dikonfigurasi.
Pertama jalankan ini untuk mengkompilasi kernel dan membuat
vmlinuz
:vmlinuz
adalah "kernel." Secara khusus, ini adalah image kernel yang akan dikompresi dan dimuat ke memori oleh GRUB atau apa pun bootloader lain yang Anda gunakan.Kemudian buat modul kernel yang dapat dimuat :
Instal kernel Anda yang baru dibangun.
Dengan asumsi
make
perintah - perintah tersebut selesai dengan sukses, saatnya untuk menginstal kernel baru. Pertama instal modul:Kemudian instal kernel itu sendiri:
Itu menempatkan
vmlinuz-3.16.1
(salinanvmlinuz
),config-3.16.1
(file teks menyimpan parameter konfigurasi kernel), danSystem.map-3.16.1
( tabel pencarian simbol kernel ) di/boot
. Untuk detail lebih lanjut, lihat posting comp.os.linux.misc ini oleh Hadron danman installkernel
.Pengaturan akhir, sehingga kernel dapat dimulai dan mem-boot sistem:
Bagian ini sebagian didasarkan pada informasi dalam Kernel / Kompilasi .
Dengan kernel yang sekarang diperlukan, dibutuhkan:
sebuah entri dalam konfigurasi boot loader , sehingga Anda dapat memilih dan mem-boot darinya.
sebuah RAM filesystem awal , lingkungan dari mana driver beban kernel dan tunggangan yang
/
filesystem .(Jika Anda menginstal kernel lama atau telah mengkonfigurasi kernel Anda untuk menggunakan devfs alih-alih udev yang lebih baru , Anda mungkin perlu atau ingin menyiapkan ramdisk awal . Jika Anda membutuhkannya, lihat
man initrd
.)Hasilkan initramf Anda dengan
mkinitramfs
:Ketika Anda memperbarui konfigurasi boot loader GRUB2 - yang telah menjadi default di Ubuntu sejak 9.10 - secara otomatis akan mendeteksi kernel baru dan menambahkan opsi untuk boot dari sana.
Coba kernel Anda.
Sekarang Anda dapat reboot untuk menguji kernel baru Anda. Anda mungkin perlu menahan Shiftatau menekan Escselama boot untuk melihat menu boot GRUB di mana Anda dapat memilih di antara kernel yang berbeda yang diinstal.
Untuk menjadikan kernel Anda (atau yang lain) sebagai default, lihat Bagaimana cara mengubah urutan boot GRUB?
sumber
make menuconfig
membutuhkanapt get install libncurses5-dev
Instruksi cepat untuk membangun kernel Ubuntu (tidak seperti vanilla) dapat ditemukan di sini: https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel .
Saya tidak akan menyalin seluruh wiki, tetapi saya akan mencantumkan langkah-langkah minimal untuk mengkompilasi versi kernel Ubuntu yang saat ini telah Anda instal. (Untuk mendapatkan versi terbaru, klon repositori kernel git dari rilis Ubuntu yang akan datang.) Diuji pada Ubuntu 16.04.
sumber