Category Archives

348 Articles
Memasang Kubuntu 16.04 UEFI dengan Debootstrap
Wily Broke The Window

Memasang Kubuntu 16.04 UEFI dengan Debootstrap

Mengenai skema partisi yang Anda pilih, semuanya bebas. Yang penting, sisakan 100 s.d. 200MB diska untuk partisi UEFI dengan format FAT32 atau FAT16.

UEFI mandates on GPT partition.

UEFI mandates on GPT partition.

Karena Windoze dan beberapa vendor lama, UEFI masih memungkinkan untuk membuat format partisi BIOS (4 partisi utama maksimal). Namun, karena saya memasang ini di laptop saya sendiri, saya membeli kosong sehingga memformat seluruh diska dengan format partisi GPT. Saya membuat satu partisi di awal dengan besar 200MB dan format FAT16 untuk partisi UEFI.

My laptop partition as an example

My laptop partition as an example

Saya tidak menyatakan proses pemformatan karena sudah pernah dibahas di blog ini berulang kali. Lagi pula, saya memformat menggunakan Manajer Partisi KDE yang ada di CD Pemasang Kubuntu. Tak perlu menyusahkan diri dengan terminal.

Oh, iya, supaya tidak bingung, saya mengasumsikan ini semua dilakukan dari CD/USB Live Pemasang Kubuntu 16.04 Xenial.


Sebelum mulai, saya mengubah /etc/apt/sources.list CD/USB sehingga berisi:

deb xenial main restricted universe multiverse
deb xenial-security main restricted universe multiverse
deb xenial-updates main restricted universe multiverse

Ini biar proses pemasangan menggunakan repo terdekat.

Lalu, seperti biasa saya pasang debootstrap:

sudo apt-get update 
sudo apt-get install debootstrap

Sampai sini saya mengasumsikan bahwa Anda telah memformat diska Anda dengan benar sebelum lanjut dengan Manajer Partisi KDE atau pun cara lainnya.

Pasang Sistem Dasar

Lakukan stanza yang biasa dilakukan:

mount /dev/sda2 /mnt
mkdir -p /mnt/boot/efi

debootstrap xenial /mnt

# hostname
echo gantenghost > /mnt/etc/hostname
sed -i -Ee "s#(127.+)#\1 gantenghost#" /mnt/etc/hosts

# mounts
for f in dev dev/pts proc sys; do mount -v --bind {,/mnt}/$f; done

cp /etc/apt/sources.list /mnt/apt/sources.list

chroot /mnt /bin/bash

apt-get update

Baru setelah itu, pasang KDE:

apt-get install kubuntu-desktop yakuake vim ssh

Konfigurasi zona waktu dan lokalisasi:

dpkg-reconfigure tzdata
dpkg-reconfigure locales

Tambahkan pengguna:

adduser pengguna
usermod -aG adm,cdrom,sudo,audio,video,systemd-journal pengguna

Pasang kernel dan GRUB EFI:

apt-get install linux-image-generic linux-headers-generic grub-efi-amd64

Konfigurasikan dan pasang GRUB EFI. Ingat! Dua langkah ini perlu dilakukan agar sistem dapat dinyalakan ulang.

grub-install /dev/sda

Sisanya terserah Anda karena langkah-langkah ini sudah membuat sistem Anda berjalan.


WordPress JP: Installing MariaDB

WordPress JP: Installing MariaDB


It’s obvious that I speed write and take everything from guide. As I said before, writing this in Bahasa Indonesia kind of hard for me. So, I write this as I do in parallel.

Setup Filesystem

Disable ZFS file-level prefetch as in the guide:

cat >> /etc/modprobe.d/zfs.conf << .
options zfs zfs_prefetch_disable=1

That would be last on the next reboot, but for now disable:

echo 1 | sudo tee /sys/module/zfs/parameters/zfs_prefetch_disable

Create the dataset and the optimizations:

zfs create -o mountpoint=/var/lib/mysql rpool/MARIADB
zfs set primarycache=metadata rpool/MARIADB
zfs set recordsize=16k rpool/MARIADB

It is optimized to use cache for metadata only if we are going to use INNODB. Its chunk is 16k, so we set it also in ZFS. In the guide we are told that MariaDB log is a 128k chunk — default chunk in ZFS.

Remember that ZFSOnLinux Bug early on? Yeah, we should regenerate Ramdisk everytime we’ve done something to /etc/zfs/zpool.cache. To be honest, I don’t know if any of the operation we did earlier warrant such action. But, just do that for precaution.

update-initramfs -d -k `uname -r`
update-initramfs -c -k `uname -r`

And now, we go with installing MariaDB server.

Installing Database Server

According to MariaDB Repository configuration page, let’s set MariaDB:

cat >> /etc/apt/sources.list.d/mariadb.list << .
# MariaDB 10.1 repository list - created 2016-05-03 08:05 UTC
deb [arch=amd64,i386] jessie main
deb-src jessie main

Import its key and update our list:

sudo apt-key adv --recv-keys --keyserver 0xcbcb082a1bb943db
sudo apt-get update

Install MariaDB server:

sudo apt-get install mariadb-server

Disable MariaDB server double buffer by add a line (mine, vanilla at line 142) with:


And restart MariaDB server:

sudo systemctl restart mysql

From this onward, we are ready to install WordPress, NGINX and such.

Bacaan Lebih Lanjut

WordPress JP: Installing LAMP Stack with ZFS

WordPress JP: Installing LAMP Stack with ZFS


I’m in fast writing mode as this is probably won’t intended to be understood by most people. I’m writing in this blog as I moving forward installing. To keep writing  and translating from my tacit into Bahasa Indonesia is kind of laboring. Perhaps, if you want, I would reiterate what I do here with better Bahasa Indonesia. But, now, let’s live speed writing.


I’ve got Ubuntu 14.04 Live USB on my arsenal. Boot it up and setup some trivial like IP, DNS and stuff. I modify APT sources.list to match my nearest server.

deb trusty main restricted
deb trusty-security main restricted
deb trusty-updates main restricted

Do the update and install SSH and VIM.

sudo -i
apt-get update
apt-get install ssh vim
passwd ubuntu

I need SSH because I can’t stand on server room too long. I’m not going to go on religious war on ViM vs Emacs. Last, change ubuntu user password.

And now the show live from my comfy SSH terminal laptop.

Install Ubuntu ZFS for Ubuntu Live Session

Straight from the doc.

sudo -i
apt-add-repository --yes ppa:zfs-native/stable
apt-get update
apt-get install debootstrap spl-dkms zfs-dkms ubuntu-zfs
modprobe zfs

You may wondering why I’m not upgrading first. Upgrading a temporary system is wasting time, especially one with GUI installed. Okay, now we get to the formatting.

Create A ZFS Pool

I have 2 SATA and 1 SSD. The best for server should be two SSDs. But, hey, beggar can’t choose.

ZFS config: 2 Disks + 1 SSD.

ZFS config: 2 Disks + 1 SSD.

Using GParted, I turned SSD into GPT with 3 partitions:

  • The first 200MB for /boot partition. Some twisted soul refused to use separated partition for /boot, well, good for you! I go with the conservative.
  • 8GB used for ZIL (ZFS Intent Log) drive. ZFS usually use 8GB max for journaling.
  • The rest used for ZFS Cache (ZARC).

But, hey, where is the EFI partition?

I’ve just recently found out that when you give your whole disk to ZFS, it would format the disk into two partitions. One big partition (sX1) for the use of ZFS and one 8MB partition (sdX9) for EFI partition (FAT). Yeah, ZFS automatically turn the disk into GPT partitioning scheme. After adding the two disks into a ZFS pool, the partitions will be like this:

sda: sda1 sda9, sdb: sdb1 sdb9

I’m doing mirroring for sda and sdb. I wish I have one more SSD. I would mirror two partitions on separated SSDs for ZIL. If you are luckier than me, do it! It is for safety measure. But, don’t mirror the cache because it’s wasting space.

Here’s the reality:

zpool  create -f -o ashift=12 -o altroot=/mnt -m none rpool mirror sda sdb log sdc2 cache sdc3

If I may have a dream with two SSDs:

zpool create -f -o ashift=12 -o altroot=/mnt -m none rpool mirror sda sdb log mirror sdc2 sdd2 cache sdc3 sdd3

