Sunday, February 5, 2012

Menyegel Precise - Ubuntu 12.04 kedalam Image (.ISO)


Kisah ini dimulai ketika canonical mengeluarkan versi pengembangan  Ubuntu 12.04 - Precise Pangolin, selanjutnya akan disebut precise saja, dimana pada saat itu setelah berjuang cukup keras menghabiskan bandwidth, saya berhasil mengunduh dan memasangnya pada sistem. Hari demi hari berlalu telah banyak hal yang saya lakukan bersama dengan precise mulai dari mencoba Unity 5.0, Head-Up Display (HUD), dan  mencoba beberapa perangkat lunak lainnya, namun  kesenangan itu sirna setelah  saya dihadapkan dengan sebuah kenyataan yang mengharuskan saya menghapus precise dari sistem, padahal precise yang terpasang pada sistem  telah mengalami perubahan yang cukup pesat dibandingkan dengan saat dia masih fresh install dari image(.ISO), karena merasa sayang dengan precise yang telah menemani keseharian dan untuk berjaga jika sewaktu-waktu kembali membutuhkannya, saya memutuskan untuk menyegelnya kembali menjadi image(.ISO),

ok dehh langsung aja, sebelumnya pastikan sistem dapat terhubung keinternet untuk mengunduh paket perangkat lunak yang dibutuhkan, melalui terminal jalankan perintah berikut,

sudo apt-get install syslinux squashfs-tools genisoimage

Setelah selesai memasang perangkat lunak persiapkan direktori yang akan menampung jiwa dari precise, bebas mau dibuat dimana saja, yang penting terdapat ruang kosong yang cukup,

sudo mkdir -p /home/backup/{precise,cdfs}; sudo mkdir -p /home/backup/cdfs/{casper,isolinux,preseed}

Buat sebuah berkas dengan nama exclude.lst isikan dengan perintah berikut,

