You are on page 1of 8

- TUTORIAL V3 Membuat Full Custom GUI ArchLinux Live ISO

for Live CD/DVD/USB


-- yadieet sa <qts19bit@gmail.com>

Bahan - Bahan
1. Arch Linux system di komputer / lepitop kita.
Untuk selanjutnya ane sebut sebagai host-system.
2. 'virtualbox' dan 'virtualbox-host-modules' yang terinstall di host-system.
Catatan :

Apabila kita menggunakan custom kernel,maka 'virtualbox-host-modules' nya kita ganti


dengan 'virtualbox-host-dkms'.
Setelah 'virtualbox-host-dkms' nya kita install, kita perlu meng-compile sendiri virtualbox
drivers untuk custom kernel yang kita pakai via dkms. Cara meng-compile module/driver via
dkms, silahkan cari tau sendiri.
Info :

Compile sendiri ini juga berlaku untuk *-dkms packages lainnya jika kita
menggunakan custom kernels, misalnya : catalyst-dkms.

Biasanya virtualbox and virtualbox modules/drivers bermasalah dengan custom kernels.


Jadi sebaiknya tidak menggunakan custom kernel ketika menjalankan virtualbox di hostsystem. Gunakan ArchLinux kernel dari official repository.

Alternatif lain selain menggunakan virtualbox (sebagai testbed environment)


adalah dengan menggunakan komputer / lepitop lain yang nganggur ato tidak terpakai.

3. 'libisoburn' yang terinstall di host-system.


Package ini diperlukan untuk membuat .iso file via 'xorriso'.
4. 'qemu-kvm' yang terinstall di host-system.
Package ini diperlukan untuk nge-mount *.vdi

(Virtualbox Disk Image)

file.

5. 'syslinux' yang terinstall di host-system.


ArchLinux Live yang kita buat menggunakan syslinux bootloader.
Untuk menset-up nya kita membutuhkan 'syslinux' terinstall di host-system.
6. 'memtest86+' yang terinstall di host-system. (optional)
Untuk memtest tool yang dijalankan dari syslinux bootloader.
*) File memtest86+ dapat juga kita download langsung dari internet dari situsnya
memtest86+ project. Googling aja.. :)
7. 'hwids' yang terinstall di host-system. (optional)
Syslinux HDT (Hardware Detection Tool) tool membutuhkan file pciids yang dapat kita
ambil/copy dari hwids package.
*) File pciids dapat juga kita download langsung dari internet. Googling aja.. :)

Proses dan cara pembuatan


Untuk memudahkan, sebelum kita mulai,
kita tentukan terlebih dulu sebuah nama cantik untuk project archlinux kita.
Misal : archyui
Kemudian kita buat folder and struktur direktori untuk project archlinux live kita, sbb :
$ mkdir -p /data/archyui/{vdi,rootfs,iso/{isolinux,arch/{x86_64,i686,boot/{syslinux,x86_64,i686}}}}

A. Install a new ArchLinux system di VirtualBox, configure and customize it.


Untuk menyingkat, ArchLinux system di VirtualBox untuk seterusnya ane sebut
sebagai guest-system.

1. Di VirtualBox Manager, create a new virtual machine.

Kita beri nama misalnya 'archyui x86_64' ato 'archyui i686'.

2. Ketika membuat virtual hard drive di VirtualBox Manager, pilih 'VDI (VirtualBox

Disk Image)' as virtual hard drive type nya dan pilih 'fixed size' as harddrive file
type nya.
Penggunaan tipe 'fixed size' ini bertujuan untuk memudahkan menge-mount
*.vdi image via 'qemu-nbd'.
Dan jangan lupa simpan file VDI image nya di project directory kita,
misal: '/data/archyui/vdi/archyui-x86_64.vdi' atau
'/data/archyui/vdi/archyui-i686.vdi'.