Disable access time, enable relative time and enable LZ4 compression on tanks.

zfs set atime=off rpool
zfs set relatime=on rpool
zfs set compression=lz4 rpool

If nothing is wrong, we would got:

# zpool status rpool
  pool: rpool
 state: ONLINE
  scan: none requested

    rpool       ONLINE       0     0     0
      mirror-0  ONLINE       0     0     0
        sda     ONLINE       0     0     0
        sdb     ONLINE       0     0     0
      sdc2      ONLINE       0     0     0
      sdc3      ONLINE       0     0     0

errors: No known data errors

Next, the partitioning. After this, I’m doing things from Crossroad’s tutorial with some tweaks.

Create Partition

As Debian configuration:

zfs create -o mountpoint=none rpool/ROOT
zfs create -o mountpoint=/ rpool/ROOT/debian-1
zpool set bootfs=rpool/ROOT/debian-1 rpool

What? Yes, I’m installing Debian not Ubuntu.

Last, export the pool we’ve created for later import. We do this so that the ZFS config would read from disk by ID instead of common UDEV naming. Believe me, you don’t want to use UDEV naming (sda, sdb, etc.) on ZFS.

zpool export rpool

Now, we can start installing Debian system.

Install Debian

Reimport ZFS pool and create a ZFS configuration cache file.

zpool import -d /dev/disk/by-id -R /mnt rpool
mkdir -p /mnt/etc/zfs
zpool set cachefile=/mnt/etc/zfs/zpool.cache rpool

REMEMBER: (Straight from the ZFS FAQ)

Run update-initramfs -c -k all after any /sbin/zpool command changes the /etc/zfs/zpool.cache file.

This is the reason of random failures from mounting ZFS root partition.

Install the system and mount all the basic system partitions.

debootstrap --arch=amd64 jessie /mnt

And now, configure.

Configure Debian


echo gantenghost > /mnt/etc/hostname
sed -i -Ee "s#(127.+)#\1 gantenghost#" /mnt/etc/hosts

Create configuration for network interfaces. In the spirit of new configuration scheme, I put two files in /etc/network/interfaces.d/

# cat > /mnt/etc/network/interfaces.d/eth0 << .
auto eth0
iface eth0 inet dhcp


# cat > /mnt/etc/network/interfaces.d/lo << .
auto lo
iface lo inet loopback

Mount all the system filesystems.

for f in dev dev/pts proc sys; do mount -v --bind {,/mnt}/$f; done

Chroot there

chroot /mnt /bin/bash

In Debian Configuration


apt-get install locales
sed -i -Ee 's/# (en_US.UTF+)/\1/' /etc/locale.gen


dpkg-reconfigure tzdata
apt-get install ntp
/etc/init.d/ntp stop

Remember when I said I’m going to put /boot on different partition? Now is the time.

echo "/dev/sdc1 /boot ext4 rw,relatime,stripe=4,data=ordered 0 0" >> /etc/fstab
mount /boot

Remember also what I said about using the ninth partition of the first disk? Now is the time.

apt-get install dosfstools
mkdir /boot/efi
mkfs.vfat /dev/sda9
echo "/dev/sda9 /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0" >> /etc/fstab

Install ZFS packages with Debian style. ZFS needs lsb-release package.

cd /tmp
apt-get install lsb-release
dpkg -i zfsonlinux_6_all.deb
apt-get update && apt-get install linux-image-amd64 debian-zfs
apt-get install grub2-common grub-efi zfs-initramfs

Last, add a login.

apt-get install sudo vim ssh
adduser user
adduser user sudo

Setup GRUB For ZFS Boot

There is a bug in Debian’s GRUB that makes the system unbootable. First, let’s reconfigure GRUB Default command line:

sudo dpkg-reconfigure grub-efi-amd64

Change Linux default command line (second screen after Linux command line) from



root=ZFS=rpool/ROOT/debian-1 rpool=rpool bootfs=rpool/ROOT/debian-1 quiet

After this, update grub and we are done.

sudo update-grub

Booting to New System

After all preparations, unmount all the filesystems

umount /boot/efi/ /boot
for f in dev/pts dev proc sys; do umount /mnt/$f; done
zfs umount -a
zfs export rpool


Final Thought

Well, you might find some faults here and there. If not, everything after this is straightforward.

Bacaan Lebih Lanjut

Memperbaharui Infinix X600 (Note 2) ke Android M (6.0)

Saya menulis ini karena banyak tulisan serupa yang berisi iklan. Masakkan banyak situs yang menulis versi yang sebenarnya hanya menyalin dari forum Infinix dan menautkan tautan unduhan ke Internet Archive. Sama sekali tidak modal! Karena saya pun tidak modal, saya tidak menggunakan tautan beriklan.

Saya memiliki masalah dengan Infinix Note 2 saya. Pada aplikasi Pembaharuan, saya menemukan ada versi terbaru X600-H533-B1-M-20160131 yang selalu gagal diunduh. Saya mengunduh lewat jaringan WiFi UI dan bahkan nekat menggunakan jaringan LTE langsung. Namun, proses pembaharuan selalu gagal.

Untungnya CardNeverEnds pada Kaskus yang memberi petuah agar menggunakan versi T-Card. Berikut cara saya:

  1. Versi X600-H533-B1-M-20160131 ternyata identik dengan Saya mengunduh itu dari Internet Archive.
  2. Taruh direktori download pada SD Card telepon. Ini direktori baku saat Anda mengunduh langsung dari telepon. Saya kebetulan mengunduh dari laptop jadi saya perlu menulis langkah ini untuk mengingat.
  3. Masuk ke dalam Pembaharuan ⇒ … ⇒ Update From Local ⇒ Pilih berkas ZIP pembaharuan dan pasang.
  4. Tunggu dan beres.

XUI versi Marsmallow dari Infinix ini jauh terasa enteng. Saya belum bisa bilang tentang ketahanan daya. Saya sedang melakukan uji stres dengan memasang aplikasi Path.

Memasang Steam Linux pada Tambora

Seperti janji saya, saya akan memaparkan cara saya memasang Steam Linux. Sebenarnya, cara yang saya ikuti sama seperti artikel Wiki Debian. Hanya saja, msohon maaf, kali ini akan ada penjelasan politis yang membuat permainan OpenGL (DoTA 2 misalnya) di Steam Linux dapat dimainkan dengan menggunakan penggerak terbuka (radeon) dari MESA.

Langkah Seperti pada Wiki Debian

Pastikan bahwa pengguna yang hendak memainkan DoTA 2 memilki akses ke akselerasi video dan audio:

sudo usermod -aG audio,video user

Kalau mengikuti cara pemasangan sebelumnya, pasti user sudah tergabung ke kedua grup ini sehingga perintah ini tidak perlu dilakukan. Saya menulis ini hanya demi kelengkapan saja.

Kalau mengikuti cara pemasangan sebelumnya, paket-paket yang tidak bebas juga sudah terpasang. Demi kelengkapan, berikut isi /etc/apt/sources.list BlankOn Tambora saya:

deb tambora main extras restricted extras-extricted
deb-src tambora main extras 

deb tambora-updates main extras restricted extras-extricted
deb-src tambora-updates main extras 

deb tambora-security main extras restricted extras-extricted
deb-src tambora-security main extras

Seharusnya sudah seperti ini bila Anda mengikuti cara pemasangan UEFI saya terdahulu.

Aktifkan repositori untuk arsitektur i386: (Intel 32-bita)

sudo dpkg --add-architecture i386
sudo apt-get update

Nah, berikut ini penjelasan agak politis, supaya Anda tahu apa itu kebebasan.

Memasang Pustaka S3TC

Pustaka S3TC adalah sebuah pustaka yang mengimplementasi algoritma kompresi tekstur S3. Penggunaan algoritma ini secara de facto memasukkan algoritma ini sebagai salah satu standar OpenGL. Sayangnya, MESA secara baku menonaktifkan pustaka ini dan membuat algoritma kompresi dengan jalan memutar sehingga tidak melanggar paten bila digunakan di negara yang mematenkan algoritma ini. Namun, MESA juga menyediakan pustaka kompresi tekstur S3TC untuk negara-negara yang secara legal tidak memperbolehkan paten algoritma.

Bagaimana dengan Indonesia?