/boot/grub/*
/dev/*
/etc/fstab
/etc/mtab
/etc/hosts
/etc/X11/xorg.conf*
/etc/gdm/custom.conf
/home/*
/host
/media/*
/mnt/*
/lost+found
/proc/*
/root/*
/sys/*
/tmp/*
/var/lib/dbus/*
/var/tmp/*
/var/mail/*
/var/spool/*
*.deb
*.bak
*.log

Salin sistem menggunakan rsync kedalam direktori yang telah disiapkan, berikan opsi exclude-from dan lokasi berkas exclude.lst yang telah dibuat sebelumnya,

sudo rsync -av --exclude-from=exclude.lst / /home/backup/precise/

Proses rsync selesai
Proses rsync akan memakan waktu yang cukup lama, *tergantung dari banyaknya data dan perangkat lunak yang terpasang pada sistem,

Pemasangan perangkat lunak pada lingkungan chroot
Setelah proses rsync selesai, proses selanjutnya akan dilakukan pada lingkungan chroot /home/backup/precise/ , mount filesystem yang dibutuhkan dan lakukan chroot pada direktori yang berisi salinan sistem,

sudo mount --bind /dev /home/backup/precise/dev; sudo chroot /home/backup/precise/

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

Didalam lingkungan chroot jalankan perintah berikut dan update repository

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

Pasang paket perangkat lunak casper dan kawan-kawan yang dibutuhkan untuk membuat live filesystem,

apt-get install casper lupin-casper gparted xfsprogs reiser4progs jfsutils gpart ubiquity ubiquity-frontend-gtk ubiquity-slideshow-ubuntu

Jika dibutuhkan lakukan perubahan pada username dan hostname yang akan digunakan pada live filesystem, untuk melakukan hal tersebut modifikasi berkas  /etc/casper.conf menggunakan editor text,

nano /etc/casper.conf

# This file should go in /etc/casper.conf
# Supported variables are:
# USERNAME, USERFULLNAME, HOST, BUILD_SYSTEM

export USERNAME="ubuntu"
export USERFULLNAME="Live session user"
export HOST="ubuntu"
export BUILD_SYSTEM="Ubuntu"

Agar live filesystem dapat berjalan dengan baik, hapus non system user, (tersimpan di /etc/passwd ) , user yang dihapus biasanya  memiliki (user id) uid > 998 , untuk melakukan hal tersebut jalankan perintah berikut pada terminal,

for i in `cat /etc/passwd | awk -F":" '{print $1}'`
do
 uid=`cat /etc/passwd | grep "^${i}:" | awk -F":" '{print $3}'`
 [ "$uid" -gt "998" -a  "$uid" -ne "65534"  ] && userdel --force ${i} 2>/dev/null
done

Setelah selesai melakukan konfigurasi casper.conf update initramfs, *proses update initramfs bertujuan menambahkan live-script dan konfigurasi live-session pada initrd.img, yang dibutuhkan dalam proses boot  live filesystem,

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

Bersihkan sistem dari berkas-berkas yang tidak diperlukan,

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

Setelah selesai umount dan keluar dari lingkungan chroot,

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

sudo umount -lf /home/backup/precise/dev

Selesai dengan live filesystem, lanjutkan dengan mempersiapkan dan menyalin berkas-berkas yang dibutuhkan kedalam direktori cdfs, direktori cdfs nantinya akan dikemas menjadi image (.ISO), hal yang pertama dilakukan adalah menyalin kernel dan initrd image dari direktori /boot  lingkungan chroot kedalam direktori cdfs,

export kversion=`cd /home/backup/precise/boot; ls -1 vmlinuz-* | tail -1 | sed 's@vmlinuz-@@'`

sudo cp -vp /home/backup/precise/boot/vmlinuz-${kversion} /home/backup/cdfs/casper/vmlinuz; sudo cp -vp /home/backup/precise/boot/initrd.img-${kversion} /home/backup/cdfs/casper/initrd.lz

Tambahkan memtest pada LiveCD sebagai alat tambahan, *opsional

sudo cp -vp /boot/memtest86+.bin /home/backup/cdfs/casper/memtest

Buat berkas filesystem.manifest  yang berisi daftar nama seluruh paket perangkat lunak yang terdapat pada live filesystem dan filesystem.manifest-desktop yang berisi daftar nama paket perangkat lunak yang akan dipasang pada saat proses pemasangan LiveCD,

sudo chroot /home/backup/precise/ dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee /home/backup/cdfs/casper/filesystem.manifest; sudo cp -v /home/backup/cdfs/casper/filesystem.manifest{,-desktop}

REMOVE='ubiquity casper user-setup os-prober ubiquity-slideshow-ubuntu libdebian-installer4'
for i in $REMOVE 
do
 sudo sed -i "/${i}/d" /home/backup/cdfs/casper/filesystem.manifest-desktop
done

Kompres live filesystem (lingkungan chroot) menggunakan squashfs-tools,

sudo mksquashfs /home/backup/precise /home/backup/cdfs/casper/filesystem.squashfs

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

printf $(sudo du -sx --block-size=1 /home/backup/precise | cut -f1) >> /home/backup/cdfs/casper/filesystem.size

Selanjutnya pada direktori preseed buat sebuah berkas dengan nama ubuntu.seed isikan dengan perintah berikut, * saya salin dari ubuntu.seed milik ubuntu 12.04 LiveCD

# Enable extras.ubuntu.com.
d-i apt-setup/extras boolean true
# Install the Ubuntu desktop.
tasksel tasksel/first multiselect ubuntu-desktop
# On live DVDs, don't spend huge amounts of time removing substantial
# application packages pulled in by language packs. Given that we clearly
# have the space to include them on the DVD, they're useful and we might as
# well keep them installed.
ubiquity ubiquity/keep-installed string icedtea6-plugin openoffice.org

Awalnya  mencoba tidak menggunakan preseed dan dapat berjalan normal, namun setelah mengetahui  kegunaan preseed dari  https://help.ubuntu.com/community/Installation/FromLinux
The preseed tells the installer what kind of system you are trying to install and it automatically selects some options for you during installation. For instance, using the ubuntu.seed file tells the installer that you want to install a full "desktop" system, with Gnome and everything. If you do not select a preseed file, it is unclear what the installer thinks, ....
Saya putuskan untuk menggunakan pressed, :D

Salin syslinux yang akan digunakan sebagai bootloader pada LiveCD kedirektori cdfs/isolinux 

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

Buat berkas yang berisi konfigurasi bootloader simpan dengan nama isolinux.cfg pada direktori cdfs/isolinux/isolinux.cfg, isikan dengan perintah dibawah ini,

default vesamenu.c32
timeout 100

menu background splash.jpg
menu title Welcome to Ubuntu 12.04 Backup (05022012)
menu color border 0 #00eeeeee #00000000
menu color sel 7 #ffffffff #33eeeeee
menu color title 0 #ffeeeeee #00000000
menu color tabmsg 0 #ffeeeeee #00000000
menu color unsel 0 #ffeeeeee #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color timeout_msg 0 #ffffffff #00000000
menu color timeout 0 #ffffffff #00000000
menu color cmdline 0 #ffffffff #00000000
menu hidden
menu hiddenrow 6
label live
  menu label ^Try Ubuntu without installing
  kernel /casper/vmlinuz
  append  file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash --
label live-install
  menu label ^Install Ubuntu
  kernel /casper/vmlinuz
  append  file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity initrd=/casper/initrd.lz quiet splash --
label check
  menu label ^Check disc for defects
  kernel /casper/vmlinuz
  append  boot=casper integrity-check initrd=/casper/initrd.lz quiet splash --
label memtest
  menu label Test ^memory
  kernel /install/mt86plus
label hd
  menu label ^Boot from first hard disk
  localboot 0x80

Saya menggunakan gambar dibawah ini sebagai boot menu background ,


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

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

Setelah selesai, bungkus direktori cdfs yang telah siap menjadi binary image(ISO) menggunakan mkisofs,

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

Setelah selesai image(.ISO) yang telah jadi dapat langsung diuji menggunakan virtual mesin,

Sedikit tangkapan layar dari Ubuntu 12.04 yang telah saya segel,

Bootmenu Ubuntu 12.04 hasil backup

Proses installasi Ubuntu 12.04 hasil backup
berjalan di virtual mesin

Installasi Ubuntu 12.04 hasil backup  - Selesai
berjalan di virtual mesin

Semoga bermanfaat dan selamat berkreasi, :D

Brotip:
Jika mengalami galat dan merasa agak ribet dengan cara diatas, dapat menggunakan perangkat bantu seperti remastersys dan menunggu hingga Ubuntu 12.04 stable release ;)


Rujukan :
https://help.ubuntu.com/community/LiveCDCustomizationFromScratch , 02/2012
https://help.ubuntu.com/community/LiveCDCustomization  ,02/2012
http://ubuntuforums.org/showthread.php?t=688872 ,02/2012
https://help.ubuntu.com/community/Installation/FromLinux ,02/2012

7 comments:

  1. waaahhhh....panjang kali lebar caranya :(

    ReplyDelete
  2. wew,, nice post bang..

    bisa dipraktek`in buat oneiric g ya...

    ReplyDelete
  3. folder exclude.lst taruh dmn gan.....kok ak coba eror permission denied

    ReplyDelete
    Replies
    1. ditaruh dimana saja boleh, ntar tinggal menyesuaikan aja path/lokasi tempat exclude.lst disimpan, misalnya exclude.lst saya simpan didirektori home saya (/home/wagung),

      rsync -av --exclude-from=/home/wagung/exclude.lst / /home/backup/precise/

      klo muncul pesan permission denied, kemungkinan ada masalah dengan hak akses, coba gunakan jalankan dengan hak akses root (sudo), menjadi

      sudo rsync -av --exclude-from=exclude.lst / /home/backup/precise/

      ,,

      Delete
  4. genisoimage :no such file or directory
    padahal udh ngikutin cara yg sama kyk d atas + udh d instal semua
    kok masih gk bisa boss??

    ReplyDelete