3. Gunakan ArchLinux Installation Media (iso) terbaru ketika menginstall ArchLinux


di VirtualBox.

4. Kita cukup membuat 1 partisi saja, yaitu root partition (/) dan format dengan
tipe 'ext4'.
Partisi - partisi lainnya tidak perlu dibuat dengan maksud untuk memudahkan di
step - step selanjutnya.

5. Install ArchLinux di VirtualBox seperti biasanya, sebagaimana kita menginstall


ArchLinux di komputer/lepitop kita.
Install virtualbox guest driver, yaitu 'virtualbox-guest-modules' jika
menggunakan archlinux stock kernel atau 'virtualbox-guest-dkms' jika
menggunakan custom kernel.
Lalu create a new file /etc/modules-load.d/vbox.conf yang isinya sbb :
vboxguest
vboxsf
vboxvideo
Install 'virtualbox-guest-utils', kemudian enable 'vboxservice' dan restart

guest-system.

Install X, Desktop Environment ato WM, dan GUI applications jika kita ingin
membuat GUI ArchLinux Live.
Agar X works di hampir semua komputer/lepitop, maka kita perlu
menginstall semua X drivers tanpa terkecuali (khususnya video drivers). Jadi,
install xorg, xorg-drivers, xorg-apps, xorg-fonts, xf86-input-*, xf86video-* packages.
Silahkan tentukan sendiri package2 (libraries, tools, programs, applications) apa saja
yang ingin di install (console maupun gui).
Install, configure, and customize guest-system sesuai kebutuhan and sesuai
tujuan agan membuat ArchLinux Live. Ane tidak akan mendikte apa-apa saja
yang harus dilakukan coz ini adalah ArchLinux Live agan.
6. Install 'archiso' package.
7. Create a new file /etc/mkinitcpio-archyui.conf yang isinya sbb :

HOOKS="base udev archiso archiso_kms block filesystems usbinput consolefont keymap"


COMPRESSION="xz"

Kemudian,
jika guest-system nya x86_64 (64 bit), execute:
# mkdir /boot/x86_64
# mkinitcpio -c /etc/mkinitcpio-archyui.conf -k /boot/vmlinuz-linux -g /boot/x86_64/archyui.img

jika guest-system nya i686 (32 bit), execute:


# mkdir /boot/i686
# mkinitcpio -c /etc/mkinitcpio-archyui.conf -k /boot/vmlinuz-linux -g /boot/i686/archyui.img

Pastikan tidak ada failed/error apapun.


Catatan :
Customize guest-system sebaik mungkin sesuai tujuan kita membuat ArchLinux
Live. Guest-system inilah yang nantinya dijadikan sebagai ArchLinux Live ISO.
Dan jangan lupa, perhatikan 'space used' nya.
FYI, Archysa Live (GUI ArchLinux Live yang ane buat) rilis pertama
membutuhkan waktu sekitar 3 minggu sebelum ane siap untuk merilis (mengiso-kan) nya.
Setelah guest-system siap untuk dijadikan ISO, lanjut ke step B.

B. Mount root filesystem (/) nya guest-system

(mount *.vdi image)

1. Pastikan guest-system di virtualbox sudah di shutdown

(poweroff) dan jendela


VirtualBox Manager sudah close. Pastikan 'qemu-kvm' package sudah terinstall di
host-system.

2. Mount VDI image


#
#
#
#

modprobe nbd max_part=16


qemu-nbd -c /dev/nbd0 /data/archyui/vdi/archyui-x86_64.vdi
mkdir /mnt/vdi
mount -t ext4 -o loop,ro /dev/nbd0p1 /mnt/vdi

*) Silahkan sesuaikan sendiri nama file vdi agan.


Jika di tutorial ini, 'archyui-x86_64.vdi' untuk x86_64 guest-system, 'archyui-i686.vdi'
untuk i686 guest-system.
Keterangan :
nbd0p1 artinya 'nbd0 partisi 1'.