Untungnya, sebelum Indonesia mengikuti Trans-Pacific Partnership (TPP), Indonesia belum mengakui adanya paten algoritma. Sepengetahuan saya, Indonesia masih termasuk  negara-negara non-TPP seperti negara-negara di Eropa yang dapat menggunakan pustaka ini. Mudah-mudahan Pak Jokowi atau siapa pun yang berkuasa tidak secara cepat memutuskan untuk masuk ke dalam TPP kendati kaum tekstil mengatakan adanya insentif penghapusan tarif bagi peserta TPP. Hal ini mengingat anggota-anggota TPP yang lain juga penghasil tekstil.

Ada sisi lain yang dikorbankan apabila Indonesia masuk ke TPP. Yang paling penting buat saya adalah potensi hilangnya klausul pengecualian dari paten obat untuk penyakit-penyakit penting yang diatur oleh hukum Indonesia dan bermain DoTA 2 akan terasa lambat dengan penggerak bebas terbuka MESA. Sebelum TPP disahkan, mari bermain DoTA 2 lebih cepat dengan implementasi algoritma yang benar.

Ada dua cara untuk mencapainya, entah langsung memasukkan repositori Deb-Multimedia atau memasang paket-paket yang diperlukan saja. Cara yang baik dan benar adalah yang pertama. Namun, saya lebih memilih cara yang kedua karena algoritma itu tetap dan perubahan paket-paket pustaka S3TC hanya berisi cara pemaketan saja. Mari unduh:


Untuk lebih jelas, buang saja dahulu paket-paket kompresi tekstur yang memutar: (S2TC)

sudo apt-get remove --purge libtxc-*

Pasang pustaka S3TC yang sebenarnya.

sudo gdebi libtxc-dxtn0_1.0.1-dmo2_amd64.deb libtxc-dxtn0_1.0.1-dmo2_i386.deb

Saya membiasakan diri menggunakan gdebi daripada dpkg untuk memasang paket lepas Debian.

Terakhir, pasang langsung Steam Linux:

sudo apt-get install steam

Selesai sampai sini. Anda bisa langsung menjalankan Steam Linux dan mengunduh DoTA 2.


Saya sudah lama tidak mengikuti perkembangan MESA semenjak PC saya berubah dari Gentoo menjadi Kubuntu. Saya tidak tahu apakah beberapa variabel berikut secara baku sudah aktif di MESA. Namun, tidak ada salahnya saya mencantumkan tambahan parameter saya untuk aplikasi OpenGL. Saya taruh ini di /home/user/.bashrc (sesuaikan dengan home Anda).

export R600_STREAMOUT=1
export R600_HYPERZ=1
export R600_TILING=1
export R600_SURF=1
export R600_GLSL130=1

Keluar dari sesi destop dan masuk kembali supaya sesi Anda mengaktifkan kelima baris ini.

Kali ini benar-benar selesai.

Memperlengkapi Tambora dengan Paket-paket Dasar

Tambora yang telah saya pasang masih belum lengkap. Terakhir laptop saya baru saja diisi:

  • Penggerak perangkat WiFi Realtek yang sudah dimodifikasi. Hasilnya luar biasa! saya jadikan hotspot sangat stabil.
  • Peluncur synapse untuk meluncurkan aplikasi.
  • Aplikasi blueman untuk menggantikan bluemoon yang tidak bisa mengakses perangkat HCI (bluetooth).

Mari modifikasi lebih lanjut.

Manajer Sesi

Untuk kali ini saya terpaksa melepas Manokwari karena tidak sesuai dengan alur kerja saya:

  • Pintasan papan ketik tidak ada. Saya harus menggunakan tetikus. Untuk trackpad kalau apa-apa pakai itu, sangat merepotkan.
  • Panel tidak dapat disembunyikan/dipindahkan. Bagi saya, kehilangan piksel horisontal sangat disayangkan untuk layar laptop yang lebar.
  • Pintasan kecerahan layar tidak berfungsi, saya tidak tahu aplikasi apa yang harus dipasang.
  • Perpindahan aplikasi (ALT+TAB) hanya terjadi antar dua aplikasi terakhir yang digunakan.

Tentu saja, saya masih menyerempet ke produk BlankOn! Saya menggunakan Cinnamon dengan citarasa BlankOn. Untuk memasang:

sudo apt-get install blankon-branding-cinnamon

Saya mendapati destop ini sesuai dengan cara kerja saya. Tombol META (WIN) membuka menu mulai. Panel dapat disembunyikan. Yang paling penting, bisa dikonfigurasikan.

Paket Kerja

Memasang libreoffice untuk dokumen.

sudo apt-get install blankon-office

Memasang Dia (pembuat diagram) untuk membuat diagram-diagram.

sudo apt-get install dia-gnome dia-rib-network dia-shapes

Memasang paket-paket grafis (GIMP, Inkscape, dan MyPaint) untuk berkreasi.

sudo apt-get install blankon-graphics mypaint

GIMP untuk gambar raster, Inkscape untuk gambar vektor, dan MyPaint untuk gambar kuas.

Memasang OpenVPN untuk Network Manager untuk terhubung ke jaringan kantor. Apa? Anda pikir UI tidak canggih keamanannya seperti Big Four?

sudo apt-get install network-manager-openvpn network-manager-openvpn-gnome

Selanjutnya memasang Slack untuk berlaku seperti DevOps. Yup, kami tidak hidup di zaman batu.

sudo gdebi slack-desktop-2.0.0-amd64.deb

Saya menggunakan gdebi, bukan apt-get, agar paket-paket yang dibutuhkan juga dipasang.

Memasang Steam Linux Client

Salah satu kebutuhan saya adalah membutuhkan Steam untuk mengakses permainan yang saya beli atau pun secara legal dapat saya mainkan gratis (DoTa 2). Saya menggunakan instruksi dari Wiki Debian. Namun, ada sedikit perubahan yang membuat aplikasi berjalan dengan lancar. Ini akan saya bahas pada selanjutnya.

Paket Sisanya

Mohon maaf, sepertinya kemalasan menimpa saya. Selanjutnya, silakan lihat-lihat saja. Caranya, buka saja Synaptic Package Manager dan cari dengan kata kunci “blankon”. Nanti di sana cari saja yang kira-kira perlu. Kalau ada yang bertentangan, misalnya seperti blankon-panel yang membuang blankon-desktop, abaikan saja.


Memasang BlankOn Tambora dengan UEFI

Memasang BlankOn Tambora dengan UEFI

Saya butuh destop yang stabil. Destop KF5 dari Neon Desktop yang saya pasang belum stabil. Wajar, masih versi GIT, sih.

Sepengalaman saya, BlankOn menawarkan kestabilan itu pada versi Suroboyo. Saya pun mencoba memasang Tambora yang dari tahun lalu Beta 1. Mungkin Beta 1 ini sudah terlalu stabil makanya tidak ada pembaharuan lagi.

Saatnya memasang BlankOn Tambora! Saya hendak memasang ini di laptop saya tercinta. Kebetulan kali ini bukan laptop kantor sehingga partisinya bisa saya atur seenak jidat. Merek yang saya pakai tapi masih sama, hanya saja dari model AMD A10-7300.

Saya sudah pernah membahas memasang pada laptop kantor. Saya akan melewati penjelasan detail pada beberapa bagian karena sudah dibahas di tulisan itu. Saya menggunakan HP Pavilion 15 Notebook PC.


Saya menggunakan Installer Kubuntu 15.10 untuk memasang BlankOn. Untuk itu, saya harus menyesuaikan beberapa hal.

Saya asumsikan Anda sudah mengerti tata letak partisi yang Anda buat. Sebagai referensi, saya membuat tata letak mirip dengan artikel saya terdahulu.

  • /dev/sda1 – FAT32 (UEFI) – /boot/efi (200MB)
  • /dev/sda2 – LVM – LVM (Sisanya)
    • /dev/HP/root – EXT4 – / (20GB)
    • /dev/HP/rumah – EXT4 – /home (20GB)

Anda bisa menyusahkan diri dengan cara heker yang ada di artikel saya sebelum ini, atau menggunakan KDE Partition Manager untuk konfigurasi partisi biasa. Lalu,  system-config-lvm untuk membuat partisi LVM. Aplikasi system-config-lvm perlu dipasang karena belum ada pada Installer Kubuntu 15.10.

