Kuliax

GNU/Linux untuk Kampus

Alat Pengguna

Alat Situs


devel:pkg:kernel:custom

Membangun Paket Kernel Kustom

Halaman ini menjelaskan langkah-langkah dari awal sampai akhir membangun kembali paket kernel dari backports1).

Sebagai perbandingan, pengembang dapat melihat cara manual.

Perbandingan Modul

Berikut adalah perbandingan modul-modul built-in dan eksternal kernel yang digunakan dalam Linux 2.6.30. Diharapkan dengan adanya tabel ini pengembang dapat melakukan konfigurasi dengan bijak sesuai dengan Kebijakan Kuliax tentang perangkat lunak bebas.

Kebutuhan

  • Debian GNU/Linux 5.0 (lenny)
  • Akses dan konfigurasi /etc/apt/sources.list ke repositori lenny/stable dan backports
    deb http://repo/debian/ stable main contrib non-free
    deb http://repo/debian-backports/ lenny-backports main contrib non-free
    deb-src http://repo/debian-backports/ lenny-backports main contrib non-free
  • Prioritas set ke stable di /etc/apt/preferences
    Package: *
    Pin: release a=stable
    Pin-Priority: 300
    
    Package: *
    Pin: release a=lenny-backports
    Pin-Priority: 200
  • Paket-paket pengembangan: build-essential, bzip2, debhelper, devscripts, fakeroot, gpg, kernel-package, libncurses5-dev, zlib1g-dev, xmlto
  • Paket-paket pbuilder: debootstrap/cdebootstrap, pbuilder
  • Paket-paket pengujian pemaketan: linda dan lintian
  • Ruang penyimpan yang cukup, termasuk direktori temporer /tmp

Langkah-Langkah

  1. Ambil dependensi kompilasi kernel Linux
    sudo apt-get -t stable build-dep linux-2.6
  2. Ambil kode sumber kernel Linux
    apt-get source linux-2.6
  3. Masuk ke direktori hasil dan sunting changelog
    cd linux-2.6*
    dch -v 2.6.30-8kuliax1 -D lumpia --force-distribution
    linux-2.6 (2.6.30-8kuliax1) lumpia; urgency=low
    
      * Rebuild from backports, for Kuliax
      * Change configuration based on Kuliax 7.0 spec
      * Change abi.abiname in debian/config/defines
      * Fix "Torwalds" in debian/copyright
    
    -- Iwan Setiawan <stwn[@]kuliax[.]org>  Tue, 12 Jan 2010 05:05:19 +0700
  4. Sunting abi.abiname pada debian/config/defines
    vim debian/config/defines
    [abi]
    abiname: kuliax.2
  5. Jalankan perintah
    make -f debian/rules source-all

    Abaikan pesan kesalahan yang muncul :-)

  6. Buat direktori build di dalam debian/
    mkdir debian/build/
  7. Bangun pohon berkas kompilasi sesuai target
    fakeroot make -f debian/rules.gen setup_i386
  8. Ubah .config dengan make menuconfig
    cd debian/build/build_i386_none_$TARGET/
    make menuconfig

    ganti TARGET dengan target arsitektur spesifik (flavour), atau salin dari konfigurasi yang pernah disimpan

    cp ../config-2.6.30-kuliax.2 debian/build/build_i386_none_686/.config

    Bangun paket sumber kernel dengan

    debuild -S -sa

    Ulangi langkah 5, 7, dan 8 kecuali perintah debuild

  9. Kompilasi kernel dan hasilkan paket-paket kernel
    fakeroot make -f debian/rules.gen binary-arch_i386 binary-indep \
    DEBIAN_KERNEL_JOBS=${NR_CPUS}

    Ganti NR_CPUS dengan jumlah prosesor yang kita punya

  10. Hasil paket-paket debian ada di direktori parent: linux-doc, linux-headers, linux-headers-*-common, linux-libc-dev, linux-manual, linux-patch-debian, linux-source, linux-support, linux-tree, *.diff.gz, *.dsc, *_source.build, *_source.changes, *.orig.tar.gz

linux-kbuild-2.6

  1. Ambil dependensi kompilasi kbuild Linux
    sudo apt-get -t stable build-dep linux-kbuild-2.6
  2. Ambil kode sumber kernel Linux
    apt-get source linux-kbuild-2.6
  3. Masuk ke direktori hasil
    cd linux-kbuild-2.6*
  4. Sunting changelog
    dch -v 2.6.30-1kuliax1 -D lumpia --force-distribution
    linux-kbuild-2.6 (2.6.30-1kuliax1) lumpia; urgency=low
    
      * Rebuild from backports, for Kuliax
      * Change to python2.5 in debian/bin/gencontrol.py
      * Copy all python scripts from linux-2.6-2.6.30 tree
        to debian/lib/python/debian_linux/
    
    -- Iwan Setiawan <stwn[@]kuliax[.]org>  Tue, 12 Jan 2010 05:05:19 +0700
  5. Ganti python2.4 dengan python2.5 pada baris pertama
    vim debian/bin/gencontrol.py
  6. Salin debian/lib/ dari pohon direktori kode sumber kernel Linux 2.6.30 yang sebelumnya dikompilasi
    cp -r ../../linux-2.6-2.6.30/debian/lib/python/debian_linux/* debian/lib/python/debian_linux/
  7. Periksa dependensi
    dpkg-checkbuilddeps
  8. Bangun paket sumber linux-kbuild
    debuild -S -sa

    Tanda tangani .dsc dan .changes

  9. Bangun linux-kbuild
    debuild

    Tanda tangani .dsc dan .changes

Membangun Satu Varian

Pada Langkah-Langkah di atas paket-paket kernel i386 akan dibangun lengkap (486 sampai amd64). Jika kita ingin membangun satu varian saja misal 686, gunakan perintah berikut pada langkah ke tujuh (7):

fakeroot make -f debian/rules.gen setup_i386_none_686

dan untuk langkah ke sembilan (9)

fakeroot make -f debian/rules.gen binary-arch_i386_none_686 binary-indep \
DEBIAN_KERNEL_JOBS=${NR_CPUS}

Untuk varian lain ganti “686” dengan misal “486” atau yang lainnya.

Kelebihan pembangunan satu varian adalah cepatnya proses, sedang kekurangannya ada satu paket yang tidak dihasilkan yaitu linux-headers-*-common. Kita memerlukan paket tersebut sebagai dependensi linux-headers-* ketika dipasang di sistem.

Catatan

  • Jika kita ingin membangun ulang kernel dengan memodifikasi beberapa berkas tanpa membangun tiap objek yang lain, lakukan hal berikut.
    1. Ubah konfigurasi, kode sumber atau masukkan tambalan
    2. Hapus berkas stamp
      rm debian/stamps/build_i386_none_$TARGET_plain
    3. Jalankan perintah konfigurasi sumber jika diperlukan
      make -f debian/rules source-all
    4. Lakukan langkah kompilasi
  • Untuk membersihkan kode sumber ketika ingin melakukan pembangunan dari awal, gunakan perintah
    make -f debian/rules clean

    atau

    debuild clean

Daftar Bacaan

1) dalam waktu mendatang, Kuliax akan menggunakan kernel testing atau unstable, tergantung pertimbangan dukungan+fitur yang dibutuhkan dan kompatibilitas dengan modul-modul yang digunakan
devel/pkg/kernel/custom.txt · Terakhir diubah: 2010/02/20 00:18 oleh stwn