C. Copy semua file di root filesystem (/) nya guest-system ke 'rootfs' directory di hostsystem; lalu umount and unprobe/disconnect VDI image.
# cp -aT -v /mnt/vdi/ /data/archyui/rootfs/
# umount /mnt/vdi
# qemu-nbd -d /dev/nbd0

D. Copy kernel and initramfs image


Jika guest-system nya x86_64 (64 bit) :
$ cp /data/archyui/rootfs/boot/vmlinuz-linux /data/archyui/iso/arch/boot/x86_64/vmlinuz
$ cp /data/archyui/rootfs/boot/x86_64/archyui.img /data/archyui/iso/arch/boot/x86_64/

Jika guest-system nya i686 (32bit) :


$ cp /data/archyui/rootfs/boot/vmlinuz-linux /data/archyui/iso/arch/boot/i686/vmlinuz
$ cp /data/archyui/rootfs/boot/i686/archyui.img /data/archyui/iso/arch/boot/i686/

E. Lakukan gladi bersih di /data/archyui/rootfs directory

kosongkan file /data/archyui/rootfs/etc/fstab


hapus file /data/archyui/rootfs/etc/modules-load.d/vbox.conf
hapus semua file di dalam directory /data/archyui/rootfs/var/cache/pacman/pkg/
hapus semua file di dalam diretory /data/archyui/rootfs/boot/
hapus file /data/archyui/rootfs/etc/mkinitcpio-archyui.conf
hapus /data/archyui/rootfs/lost+found directory
hapus /data/archyui/rootfs/media/sf_* directories
hapus backup files (*~)
hapus file /var/log/btmp, /var/log/faillog, /var/log/lastlog, /var/log/wtmp
empty pacman.log (/var/pacman.log)
empty log files (*.log)
empty bash history (/home/*/.bash_history and /root/.bash_history)
chroot ke rootfs,
lalu disable vboxservice dan uninstall virtualbox-guest-utils dan virtualbox-guestmodules,
dan lakukan hal2 lainnya.
dan lain - lain, misalnya: hapus thumbnails files, hapus recently used file,

F. Persiapkan 'iso' directory (syslinux, boot configuration, bootmenu, dll dsb)


Pertama, jalankan commands berikut (copy files):
#
#
#
#
#
#
#
#
#
#
#

cp /usr/lib/syslinux/isohdpfx.bin /data/archyui/iso/isolinux/
cp /usr/lib/syslinux/isolinux.bin /data/archyui/iso/isolinux/
cp /usr/lib/syslinux/poweroff.com /data/archyui/iso/arch/boot/syslinux/
cp /usr/lib/syslinux/chain.c32 /data/archyui/iso/arch/boot/syslinux/
cp /usr/lib/syslinux/menu.c32 /data/archyui/iso/arch/boot/syslinux/
cp /usr/lib/syslinux/reboot.c32 /data/archyui/iso/arch/boot/syslinux/
cp /usr/lib/syslinux/vesamenu.c32 /data/archyui/iso/arch/boot/syslinux/
cp /usr/lib/syslinux/ifcpu64.c32 /data/archyui/iso/arch/boot/syslinux/
cp /usr/lib/syslinux/hdt.c32 /data/archyui/iso/arch/boot/syslinux/
cp /boot/memtest86+/memtest.bin /data/archyui/iso/arch/boot/memtest
gzip -c /usr/share/hwdata/pci.ids > /data/archyui/iso/arch/boot/syslinux/pciids.gz

*) Jangan lupa menyertakan 'license text file' untuk file2 yang dicopy,
misal : GPLv2 'memtest.COPYING' file.

Kemudian, buat files berikut :


1. aitab
/data/archyui/iso/arch/aitab :
# <img>
archyui
archyui

<mnt>
/
/

<arch>
x86_64
i686

<sfs_comp>
xz
xz

<fs_type>
ext4
ext4

2. isolinux.cfg
/data/archyui/iso/isolinux/isolinux.cfg
DEFAULT loadconfig
LABEL loadconfig
CONFIG /arch/boot/syslinux/archyui.cfg
APPEND /arch/

3. archyui.cfg
/data/archyui/iso/arch/boot/syslinux/archyui.cfg
DEFAULT select
LABEL select
COM32 boot/syslinux/ifcpu64.c32
APPEND have64 -- nohave64
LABEL have64
CONFIG boot/syslinux/archyui_64_inc.cfg
LABEL nohave64
CONFIG boot/syslinux/archyui_32_inc.cfg

<fs_size>
50%
50%

4. dst..
/data/archyui/iso/arch/boot/syslinux/archyui_64_inc.cfg
INCLUDE boot/syslinux/archyui_head.cfg
INCLUDE boot/syslinux/archyui_64.cfg
INCLUDE boot/syslinux/archyui_tail.cfg

/data/archyui/iso/arch/boot/syslinux/archyui_64.cfg
LABEL arch64
MENU LABEL Boot ARCHYUI LIVE x86_64/64bit
LINUX boot/x86_64/vmlinuz loglevel=3 acpi_osi=Linux acpi_backlight=vendor fbcon=scrollback:4096k
INITRD boot/x86_64/archyui.img
APPEND archisobasedir=arch archisolabel=archyui-x86_64

/data/archyui/iso/arch/boot/syslinux/archyui_32_inc.cfg
INCLUDE boot/syslinux/archyui_head.cfg
INCLUDE boot/syslinux/archyui_32.cfg
INCLUDE boot/syslinux/archyui_tail.cfg

/data/archyui/iso/arch/boot/syslinux/archyui_32.cfg
LABEL arch32
MENU LABEL Boot ARCHYUI LIVE i686/32bit
LINUX boot/i686/vmlinuz loglevel=3 acpi_osi=Linux acpi_backlight=vendor fbcon=scrollback:4096k
INITRD boot/i686/archyui.img
APPEND archisobasedir=arch archisolabel=archyui-i686

/data/archyui/iso/arch/boot/syslinux/archyui_head.cfg
SERIAL 0 38400
UI boot/syslinux/vesamenu.c32
MENU TITLE ARCHYUI LIVE
MENU BACKGROUND boot/syslinux/bg.png
MENU
MENU
MENU
MENU
MENU
MENU
MENU
MENU

WIDTH 78
MARGIN 4
ROWS 7
VSHIFT 10
TABMSGROW 14
CMDLINEROW 14
HELPMSGROW 16
HELPMSGENDROW 29

# Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu
MENU
MENU
MENU
MENU
MENU
MENU
MENU
MENU
MENU

COLOR
COLOR
COLOR
COLOR
COLOR
COLOR
COLOR
COLOR
COLOR

border
title
sel
unsel
help
timeout_msg
timeout
msg07
tabmsg

30;44
1;36;44
7;37;40
37;44
37;40
37;40
1;37;40
37;40
31;40

#40ffffff
#ffffffff
#ffffffff
#60ffffff
#c0ffffff
#80ffffff
#c0ffffff
#90ffffff
#30ffffff

#a0000000
#a0000000
#ff800000
#a0000000
#a0000000
#00000000
#00000000
#a0000000
#00000000

std
std
all
std
std
std
std
std
std

*) Untuk background image (file bg.png) nya, silahkan bikin sendiri.


Ukurannya 640x480 px, dan letakkan di 'archyui/iso/arch/boot/syslinux/'

/data/archyui/iso/arch/boot/syslinux/archyui_tail.cfg
LABEL existing
TEXT HELP
Boot an existing operating system. Press TAB to edit the disk and partition
number to boot.
ENDTEXT
MENU LABEL Boot existing OS
COM32 boot/syslinux/chain.c32
APPEND hd0 0
# http://www.memtest.org/
LABEL memtest
MENU LABEL Run Memtest86+ (RAM test)
LINUX boot/memtest
# http://hdt-project.org/
LABEL hdt
MENU LABEL Hardware Information (HDT)
COM32 boot/syslinux/hdt.c32
APPEND pciids=boot/syslinux/pciids.gz
LABEL reboot
MENU LABEL Reboot
COM32 boot/syslinux/reboot.c32
LABEL poweroff
MENU LABEL Power Off
COMBOOT boot/syslinux/poweroff.com

G. BUILD

1. Buat, format, dan mount rootfs image (*.fs)


#
#
#
#
#
#
#
#

cd /data/archyui/
mkdir /mnt/archyui
space_used=`du -sxm rootfs | awk {'print $1'}` && echo $space_used
fs_size=$((space_used * 110 / (100 - 50))) && echo $fs_size
dd of="archyui.fs" count=0 bs=1M seek=${fs_size}
mkfs.ext4 -O ^has_journal -m 0 -F archyui.fs
tune2fs -c 0 -i 0 archyui.fs
mount -t ext4 -o defaults,noatime archyui.fs /mnt/archyui

2. Copy semua file di 'rootfs' directory ke rootfs image


# cd /data/archyui/
# cp -aT -v rootfs/ /mnt/archyui/

3. Umount rootfs image


# umount /mnt/archyui

4. Buat squasfs rootfs image (*.fs.sfs)


Kalo guest-systemnya x86_64 (64bit) :
# cd /data/archyui/
# mksquashfs archyui.fs iso/arch/x86_64/archyui.fs.sfs -noappend -comp xz -no-progress

Kalo guest-systemnya i686 (32bit) :


# cd /data/archyui/
# mksquashfs archyui.fs iso/arch/i686/archyui.fs.sfs -noappend -comp xz -no-progress

5. Buat *.ISO file


Kalo guest-systemnya x86_64 (64bit) :
# cd /data/archyui/
# xorriso -as mkisofs -iso-level 3 -full-iso9660-filenames -volid "archyui-x86_64" -appid "archyui-x86_64"
-publisher "YADIEET SA <QTS19BIT@GMAIL.COM>" -preparer "YADIEET SA" -eltorito-boot isolinux/isolinux.bin
-eltorito-catalog isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -isohybrid-mbr
iso/isolinux/isohdpfx.bin -output "archyui-x86_64.iso" iso

Kalo guest-systemnya i686 (32bit) :


# cd /data/archyui/
# xorriso -as mkisofs -iso-level 3 -full-iso9660-filenames -volid "archyui-i686" -appid "archyui-i686"
-publisher "YADIEET SA <QTS19BIT@GMAIL.COM>" -preparer "YADIEET SA" -eltorito-boot isolinux/isolinux.bin
-eltorito-catalog isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -isohybrid-mbr
iso/isolinux/isohdpfx.bin -output "archyui-i686.iso" iso

*) Jangan lupa ganti 'YADIEET SA <QTS19BIT@GMAIL.COM>' dengan nama dan email


agan, ganti 'YADIEET SA' dengan nama agan.

Catatan :
- 'rootfs' directory, jika tidak digunakan lagi bisa dihapus.
- 'archyui.fs' file, jika tidak digunakan lagi bisa dihapus.
- 'archyui.fs.sfs' file, jika tidak digunakan lagi bisa dihapus.

~ SELESAI ~
Kalo ada kesalahan, mohon di koreksi..
Kalo ada yang kurang, silahkan ditambahi..
Kalo ada yang lebih, silahkan dikurangi..
Tutorial ini boleh di modifikasi, di rilis ulang, di sebarkan dengan bebas
tanpa syarat apapun.
Jika agan kaskuser, jangan lupa lempar cendol ke ane.
Ganbarre !! Good Luck !!
Have a lovely beautiful day !!