sudo apt-get install system-config-lvm

Selanjutnya, buka KDE Partition Manager dan bagi dua ruang penyimpan menjadi /dev/sda1 (FAT32/UEFI) dan /dev/sda2 (LVM). Lalu, setelah itu jalankan system-config-lvm untuk membuat volum logikal /dev/HP/root dan /dev/HP/rumah.

Memasang debootstrap

sudo apt-get install debootstrap

Memasang Aturan debootstrap untuk Tambora

Om Aftian pernah menyediakan aturan untuk memasang BlankOn untuk Debian. Nampaknya belum diterima untuk ada d paket resmi Debian. Untuk itu, saat ini gunakan saja versi kontribusi Beliau untuk memasang Tambora.

sudo wget -O /usr/share/debootstrap/scripts/tambora

Sekarang sudah siap untuk memasang Tambora.

Memasang Tambora

Memasang Tambora:

mount /dev/HP/root /mnt
debootstrap tambora /mnt

Ingat, pemasangan kali ini menggunakan UEFI. Jadi, mari lakukan hal-hal yang biasa dilakukan untuk UEFI.

Memasang Sistem Berkas

Mari pasang sistemberkas sistem:

mount none /mnt/proc -t proc
mount none /mnt/sys -t sysfs
mount /dev /mnt/dev -o bind
mount none /mnt/dev/pts -t devpts
mount none /mnt/sys/firmware/efi/efivars/ -t efivarfs
mount /run /mnt/run -o bind

Sekalian pasang direktori untuk partisi EFI (/dev/sda1). Partisi EFI berisi semua binari EFI, termasuk GRUB dan Windows Boot Manager.

mkdir -p /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi/
mkdir -p /mnt/boot/efi/EFI

Lalu pasang juga partisi yang lain, misalnya rumah (/home)

mount /dev/HP/rumah /mnt/home

Pasang semua yang diperlukan dan sekali lagi, sesuaikan dengan cetakan partisi yang Anda telah pilih.

Dan setelah itu, mari masuk ke sistem.

chroot /mnt /bin/bash

Pemasangan Biasa

Konfigurasi nama laptop:

echo "nama-laptop" > /etc/hostname
sed -i 's/\(localhost\)/\1 nama-laptop /' /etc/hosts

Ganti “nama-laptop” dengan sesuatu yang lebih kreatif sebagai nama laptop.

Buat daftar sistemberkas yang harus terpasang ke /etc/fstab. Anda bisa melihat satu-satu di /proc/mounts, tetapi saya menggunakan cara heker: (REGEX FTW!)

grep ^\/dev /proc/mounts  > /etc/fstab

Mari betulkan daftar repositori /etc/apt/sources.list dengan daftar yang lebih lengkap.

cat > /etc/apt/sources.list << EOF
deb tambora main extras restricted extras-extricted
deb-src tambora main extras 

deb tambora-updates main extras restricted extras-extricted
deb-src tambora-updates main extras 

deb tambora-security main extras restricted extras-extricted
deb-src tambora-security main extras

Saya pakai cara heker.  Silakan gunakan cara-cara yang lebih beradab misalnya menggunakan ViM atau membukanya pada aplikasi penyunting pada sistem operasi inang.

Setelah itu, pasang destop BlankOn. Paket blankon-desktop memasang banyak sekali aplikasi.

apt-get update
apt-get install blankon-desktop

Anehnya juga termasuk memasang GDM dan LightDM.

BlankOn menyediakan dua.

BlankOn menyediakan dua.

Saya memilih menggunakan LightDM. Lalu, saya kembali membaca novel. Saya putuskan saya terlalu malas untuk menghapus satu pun. Tapi, kalau Anda butuh ruang penyimpan, Anda dapat memasang GDM.

Konfigurasi Locale untuk menggunakan ID_id.UTF-8

dpkg-reconfigure locales

Konfigurasi zona waktu: (Asia/Jakarta)

dpkg-reconfigure tzdata

Pasang berkas-berkas yang perlu:

apt-get install lvm2
apt-get install vim ssh

Baris pertama untuk perkakas sistemberkas yang tak lazim (tak ikut dalam ketergantungan blankon-desktop). Baris kedua adalah untuk aplikasi favorit yang tidak terpasang pada normalnya.

Setelah itu, memasang kernel. Sebenarnya inilah penyebab saya memilih memasang lewat bootstrap. Terakhir saya memasang BlankOn belum ada dukungan pemasangan UEFI.

apt-get install linux-image-amd64 grub-efi-amd64
grub-install /dev/sda

Terakhir, tambahkan satu atau dua pengguna:

adduser user
usermod -aG sudo,adm,audio,video user

Selesai. Kalau sudah sampai sini, berarti pemasangan lancar. Saatnya menyalakan ulang laptop dan masuk ke BlankOn yang sudah terpasang.

Tambahan untuk Pemilik Laptop dengan Realtek RTL8723BE yang Malang Seperti Saya

