GNU/Linux >> Belajar Linux >  >> Debian

Cara Mengkompilasi Kernel - Cara Debian

Di halaman ini

  1. 1 Catatan Pendahuluan
  2. 2 Membangun Paket .deb Kernel
    1. 2.1 Instal Paket yang Diperlukan Untuk Kompilasi Kernel
    2. 2.2 Unduh Sumber Kernel
    3. 2.3 Menerapkan Patch Ke Sumber Kernel (Opsional)
    4. 2.4 Konfigurasi Kernel
    5. 2.5 Membangun Kernel
    6. 2.6 Instal Kernel Baru
  • 3 Membangun Kernel Dengan Cara Tradisional
    1. 3.1 Instal Paket yang Diperlukan Untuk Kompilasi Kernel
    2. 3.2 Unduh Sumber Kernel
    3. 3.3 Menerapkan Patch Ke Sumber Kernel (Opsional)
    4. 3.4 Konfigurasi Kernel
    5. 3.5 Membangun Dan Memasang Kernel
    6. 3.6 Langkah-Langkah Pasca-Instalasi
  • 4 Tautan
  • Setiap distribusi memiliki beberapa alat khusus untuk membangun kernel khusus dari sumbernya. Artikel ini adalah tentang mengkompilasi kernel pada sistem Debian (Etch). Ini menjelaskan cara membangun kernel khusus menggunakan sumber kernel terbaru yang tidak dimodifikasi dari www.kernel.org (kernel vanilla) sehingga Anda independen dari kernel yang disediakan oleh distribusi Anda. Ini juga menunjukkan cara menambal sumber kernel jika Anda memerlukan fitur yang tidak ada di sana.

    Saya tidak memberikan jaminan apa pun bahwa ini akan berhasil untuk Anda!

    1 Catatan Awal

    Saya akan menjelaskan dua cara mengkompilasi kernel baru. Dengan menggunakan metode pertama, Anda akan mendapatkan paket kernel .deb yang dapat diinstal pada sistem, dan yang dapat Anda bagikan dengan orang lain dan diinstal pada sistem Debian Etch lainnya.

    Metode kedua adalah mengkompilasi kernel dengan cara "tradisional". Cara ini bekerja pada semua distribusi Linux, tetapi tentu saja, Anda tidak akan mendapatkan paket kernel .deb.

    2 Membangun Paket .deb Kernel

    Bab ini menunjukkan cara membangun kernel dan berakhir dengan paket .deb yang dapat Anda instal dan bagikan dengan orang lain.

    2.1 Instal Paket yang Diperlukan Untuk Kompilasi Kernel

    Pertama kita perbarui database paket kita:

    apt-get update

    Kemudian kita install semua paket yang dibutuhkan seperti ini:

    apt-get install kernel-package ncurses-dev fakeroot wget bzip2 build-essential

    2.2 Unduh Sumber Kernel

    Selanjutnya kita download kernel yang kita inginkan ke /usr/src. Buka www.kernel.org dan pilih kernel yang ingin Anda instal, mis. linux-2.6.21.3.tar.bz2 (Anda dapat menemukan semua kernel 2.6 di sini:http://www.kernel.org/pub/linux/kernel/v2.6/). Kemudian Anda dapat mengunduhnya ke /usr/src seperti ini:

    cd /usr/src
    wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.3.tar.bz2

    Kemudian kami membongkar sumber kernel dan membuat symlink linux ke direktori sumber kernel:

    tar xjf linux-2.6.21.3.tar.bz2
    ln -s linux-2.6.21.3 linux
    cd /usr/src/linux

    2.3 Menerapkan Patch Ke Sumber Kernel (Opsional)

    Terkadang Anda memerlukan driver untuk perangkat keras yang tidak didukung oleh kernel baru secara default, atau Anda memerlukan dukungan untuk teknik virtualisasi atau beberapa teknologi mutakhir lainnya yang belum masuk ke kernel. Dalam semua kasus ini, Anda harus menambal sumber kernel (asalkan ada tambalan yang tersedia...).

    Sekarang mari kita asumsikan Anda telah mengunduh patch yang diperlukan (saya menyebutnya patch.bz2 dalam contoh ini) ke /usr/src. Beginilah cara Anda menerapkannya ke sumber kernel Anda (Anda harus tetap berada di direktori /usr/src/linux):

    bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
    bzip2 -dc /usr/src/patch.bz2 | patch -p1

    Perintah pertama hanyalah sebuah tes, tidak melakukan apa pun pada sumber Anda. Jika tidak menunjukkan kesalahan, Anda dapat menjalankan perintah kedua yang benar-benar menerapkan tambalan. Jangan lakukan jika perintah pertama menunjukkan kesalahan!

    Anda juga dapat menerapkan kernel prepatches ke sumber kernel Anda. Misalnya, jika Anda memerlukan fitur yang hanya tersedia di kernel 2.6.22-rc3, tetapi sumber lengkapnya belum dirilis untuk kernel ini. Sebagai gantinya, tersedia patch-2.6.22-rc3.bz2. Anda dapat menerapkan patch itu ke sumber kernel 2.6.21, tetapi tidak ke kernel 2.6.21.1 atau 2.6.21.2, dll. Ini dijelaskan di http://kernel.org/patchtypes/pre.html:

    Prepatch setara dengan rilis alfa untuk Linux; mereka tinggal di direktori pengujian di arsip. Mereka harus diterapkan menggunakan utilitas patch(1) ke kode sumber rilis lengkap sebelumnya dengan nomor versi 3 bagian (misalnya, 2.6.12-rc4 prepatch harus diterapkan ke sumber kernel 2.6.11, bukan , misalnya, 2.6.11.10.)

    Jadi jika Anda ingin mengkompilasi kernel 2.6.22-rc3, Anda harus mengunduh sumber kernel 2.6.21 (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21. tar.bz2) pada langkah 3 sebagai ganti kernel 2.6.21.3!

    Ini adalah bagaimana Anda menerapkan patch 2.6.22-rc3 ke kernel 2.6.21:

    cd /usr/src 
    wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.22-rc3.bz2
    cd /usr/src/linux
    bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1 --dry-run
    bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1

    2.4 Konfigurasi Kernel

    Sebaiknya gunakan konfigurasi kernel Anda saat ini sebagai dasar untuk kernel baru Anda. Oleh karena itu kita salin konfigurasi yang ada ke /usr/src/linux:

    make clean && make mrproper
    cp /boot/config-`uname -r` ./.config

    Lalu kita jalankan

    make menuconfig

    yang menampilkan menu konfigurasi kernel. Buka Load an Alternate Configuration File dan pilih .config (yang berisi konfigurasi kernel kerja Anda saat ini) sebagai file konfigurasi:

    Kemudian telusuri menu konfigurasi kernel dan tentukan pilihan Anda. Setelah selesai dan pilih Keluar, jawab pertanyaan berikut (Apakah Anda ingin menyimpan konfigurasi kernel baru Anda?) dengan Ya:

    2.5 Membangun Kernel

    Untuk membangun kernel, jalankan dua perintah ini:

    make-kpkg clean
    fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

    Setelah --append-to-version=Anda dapat menulis string apa pun yang membantu Anda mengidentifikasi kernel, tetapi harus dimulai dengan tanda minus (-) dan tidak boleh berisi spasi.

    Sekarang bersabarlah, kompilasi kernel dapat memakan waktu beberapa jam, tergantung pada konfigurasi kernel dan kecepatan prosesor Anda.

    2.6 Instal Kernel Baru

    Setelah kernel berhasil dibuat, Anda dapat menemukan dua paket .deb di direktori /usr/src.

    cd /usr/src
    ls -l

    Pada sistem pengujian saya, mereka disebut linux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb (yang berisi kernel sebenarnya) dan linux-headers-2.6.21.3-custom_2.6.21.3- custom-10.00.Custom_i386.deb (yang berisi file yang diperlukan jika Anda ingin mengkompilasi modul kernel tambahan nanti). Saya menginstalnya seperti ini:

    dpkg -i linux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb
    dpkg -i linux-headers-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb

    (Sekarang Anda bahkan dapat mentransfer dua file .deb ke sistem Debian Etch lainnya dan menginstalnya di sana dengan cara yang persis sama, yang berarti Anda tidak perlu mengkompilasi kernel di sana lagi.)

    Itu dia. File konfigurasi bootloader GRUB /boot/grub/menu.lst telah dimodifikasi secara otomatis, dan ramdisk untuk kernel baru telah dibuat di /boot.

    Sekarang reboot sistem:

    shutdown -r now

    Pada prompt boot, pilih kernel baru Anda (harus dipilih secara default):

    Jika semuanya berjalan dengan baik, itu akan muncul dengan kernel baru. Anda dapat memeriksa apakah itu benar-benar menggunakan kernel baru Anda dengan menjalankan

    uname -r

    Ini akan menampilkan sesuatu seperti

    2.6.21.3-custom

    Jika sistem tidak mulai, mulai ulang, dan pilih kernel lama Anda pada prompt boot. Anda sekarang dapat mencoba lagi untuk mengkompilasi kernel yang berfungsi. Jangan lupa untuk menghapus bait kernel yang tidak berfungsi dari /boot/grub/menu.lst.

    3 Membangun Kernel Dengan Cara Tradisional

    Bab ini menjelaskan pendekatan berbeda yang dapat digunakan pada sistem Linux apa pun (terlepas dari detail seperti membuat ramdisk atau memperbarui bootloader). Tentu saja Anda tidak akan mendapatkan paket kernel .deb.

    3.1 Instal Paket yang Diperlukan Untuk Kompilasi Kernel

    Pertama kita perbarui database paket kita:

    apt-get update

    Kemudian kita install semua paket yang dibutuhkan seperti ini:

    apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential

    3.2 Unduh Sumber Kernel

    Selanjutnya, kita mengunduh kernel yang kita inginkan ke /usr/src. Buka www.kernel.org dan pilih kernel yang ingin Anda instal, mis. linux-2.6.21.3.tar.bz2 (Anda dapat menemukan semua kernel 2.6 di sini:http://www.kernel.org/pub/linux/kernel/v2.6/). Kemudian Anda dapat mengunduhnya ke /usr/src seperti ini:

    cd /usr/src
    wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.3.tar.bz2

    Kemudian kami membongkar sumber kernel dan membuat symlink linux ke direktori sumber kernel:

    tar xjf linux-2.6.21.3.tar.bz2
    ln -s linux-2.6.21.3 linux
    cd /usr/src/linux

    3.3 Menerapkan Patch ke Sumber Kernel (Opsional)

    Terkadang Anda memerlukan driver untuk perangkat keras yang tidak didukung oleh kernel baru secara default, atau Anda memerlukan dukungan untuk teknik virtualisasi atau beberapa teknologi mutakhir lainnya yang belum masuk ke kernel. Dalam semua kasus ini, Anda harus menambal sumber kernel (asalkan ada tambalan yang tersedia...).

    Sekarang mari kita asumsikan Anda telah mengunduh patch yang diperlukan (saya menyebutnya patch.bz2 dalam contoh ini) ke /usr/src. Beginilah cara Anda menerapkannya ke sumber kernel Anda (Anda harus tetap berada di direktori /usr/src/linux):

    bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
    bzip2 -dc /usr/src/patch.bz2 | patch -p1

    Perintah pertama hanyalah sebuah tes, tidak melakukan apa pun pada sumber Anda. Jika tidak menunjukkan kesalahan, Anda dapat menjalankan perintah kedua yang benar-benar menerapkan tambalan. Jangan lakukan jika perintah pertama menunjukkan kesalahan!

    Anda juga dapat menerapkan kernel prepatches ke sumber kernel Anda. Misalnya, jika Anda memerlukan fitur yang hanya tersedia di kernel 2.6.22-rc3, tetapi sumber lengkapnya belum dirilis untuk kernel ini. Sebagai gantinya, tersedia patch-2.6.22-rc3.bz2. Anda dapat menerapkan patch itu ke sumber kernel 2.6.21, tetapi tidak ke kernel 2.6.21.1 atau 2.6.21.2, dll. Ini dijelaskan di http://kernel.org/patchtypes/pre.html:

    Prepatch setara dengan rilis alfa untuk Linux; mereka tinggal di direktori pengujian di arsip. Mereka harus diterapkan menggunakan utilitas patch(1) ke kode sumber rilis lengkap sebelumnya dengan nomor versi 3 bagian (misalnya, 2.6.12-rc4 prepatch harus diterapkan ke sumber kernel 2.6.11, bukan , misalnya, 2.6.11.10.)

    Jadi jika Anda ingin mengkompilasi kernel 2.6.22-rc3, Anda harus mengunduh sumber kernel 2.6.21 (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21. tar.bz2) pada langkah 3 sebagai ganti kernel 2.6.21.3!

    Ini adalah bagaimana Anda menerapkan patch 2.6.22-rc3 ke kernel 2.6.21:

    cd /usr/src 
    wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.22-rc3.bz2
    cd /usr/src/linux
    bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1 --dry-run
    bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1

    3.4 Konfigurasi Kernel

    Sebaiknya gunakan konfigurasi kernel Anda saat ini sebagai dasar untuk kernel baru Anda. Oleh karena itu kita salin konfigurasi yang ada ke /usr/src/linux:

    make clean && make mrproper
    cp /boot/config-`uname -r` ./.config

    Lalu kita jalankan

    make menuconfig

    yang menampilkan menu konfigurasi kernel. Buka Load an Alternate Configuration File dan pilih .config (yang berisi konfigurasi kernel kerja Anda saat ini) sebagai file konfigurasi:

    Kemudian telusuri menu konfigurasi kernel dan tentukan pilihan Anda. Setelah selesai dan pilih Keluar, jawab pertanyaan berikut (Apakah Anda ingin menyimpan konfigurasi kernel baru Anda?) dengan Ya:

    3.5 Membangun Dan Memasang Kernel

    Untuk membangun kernel, jalankan perintah berikut:

    make all
    make modules_install
    make install

    Sekarang bersabarlah, kompilasi kernel dapat memakan waktu beberapa jam, tergantung pada konfigurasi kernel dan kecepatan prosesor Anda.

    3.6 Langkah Pasca-Instalasi

    Kernel baru sekarang telah terinstal, tetapi kita masih memerlukan ramdisk untuk kernel baru kita (jika tidak, sistem kemungkinan besar tidak akan bisa boot!), dan kita perlu memberi tahu bootloader GRUB tentang kernel baru kita.

    Pertama, kita lakukan ini:

    depmod 2.6.21.3
    apt-get install yaird

    Kemudian kita buat ramdisk dengan perintah berikut:

    mkinitrd.yaird -o /boot/initrd.img-2.6.21.3 2.6.21.3

    Konfigurasi GRUB sangat mudah di Debian Etch. Yang harus kita lakukan adalah lari

    update-grub

    Ini akan mendeteksi kernel dan ramdisk baru dan memperbarui /boot/grub/menu.lst untuk kita.

    Sekarang reboot sistem:

    shutdown -r now

    Pada prompt boot, pilih kernel baru Anda (harus dipilih secara default). Jika semuanya berjalan dengan baik, itu akan muncul dengan kernel baru. Anda dapat memeriksa apakah itu benar-benar menggunakan kernel baru Anda dengan menjalankan

    uname -r

    Ini akan menampilkan sesuatu seperti

    2.6.21.3

    Jika sistem tidak mulai, mulai ulang, dan pilih kernel lama Anda pada prompt boot. Anda sekarang dapat mencoba lagi untuk mengkompilasi kernel yang berfungsi. Jangan lupa untuk menghapus bait kernel yang tidak berfungsi dari /boot/grub/menu.lst.

    • Debian:http://www.debian.org
    • Arsip Kernel Linux:http://www.kernel.org

    Debian
    1. Membangun kernel Linux dengan cara Debian

    2. Bagaimana mengubah gambar profil di Debian 10

    3. Cara Terbaik Untuk Mengkompilasi Kernel Untuk Prosesor I7?

    1. Bagaimana mengkompilasi kernel Linux di abad ke-21

    2. Cara Memasang Desktop Budgie di Debian

    3. Bagaimana cara memeriksa HZ di terminal?

    1. Cara Menginstal Desktop Pantheon di Debian

    2. Cara menginstal header kernel di Debian

    3. Cara menginstal MySQL terbaru di Debian 10