Di halaman ini
- 1 Catatan Pendahuluan
- 2 Membangun Paket .deb Kernel
- 2.1 Instal Paket yang Diperlukan Untuk Kompilasi Kernel
- 2.2 Unduh Sumber Kernel
- 2.3 Menerapkan Patch Ke Sumber Kernel (Opsional)
- 2.4 Konfigurasi Kernel
- 2.5 Membangun Kernel
- 2.6 Instal Kernel Baru
- 3.1 Instal Paket yang Diperlukan Untuk Kompilasi Kernel
- 3.2 Unduh Sumber Kernel
- 3.3 Menerapkan Patch Ke Sumber Kernel (Opsional)
- 3.4 Konfigurasi Kernel
- 3.5 Membangun Dan Memasang Kernel
- 3.6 Langkah-Langkah Pasca-Instalasi
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.
4 Tautan
- Debian:http://www.debian.org
- Arsip Kernel Linux:http://www.kernel.org