Saya tidak tahu apakah HP Indonesia menyediakan fasilitas pengembalian barang. Saya tidak punya waktu untuk itu. Tapi, WiFi RTL8723BE yang tertanam pada laptop saya (nomor SKU: M2W18PA#AR6) atau laptop kantor tidak bisa dijalankan langsung dari Kubuntu 15.10 maupun BlankOn Tambora. Pada artikel sebelumnya, saya mengakali dengan menonaktifkan perangkat keras IOMMU di kernel (iommu=soft).

Waktu itu laptop kantor masih menggunakan Intel. Tapi, sekarang saya menggunakan AMD A10 7300. Laptop saya diiklankan memiliki 10 unit komputasi dengan menggunakan 4 unit dari prosesor dan 6 unit dari keping grafik. Dengan mematikan IOMMU, saya akan kehilangan 6 unit komputasi dari GPU!

HSA harus ada! Kali ini saya tak mau kompromi. Setelah berjibaku dengan kestresan tingkat tinggi, saya pun menemukan proyek penggerak Realtek di Github. Pada salah satu forumnya, ada yang membahas mengenai laptop HP yang menggunakan RTL8723BE.

Sebelum memulai, pasang paket yang perlu:

sudo apt-get install linux-headers-amd64 build-essential git

Pada forum Realtek di Github diberikan tambahan sulaman untuk Realtek. Untuk itu, mari mengunduh dari Github kode sumber penggerak yang sudah ditambal dengan sulaman itu:

git clone git:// && cd rtlwifi_new
git checkout rock.new_btcoex

Lakukan stanza kompilasi dan pasang seperti biasa.

make && sudo make install

Selanjutnya, tambahkan parameter untuk modul kernel. Ini yang berlaku untuk laptop saya (nomor SKU: M2W18PA#AR6)

echo "options rtl8723be ips=0 ant_sel=1 msi=1" | sudo tee  /etc/modprobe.d/50-rtl8723be.conf

Perhatikan pada ant_sel=1. Pada beberapa laptop, ada yang harus mengaktifkan antena kedua sebagai penghubung radio WiFi agar lancar. Untuk itu, parameter perlu diubah menjadi ant_sel=2. 

Laptop siap dinyalakan ulang untuk mendapatkan perubahan parameter ini. Saya akhirnya bisa mendapatkan HSA dan radio WiFi akur.

Hasil Akhir

Sepertinya memang kualitas masih beta. Atau, bisa jadi ada paket-paket yang belum terpasang kalau hanya memasang blankon-desktop. Berikut yang bisa saya simpulkan dari hasil debootstrap ini:

  1. Ikon-ikon di taskbar menumpuk. Untuk berpindah tugas, hanya antar 2 aplikasi saja. Jadi, kalau ada aplikasi yang ketiga, harus diklik. Ada galat yang terbuka, sih, di situs pengembangan BlankOn. ikon-rusak
  2. Applet Network Manager dan OSD belum jalan. Sepertinya ada XDG autostart yang tidak berjalan di sesi BlankOn.
  3. Bluetooth belum ada applet, bluemoon tidak dapat dijalankan. Diakali dengan memasang Bluetooth Manager:
    sudo apt-get install blueman obexpushd
  4. Tidak ada peluncur aplikasi. Saya suka itu! Saya jadi bisa memasang Synapse kesukaan saya:
    sudo apt-get install synapse
  5. Seperti biasa, BlankOn Tambora menghabiskan memori relatif kecil. Hanya sekitar 1GB (termasuk Chromium)! Untuk aplikasi desktop masa kini, ini sudah sangat wah.
  6. Untuk memperlengkapi, cari semua paket berawalan blankon-branding-* yang belum terpasang dan mau dipasang. Saya lihat ada paket Cinnamon untuk BlankOn juga. Untuk kali ini, saya belum membahas apa saja.

Selanjutnya, saya akan coba belajar memperlengkapi BlankOn Tambora yang saya pasang ini dan mencoba memasang yang lain.

browser: Chromium, console: Gnome Terminal, pemasang: Synaptic

browser: Chromium, console: Gnome Terminal,
pemasang: Synaptic


Memasang PostgreSQL Versi Terbaru

Masukkan repo PostgreSQL:

echo "deb `lsb_release -cs`-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql.list

Kalau Anda tidak memasang LSB, ganti lsb_release dengan wily, jessie, wheezy, dan sebagainya silakan lihat di sini.

Setelah selesai, impor kunci:

wget --quiet -O - | sudo apt-key add -

Setelah itu, lakukan hal yang biasa dilakukan:

sudo apt-get update
sudo apt-get install postgresql pgadmin3


Bagaimana Debian Membentuk Model FOSS

Bagaimana Debian Membentuk Model FOSS

FOSS bukanlah tentang perangkat lunak gratis saja. FOSS merupakan sebuah kultur untuk berbagi dan melakukan segala sesuatu secara gotong royong.

Bermula dari kekurangan distro SLS yang hanya dikerjakan satu orang, Ian Murdock (RIP) mengundang orang-orang untuk membuat sebuah sistem GNU/Linux baru dalam bentuk paket-paket.

Ide dasarnya adalah sebuah paket perangkat lunak mengerti bagaimana caranya mengintegrasi dirinya sendiri pada sistem; mengerti bagaimana menghapus dirinya sendiri; dan mampu memperbaharui dengan aman ke versi terbaru.


Bacaan Lebih Lanjut

Memasang Ubuntu Wily (15.04) Pada HP Probook 440 G2 (HP EFI)
Wily Broke The Window

Memasang Ubuntu Wily (15.04) Pada HP Probook 440 G2 (HP EFI)

Ini adalah perjalanan JP memasang Kubuntu Wily dasar pada sistem HP Probook 440 G2. Mesin ini memiliki implementasi UEFI yang salah sehingga memerlukan ketekunan dalam membuat pemasangan berjalan baik.

Informasi Sistem

Informasi sistem yang didapatkan dari dmidecode.

Manufacturer: Hewlett-Packard
Product Name: HP ProBook 440 G2
Version: A3009DD10303
Serial Number: CND5325G0B
UUID: 9A822FFF-61BB-11E5-A123-9023330000FF
Wake-up Type: Power Switch
SKU Number: L7Z17PT#AR6
Family: 103C_5336AN G=N L=BUS B=HP S=PRO

Saya menjalankan LiveCD Kubuntu Wily. Jangan lupa pasang dulu debootstrap sebelum lanjut. Lalu, supaya tidak pusing, langsung jalan sebagai root saja.

sudo apt-get update && sudo apt-get install debootstrap
sudo su -

Saya agak curang sedikit. Sebelum kedua langkah tersebut, saya mengubah /etc/apt/sources.list mengarahkan ke Hal ini mengingat peladen fisiknya ada di ruang sebelah.


Sistem ini dijangkiti oleh WIndows 7 sebesar satu tera. Dengan konfigurasi sebagai berikut:

Original HP Partition

Original HP Partition

Jadi kira-kira seperti ini:

/dev/sda1 ntfs primary “SYSTEM”
/dev/sda2 ntfs primary “WINDOWS XXX”
/dev/sda3 ntfs primary “HP_RECOVERY”
/dev/sda4 fat32 primary “HP_TOOLS”

Berhubung laptop ini sudah dibeli dengan perangkat lunaknya, saya memutuskan untuk tidak menghapus Recovery. Saya hanya perlu menghapus Windows.

Saya bingung dan memutuskan untuk menggunakan LVM. Satu tera untuk sistem agak berlebihan menurut saya. Cara berikut bisa dilakukan dengan GParted atau KDE Partition Manager. Akan tetapi, saya mau terlihat seperti heker:

parted -s /dev/sda set 2 lvm on
pvcreate /dev/sda2
vgcreate HP /dev/sda2

Saya kasih label “HP”, tapi Anda boleh beda. Kemudian, saya putuskan untuk buat partisi dasar 20G dan partisi rumah 20G.

lvcreate -L 20G -n root HP
lvcreate -L 20G -n rumah HP

mkfs.ext4 -L "Pusat Kehidupan" /dev/HP/root
mkfs.ext4 -L "Rumah Kita" /dev/HP/rumah

Selanjutnya proses pemasangan.


Pasang debootstrap seperti biasa:

mount /dev/HP/root /mnt
debootstrap wily /mnt
mount /dev/HP/rumah /mnt/home

Saya sengaja memisahkan direktori rumah ke partisi berbeda. Mungkin butuh di kemudian hari.

Pasang Sebelum CHROOT

Karena sistem yang hendak dipasang menggunakan UEFI, mari kita lihat apakah ada UEFI.

ls -al /sys/firmware/efi/efivars/

Seharusnya ada isinya. Kalau tidak, berarti belum menggunakan UEFI. Silakan gunakan prosedur pemasangan yang biasa saja.

Selanjutnya, mari pasang beberapa sistem berkas:

mount none /mnt/proc -t proc
mount none /mnt/sys -t sysfs
mount /dev /mnt/dev -o bind
mount none /mnt/dev/pts -t devpts
mount none /mnt/sys/firmware/efi/efivars/ -t efivarfs

Baris terakhir diperlukan agar dapat mendaftarkan GRUB ke sistem UEFI.

Si HP ini menggunakan partisi EFI dengan NTFS. Padahal, UEFI bersabda harus menggunakan partisi FAT16/FAT32. Untungnya, ada 4 partisi dan salah satunya memakai FAT32. Jadi, saya buat saja satu direktori efi ke partisi ke-4 itu.

mkdir -p /mnt/boot/efi
mount /dev/sda4 /mnt/boot/efi/
mkdir -p /mnt/boot/efi/efi

Sekarang kita masuk ke sistem.

chroot /mnt /bin/bash

Selanjutnya, mari memasang sistem.

Memasang Bootloader dan Kernel

Yang lain mudah, tetapi yang ini agak sulit. Berikut hasil kalau proses sebelumnya berhasil:

# mount
/dev/mapper/HP-root on / type ext4 (rw,relatime,data=ordered)
none on /proc type proc (rw,relatime)
none on /sys type sysfs (rw,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=4018096k,nr_inodes=1004524,mode=755)
none on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000)
none on /sys/firmware/efi/efivars type efivarfs (rw,relatime)
/dev/sda4 on /boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

Mari pasang LVM2

apt-get install lvm2

Lalu pasang GRUB dan kernel.

apt-get install linux-generic grub-efi-amd64

Sayangnya, karena implementasi HP yang unik dan menyalahi aturan UEFI, Kubuntu akan gagal mendaftarkan sistemnya dengan benar. Apalagi, secara sotoy [slang: sok tahu] skrip grub-install mengira bahwa UEFI ada di direktori pertama. Tetapi, Anda bisa juga beruntung mendapatkan skrip membaca dengan benar.

Saya tidak suka digantung. Mari lihat entri ubuntu dipasang pada UEFI:

# efibootmgr
Timeout: 0 seconds
BootOrder: 0000
Boot0000* ubuntu

Selain saya tidak tahu entri “ubuntu” mengarah ke mana, saya juga tidak suka dengan label yang hanya “ubuntu”. Mari pasang secara benar.

Pertama-tama, hapus “ubuntu”. Perhatikan bahwa entri Ubuntu ada pada indeks 0000.

efibootmgr -b 0000 -B

Selanjutnya, mari pasang label yang baik dan benar.

efibootmgr  -c -d /dev/sda -p 4 -l "\efi\ubuntu\grubx64.efi" -L "OS Sesungguhnya"

Berikut penjelasan parameter:

  • -c, buat entri baru.
  • -d /dev/sda, EFI yang ada di perangkat /dev/sda (harddisk utama).
  • -p 4, aplikasi EFI ada di partisi keempat.
  • -L “OS Sesungguhnya”, label entri. Anda bisa mengubah yang lainnya.

Selanjutnya saat menyalakan laptop, entri “OS Sesungguhnya” sudah ada di dalam OS.

Dan Pemasangan pun Berlanjut Normal

Selanjutnya membosankan seperti bootstrap yang lainnya.

sudo apt-get install ssh vim sudo
sudo adduser pengguna
sudo adduser pengguna sudo
sudo apt-get install kubuntu-desktop yakuake

Terakhir, muat ulang dan masuk ke sistem.


Saya tidak tahu kelakuan HP ini. Pertama-tama saya harus boot dengan USB Kubuntu Live terpasang. Kemudian, ketika sudah masuk ke sistem terpasang, USB dilepas. Saya lalu kembali menjalankan efibootmgr untuk menghapus entri yang sudah ada dan memasang kembali entri “OS Sesungguhnya”.

Do I have to write this on English?

Mengubah Format PEM (Apache/NGINX) ke Keystore JAVA

Mengubah Format PEM (Apache/NGINX) ke Keystore JAVA

Untuk organisasi/individu yang memegang domain dengan banyak sub-domain, biasanya dibeli sertifikat wildcard. Dengan sertifikat wilcard, tak perlu membeli sertifikat per sub-domain. Hanya saja, biasanya format yang diberikan adalah PEM untuk peladen HTTP semacam Apache2 atau NGINX.

Bagaimana dengan peladen berbasis Web macam Tomcat?

Saya asumsikan sudah ada tiga berkas ini:

Kunci privat peladen.
Sertifikat peladen yang sudah ditandatangani oleh CA.
Sertifikat CA yang menandatangani sertifikat peladen.

Selanjutnya, ubah bentuk X.509 ke format PKCS12 dengan OpenSSL:

openssl pkcs12 -export -in server.crt -inkey server.key -out keystore.p12 -name red5 -certfile ca.cert

Anda akan ditanyakan sandi baru. Jangan lewati karena proses berikutnya butuh sandi tersebut! Isi sandi dengan sandi yang aman.

Selanjutnya, impor kunci PKCS12 tersebut ke sebuah keystore Java:

keytool -importkeystore -deststorepass ahs8kahLuvu3nahb -destkeypass ahs8kahLuvu3nahb -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass ahs8kahLuvu3nahb -alias red5

Saya menggunakan PWGen untuk membuat sandi acak. Mohon ganti ahs8kahLuvu3nahb dengan sandi yang Anda telah masukkan sebelumnya pada proses openssl.

Selesai. Anda kini sudah memiliki keystore.jks yang siap dipakai oleh aplikasi Java untuk membuat koneksi SSL/TLS.

Selamat mencoba.

Dunia Tak Seindah Dulu

Dunia Tak Seindah Dulu

Sebagai janitor yang berbakti, saya suka berkunjung ke situs-situs yang seharusnya dikelola oleh orang lain. Kebetulan lapak orang itu menempati lahan yang saya kelola. Ya, sebagai bakti sosial, saya juga suka membantu lapak-lapak itu.

Suatu hari, saya secara tak sengaja menemukan akses ke URL yang seharusnya tidak ada, yakni akses ke, pada peramban saya. [Pada Firefox tekan F12 pada jaringan

Hmm… domain apakah ini?

Ternyata usut punya usut, ini adalah  salah satu domain yang digunakan oleh spyware!

Menurut ddmcleod, penyebab injeksi ini adalah komputer yang terinfeksi oleh malware khusus. Malware ini mendeteksi pengguna yang merupakan admin WordPress. Sehingga, ketika pengguna sedang login ke situsnya yang berbasis WordPress, malware ini akan menginjeksi situs tersebut dengan menambahkan skrip Javascript pada setiap header.php tematik yang ada di situs itu.

Niat sekali pembuat malware ini. Mereka berusaha menginjeksi komputer-komputer di seluruh dunia dengan harapan ada admin WordPress yang memakai komputer terinjeksi malware tersebut untuk mengakses situsnya.

The malicious code.

The malicious code. I screen-captured it so that Google won’t block my site.

Canggih sekali malware zaman sekarang.

Cara saya mendeteksi setiap tematik itu adalah dengan menjalankan berikut:

grep -ri 1Aqapkrv

dan saya pun menemukan skrip aneh. Lalu, saya satu persatu menghapus tematik yang tak diperlukan dan menghapus baris injeksi.

Selamat berburu.

Bacaan Lebih Lanjut

Cara Membuat Situs WordPress Hanya-Baca

Cara Membuat Situs WordPress Hanya-Baca

Untuk mengurangi akibat pembobolan situs, batasi akses situs WordPress dengan membatasi akses pengguna MySQL.

  1. Masuk ke dalam MySQL dan pilih basisdata:
    sudo mysql --defaults-file=/etc/mysql/debian.cnf
  2. Untuk melihat GRANT apa saja yang didapatkan:
    mysql>  SHOW GRANTS FOR 'pengguna'@'localhost';
    | Grants for pengguna@localhost                                                                                   |
    | GRANT USAGE ON *.* TO 'pengguna'@'localhost' IDENTIFIED BY PASSWORD '*PASSWORDYANGDIHASHED'                     |
    | GRANT ALL PRIVILEGES ON `basis_data`.* TO 'pengguna'@'localhost'                                                |
    2 rows in set (0.00 sec
  3. Pada contoh, seperti umumnya pengguna MySQL yang diberikan berhak melakukan apa saja kepada basisdata tersebut. Cabut semua akses basisdata:
    REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'pengguna'@'localhost';
  4. Setelah semua izin dicabut, maka izinkan pengguna untuk membaca saja isi basisdata:
    GRANT SELECT ON basis_data.* TO 'pengguna'@'localhost';
  5. Selesai. Bila benar dilakukan, maka tabel perizinan akan berisi hal berikut:
    mysql>  SHOW GRANTS FOR 'pengguna'@'localhost';
    | Grants for pengguna@localhost                                                                                   |
    | GRANT USAGE ON *.* TO 'pengguna'@'localhost' IDENTIFIED BY PASSWORD '*PASSWORDYANGDIHASHED'                     |
    | GRANT SELECT ON `basis_data`.* TO 'pengguna'@'localhost'                                                        |
    2 rows in set (0.00 sec
WordPress Modus Pemeliharaan

WordPress Modus Pemeliharaan

WordPress mematikan semua aktivitas saat diperbaharui. Dia akan muncul halaman Dalam Pemeliharaan (Maintenance Mode). Sayangnya, tampilan yang ada saat ini kurang menarik.

Saatnya mengubah tampilan menjadi lebih baik.

Buat Halaman PHP maintenance.php

Tanpa perlu plugin, cukup buat sebuah berkas PHP di wp-content/maintenance.php yang berisi:

$protocol = $_SERVER["SERVER_PROTOCOL"];
if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
    $protocol = 'HTTP/1.0';
    header( "$protocol 503 Service Unavailable", true, 503 );
    header( 'Content-Type: text/html; charset=utf-8' );
<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8">
    <title>Maintenance mode</title>
    <meta name="msapplication-TileColor" content="#5bc0de" />
    <meta name="msapplication-TileImage" content="assets/img/metis-tile.png" />

    <!-- Bootstrap -->
    <link rel="stylesheet" href="//">

    <!-- Font Awesome -->
    <link rel="stylesheet" href="//">
  <body class="error">
    <div class="container">
      <div class="col-lg-8 col-lg-offset-2 text-center">
        <div class="logo">
          <h1>Teehee.... </h1>
        <img src='/wp-content/uploads/Maintenance.png'>
        <p class="lead text-muted">Oops, you caught us upgrading. Please refresh this page a minute later.</p>
<?php die(); ?>

Berkas ini sebenarnya hanya modifikasi dari modus pemeliharaan yang dimiliki WordPress. Saya menambahkan tiga berkas: dua berkas CSS yang ada di CDN dan satu berkas gambar (wp-content/uploads/Maintenance.php) yang saya buat sendiri menggunakan MyPaint. Klik gambar untuk mendapatkan kode sumber.


A custom maintenance mode.

Bacaan Lebih Lanjut

Solusi Kode Bebas/Terbuka untuk Radeon R7 370

Solusi Kode Bebas/Terbuka untuk Radeon R7 370

Minggu ini saya menambahkan sebuah VGA baru, HIS Radeon R7 370 IceQ H2 2GB, ke komputer saya. Secara umum spesifikasi saya menjadi AMD FX 8350 8 inti, 32 GB memori, dan R7 370.

Sebenarnya saya ingin membeli R7 270x. Namun, harga toko di Mangga Dua masih disebut sebagai R9 270x. Berarti barang tersebut belum diperbaharui di Indonesia. Memang, strategi AMD aneh sekali. Barang R9 masa lalu diterbitkan ulang menjadi seri R7. Itu sebabnya, VGA saya masih terdeteksi sebagai R9 270.

Para ahli tempat saya mengadu menyarankan saya membeli VGA nVidia. Memang diakui, implementasi OpenGL nVidia terbaik. Apalagi, ATi lebih mengarah kepada optimasi DirectX.

Lalu mengapa?

Karena AMD telah melepaskan implementasi registernya untuk diakses oleh pengembang kode bebas/terbuka sehingga bisa dibuat penggerak versi terbuka. Saat ini, implementasi terbaik untuk VGA berbasis kode bebas/terbuka dimenangkan oleh AMD. Intel tidak kalahnya untuk keterbukaan. Hanya saja, kartu grafisnya belum sepadan.

Pemasangan Kernel

Kernel yang digunakan adalah kernel 4.2 yang baru saja diterbitkan. Unduh kernel ini:

wget \ \

Saya mendapati pesan kesalahan ini:

[    2.242982] radeon 0000:01:00.0: Direct firmware load for radeon/TAHITI_vce.bin failed with error -2
[    2.242985] radeon 0000:01:00.0: radeon_vce: Can't load firmware "radeon/TAHITI_vce.bin"

Nampaknya karena implementasi kode terbuka/bebas untuk VCE baru diterbitkan pada Mei 2015 lalu. Saya perlu mengunduh versi terbaru firmware dari versi setelah Vivid.


Setelah ini, pasang semuanya.

sudo dpkg -i *.deb
sudo update-grub

Selanjutnya pemasangan MESA dan DRM paket Gallium Nine. Oh, iya, sekalian bonus Wine yang mendukung Gallium Nine.

Pemasangan MESA dan DRM versi iXit

Dahulu saya juga pernah melakukan ini di Gentoo. Cukup rumit karena mengunduh dari GIT. Namun, nampaknya Ubuntu membuat semuanya mudah. Cukup tambahkan tiga repositori PPA ini.

sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo add-apt-repository ppa:oibaf/gallium-nine
sudo add-apt-repository ppa:commendsarnex/winedri3

oibaf telah berbaik hati memaketkan MESA/DRM dan Gallium Nine. Gallium Nine adalah sebuah implementasi Gallium yang menerjemahkan perintah DirectX 9 langsung tanpa perlu diganti menjadi perintah OpenGL. Sehingga, setiap perintah DirectX 9 langsung dieksekusi ke perangkat keras. Gallium sendiri sebuah teknologi yang memanfaatkan LLVM untuk mengeksekusi serangkaian perintah ke VGA.

Sekarang, perbaharui perangkat lunak Anda.

sudo apt-get update
sudo apt-get upgrade

Ubuntu normalnya memasang libtxc-dxtn-s2tc0, sebuah implementasi S3TC yang bebas paten. Puji Tuhan, Indonesia tidak memiliki hukum paten perangkat lunak yang bodoh. Mari gunakan paket implementasi S3TC (teknik kompresi tekstur) yang sesuai implementasi OpenGL. Hidup anti paten perangkat lunak!

sudo apt-get install libtxc-dxtn0

Tambahkan DRI3 pada berkas konfigurasi X.Org /etc/X11/xorg.conf

Section "Device"
   Identifier "radeon"
   Driver "radeon"
   Option "DRI3"

Penggunaan DRI3 masih perlu diaktifkan secara manual.

Oh, iya, sekalian saja pasang Wine yang sudah bisa mendukung Gallium Nine.

sudo apt-get install wine1.7

Jika berhasil sampai baris ini, silakan menyalakan ulang komputer Anda untuk menikmati versi yang lebih bagus.

Hasil Radeon

Hasil pandangan mata saya, RADEON jauh lebih stabil dan cepat dibandingkan dengan FGLRX, penggerak tertutup dari AMD.

Saya bermain DoTA 2 dengan konfigurasi:

-novid -console -high -dev -threads 4 +mat_autoload_glshaders 0

Semua opsi grafis menyala kecuali VSync. Oh, iya, pada FGLRX, saya mematikan ambiance occlusion agar nyaman dimainkan.

Saya juga menerapkan Unigene Heaven versi Demo untuk membandingkan. Hasil menggunakan DirectX Wine lebih cepat dibandingkan dengan OpenGL. Aneh sekali, memang.


Bacaan Lebih Lanjut

HHVM dengan SupervisorD
supervisord spawned two hhvm with one as a backup

HHVM dengan SupervisorD

Sebelum ini saya telah membahas bagaimana menggunakan HHVM dengan Monit. Saat ini saya berusaha mengaplikasikan HHVM dengan Supervisord. Supervisord adalah sebuah aplikasi yang bertugas untuk mengatur proses-proses. Dia mirip dengan uWSGI, unicorn, gunicorn, systemd, dan lain sebagainya.

Eh, systemd? Bukankah systemd sebuah aplikasi init?

Iya, betul! Mereka semua memiliki fungsi yang kurang lebih sama. Namun, supervisord memiliki konfigurasi agnostik dibandingkan systemd. Maklum saja, systemd digunakan untuk sistem juga. Sekarang orang masih merasa ngeri kalau berhubungan dengan sistem. Ya, begitu, deh….


Skenario yang digunakan sebagai contoh adalah sebagai berikut:

  • Supervisord akan dipakai untuk meluncurkan 2 proses HHVM.
  • HHVM yang pertama akan dipakai sebagai koneksi utama dengan NGINX.
  • HHVM yang kedua digunakan sebagai cadangan.

Untuk skenario pemasangan virtual host yang dipakai secara beramai-ramai, Anda dapat menyesuaikan dengan kebutuhan.

Pasang HHVM dan Supervisord

Cara memasang repositori Debian 7 dan Debian 8. Untuk Ubuntu dan distro-distro sejenis lainnya silakan cari sendiri. Saya pernah membahas di artikel terdahulu.

Mari pasang secara Debian:

sudo apt-get install hhvm supervisor

Selanjutnya konfigurasi.


Untuk konfigurasi HHVM yang sama/generik, saya akan menuliskannya dalam sebuah berkas konfigurasi HHVM. Untuk dua proses HHVM, konfigurasi supervisord akan berisi parameter yang berbeda dalam menjalankan HHVM.


Buat sebuah berkas /etc/hhvm/hhvm_generik.ini — saya kurang kreatif memberi nama, silakan ganti dengan nama lain.

; php options

; php options

; hhvm specific
hhvm.server.type = fastcgi
hhvm.server.default_document = index.php
hhvm.log.level = Warning
hhvm.log.always_log_unhandled_exceptions = true
hhvm.log.runtime_error_reporting_level = 8191
hhvm.log.use_log_file = true
hhvm.log.file = /var/log/hhvm/error.log
hhvm.mysql.typed_results = false

hhvm.jit = 1
hhvm.eval.jit_warmup_requests = 1

hhvm.keep_perf_pid_map = 0
hhvm.perf_pid_map = 0
hhvm.perf_data_map = 0

hhvm.server.apc.enable_apc = true

Selanjutnya, konfigurasi berbeda untuk tiap proses HHVM.


Konfigurasi untuk proses HHVM utama, /etc/supervisor/conf.d/hhvm.conf

command=/usr/bin/hhvm -c /etc/hhvm/php.ini -c /etc/hhvm/server_wp.ini -m server
autostart=true            ; start at supervisord start (default: true)
autorestart=unexpected    ; auto restart if HHVM dies
user=www-data  ; setuid to this UNIX account to run the program

Selanjutnya, saya akan buat konfigurasi untuk proses HHVM cadangan. Saya akan menandai beberapa baris yang berbeda.

command=/usr/bin/hhvm -c /etc/hhvm/php.ini -c /etc/hhvm/server_wp.ini -m server
autostart=true            ; start at supervisord start (default: true)
autorestart=unexpected    ; auto restart if HHVM dies
user=www-data  ; setuid to this UNIX account to run the program

Supaya jelas, perubahan yang saya buat untuk proses HHVM kedua:

  • Baris pertama, ubah nama grup proses menjadi hhvm2. Istilah grup proses karena bisa jadi dalam hhvm2 ada beberapa proses.
  • Baris ketiga, ubah nama proses menjadi /var/run/hhvm/pid2
  • Baris keempat, ubah nama socket menjadi /var/run/hhvm/hhvm2.sock]

Saya masih menggunakan konvensi direktori yang lama, /var/run. Untuk konvensi saat ini, sebaiknya ditulis ke direktori /run. Anda sebaiknya membiasakan diri saja dengan direktori itu.

Untuk skenario yang lain, repositori kode HHVM pada baris ke-5 dapat ditaruh pada berkas yang berbeda. Kebetulan saya menggunakan pengguna yang sama, jadi saya menggunakan satu repositori saja.

Pak, itu aman, ‘kah?

Repositori HHVM itu sendiri adalah sebuah berkas SQLite3. Menurut FAQ SQLite, SQLite3 menggunakan penguncian sistemberkas saat menulis. Sehingga, hanya satu saja proses yang bisa menulis. Sayangnya, untuk sistemberkas NFS dan FAT mekanisme itu tidak terjamin. Ingatlah untuk tidak menaruh berkas repositori di NFS.

Repositori HHVM berukuran sangat besar. Hal ini dapat membebankan untuk skenario inang dengan banyak situs. Untuk menghemat, Anda dapat saja membuat repositori HHVM dengan perizinan grup dapat menulis (0660). Lalu, setiap pengguna yang menjalankan HHVM dimasukkan ke grup itu. Ah, tapi ini di luar skenario dan saya takkan membahas untuk saat ini.


Ubah upstream NGINX untuk menambahkan satu HHVM sebagai cadangan. Sebagai contoh, saya menaruh upstream dalam sebuah berkas /etc/nginx/conf.d/upstream.conf

# Upstream to abstract backend connection(s) for PHP.
upstream php {
  server unix:/var/run/hhvm/hhvm.sock;
  server unix:/var/run/hhvm/hhvm2.sock backup;

Kira-kira begitulah untuk setiap konfigurasi. Selanjutnya, mari menjalankan setiap proses.

Jalankan Semua

Selanjutnya, jalankan proses.


Pertama-tama, tambahkan aturan-aturan HHVM yang baru dibuat.

sudo supervisorctl reread
sudo supervisorctl add hhvm
sudo supervisorctl add hhvm2

Baris pertama meminta supervisord untuk membaca ulang konfigurasi. Dua baris selanjutnya menjalankan HHVM.

Oh, iya, kalau misalnya ada perubahan di berkas konfigurasi, jalankan:

sudo supervisorctl update hhvm

Ganti hhvm dengan nama grup proses yang lain.


Jalankan NGINX seperti biasa.

sudo invoke-rc.d nginx restart


Bacaan Lebih Lanjut

Kompilasi PHP 5.2 pada Debian Jessie

Kompilasi PHP 5.2 pada Debian Jessie

Seperti halnya mantan terindah, aplikasi penting sering kali tidak dapat dilupakan begitu saja. Ia menyeruak masuk kembali dan selalu saja menempati ruang pikiran. Di saat keyakinan melangkah untuk maju, kembali hati jatuh ke relung yang sama.

Inilah kisah dari seorang yang gagal move on dari PHP 5.2 untuk semua saudara/i yang juga gagal move on. CMUNGUDH!

Dari pada menambah ketidakjelasan di hati, berikut asumsi saya agar kita tidak salah paham:

  1. Unduh semua pada satu direktori. Ingat! Satu direktori, jangan terpisahkan.
  2. Semua dilakukan sebagai pengguna biasa, bukan yang berkuasa.
  3. Silakan cari paket-paket pengembang yang diperlukan, saya lupa soalnya. Itu ada di masa lalu. Saya berasumsi Anda sudah memasang paket-paket yang dibutuhkan. Nanti sambil konfigurasi bisa tahu, kok, paket apa saja.

Pasang Paket Yang Dibutuhkan

Lupa saya, tee hee…

Unduh PHP dan Semua Tambalannya

Pada satu direktori, mari unduh berkas-berkas yang dibutuhkan.

export PHP_VERSION=5.2.17

# PHP 5.2
wget "$PHP_VERSION.tar.bz2"


wget "$PHP_VERSION-fpm-0.5.14.diff.gz" -O php-fpm.diff.gz

ABI dan API XML2 dan OpenSSL berubah pada Debian Jessie, sehingga perlu disesuaikan.

Tambal PHP 5.2

Ekstraksi PHP 5.2 dan masuk ke direktori hasil ekstraksi:

tar xvfj php-5.2.17.tar.bz2
cd php-5.2.17

Di direktori PHP, tambal dengan urutan sebagai berikut:

# Patches for Debian Jessie
patch -Np1 -i ../php-5.2.17-libxml2.patch
patch -Np1 -i ../php-5.2.17-openssl.patch

# Patch for PHP-FPM
zcat ../php-fpm.diff.gz | patch -Np1

Saya malas bikin berkas tambalan. Lakukan saja ini untuk memperbaiki skrip konfigurasi dalam mencari pustaka Freetype:

sed -i 's/freetype2\/freetype/freetype/' configure

Konfigurasi PHP 5.2 untuk Siap Dikompilasi

Pada proses ini, mungkin ada paket pengembangan yang lupa terpasang. Silakan ditelusuri saja.

CFLAGS="-O3 -pipe -march=native -mtune=native -fomit-frame-pointer" './configure'  '--prefix=/opt/php52' '--with-config-file-path=/opt/php52/etc' '--disable-debug' '--with-zlib' '--with-pcre-dir' '--with-gd' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--with-zlib-dir=/usr' '--with-freetype-dir=/usr' '--enable-gd-native-ttf' '--with-ldap' '--enable-soap' '--enable-sockets' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--enable-zip' '--with-mcrypt' '--with-xmlrpc' '--enable-mbstring=shared' '--with-openssl=shared' '--with-mysql=shared' '--with-gettext=shared' '--with-zend-vm=GOTO' '--enable-bcmath' '--with-snmp=/usr' '--with-xsl' '--enable-fastcgi' '--enable-fpm' '--with-mysqli' '--with-libdir=lib/x86_64-linux-gnu'

Yang terpenting ada dua:

CFLAGS=”-O3 -pipe -march=native -mtune=native -fomit-frame-pointer”
ini optimasi kompilasi. Lakukan baris ini bila kompilasi dilakukan pada mesin yang sama atau lingkungan yang sama dengan mesin tujuan.
Debian Jessie menaruh pustaka 64-bit tidak lagi di /usr/lib64, tetapi di /usr/lib/x86_64-linux-gnu.

Anda dapat juga mengganti direktori pemasangan sesuai selera Anda. Misalnya, Anda penggemar FHS sehingga menggunakan /usr/local atau di tempat lain.

Tempat pemasangan PHP 5.2, Anda dapat mengganti ini sesuai selera.
Konfigurasi berkas. Anda dapat menaruhnya di /etc/php52, misalnya, agar konsisten dengan Debian.

Sebelum kompilasi, ubah pustaka XML2 dan SSL yang hendak ditautkan ke PHP pada Makefile

sed -i 's/-lxml2 -lxml2 -lxml2/-lcrypto -lssl/' Makefile

Selanjutnya, PHP siap untuk dikompilasi.

Kompilasi dan Pasang PHP

Kompilasi dan PHP 5.2

make -j"$(nproc)"
sudo make install

Sampai sini saya pikir untuk konfigurasi PHP FPM dan pemasangan berkas init tidak perlu saya tulis, ‘kan?

Silakan tulis di komentar kalau memang perlu saya buatkan tutorial memasang skrip SystemD dan Sysvinit.

Ucapan Terima Kasih

Terima kasih kepada