Friday, January 27, 2012

Debootstrap: Membangun GNU/Linux Debian Gado-gado Live CD



Debootstrap adalah perangkat lunak yang dapat digunakan untuk membuat sistem dasar debian pada sebuah lokasi yang telah ditentukan tanpa menggunakan apt atau dpkg, dalam bekerja membuat sistem dasar, debootstrap hanya mengunduh paket perangkat lunak yang dibutuhkan kemudian mengekstraknya. Sistem dasar yang telah selesai dibuat selanjutnya dapat dichroot dan digunakan untuk berbagai keperluan, mulai dari menguji perangkat lunak debian, membuat paket perangkat lunak debian sampai membuat  Debian LiveCD seperti yang akan dibahas pada artikel kali ini,

Sebelum memulai siapkan koneksi internet dan pasang aplikasi yang dibutuhkan pada sistem yang digunakan, pada proses debootstrap kali ini saya menggunakan sistem operasi GNU/Linux Ubuntu 11.10 Oneiric Ocelot, dapat juga menggunakan GNU/Linux Debian,  BlankON atau distribusi GNU/Linux lainnya

sudo apt-get install debootstrap syslinux debian-archive-keyring

Buat direktori kerja yang akan digunakan untuk menampung hasil dari debootstrap dan berkas live-cd, bebas mau dibuat dimana saja, yang penting memiliki ruang kosong yang cukup

mkdir -p /chroot/{debian6,cdfs}; mkdir -p /chroot/cdfs/{isolinux,live}

Jalankan proses debootstrap , pada tahapan ini saya menggunakan repository Debian Squeeze lokal dari kambing.ui.ac.id ,

sudo debootstrap --arch i386 squeeze /chroot/debian6 http://kambing.ui.ac.id/debian

Proses debootstrap Debian
Kecepatan proses debootstrap sangat tergantung dari koneksi internet yang digunakan untuk mengunduh paket perangkat lunak, semakin cepat koneksi internet, semakin cepat juga proses debootstrap selesai, dengan koneksi internet yang saya miliki proses debootstrap selesai dalam waktu 15 menit.

Setelah selesai, salin berkas resolv.conf kesistem dasar yang telah dibuat sebelumnya menggunakan deboostrap, hal ini dilakukan agar sistem chroot dapat terhubung kejaringan lokal,

cp /etc/resolv.conf /chroot/debian6/etc/

Tambahkan repository debian squeeze pada lingkungan chroot,
gedit /chroot/debian6/etc/apt/sources.list

deb http://kambing.ui.ac.id/debian squeeze main contrib non-free
deb http://kambing.ui.ac.id/debian squeeze-proposed-updates main contrib non-free
deb http://kambing.ui.ac.id/debian-security squeeze/updates main contrib non-free

Mount filesystem yang dibutuhkan dan lakukan chroot pada sistem dasar yang telah dibuat,lanjutkan dengan update repository

sudo mount --bind /dev/ /chroot/debian6/dev; sudo chroot /chroot/debian6

mount -t proc none /proc; mount -t sysfs none /sys; mount -t devpts none /dev/pts

export HOME=/root; export LC_ALL=C; apt-get update

Update repository Debian
Setelah proses update selesai, pasang kernel kedalam lingkungan chroot, sebelumnya bisa melihat terlebih dahulu kernel yang tersedia,

apt-cache search linux-image

Kernel yang tersedia pada repository
Ketika memasang kernel pada Debian   (chroot), jika sistem yang digunakan memiliki kernel yang berbeda dengan kernel yang akan dipasang pada lingkungan chroot, besar kemungkinan akan muncul pesan-pesan missing something, lanjutkan proses dan cuekin saja :D

apt-get install linux-headers-3.2.0-1-686-pae linux-image-3.2.0-1-686-pae

pesan-pesan missing something :D
Setelah proses pemasangan kernel selesai, lanjutkan dengan memasang antarmuka desktop dan perangkat lunak yang dikehendaki, gunakan opsi --no-install-recommends jika dibutuhkan.

Siapkan koneksi internet untuk proses pemasangan aplikasi
Tambahkan repository unstable debian (Sid) dan repository tambahan lainnya, jika ingin memasang paket perangkat lunak, pustaka dan kernel terbaru, dengan resiko ditanggung sendiri tentunya :D. berikut daftar repository tambahan yang saya gunakan,

