Tuesday, April 10, 2012

Menyesuaikan Ubuntu 12.04 LTS Desktop Live CD



Sebuah produk (termasuk perangkat lunak dan sistem operasi) bisa saja mengklaim telah dibuat berdasarkan / sesuai dengan kebutuhan pengguna akhir, tapi tetap saja, siapa sih,,,?? yang lebih mengetahui kebutuhan pengguna selain pengguna itu sendiri :p, free open source software (termasuk didalamnya distribusi GNU/Linux) hadir dengan konsep yang memberikan hak kepada pengguna untuk melakukan modifikasi dan penyesuaian perangkat lunak menjadi lebih baik dan mudah digunakan. Dengan berbekal kemauan  dan membaca dokumentasi, seorang pengguna akhir dapat memenuhi keinginannya sendiri/kelompok dalam hal memiliki sebuah distribusi GNU/Linux yang sesuai dengan kebutuhannya tanpa harus tergantung 100% kepada pengembang utama distribusi GNU/Linux tersebut.

sebenarnya sich latar belakang saya menulis artikel ini dikarenakan turunan Ubuntu SuperOS yang biasa saya gunakan tidak mengeluarkan SuperOS versi terbaru, terakhir kali Super OS merilis versi 11.04 dan hingga saat ini belum juga merilis versi terbarunya (11.10),  varian lain Ultimate Edition baru mengeluarkan versi 3.2 berdasarkan Ubuntu 11.10 pada bulan maret 2012, *lamaaaaa bgt (⌣́_⌣̀) karena saya gak suka digantung *gak sabaran  jadilah saya memutuskan untuk ubuntu seri selanjutnya (12.04) akan menyesuaikan sendiri Ubuntu menjadi sesuai dengan kebutuhan kelompok/pribadi

tulisan ini sendiri merupakan terjemahan dan penyesuaian dari halaman
https://help.ubuntu.com/community/LiveCDCustomization

Sebagai contoh, disini saya menggunakan image (.ISO) Live CD ubuntu 12.04 LTS  ubuntu-12.04-desktop-i386.iso , untuk menjalankan proses ini, sebelumnnya pasang dulu perangkat lunak yang dibutuhkan pada sistem,

sudo apt-get install squashfs-tools genisoimage

Setelah selesai, ektrak isi dari image (.ISO) Live CD ubuntu dan salin kedalam direktori yang telah ditentukan,
sudo mount -o loop ubuntu-12.04-desktop-i386.iso /mnt

mkdir ~/cd-image/; rsync -av /mnt/ ~/cd-image/; sudo umount /mnt
*simbol ~/ artinya home direktori pengguna, disini /home/wagung

Setelah proses penyalinan selesai, jangan lupa untuk mengumount image (.ISO),  pindah kedirektori ~/cd-image/casper
cd ~/cd-image/casper


Ekstrak SquashFS filesystem (Ubuntu Live Filesystem) untuk mendapatan sari patinya,, eh maksudnya live filesystem yang akan dichroot,
sudo unsquashfs filesystem.squashfs

Sebagai hasil dari perintah diatas akan ada sebuah direktori bernama squashfs-root yang berisi filesystem LiveUbuntu, selanjutnya berkas filesystem.squashfs yang berukuran lumayan besar tersebut dapat dibuang,,

Agar dapat terhubung kejaringan salin berkas yang dibutuhkan untuk proses customise LiveCD
sudo rm filesystem.squashfs; sudo cp /etc/resolv.conf squashfs-root/etc/; sudo cp /etc/hosts squashfs-root/etc/

Mount filesystem yang dibutuhkan dan lakukan chroot pada squashfs-root untuk memulai customise,
sudo mount --bind /dev/ squashfs-root/dev; sudo chroot squashfs-root

Mulai dari sini selanjutnya proses dilakukan pada lingkungan chroot (squashfs-root)
mount -t proc none /proc; mount -t sysfs none /sys; mount -t devpts none /dev/pts

Untuk menghindari locale issues dan agar dapat mengimport GPG keys jalankan perintah berikut,
export HOME=/root; export LC_ALL=C

Lakukan juga hal tambahan berikut agar proses pemasangan aplikasi tambahan pada lingkungan chroot dapat berjalan dengan baik,
dbus-uuidgen > /var/lib/dbus/machine-id; dpkg-divert --local --rename --add /sbin/initctl; ln -s /bin/true /sbin/initctl

Setalah selesai semua langkah diatas, hal pertama yang harus dilakukan sebelum memasang perangkat lunak tambahan adalah memperbarui daftar perangkat lunak, jika dibutuhkan sebelumnya bisa merubah lokasi repositori ubuntu dahulu (/etc/apt/sources.list), selanjutnya untuk proses pemasangan/penambahan dan pengurangan aplikasi dapat menggunakan perintah apt-get, penggunaanya sama seperti ketika menggunakan sistem ubuntu normal,

sources.list yang saya gunakan
#Main Repository
deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise main restricted
deb-src http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise main restricted
deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise-updates main restricted
deb-src http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise-updates main restricted

#Universe Repository
deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise universe
deb-src http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise universe
deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise-updates universe
deb-src http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise-updates universe

## Multiverse Repository
deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise multiverse
deb-src http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise multiverse
deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise-updates multiverse
deb-src http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise-backports main restricted universe multiverse

deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise-security main restricted
deb-src http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise-security main restricted
deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise-security universe
deb-src http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise-security universe
deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise-security multiverse
deb-src http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ precise-security multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
deb http://archive.canonical.com/ubuntu precise partner
deb-src http://archive.canonical.com/ubuntu precise partner

