Difference between revisions of "Compile Kernel: Konfigurasi Kernel"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Sumber: http://www.linuxchix.org/content/courses/kernel_hacking/lesson2 | Sumber: http://www.linuxchix.org/content/courses/kernel_hacking/lesson2 | ||
− | |||
− | + | ==Konfigurasi Kernel== | |
− | + | Linux kernel mempunyai beberapa tool konfigurasi. Setiap tool dapat di jalankan dengan menulis | |
− | + | make <something>config | |
− | |||
− | + | di directory top-level dari source kernel. Semua perintah make harus di jalankan dari directory top-level dari source kernel. | |
− | |||
− | + | * '''make config''' - ini merupakan kerangka dasar dari tool konfigurasi. Ini akan menanya satu per satu dari pertanyaan konfigurasi secara berurut. Kernel Linux mempunyai amat sangat banyak pertanyaan konfigurasi. Jangan gunakan ini kecuali kita kurang kerjaan. | |
− | make | + | |
+ | * '''make oldconfig''' - ini akan membaca file konfigurasi .config dan akan bertanya konfigurasi yang belum di jawab di file tersebut. Cara ini biasanya digunakan untuk upgrade ke versi kernel yang lebih baru. | ||
− | + | * '''make menuconfig''' - ini merupakan konfigurasi yang banyak digunakan oleh kernel hacker. Perintah ini menggunakan pop up berbasis text dan konfigurator menu-style menggunakan library ncurses. Kita bisa masuk ke satu menu yang kita tertarik dan mengubah hanya konfigurasi yang kita inginkan saja. | |
− | + | * '''make xconfig, make gconfig''' - jika kita menjalankan Xwindows, maka ini lebih cantik, lebih di klik dari menuconfig. Konfigurator ini tampaknya tidak sebaik menuconfig karena lebih sensitif pada input file konfigurasi yang ada bug-nya (di samping, karena memang lebih banyak orang menggunakan menuconfig). xconfig menggunakan library qt, sedang gconfig menggunakan library gtk. | |
− | + | ==Hasil Konfigurasi== | |
− | |||
− | + | Setiap program konfigurasi akan menghasilkan file berikut. | |
− | + | * Sebuah file bernama .config di top level directory berisi semua pilihan kita. | |
+ | * Sebuah file bernama autoconf.h di directory include/linux/ mendefinisikan (atau tidak mendefinisikan) directory simbol CONFIG_* sehingga preprocessor C mengetahui apakah simbol tertentu akan di on-kan atau di off-kan. | ||
− | + | Jika kita mempunyai file .config untuk mesin kita, copy saja itu ke directory kernel source dan jalankan | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | make oldconfig | |
+ | Kita dapat mencek ulang konfigurasu dengan perintah | ||
+ | make menuconfig | ||
+ | Jika kita tidak mempunyai .config, kita dapat membuat-nya dengan masuk ke setiap submenu dan men-on-kan atau meng-off-kan opsi yang kita butuhkan. menuconfig dan xconfig mempunyai opsi "Help" yang dapat memperlihatkan apa yang akan kita konfigurasi. Help untuk opsi tertentu, akan menolong kita dapat menentukan apakah opsi tersebut perlu di on atau di off-kan. RedHat dan berbagai distribusi seringkali memberikan contoh file .config di distribusi kernel source di subdirectory dengan nama configs di top-level source directory. | ||
+ | Jika kita mengcompile untuk PowerPC, kita mempunyai banyak sekali config default dari arch/ppc/configs. Perintah | ||
+ | make defconfig | ||
+ | |||
+ | akan mengcopy default file ppc config ke .config. | ||
+ | |||
+ | ==Tip untuk konfigurasi kernel== | ||
+ | |||
+ | * Selalu aktifkan "Prompt for development... drivers". | ||
+ | * Sejak kernel 2.6.8, kita dapat menambahkan string sendiri (seperti inisial anda) di "Local version - append to kernel release" untuk personalisasi string versi kernel (untuk kernel yang lama, kita harus mengedit kalimat EXTRAVERSION di Makefile). | ||
+ | * Selalu matikan module versioning, tapi selalu nyalakan kernel module loader, kernel modules dan module unloading. | ||
+ | * Di bagian kernel hacking, nyalakan semua opsi kecuali "Use 4Kb for kernel stacks instead of 8Kb". Jika kita menggunakan mesin yang pelan, jangan nyalakan "Debug memory allocations". | ||
+ | * Matikan fitur yang tidak kita butuhkan. | ||
+ | * Hanya gunakan module, jika kita mempunya alasan yang kuat untuk menggunakan module. Contoh, kita sedang mengerjakan sebuah driver, kita ingin me-load versi baru tanpa rebooting. | ||
+ | * Pastikan secara teliti kita memilih tipe processor yang benar. Cari tahu jenis processor yang kita pakai menggunakan perintah | ||
+ | |||
+ | cat /proc/cpuinfo. | ||
+ | |||
+ | * Cari tahu PCI device apa yang kita install, gunakan perintah | ||
+ | |||
+ | lspci -v. | ||
+ | |||
+ | * Cari tahu kernel yang kita buat apakah sudah di compile dengan baik menggunakan perintah | ||
+ | |||
+ | dmesg | less. | ||
+ | |||
+ | Kebanyakan device driver akan print out message ketika dia mendeteksi sebuah device. | ||
+ | |||
+ | Jika semua gagal, copy file .config dari teman. | ||
==Referensi== | ==Referensi== | ||
Line 52: | Line 73: | ||
* [[Linux]] | * [[Linux]] | ||
* [[Ubuntu]] | * [[Ubuntu]] | ||
+ | * [[Buku Sistem Operasi]] | ||
+ | |||
+ | ===Secara Umum=== | ||
+ | |||
* [[Sistem Operasi]] | * [[Sistem Operasi]] | ||
+ | |||
+ | ===Instalasi Linux=== | ||
+ | |||
+ | * [[Linux: CLI untuk Survival]] | ||
+ | * [[Linux: Skema Partisi di Linux]] | ||
+ | * [[Linux: Instalasi Sistem Operasi]] | ||
+ | * [[Membuat Repository Ubuntu Lokal menggunakan debmirror]] | ||
+ | |||
+ | ===Compile Kernel=== | ||
+ | |||
* [[Kernel]] | * [[Kernel]] | ||
+ | * [[OS: Linux Kernel]] | ||
+ | * [[Kernel: Anatomi Kernel Source]] | ||
* [[Compile Kernel]] | * [[Compile Kernel]] | ||
* [[Compile Kernel: Konfigurasi Kernel]] | * [[Compile Kernel: Konfigurasi Kernel]] | ||
− | * [[ | + | |
+ | ===Remaster Linux=== | ||
+ | |||
+ | * [[Cara Cepat Melakukan Remastering Ubuntu]] | ||
+ | |||
+ | ===Sistem Operasi untuk Embedded=== | ||
+ | |||
+ | * [[OpenWRT]] | ||
+ | * [[OpenWRT: Download Firmware yang sudah jadi]] | ||
+ | * [[OpenWRT: Source Repository Download]] | ||
+ | * [[OpenWRT: Melihat Daftar Package]] | ||
+ | |||
+ | ====Membuat Firmware Sendiri==== | ||
+ | |||
+ | * [[OpenWRT: Build Firmware]] | ||
+ | * [[OpenWRT: Build Firmware Buffalo WZRHPG450H]] | ||
+ | * [[OpenWRT: Build Firmware Buffalo WZRHPG300N]] | ||
+ | * [[OpenWRT: Build Firmware Ubiquiti NanoStation2]] | ||
+ | * [[OpenWRT: Build Firmware Mikrotik RB433]] | ||
+ | * [[OpenWRT: Build Firmware Linksys WRT160NL]] | ||
+ | * [[OpenWRT: Build Firmware Linksys WRT54GL]] | ||
+ | |||
+ | ====Flash ke Device==== | ||
+ | |||
+ | * [[OpenWRT: Flash Linksys WRT54GL]] | ||
+ | * [[OpenWRT: Flash Buffalo WZRHP450H]] | ||
+ | * [[OpenWRT: Flash Buffalo WZRHP300N]] | ||
+ | * [[OpenWRT: Flash UBNT NanoStation2]] | ||
+ | * [[OpenWRT: Flash Linksys WRT160NL]] | ||
+ | |||
+ | ====Beberapa Tip==== | ||
+ | |||
+ | * [[OpenWRT: Mikrotik RB433]] | ||
+ | * [[OpenWRT: 3G modem]] | ||
+ | * [[OpenWRT: Build Firmware dengan 3G Modem Support]] | ||
+ | * [[OpenWRT: Setup Firewall]] | ||
+ | * [[OpenWRT: Konfigurasi UBNT NanoStation2 tanpa WebGUI]] | ||
+ | |||
+ | ===Tuning Kernel=== | ||
+ | |||
* [[OS: Parameter Kernel Default]] | * [[OS: Parameter Kernel Default]] | ||
+ | |||
+ | ====Tuning Kernel Scheduler==== | ||
+ | |||
* [[OS: Kernel Scheduler]] | * [[OS: Kernel Scheduler]] | ||
+ | * [[OS: Tuning Kernel Scheduler]] | ||
+ | * [[OS: Tuning Completely Fair scheduler CFS]] | ||
* [[OS: Complete Teori Tuning Kernel Scheduler]] | * [[OS: Complete Teori Tuning Kernel Scheduler]] | ||
+ | |||
+ | ====Tuning I/O Scheduler==== | ||
+ | |||
+ | * [[OS: Tuning Completely Fair Queueing CFQ I/O scheduler]] | ||
* [[OS: Complete Teori Tuning I/O Performance]] | * [[OS: Complete Teori Tuning I/O Performance]] | ||
− | * [[OS: Tuning | + | |
− | * [[OS: | + | ====Tuning Manajemen Memory==== |
− | * [[OS: | + | |
+ | * [[OS: Tuning Manajemen Memory]] | ||
+ | |||
+ | ===Android=== | ||
+ | |||
+ | * [[OS: Android - Download]] | ||
+ | |||
+ | ===Membuat Kernel Module=== | ||
+ | |||
+ | * [[OS: Mengerti System Call]] | ||
+ | * [[OS: Membuat Kernel Modul]] | ||
+ | |||
+ | ===Monitoring & Benchmark=== | ||
+ | |||
* [[OS: Build in Monitoring Tool]] | * [[OS: Build in Monitoring Tool]] | ||
* [[Linux Benchmarking]] | * [[Linux Benchmarking]] | ||
* [[OS: Benchmarking menggunakan UnixBench]] | * [[OS: Benchmarking menggunakan UnixBench]] | ||
* [[OS: Benchmarking menggunakan LLCBench]] | * [[OS: Benchmarking menggunakan LLCBench]] | ||
− |
Latest revision as of 06:29, 19 April 2014
Sumber: http://www.linuxchix.org/content/courses/kernel_hacking/lesson2
Konfigurasi Kernel
Linux kernel mempunyai beberapa tool konfigurasi. Setiap tool dapat di jalankan dengan menulis
make <something>config
di directory top-level dari source kernel. Semua perintah make harus di jalankan dari directory top-level dari source kernel.
- make config - ini merupakan kerangka dasar dari tool konfigurasi. Ini akan menanya satu per satu dari pertanyaan konfigurasi secara berurut. Kernel Linux mempunyai amat sangat banyak pertanyaan konfigurasi. Jangan gunakan ini kecuali kita kurang kerjaan.
- make oldconfig - ini akan membaca file konfigurasi .config dan akan bertanya konfigurasi yang belum di jawab di file tersebut. Cara ini biasanya digunakan untuk upgrade ke versi kernel yang lebih baru.
- make menuconfig - ini merupakan konfigurasi yang banyak digunakan oleh kernel hacker. Perintah ini menggunakan pop up berbasis text dan konfigurator menu-style menggunakan library ncurses. Kita bisa masuk ke satu menu yang kita tertarik dan mengubah hanya konfigurasi yang kita inginkan saja.
- make xconfig, make gconfig - jika kita menjalankan Xwindows, maka ini lebih cantik, lebih di klik dari menuconfig. Konfigurator ini tampaknya tidak sebaik menuconfig karena lebih sensitif pada input file konfigurasi yang ada bug-nya (di samping, karena memang lebih banyak orang menggunakan menuconfig). xconfig menggunakan library qt, sedang gconfig menggunakan library gtk.
Hasil Konfigurasi
Setiap program konfigurasi akan menghasilkan file berikut.
- Sebuah file bernama .config di top level directory berisi semua pilihan kita.
- Sebuah file bernama autoconf.h di directory include/linux/ mendefinisikan (atau tidak mendefinisikan) directory simbol CONFIG_* sehingga preprocessor C mengetahui apakah simbol tertentu akan di on-kan atau di off-kan.
Jika kita mempunyai file .config untuk mesin kita, copy saja itu ke directory kernel source dan jalankan
make oldconfig
Kita dapat mencek ulang konfigurasu dengan perintah
make menuconfig
Jika kita tidak mempunyai .config, kita dapat membuat-nya dengan masuk ke setiap submenu dan men-on-kan atau meng-off-kan opsi yang kita butuhkan. menuconfig dan xconfig mempunyai opsi "Help" yang dapat memperlihatkan apa yang akan kita konfigurasi. Help untuk opsi tertentu, akan menolong kita dapat menentukan apakah opsi tersebut perlu di on atau di off-kan. RedHat dan berbagai distribusi seringkali memberikan contoh file .config di distribusi kernel source di subdirectory dengan nama configs di top-level source directory.
Jika kita mengcompile untuk PowerPC, kita mempunyai banyak sekali config default dari arch/ppc/configs. Perintah
make defconfig
akan mengcopy default file ppc config ke .config.
Tip untuk konfigurasi kernel
- Selalu aktifkan "Prompt for development... drivers".
- Sejak kernel 2.6.8, kita dapat menambahkan string sendiri (seperti inisial anda) di "Local version - append to kernel release" untuk personalisasi string versi kernel (untuk kernel yang lama, kita harus mengedit kalimat EXTRAVERSION di Makefile).
- Selalu matikan module versioning, tapi selalu nyalakan kernel module loader, kernel modules dan module unloading.
- Di bagian kernel hacking, nyalakan semua opsi kecuali "Use 4Kb for kernel stacks instead of 8Kb". Jika kita menggunakan mesin yang pelan, jangan nyalakan "Debug memory allocations".
- Matikan fitur yang tidak kita butuhkan.
- Hanya gunakan module, jika kita mempunya alasan yang kuat untuk menggunakan module. Contoh, kita sedang mengerjakan sebuah driver, kita ingin me-load versi baru tanpa rebooting.
- Pastikan secara teliti kita memilih tipe processor yang benar. Cari tahu jenis processor yang kita pakai menggunakan perintah
cat /proc/cpuinfo.
- Cari tahu PCI device apa yang kita install, gunakan perintah
lspci -v.
- Cari tahu kernel yang kita buat apakah sudah di compile dengan baik menggunakan perintah
dmesg | less.
Kebanyakan device driver akan print out message ketika dia mendeteksi sebuah device.
Jika semua gagal, copy file .config dari teman.
Referensi
Pranala Menarik
Secara Umum
Instalasi Linux
- Linux: CLI untuk Survival
- Linux: Skema Partisi di Linux
- Linux: Instalasi Sistem Operasi
- Membuat Repository Ubuntu Lokal menggunakan debmirror
Compile Kernel
- Kernel
- OS: Linux Kernel
- Kernel: Anatomi Kernel Source
- Compile Kernel
- Compile Kernel: Konfigurasi Kernel
Remaster Linux
Sistem Operasi untuk Embedded
- OpenWRT
- OpenWRT: Download Firmware yang sudah jadi
- OpenWRT: Source Repository Download
- OpenWRT: Melihat Daftar Package
Membuat Firmware Sendiri
- OpenWRT: Build Firmware
- OpenWRT: Build Firmware Buffalo WZRHPG450H
- OpenWRT: Build Firmware Buffalo WZRHPG300N
- OpenWRT: Build Firmware Ubiquiti NanoStation2
- OpenWRT: Build Firmware Mikrotik RB433
- OpenWRT: Build Firmware Linksys WRT160NL
- OpenWRT: Build Firmware Linksys WRT54GL
Flash ke Device
- OpenWRT: Flash Linksys WRT54GL
- OpenWRT: Flash Buffalo WZRHP450H
- OpenWRT: Flash Buffalo WZRHP300N
- OpenWRT: Flash UBNT NanoStation2
- OpenWRT: Flash Linksys WRT160NL
Beberapa Tip
- OpenWRT: Mikrotik RB433
- OpenWRT: 3G modem
- OpenWRT: Build Firmware dengan 3G Modem Support
- OpenWRT: Setup Firewall
- OpenWRT: Konfigurasi UBNT NanoStation2 tanpa WebGUI
Tuning Kernel
Tuning Kernel Scheduler
- OS: Kernel Scheduler
- OS: Tuning Kernel Scheduler
- OS: Tuning Completely Fair scheduler CFS
- OS: Complete Teori Tuning Kernel Scheduler