###### Debian Testing Repos
deb http://ftp.debian.org/debian/ testing main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free

###### Debian Sid Repos
deb http://ftp.debian.org/debian/ sid main contrib non-free
*tidak direkomendasikan untuk mencampurkan repository

Setelah semua perangkat lunak yang dibutuhkan selesai dipasang, lanjutkan dengan memasang paket perangkat lunak yang dibutuhkan untuk membuat debian-live filesystem

apt-get install live-boot discover xresprobe live-config menu menu-l10n kexec-tools bzip2
*Membutuhkan beberapa paket dari Debian Testing Repos

Karena official debian live-installer membutuhkan custom initrd.img yang tidak terdapat pada Debian Live-CD yang saya buat, sebagai alternatif saya menggunakan live-installer milik Linux Mint Debian Edition yang lebih mudah dioprek, untuk keperluan modifikasi saya memilih mengambil source Mint live-installer di alamat http://github.com/linuxmint/live-installer.git dan membuildnya kembali menjadi .deb untuk selanjutnya dipasang pada lingkungan chroot (Debian), proses build saya lakukan menggunakan Ubuntu 11.10

git clone http://github.com/linuxmint/live-installer.git

Penyesuian Mint Live-Installer sebelum dibuild
Proses build membutuhkan debhelper dan beberapa perangkat lunak dependency, pastikan telah terpasang disistem.

dpkg-buildpackage

Build package sukses
Salin berkas binary (.deb) yang dihasilkan dari proses builde live-installer kelingkungan chroot (debian), salah satu paket perangkat lunak inxi yang merupakan dependency dari live-installer tidak terdapat pada repository Debian, unduh terpisah paket inxi dari alamat berikut :


Pasang paket dependency yang dibutuhkan,

apt-get install gawk mesa-utils libsigsegv2 libglew1.6 glew-utils python2.7 python-glade2 geoip-database gparted libgeoip1 python-decorator python-geoip python-parted python-webkit xfsprogs libreadline5 reiserfsprogs reiser4progs jfsutils geoip-bin grub

Hapus debian live installer,

apt-get remove debian-installer-launcher 

Letakkan  .deb package live-installer, live-installer-slideshow dan inxi ,dalam satu folder kemudian pasang menggunakan perintah dpkg,

dpkg -i *.deb

Pemasangan Mint Live Installer
Jika terjadi missing dependency, gunakan opsi apt-get install -f untuk memperbaikinya, untuk pengguna yang tidak ingin ribet dapat menggunakan repository Linux Mint Debian Edition untuk memasang live-installer,

deb http://packages.linuxmint.com/ debian main upstream import
#deb http://debian.linuxmint.com/latest testing main contrib non-free
*tidak direkomendasikan untuk mencampurkan repository

perlu diketahui live-installer milik mint-debian belum mendukung Tipe Partisi LVM (Logical Volume Manager) dan pada beberapa kondisi terkadang installer mengalami stuck pada proses configuring bootloader.

selanjutnya buat sebuah berkas konfigurasi dengan nama locale pada direktori /etc/default/ dilingkungan chroot,

echo "LANG="en_US.UTF-8"" >> /etc/default/locale

 Update initramfs :

export kversion=`cd /boot && ls vmlinuz-* | sed 's@vmlinuz-@@'`; depmod -a ${kversion}; update-initramfs -u -k ${kversion}

Hapus semua berkas-berkas yang tidak dibutuhkan pada lingkungan chroot :