## This software is not part of Ubuntu, but is offered by third-party
## developers who want to ship their latest software.
deb http://extras.ubuntu.com/ubuntu precise main
deb-src http://extras.ubuntu.com/ubuntu precise main

Memasang perangkat lunak tambahan,
apt-get update; apt-get install vlc wine ubuntu-restricted-extras audacious;

Untuk proses pemasangan perangkat lunak tambahan yang berasal dari sumber non-repositori ubuntu , ppa tambahan atau standalone installer, seperti Google Chrome, Handbrake dapat dilakukan dengan terlebih dahulu menyalin paket installer kedalam direktori chroot kemudian memasangnya menggunakan perintah dpkg atau yang sesuai,

Jika ingin memperbarui seluruh paket perangkat lunak yang ada pada LiveCD
apt-get update; apt-get dist-upgrade


Setelah semua proses pemasangan selesai, lanjutkan dengan menghapus berkas-berkas yang tidak dibutuhkan,
apt-get clean; apt-get autoremove; rm -rf /tmp/* ~/.bash_history; rm /etc/hosts; rm /etc/resolv.conf; rm /var/lib/dbus/machine-id; rm /sbin/initctl; dpkg-divert --rename --remove /sbin/initctl

Jika pada saat proses customise dilakukan pemasangan kernel baru, maka untuk menghemat ruang bebas pada sistem, kernel yang lebih tua sebaiknya dihapus. Gunakan perintah berikut untuk melihat kernel yang terpasang pada sistem,
dpkg-query -W --showformat='${Package}\n' | grep linux-image


dari hasil perintah diatas, tentukan kernel mana yang akan dihapus,
apt-get purge linux-image-3.2.0-20-generic-pae

Peringatan..!!!
Pastikan untuk tidak menghapus semua kernel yang terpasang pada lingkungan chroot, karena jika hal itu terjadi LiveCD yang dihasilkan tidak akan dapat diboot,

Jika tidak ada lagi urusan dengan chroot, segera angkat kaki dari lingkungan chroot sebelumnya umount dulu filesystem yang digunakan
umount -lf /proc ; umount -lf /sys; umount -lf /dev/pts; exit

sudo umount -lf ~/cd-image/casper/squashfs-root/dev

Penyesuaian/Modifikasi yang saya lakukan disini hanya menambah perangkat lunak tambahan, tanpa merubah artwork dan identitas dari ditribusi GNU/Linux ubuntu itu sendiri, untuk proses modifikasi yang lebih lanjut seperti merubah user name, password live user atau hal lainnya bisa merujuk pada dokumentasi asli dari tulisan ini,

Membuat bootable Ubuntu 12.04 LiveCD
Setelah semuanya selesai, hal selanjutnya yang dilakukan adalah mengemas kembali seluruh berkas menjadi image (.ISO), sebelumnya lakukan sedikit perubahan pada berkas yang dibutuhkan,

Masih didalam direktori ~/cd-image/casper/,  buat daftar baru seluruh perangkat lunak yang terpasang pada LiveCD
chmod +w filesystem.manifest; sudo chroot squashfs-root dpkg-query -W --showformat='${Package} ${Version}\n' > filesystem.manifest

Kompres lingungan chroot menjadi filesystem.squashfs kembali menggunakan squashfs-tools
sudo mksquashfs squashfs-root filesystem.squashfs -b 1048576

Buat ulang berkas yang berisi ukuran dari lingkungan chroot
chmod +w filesystem.size; printf $(sudo du -sx --block-size=1 squashfs-root | cut -f1) > filesystem.size

Salin kernel dan initrd dari lingkungan chroot kedalam direktori ../casper , sebelumnya hapus terlebih dahulu berkas initrd.lz dan vmlinuz yang lama
sudo rm initrd.lz vmlinuz; sudo cp -vp /home/wagung/cd-image/casper/squashfs-root/boot/vmlinuz-3.2.0-22-generic-pae ./vmlinuz; sudo cp -vp /home/wagung/cd-image/casper/squashfs-root/boot/initrd.img-3.2.0-22-generic-pae ./initrd.lz

Sebelum mebuat image (iso) hapus terlebih dahulu lingkungan chroot, atau pindahkan dari direktori yang akan dibuat menjadi image (.iso)
sudo rm -rf squashfs-root

Setelah selesai pindah dari direktoi ../casper kedirektori atasnya ~/cd-image/ berikan nama baru pada image, edit berkas README.diskdefines . Hapus md5sum lama yang berisi nilai checksum md5 dari seluruh berkas yang terdapat pada LiveCD dan buat checksum baru

find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt

Setelah selesai, kemas seluruh berkas menjadi image (.ISO), masih didalam direktori ~/cd-image/ jalankan perintah berikut,
sudo mkisofs -D -r -V "Ubuntu_12.04_LTS" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-12.04-desktop-i386-custom.iso .

Ubuntu 12.04 Custom LiveCD berjalan di virtual mesin
Selesai... tinggal dibagikan kepada yang membutuhkan,
*gpl = gak pake lama ,,.  cuy :p

Rujukan : 
https://help.ubuntu.com/community/LiveCDCustomization

2 comments:

  1. Gan Kenapa ISO-nya nggakdi upload

    ReplyDelete
  2. Ini yang gw cari.. thanx gan,. ane coba dulu.. tapi mau coba langsung yang versi 12.10 quantal nich, :D

    ReplyDelete