rm -rf /etc/resolv.conf /tmp/*; apt-get clean

umount filesystem dan keluar dari lingkungan chroot

umount -lf /proc; umount -lf /sys; umount -lf /dev/pts; exit

sudo umount -lf /chroot/debian6/dev

Pastikan semua filesystem yang digunakan oleh lingkungan chroot telah diumount, sebelum melanjutkan keproses selanjutnya,  cek menggunakan df -a untuk memastikannya,  kompres live filesystem (direktori chroot) menggunakan squashfs-tools,

mksquashfs debian6/ cdfs/live/filesystem.squashfs

Proses kompres live filesystem squashfs
Buat berkas filesystem.manifest dan filesystem.manifest-desktop, berkas ini diperlukan untuk proses installasi, filesystem.manifest berisi daftar nama seluruh paket yang terdapat pada LiveCD (filesystem.squashfs) sedangkan filesystem.manifest-desktop berisi daftar nama paket yang akan dipasang pada sistem local (harddisk),

sudo chroot /chroot/debian6 dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee cdfs/live/filesystem.manifest

sudo cp -v /chroot/cdfs/live/filesystem.manifest /chroot/cdfs/live/filesystem.manifest-desktop; sudo sed -i "/user-setup gparted/d" /chroot/cdfs/live/filesystem.manifest-desktop

Buat sebuah berkas dengan nama filesystem.size untuk menyimpan ukuran dari live filesystem (lingkungan chroot), 

printf $(sudo du -sx --block-size=1 /chroot/debian6 | cut -f1) >> /chroot/cdfs/live/filesystem.size

Salin berkas yang dibutuhkan (isolinux) untuk membuat bootable LiveCD

cp -v /usr/lib/syslinux/{vesamenu.c32,isolinux.bin} /chroot/cdfs/isolinux/

Salin kernel, initrd.img dan memtest yang akan digunakan pada  LiveCD

sudo cp -v /chroot/debian6/boot/vmlinuz-3.2.0-1-686-pae cdfs/live/vmlinuz; sudo cp -v /chroot/debian6/boot/initrd.img-3.2.0-1-686-pae cdfs/live/initrd.img
*Sesuaikan dengan versi kernel yang digunakan

Salin berkas yang dibutuhkan
Buat berkas yang berisi konfigurasi bootloader isolinux.cfg, isikan dengan perintah dibawah ini dan simpan.

default vesamenu.c32
timeout 100

menu background splash.png
menu title Welcome to GNU/Linux Debian Gado-Gado 32 Bit
menu color title * #FFFFFFFF *
menu color border * #00000000 #00000000 none
menu color sel  * #ffffffff #76a1d0ff *
menu color hotsel 1;7;37;40 #ffffffff #76a1d0ff *
menu color tabmsg * #ffffffff #00000000 *
menu color help  37;40 #ffdddd00 #00000000 none
menu vshift 17
menu rows 10
menu helpmsgrow 15
# The command line must be at least one line from the bottom.
menu cmdlinerow 16
menu timeoutrow 16
menu tabmsgrow 18
menu tabmsg Press ENTER to boot or TAB to edit a menu entry

label live
 menu label Live 686
 kernel /live/vmlinuz
 append initrd=/live/initrd.img boot=live config   quiet

label live-failsafe
 menu label Live 686 (failsafe)
 kernel /live/vmlinuz
 append initrd=/live/initrd.img boot=live config   noapic noapm nodma nomce nolapic nomodeset nosmp vga=normal

label memtest
 menu label Memory Test
 kernel /live/memtest

label local
        menu label Boot from local drive
        localboot 0x80 


Buat sebuah berkas yang berisi hasil md5 checksum dari semua berkas yang terdapat pada LiveCD

find cdfs/ -type f -print0 | sudo xargs -0 md5sum | sudo tee /chroot/cdfs/md5sum.txt

Untuk splash bootloader, dapat menggunakan gambar dibawah ini,


Struktur GNU/Linux Debian Gado-gado LiveCD :

Struktur LiveCD
Setelah selesai, bungkus live-cd filesystem yang telah siap menjadi binary image(ISO) menggunakan mkisofs,

sudo mkisofs -D -r -V "Debian_Gado2_Live" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o debian_live.iso cdfs

Proses pembuatan binary image (ISO)
 Setelah selesai binary image (ISO) dapat langsung dicoba menggunakan virtual mesin,

Tangkapan Layar GNU/Linux Debian LiveCD Gado-gado :

GNU/Linux Debian Gado-gado LiveCD - Qemu/KVM
Gnome Shell Debian LiveCD
Proses Installasi Debian LiveCD - live-Installer

Demikian semoga bermanfaat dan selamat bereksperimen .... ;)

Brotip:
Beberapa pesan kesalahan dan galat mungkin akan dialami pada saat melakukan proses pembuatan LiveCD yang memerlukan sedikit "imajinasi" untuk mengatasinya, untuk itu bagi pengguna yang tidak ingin bersuka cita mengoprek ria dapat menggunakan fasilitas yang telah disediakan oleh pengembang Debian untuk membuat sebuah distribusi GNU/Linux Debian LiveCD custom, menggunakan :

1. Live Magic, terdapat pada repository debian dan ubuntu

Debian Live Magic - Ubuntu 11.10
2. Layanan online pembuatan GNU/Linux Debian LiveCD berbasis web, http://live-build.debian.net/cgi-bin/live-build http://live-build.debian.net/

Debian live-build web-frontend
3. live-build (scripts to build Debian Live system images), terdapat pada repository debian dan ubuntu.


Referensi :
https://help.ubuntu.com/community/LiveCDCustomizationFromScratch , Januari 2012
http://wiki.debian.org/Debootstrap , Januari 2012
http://wiki.debian.org/DebianLive/ , Januari 2012
http://live.debian.net/devel/live-manual/ , Januari 2012
http://wiki.debian.org/AptPreferences  , Januari 2012

6 comments:

  1. Setelah proses pemasangan kernel selesai, lanjutkan dengan memasang antarmuka desktop dan perangkat lunak yang dikehendaki, gunakan opsi --no-install-recommends jika dibutuhkan.
    ----------------------
    Contohnya bagaimana pak.
    1. memasang antarmuka?
    2. Perangkat lunak yang dikehendaki
    misal .apt-get intall chronium
    atau bagaiaman

    ReplyDelete
    Replies
    1. contoh memasang antar muka,
      gnome shell desktop :
      apt-get install gnome-shell --no-install-recommends

      xfce desktop
      apt-get install xfce4 --no-install-recommends

      untuk perangkat lunak, misalnya pengen memasang perangkat lunak pengolah kata, spreadsheet minimalis,
      apt-get install abiword gnumeric

      menyesuaiakan selera :)

      Delete
  2. terima kasih mas.. tambah lagi
    --
    1. ada ngga list installatin untuk standarnya ubuntu oneric
    misal sudah dalam satu paket

    apt-get install (paket-paket standar dalam ubuntu 11.10)
    --------------------------------------
    2. saya menggunakan kernel
    apt-get install linux-image-2.6.32-5-686 linux-headers-2.6.32-5-686

    #berbeda dengan tutorial diatas karena selalu erorr ketika mengetikan perintah

    apt-get install linux-headers-3.2.0-1-686-pae linux-image-3.2.0-1-686-pae ,
    bagaimana cara mengupgrade ke kernel yang baru?
    saya sudah membaca

    http://www.ubuntubuzz.com/2012/02/upgrade-to-kernel-32-in-ubuntu-1110.html

    tapi perintah
    sudo apt-add-repository ppa:francisbrwn9/kernels
    selalu muncul "apt-add-repository: command not found"

    ReplyDelete
    Replies
    1. Dilihat aja didaftar paketnya ubuntu,
      bisa dilihat dicd installernya filesystem.manifest atau pake perintah
      dpkg --list untuk melihat software yang terpasang,

      untuk kernelnya dilihat dulu kernel yang tersedia pake perintah,
      apt-cache search linux-image
      ,ntar dipilih dari daftar yang muncul

      perintah apt-add-repository gak tersedia didebian, harus ditambahkan secara manual,
      http://apenk.com/308/cara-menambah-ppa-di-debian/

      Delete
  3. Lagi mas....
    1. Bisa apa enggak dekstopnya nanti jadi kaya unity.
    2. Ada enggak cara untuk merubah logo/dekstop background. pada halaman instalasi.
    misal ketika live cd (sebelum tahap penginstalan) dekstopnya sesuai dengan keinginan kita.
    3. Pada tahap installasi kan kita disuguhi gambaran slideshow, nak ada cara untuk merubahnya ga mas?
    .
    terima kasih mas :D

    ReplyDelete
    Replies
    1. bisa tapi butuh usaha ekstra soalnya unity dibuat khusus untuk ubuntu,

      untuk merubah artwork (background,logo,wallpaper) bisa dilakukan dengan mereplace artwork yang digunakan pada path (lokasi) yang tepat, bisa coba googling untuk lebih jelasnya :)

      Delete