Category Archives

348 Articles
WordPress, NGINX, HHVM, dan Monit

WordPress, NGINX, HHVM, dan Monit

Bagi yang sudah pernah berurusan dengan situs yang berat, Anda pasti juga jengah dengan kelakuan PHP-FPM. Ada beberapa solusi yang saat ini tersedia:

Beberapa waktu yang lalu saya sudah membahas tentang uWSGI. Sekarang, saya mau mencoba teknologi HHVM. Doakan saja supaya saya tidak malas dan juga mau mencoba HippyVM dan PHP7-FPM sehingga saya bisa menuliskan untuk Anda.

Pasang HHVM

Cara pasang HHVM di berbagai sistem operasi ada di sini. Saya asumsikan hendak dipasang di sistem operasi Debian Jessie.

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
echo deb http://dl.hhvm.com/debian jessie main | sudo tee /etc/apt/sources.list.d/hhvm.list
sudo apt-get update
sudo apt-get install hhvm

Perintah-perintah ini pada intinya memasang kunci paket repo HHVM dan menambahkan repo tersebut ke daftar repositori sistem. Kemudian, perbaharui daftar paket yang tersedia dan pasang HHVM.

Selanjutnya, ubah konfigurasi HHVM di /etc/hhvm/server.ini menjadi

; php options

pid = /var/run/hhvm/pid

; hhvm specific 
hhvm.server.file_socket=/var/run/hhvm/hhvm.sock
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.repo.central.path = /var/run/hhvm/hhvm.hhbc
hhvm.mysql.typed_results = false

; Generate JIT codes sooner!
hhvm.eval.jit_warmup_requests = 1

; Disable Perf debugging
hhvm.keep_perf_pid_map = 0
hhvm.perf_pid_map = 0
hhvm.perf_data_map = 0

Ada beberapa perbedaan dengan konfigurasi biasa. Berikut yang penting:

  • Saya memilih untuk menggunakan socket dari pada port TCP karena lebih aman dalam menentukan hak akses.
  • Saya menyuruh HHVM untuk segera mengaktifkan optimasi dari sejak awal. Hal ini mengakibatkan peladen agak lama di awal.
  • Saya mematikan fungsi profiling. Fungsi ini berguna kalau Anda mau men-debug kode PHP Anda yang dieksekusi oleh HHVM. Kemungkinan besar, Anda terlalu malas seperti saya. Fungsi ini hanya akan memenuhi /tmp dengan berkas peta performa.

Pasang NGINX

Pertama-tama, pasang NGINX:

sudo apt-get install nginx

Set upstream NGINX ke HHVM di berkas /etc/nginx/conf.d/upstream.conf

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

Lalu, buat sebuah blok konfigurasi /etc/nginx/php-hhvm

location ~ \.(hh|php)$ {
    try_files $uri =404;

    fastcgi_keep_conn on;
    fastcgi_pass   php-hhvm;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

Ini saya ambil dan modifikasi sedikit dari hhvm.conf yang biasanya terpasang saat kita memasang HHVM.

Nah, setiap Virtual Host yang mau menggunakan, tinggal mengikutkan berkas php-hhvm di dalam berkas konfigurasinya. Misalnya, kita buat sebuah berkas /etc/nginx/sites-available/default

server {
    # Anything not directed at specific host will hit "Welcome to nginx"
    listen 80 default_server;
    server_name _;
    
    root /var/www/html;
    index index.php index.html index.htm;

    location / {
            try_files $uri $uri/ /index.php?$args ;
    }

        include php-hhvm;

}

Jangan lupa, ini cuma contoh! Untuk mesin produksi, tolong ubah berkas direktori dan tambahkan beberapa aturan untuk menghindari injeksi.

Selanjutnya, pasang seperti biasa ala Debian:

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
sudo invoke-rc.d nginx reload

Beres.

Eits! Nanti dulu, Kisanak! Supaya situs tetap berjalan, mari pasang Monit untuk memonitor keberadaan HHVM. Menurut pengalaman saya, awal-awal HHVM rentan terhadap aplikasi yang harus dinyalakan ulang.

Pasang Monit

Pasang Monit.

sudo apt-get install monit

Buat konfigurasi Monit untuk HHVM di /etc/monit/conf.d/hhvm yang isinya:

check process hhvm with pidfile /var/run/hhvm/pid
  group hhvm
  start program = "/usr/sbin/service hhvm start" with timeout 60 seconds
  stop program = "/usr/sbin/service hhvm stop"
  if failed unixsocket /var/run/hhvm/hhvm.sock then restart
  if mem > 400.0 MB for 1 cycles then restart
  if 5 restarts with 5 cycles then timeout

Untuk dapat memonitor Monit, langkah opsional yang dapat diambil adalah dengan mengubah 3 baris berikut pada /etc/monit/monitrc

set httpd port 2812 and
   use address localhost  # only accept connection from localhost
   allow localhost        # allow localhost to connect to the server and

Kalau pada konfigurasi Jessie, baris-baris itu mulai dari baris ke-130.

Setelah selesai, muat ulang Monit:

invoke-rc.d restart monit

Kalau mau lihat Monit, silakan ketik:

sudo monit status

Tentunya, langkah opsional dikerjakan. Bila tidak, maka Monit tak dapat dilihat.

Selesai!

Paket ca-certificates-java Pada Ubuntu Rusak

Paket ca-certificates-java Pada Ubuntu Rusak

Saat saya hendak membangun Gradle, saya selalu mendapat pesan kesalahan seperti ini:

Exception in thread "main" javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

Hal ini terjadi saat saya hendak mengunduh sebuah berkas dari HTTPS. Semua versi Java yang terpasang, baik OpenJDK maupun Oracle 7, 8 tidak dapat menggunakan. Usut punya usut, ternyata ada masalah pada pemasangan paket ca-certificates-java pada Ubuntu Vivid yang saya gunakan. Saya lihat besar berkasnya:

$ ls -al /etc/ssl/certs/java/cacerts 
-rw-r--r-- 1 root root 32 Apr 29 07:21 /etc/ssl/certs/java/cacerts

Cuma 32 byte!

Solusi adalah dengan membuat ulang berkas tersebut.

sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

Selesai.

Sumber:

NGINX, uWSGI, PHP pada Debian Jessie

NGINX, uWSGI, PHP pada Debian Jessie

Solusi PHP-FPM sudah tak mencukupi lagi untuk saya. Sering kali saya mendapati sistem-sistem dengan pengunjung banyak tidak bereaksi. Padahal, semua layanan menyala.

Dari kasak-kusuk di Internet yang saya dapati bahwa ternyata PHP-FPM harus sering-sering dijalankan ulang. Bahkan, ada yang memasang CRON untuk menjalankan ulang PHP-FPM setiap 15 menit sekali. Saya pun terenyuh.

Untungnya, ada sebuah solusi, yakni uWSGI. Awalnya, ia hanya untuk menjalankan layanan web berbasis Python. Namun, sekarang ia berkembang untuk menjalankan hampir apa saja. Enaknya dia, setiap proses dijalankan sebagai pengguna biasa (non-root).

Cara Pasang

Cara pasang seperti biasa:

sudo apt-get install nginx uwsgi uwsgi-plugin-php

Seperti biasa.

Konfigurasi

NGINX

Cara konfigurasi sama seperti PHP-FPM, tetapi sedikit berbeda. Berikut sekilas contoh konfigurasi salah satu virtual host (/etc/nginx/sites-available/xxx)

server {
  ...

  location / {
    index   index.php;
    try_files $uri $uri/ /index.php?$args;
  }

  ...

  location ~ .php$ {
     include uwsgi_params;
     uwsgi_modifier1 14; 
     uwsgi_pass unix:/tmp/uwsgi_webphp.sock;
  }
}

Perhatikan bahwa tidak ada yang berubah dari baris lain. Hanya blok pengolah PHP yang diubah dari FastCGI untuk PHP-FPM menjadi UWSGI. Aplikasi nginx memiliki antarmuka alami dengan uWSGI.

Seperti biasa, aktifkan virtual host dengan:

sudo ln -s /etc/nginx/sites-{available,enabled}/xxx
sudo service nginx restart

Selanjutnya uWSGI.

uWSGI

Pada Debian Jessie, virtual host uWSGI terletak pada /etc/uwsgi/apps-available/xxx.ini

Perhatikan kalau uWSGI mengharapkan ekstensi .ini pada setiap berkas konfigurasi virtual host yang valid.

Mari buat berkas /etc/uwsgi/apps-available/webphp.ini (Iya, saya kurang kreatif, silakan ganti nama berkas dengan apa saja)

[uwsgi]
socket=/tmp/uwsgi_webphp.sock
pidfile2=/tmp/uwsgi_webphp.pid
daemonize=/var/log/uwsgi/webphp.log
plugins=php

chdir=/var/www
cheaper=4
close-on-exec=1
harakiri=360
max-requests=128
processes=8
master=1
uid=www-data
gid=www-data
chmod=666
log-5xx=1
vacuum=1
post-buffering=8192

Perhatikanlah yang berbeda ada pada baris 3! Gunakan pidfile2, jangan pidfile saja! Opsi pidfile2 yang membuat adalah pengguna tersebut, bukan root. Bila menggunakan pidfile, layanan uwsgi akan gagal dikendalikan oleh Debian.

Aktifkan konfigurasi ala Debian:

sudo ln -s /etc/uwsgi/apps-{available,enabled}/webphp.ini
sudo service uwsgi restart

Selesai.

Akses Ke Layanan Awan OneDrive

Akses Ke Layanan Awan OneDrive

Mereka menginvasi tempat kerja dan tempat belajar. Mereka pikir bisa memaksa kita untuk meninggalkan FOSS atau GNU/Linux? Mereka salah! Kita tetap bisa bebas walaupun terpaksa menggunakan layanan tertutup. GNU/Linux tetap bisa dipakai!

Ada 2 cara untuk bertahan menggunakan GNU/Linux:

  1. Gunakan API yang disediakan oleh OneDrive dengan aplikasi onedrive-d.
  2. Gunakan WebDav dengan davfs2.

Saya akan membahas kedua cara tersebut. Kali ini saya akan membahas yang pertama saja.

Cara 1: Menggunakan onedrive-d

Aplikasi onedrive-d menggunakan pustaka inotify yang dimiliki kernel Linux untuk mengawasi sebuah direktori. Ketika ada berkas yang berubah pada direktori tersebut, ia akan menjalankan proses sinkronisasi dengan menggunakan API OneDrive.

OneDrive menggunakan OAuth2 sebagai proses autorisasi. Untuk dapat mengakses API OneDrive, aplikasi onedrive-d sebelumnya harus diberi izin terlebih dahulu. Itu sebabnya, dibutuhkan peramban untuk mengakses laman autentikasi Microsoft. Jadi, walau pun proses pemasangan berjalan menggunakan terminal, tetap saja proses ini dijalankan pada lingkungan grafis.

Memasang onedrive-d

Sebelum memulai, pasang manajer paket untuk Python3. Pada Ubuntu ini biasanya belum terpasang:

sudo apt-get install python3-pip

Unduh dengan menggunakan GIT aplikasi onedrive-d

git clone https://github.com/xybu/onedrive-d.git

Setelah mengunduh kode sumber onedrive-d, lakukan pemasangan seperti yang dijelaskan di halaman GitHub onedrive-d.

cd onedrive-d
./install.sh

Skrip pemasangan akan memasang paket-paket yang diperlukan. Sampai ini pemasangan sudah selesai.

Kenapa? Kegampangan? 😛

Persiapan Mengonfigurasi onedrive-d

Sejujurnya, Anda cukup ikuti cara yang ada di halaman GitHub onedrive-d. Tetapi, saya mau memasang dengan asumpsi aplikasi ini akan digunakan pada lingkungan banyak pengguna. Apalagi, cara pemasangan yang terlalu gampang sepertinya membuat bobot tutorial ini serasa kurang geek.

Buat satu pengguna yang akan jadi pengguna onedrive-d.

sudo adduser --system --group --no-create-home --disabled-login onedrive

Buat direktori konfigurasi per pengguna

mkdir ~/.onedrive

Buat berkas log dan jadikan itu milik onedrive.

sudo touch /var/log/onedrive_d.log
sudo chmod 0660 /var/log/onedrive_d.log
sudo chown onedrive:onedrive /var/log/onedrive_d.log

Untuk setiap pengguna yang hendak menggunakan onedrive-d,  tambahkan ke grup onedrive. Misalnya:

adduser user onedrive

Selanjutnya adalah konfigurasi OneDrive.

Mengonfigurasi onedrive-d

Pada saat penulisan, perkakas GUI onedrive-d tidak dapat dijalankan di Ubuntu. Maka, kita perlu menjalankan konfigurasi di terminal. Seperti yang saya bilang sebelum ini, sebaiknya terminal dijalankan pada lingkungan grafis agar mudah menjalankan peramban.

Jalankan wisaya konfigurasi:

onedrive-pref --ui=cli
Loading configuration ... OK
[2015-05-22 19:29:26,545] DEBUG: thread_mgr: started.
Setting up onedrive-d...

Selanjutnya proses pada wisaya konfigurasi ini akan saya jabarkan satu persatu.

Otorisasi OAuth2

Langkah pertama, wisaya akan meminta Anda untuk menyalin sebuah URL dan menjalankannya pada peramban.

(STEP 1/4) Do you want to authorize sign in with your OneDrive account? [Y/n] 

You will need to visit the OneDrive sign-in page in a browser, 
log in and authorize onedrive-d, and then copy and paste the 
callback URL, which should start with 
"https://login.live.com/oauth20_desktop.srf".

The callback URL is the URL where the sign-in page finally goes blank.

Please visit the sign-in URL in your browser:

Sign in to your Microsoft account

No Description

Please paste the callback URL:

Buka peramban Anda dan salin URL panjang tersebut untuk login ke OneDrive.

This slideshow requires JavaScript.

Masuk ke OneDrive. Beri izin akses kepada aplikasi onedrive-d. Pada saat selesai otorisasi, peramban Anda akan dibawa ke sebuah laman kosong. URL itu berisi tiket otorisasi yang diperlukan aplikasi onedrive-d untuk masuk ke OneDrive. Salin seluruh URL untuk digunakan pada konfigurasi.

Melanjutkan proses tadi, masukkan URL yang dibutuhkan:

Please paste the callback URL:

No Title

No Description

[2015-05-22 19:32:38,675] DEBUG: MainThread: config saved. onedrive-d has been successfully authorized.

Tentu saja, saya menyensor kode saya. Itu isinya alfanumerik.

Menentukan Direktori yang Akan Ditautkan OneDrive

Selanjutnya, wisaya akan menanyakan direktori yang akan ditautkan.

(STEP 2/4) Do you want to specify path to local OneDrive repository? [Y/n] 
Please enter the abs path to sync with your OneDrive (default: /home/user/OneDrive): /home/user/Dokumen/OneDrive
The path "/home/user/Dokumen/OneDrive" does not exist. Try creating it.
[2015-05-22 19:33:07,139] DEBUG: MainThread: config saved.
Path successfully set.

Menentukan Beberapa Hal

Selanjutnya, Anda dapat menentukan beberapa hal:

  1. Berapa lama yang ditoleransikan untuk menunggu jaringan yang gagal.
  2. Berapa ukuran minimal berkas yang dikirimkan dalam bentuk potongan-potongan. Lebih kecil dari nilai ini, berkas akan dikirim utuh.
(STEP 3/4) Do you want to change the numeric settings? [Y/n] 
How many seconds to wait for before retrying a network failure (current: 10)?

Files larger than what size (in MiB) will be uploaded blocks by blocks? (current: 4.0)?

When a file is uploaded blocks by blocks, what is the block size (in KiB)? (current: 512.0)?
[2015-05-22 19:33:32,067] DEBUG: MainThread: config saved.

Proses ini bisa diabaikan sebenarnya.

Menentukan Daftar Berkas yang Tidak Disinkronisasi

Selanjutnya, Anda akan diminta untuk menetapkan aturan untuk berkas-berkas yang tidak masuk konfigurasi. Pada proses ini, bila Anda setuju, wisaya akan membuka berkas ~/.onedrive/ignore_v2.ini dalam penyunting terminal.

(STEP 4/4) Do you want to edit the ignore list file? [Y/n] 
Calling your default editor...
You have exited from the text editor.

All steps are finished.
[2015-05-22 19:33:55,722] DEBUG: Dummy-2: config saved.

Selesai wisaya.

Terakhir

Setelah proses wisaya, untuk menjalankan layanan onedrive-d, jalankan perintah:

onedrive-d start

Bila mau menghentikan layanan onedrive-d:

onedrive-d stop

Untuk lihat apakah layanan berjalan:

onedrive-d status

Selesai.

Waduh, saya pikir singkat, ternyata ada banyak juga. Ya, sudah. Kalau begitu cara kedua akan saya bahas di tulisan mendatang.

Akses Ke Layanan Awan Box

Akses Ke Layanan Awan Box

Layanan box.com tidak memiliki klien untuk GNU/Linux. Akan tetapi, dia menyediakan Webdav untuk koneksi. Dengan memanfaatkan davfs2, direktori box.com dapat diperlakukan selayaknya direktori biasa. Saya menulis tutorial ini dengan menggunakan Ubuntu Vivid.

Pemasangan davfs2

Pertama-tama, pasang davfs2

sudo apt-get install davfs2

Anda akan ditanyakan untuk memasang bit SUID pada mount.dav agar bisa dijalankan oleh pengguna biasa. Bilamana Anda sudah terlanjur memasang atau dialog tersebut tidak muncul, silakan jalankan berikut:

sudo dpkg-reconfigure davfs2

Entah melalui pemasangan pertama kali atau rekonfigurasi, Anda akan ditanyakan konfigurasi SUID

davfs2 configuration in Debian asking for SUID permission.

davfs2 configuration in Debian asking for SUID permission.

Pilih saja <Ya> supaya bisa dijalankan oleh pengguna biasa. Selanjutnya mengonfigurasi BOX.

Konfigurasi BOX di fstab

Konfigurasi BOX untuk ditautkan pada direktori tertentu. Misalnya, saya mengaitkan direktori box.com saya pada subdirektori Dokumen. Anda tidak harus melakukan ini di terminal, bisa menggunakan penyunting kesayangan Anda. Tetapi, supaya terlihat keren, caranya begini:

echo "https://dav.box.com/dav/ /home/user/Dokumen/Box  davfs  _netdev,rw,user 0 0" | sudo tee -a /etc/fstab

Ingat, ya, sebenarnya baris perintah itu menambahkan baris berikut pada /etc/fstab

https://dav.box.com/dav/ /home/user/Dokumen/Box  davfs  _netdev,rw,user 0 0

Selanjutnya, tambahkan login Anda supaya tak perlu memasukkan sandi lagi.

Konfigurasi Login Otomatis

Supaya login dilakukan secara otomatis, perlu dibuatkan sebuah berkas rahasia yang berisi pengguna dan sandi box.com.

Buat direktori untuk konfigurasi davfs2

mkdir ~/.davfs2

Buat berkas yang salah satu baris berisi kresedensial box.com Anda dan tambahkan kresedensial Anda. Cara kerennya berikut:

echo "https://dav.box.com/dav user@email.com s4nD1ku" >> ~/.davfs2/secrets

Ingat! Baris yang hendak ditambahkan pada berkas ~/.davfs2/secrets

https://dav.box.com/dav user@email.com s4nD1ku

Ganti “user@email.com” dengan login Anda dan “s4nD1ku” dengan sandi Anda di box.com.

Tautkan box.com

Tunggu dulu, Kisanak! Sebelum kisanak dapat menautkan box.com, kisanak harus menambahkan pengguna ke grup davfs2 supaya dapat menautkan direktori itu.

Tambahkan pengguna user ke grup davfs2

sudo adduser user davfs2

Kisanak dapat saja keluar dari sistem lalu masuk lagi. Tetapi, kalau saya cukup perbaharui saja daftar grup saya supaya tidak perlu keluar. Caranya:

newgrp davfs2

Nah, setelah itu, kisanak dapat menautkan direktori box.com yang telah kisanak konfigurasi.

mount ~/Dokumen/Box

Selesai.

KMail Gagal Dijalankan

KMail Gagal Dijalankan

TL;DR

Pada suatu waktu sehabis memperbaharui sistem, KMail saya tidak lagi dapat dijalankan. Alasan kegagalan karena layanan Akonadi tidak berjalan. Hal ini disebabkan oleh karena pembaharuan MySQL ke versi 5.6. Untuk mengatasi itu, paket MySQL diganti dengan MariaDB.

Versi Lengkap

Saya sempat gagal menjalankan KMail. Alasan yang diberikan adalah karena layanan Akonadi tidak berjalan. Dari jurnal Akonadi, saya dapati pesan kesalahan berikut:

stderr: "2015-05-21 07:25:45 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-05-21 07:25:45 0 [Note] /usr/sbin/mysqld (mysqld 5.6.24-0ubuntu2) starting as process 13829 ...

Ternyata, Akonadi tidak kompatibel dengan MySQL 5.6. Menurut sumber yang saya temukan dari wawancara dengan Mbah Gugel, saya harus mengganti MySQL dengan MariaDB. Ya, sudah:

sudo apt-get install mariadb-common mariadb-client-core-10.0 mariadb-server-core-10.0

Lalu, saya jalankan ulang KMail dan berhasil. Oh, iya, saya menggunakan Ubuntu Vivid.

DHCPd Lebih Cepat pada Android

Koneksi OnePlus One (OPO) saya suka mati hidup. Apalagi semenjak pindah ke paket Unlimited seharga 149 ribu. Kayaknya, bulan depan mau pindah ke paket yang lebih murah saja.

Dibalik derita nahas pindah paket yang mahal yang berujung kepada koneksi acak-kadut, ada hikmah yang tersirat. Saya menemukan trit tentang DHCP accelerator. Sang penulis mengimplementasi protokol klien DHCP yang lebih efisien.

Artikel asli tentang protokol DHCP ini menyebutkan bahwa protokol yang diimplementasi sebenarnya adalah RFC 4436. Dengan menggunakan catatan koneksi ARP yang telah dilakukan sebelumnya, klien DHCP menentukan peladen DHCP yang optimal.

Versi terbaru binari yang digunakan saat penulisan adalah versi 4. Saya menggunakan ZIP yang dibuat oleh seseorang. Dengan ZIP ini, saya memasang secara mudah dengan menggunakan TWM Recovery.

Oh, iya, binari yang disediakan bukan cuma untuk OPO, tetapi dapat juga digunakan oleh perangkat Android lainnya. Penulisnya sendiri sudah mengirimkan tambalannya kepada AOSP, CM, dan proyek DHCPd.

Hasil dari tambalan ini mengesankan saya. Kendati koneksi masih byar-pet, setidaknya transisi koneksi berlangsung cepat dan lebih stabil. Selamat mencoba.

High Quality Ripping in GNU/Linux

High Quality Ripping in GNU/Linux

ONE OK ROCK and Perfume CD

ONE OK ROCK and Perfume CD

I just remembered this noon that I still have CDs that were not opened yet. Two of them was ONE OK ROCK “35xxxv” and Perfume “LEVEL3”. Those CDs had been in my backpack for a long time. Oh, well, time to rip.

There are many ways to rip CD and you can search my blog to have it. Right now I’m using Morituri. Morituri is a command line tool to rip CD using AccurateRip™ technology and CDParanoia. Two of the best tools for accurately ripping CD.

Preparations

We got two process here: getting pycdio and morituri itself. If you think you won’t need the Paranoia, then you can just jump to getting Morituri.

Getting pycdio

Morituri needs pycdio for interfacing with CDParanoia. It isn’t packaged yet in Ubuntu. We have to install it manually. This package is optional, but I want CD Paranoia!

Let’s install the alternative Python Package Installer (pip):

sudo apt-get install python-pip

Install pycdio dependencies:

sudo apt-get install python-dev libcdio-dev libiso9660-dev swig pkg-config

Alright! Let’s install pycdio:

sudo pip install pycdio

Next let’s get down with Morituri.

Getting Morituri

Install Morituri:

sudo apt-get install morituri

Now, we are ready to get the tracks.

Ripping

There are three parts of ripping the CD using Morituri. First, deciding the CD offset based on your CD drive. Second, optionally get the right MusicBrainz tags. Lastly, rip it with fire!

Getting The Right Offset

The purpose of AccurateRip™ is for determining read offset of your CD drive. You could browse their database if you confident that your CD drive is well-known.

If you have an exotic CD drive, you are not so sure, or you just getting really paranoid, you could check your hardware yourself. Get a relatively well-known CD to test and start analyzing:

rip offset find

This takes a while. It takes two turns to check the drive. I was getting bored and only manage to wait for the first pass before I canceled the execution. Besides, my CD drive is well-known. From dmesg, I got this:

$ dmesg | grep DVD
[    2.400198] ata5.00: ATAPI: HL-DT-ST DVDRAM GH40F, MG01, max UDMA/100
[    2.510952] scsi 4:0:0:0: CD-ROM            HL-DT-ST DVDRAM GH40F     MG01 PQ: 0 ANSI: 5

I confirm from the database and from my offset searching, my CD drive has an offset of 667.

Getting The Right Song Title

You can retag it if you want. But, to get the right title, I suggest to browse MusicBrainz database to find out the right title. If your CD is popular enough, it would have many names.

For example, my Perfume CD, LEVEL3, had 17 names. I picked the CD version. I got its ID by getting the serial number in its URL. It was 92d793f1-316a-4d66-ab1e-b9660d2682f7.

Getting It All Together

Alright, all is well. Our preparation is complete. Let’s rip:

rip cd rip --offset 667 -R 92d793f1-316a-4d66-ab1e-b9660d2682f7 --track-template="%A/%d/%t - %a - %n" --disc-template="%A/%d/%A - %d"

I love to get the layout”Album Artist/Album Name/TrackNumber – Artist – Title”. You may have different format. Well, each to one’s own. Here’s the list taken from the man page:

Tracks are named according to the track template, filling in the variables and adding the file extension.  Variables exclusive to the track template are:

  • %t: track number
  • %a: track artist
  • %n: track title
  • %s: track sort name

Disc files (.cue, .log, .m3u) are named according to the disc template, filling in the variables and adding the file extension.  Variables for both disc and track template are:

  • %A: album artist
  • %S: album sort name
  • %d: disc title
  • %y: release year
  • %r: release type, lowercase
  • %R: Release type, normal case
  • %x: audio extension, lowercase
  • %X: audio extension, uppercase

If you got any error, try to remove the offset parameter. It seems there are many variables to disc perfect. Sometimes hidden track(s) made the offset change. May be, that’s probably just my hunch.

Oh, well, all is good. On to the next original CD.

One Plus One

One Plus One

Saya kehilangan LG G2 saya sehingga saya tak lagi bisa mengoprek perangkat tersebut. Saya memutuskan untuk mencoba perangkat legendaris, One Plus One (OPO). Perangkat ini murah, tetapi spesifikasi seperti G3 dan Note 4. Hanya saja, dia seperti GMail masa Beta, Anda takkan bisa memesan langsung tanpa undangan.

Setelah mengemis meminta bantuan undangan di media sosial, rekan saya memberitahukan tentang program Lazada. Akhirnya, saya mendaftarkan diri di forum One Plus dan langsung mendapatkan 1 undangan yang hanya berlaku 48 jam. Kejam nian! Ah, bulan ini saya terpaksa mengencangkan ikat pinggang.

Saya baca banyak tulisan, terutama program 4 Maret 2015 Lazada yang membuka pemesanan One Plus One selama sejam. Mereka bilang perangkat ini bisa sampai sangat lama. Hitungannya minimal 2 minggu. Untungnya saya, dalam tiga hari perangkat ini telah ada di tangan saya. Terima kasih, Tuhan.

Kesan Pertama

Nanti saya coba unggah hasil video membuka bungkusan. Saya terkesan dengan pemaketan One Plus One. Isi dari paket yang datang, antara lain:

  • Telepon OPO
  • Pengisi daya 2100 mA, kabelnya bisa dicopot untuk penhubung USB.
  • Satu tempat tambahan untuk Nano SIM (kartu SIM nano).
  • Satu pin pembuka tempat USIM (kartu SIM mikro).

Tempat USIM menyatu dengan perangkat, sehingga sekilas tidak terlihat. Sungguh luar biasa disain OPO. Saya pikir sulit, tetapi ternyata hanya mencolokkan pin pembuka maka tempat USIM terpental keluar.

Kulit OPO seperti bahan teflon, kasar dan lengket. Di satu sisi, lapisan ini membuat OPO tidak gampang terlepas dari tangan. Tapi, saya pikir bakal itu juga yang membuat OPO gampang kotor. Ternyata, setelah tak sengaja membuat kotor, kotoran dapat mudah dibersihkan.

Yang saya tak duga, OPO menghasilkan foto yang cukup tajam. Wow, sayangnya saya tidak suka selfie.

Silakan klik sendiri untuk gambar aslinya.

Pindah ROM

Seperti motto dari OPO, saya tidak suka ROM pabrikan. Terutama, saya tidak suka ROM pabrikan OPO. Berikut alasan saya:

  • ROM dibuat dari CyanogenMOD 11s, masih KitKat.
  • WhatsApp mengenali OPO sebagai ROM Kustom.
  • Semenjak saya mengaktifkan ART, tampilan saya sering tidak mau menyala. Sepertinya ada galat pada sensor proksimitas. Lagipula, sepertinya OPO CM11s tidak kompatibel sehingga kembali ke Dalvik.

Kalau saya baca, kemungkinan bulan depan akan muncul versi resmi ROM OPO yang Lollipop. OPO menyebutnya Oxygen OS. Kalau lihat dari komposisi timnya, sepertinya Oxygen OS akan dibuat dari Paranoid Android. Kita lihat saja nanti, tetapi sebelum itu, saya mau pasang yang lain.

Buat Salinan Data Anda!

Proses membuka kunci bakal menghapus data di Internal Storage. Simpan data Anda terlebih dahulu! Serius!

Bahan-bahan

Sebelum memulai, silakan unduh bahan-bahan berikut.

Saya sengaja memberi 2 jenis tautan. Halaman yang berisi daftar ROM dan ROM versi langsung. Saya menyarankan agar memilih halaman daftar ROM dan memilih versi baru. Biasanya lebih stabil.

Selain TWRP, semua ZIP unduh ke OPO. TWRP membutuhkan cara khusus untuk masuk.

Buka Kunci OPO

Sebelum lanjut, pastikan bahwa perkakas fastboot maupun ADB dapat mengakses perangkat Anda.

ROM CM Recovery tidak dapat dipakai untuk memasang ROM berbeda. Saya harus memasang TWRP untuk itu. Saya mendapatkan cara memasangnya dari sebuah trit di Forum OPO.

Masuk ke dalam Fastboot

  1. Matikan OPO. Jangan hubungkan kabel USB.
  2. Tekan tombol Volume Naik + Daya untuk masuk ke modus Fastboot.
  3. Setelah masuk ke Fastboot, hubungkan OPO ke komputer dengan kabel USB.

PERHATIAN! PROSEDUR SETELAH INI AKAN MENGHAPUS SEMUA (FACTORY RESET). PASTIKAN ANDA SUDAH MENYELAMATKAN DATA ANDA! KEHILANGAN DATA SALAH SENDIRI.

Buka kuncian OPO:

fastboot oem unlock

Masuk ulang ke OPO:

fastboot reboot

Karena proses ini melakukan factory reset, pastikan kembali bahwa perkakas fastboot maupun ADB dapat mengakses perangkat Anda. Aktifkan kembali USB Debugging.

Non-aktifkan proteksi CM Recovery. Caranya:

  1. Masuk ke Setelan => Opsi pengembang
  2. Hapus tanda centang/non-aktifkan Update Cyanogen recovery

Selanjutnya, pasang TWRP

Memasang TWRP

Masuk kembali ke Fastboot dan pasang TWRP di mode tersebut:

fastboot flash recovery openrecovery-twrp-2.8.5.1-bacon.img

Selanjutnya, masuk ke TWRP:

fastboot reboot recovery

Di dalam TWRP inilah nantinya kita memasang sistem kita.

Pasang ROM

Pertama-tama, hapus tembolok, sistem, dan data. Seperti biasa:

Wipe => Advanced Wipe => Pilih Dalvik Cache, System, Data, Cache => Swipe to Wipe

Dua partisi, Internal Storage dan USB-OTG tidak dipilih.

Selanjutnya, kembali ke menu utama. Pilih Install. Pasang ROM dengan urutan:

  1. cm-12-20150312-ROBBIEL811-SM4.8-bacon.zip
  2. Slim_mini_gapps.BETA.5.0.x.build.0.x-20150313.zip
  3. bacon_firmware_update_2015_01_29.zip
  4. UPDATE-SuperSU-v2.46.zip

Setelah itu, nyalakan ulang OPO untuk masuk ke sistem yang baru.

Selesai.

CM12 build by Robbiel811

CM12 build by Robbiel811

Referensi

Aktifkan Koneksi ADB dari Komputer ke Perangkat Android

Saya rasa ada di suatu entri di blog ini. Tapi, saya membuat tulisan ini agar lebih jelas.

Aturan UDEV Android

Agar Android dapat dikenali, pasang aturan UDEV untuk Android. Baik systemd maupun sysvinit dapat menikmati ini.

Unduh berkas aturan dan taruh ke direktori aturan UDEV.

sudo wget https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules -O /etc/udev/rules.d/51-android.rules

Muat ulang UDEV.

sudo /etc/init.d/udev restart

Selanjutnya aktifkan modus USB Debugging.

USB Debugging

Aktifkan USB DEBUG pada menu Pengembang. Caranya:

  1. Masuk ke Setelan => Tentang ponsel
  2. Tap beberapa kali pada Nomor bentukan
  3. OPO akan memberitahukan Anda kalau Anda sudah masuk ke menu pengembang.
  4. Keluar dari menu Tentang ponsel dan masuk ke menu Opsi pengembang
  5. Aktifkan Android Debugging
  6. Hubungkan komputer ke OPO dengan kabel USB. Lalu izinkan debugging USB.
    ADB enable access from PC

    ADB enable access from PC

Selesai.

Contoh Kalau Berhasil

Kalau berhasil, Anda bisa lakukan ini pada mode Recovery atau Normal:

$ adb devices
List of devices attached 
4aea6b78        device

Saat telepon Anda dapat masuk ke dalam mode Fastboot, maka yang terdeteksi adalah sebagai berikut:

$ fastboot devices
4aea6b78        fastboot

Selesai.

Getting KF5’s Yakuake on Kubuntu

Ini adalah Yakuake versi yang belum dirilis dan berjalan pada sistem yang belum rilis pula, Kubuntu 14.10. Saya cuma mau menulis catatan saja. Itu sebabnya, saya tidak akan menulis dengan lengkap.

Pagi ini Yakuake saya rusak. Penyebabnya adalah Yakuake masih menggunakan Konsole dari KDE4, sedangkan Kubuntu telah mengganti dengan KF5 (nama resmi KDE5 adalah KF5). Ya, sudah, saya pun mencari kode sumber untuk dapat memasang Yakuake.

Saya mesti memasang:

 

sudo apt-get install extra-cmake-module libkf5notifyconfig-dev libkf5newstuff-dev libkf5parts-dev libqt5x11extras5-dev

Selanjutnya saya mengambil Yakuake dari cabang GIT untuk KF5:

git clone git://anongit.kde.org/yakuake.git -b frameworks

Ciptakan direktori untuk kompilasi dan masuk ke sana.

mkdir yakuake/bangun && cd yakuake/bangun
cmake ../     -DCMAKE_BUILD_TYPE=Release     -DCMAKE_INSTALL_PREFIX=/usr     -DLIB_INSTALL_DIR=lib     -DKDE_INSTALL_USE_QT_SYS_PATHS=ON     -DSYSCONF_INSTALL_DIR=/etc
make -j3
sudo make install

Selesai.

Referensi

Cara Pasang Raspberry Pi 2

Cara Pasang Raspberry Pi 2

Sesuai janji dengan seseorang, inilah tulisan tentang memasang di Raspberry Pi 2. Maaf penulisan tidak rapi.

Persiapan

Saat ini saya lagi menjadi fakir MicroSD. MicroSD saya yang kencang ada di rumah. Saat ini saya hanya menggunakan MicroSD pinjaman dari kelas sebelah. Makanya, untuk menyiasati itu, saya menyediakan satu direktori terpisah di komputer.

Konsepnya, saya pasang segala sesuatu pada direktori tersebut. Setelah semuanya selesai, baru isinya dipindahkan ke MicroSD. Mudah bukan?

Siapkan direktori sementara untuk ditulisi. Saya buat /tmp/ROOTFS, tapi Anda bisa beda. Malah lebih baik. Saya, ‘kan, kebetulan memori 32GB dan /tmp dipasangi tmpfs

Buat konvensi:

export ROOTFS=/tmp/ROOT
export REALROOTFS=/mnt/realroot
export REALBOOTFS=/mnt/realboot

Keterangan:

  • Variabel $ROOTFS merupakan direktori sementara yang akan kita pakai untuk memasang-masang sistem sebelum disalin ke MicroSD.
  • Variabel $REALROOTFS merupakan direktori tempat kita nantinya akan mengaitkan partisi utama MicroSD.
  • Variabel $REALBOOTFS merupakan direktori tempat kita nantinya akan mengaitkan partisi boot MicroSD.

Buat direktorinya kalau belum ada.

sudo mkdir $ROOTFS $REALROOTFS $REALBOOTFS

Firmware

Unduh firmware untuk Raspberry Pi.

wget https://github.com/raspberrypi/firmware/archive/master.zip && unzip master.zip

Atau, salin repositori GIT-nya supaya bisa diperbaharui nanti.

Cara kedua.

git clone https://github.com/raspberrypi/firmware.git firmware

Biar tidak bingung, mari buat konvensi direktori firmware ada di sini:

export FIRMWARE_DIR=/home/user/Unduhan/firmware-master

Atau:

export FIRMWARE_DIR=/home/user/Unduhan/firmware

Selanjutnya memasang perkakas pada sistem.

Persiapan Sistem dengan QEMU

Pasang QEMU.

sudo apt-get install qemu binfmt-support qemu-user-static

Lakukan Debootstrap dengan QEMU.

sudo qemu-debootstrap --no-check-gpg --arch=armhf sid $ROOTFS http://kambing.ui.ac.id/debian/

Setelah selesai memasang sistem, lakukan:

sudo qemu-debootstrap --no-check-gpg --arch=armhf sid $ROOTFS http://kambing.ui.ac.id/debian/

Salin modul kernel ke dalam sistem

sudo cp -r $FIRMWARE_LIB/modules $ROOTFS/lib/

 

Masuk ke sistem:

sudo chroot $ROOTFS

Persiapan Sistem Di Dalam QEMU

Siapkan FSTAB

# cat > /etc/fstab << EOF > /dev/mmcblk0p1          /boot           vfat            defaults        0 2
> /dev/mmcblk0p2          none            swap            sw              0 0
> /dev/mmcblk0p3          /               xfs             defaults,noatime,nodiratime        0 1
> EOF

Siapkan bahasa.

apt-get install locales

Aktifkan Bahasa Indonesia

dpkg-reconfigure locales

Siapkan Zona Waktu

dpkg-reconfigure tzdata

Sampai sini, sih, seharusnya sistem siap dipasangi apa pun. Biar cantik, pasang ini:

apt-get install vim

Yang terakhir tergantung agama dan kepercayaan masing-masing. Saya tidak sedang memaksa Anda pindah agama.

Pengguna

Pasang sudo untuk pengguna admin.

apt-get install sudo

Buat satu pengguna.

# adduser jp
Adding user `jp' ...
Adding new group `jp' (1000) ...
Adding new user `jp' (1000) with group `jp' ...
Creating home directory `/home/jp' ...
Copying files from `/etc/skel' ...
Masukkan sandi Unix yang baru :
Ketik ulang sandi Unix:
passwd: kata sandi diperbaharui dengan sukses
Mengubah informasi pengguna dari jp
Masukkan nilai baru atau tekan ENTER untuk nilai bawaan
        Nama Lengkap []: Jan Peter Alexander Rajagukguk
        Nomor Ruangan []: 1145
        Telepon Kantor []: 
        Telepon Rumah []: 
        Lain-lain []: 
Is the information correct? [Y/n] Y

Buat dia sebagai admin.

adduser jp sudo

Pasang perkakas sistemberkas yang Anda gunakan. Saya menggunakan XFS, jadi saya pasang:

apt-get install xfsprogs dosfstools ntfs-3g

Saya hanya memilih XFS, FAT32/16, dan NTFS. Untuk perkakas EXT2/3/4 nampaknya sudah otomatis terpasang. Selanjutnya memasang sistem dasar.

Siapkan Peladen SSH

Pasang Dropbear, peladen SSH yang lebih ringan dari OpenSSH.

apt-get install dropbear openssh-client

Aktifkan dia supaya jalan di awal.

sed -i 's/NO_START=1/NO_START=0/g' /etc/default/dropbear

Sampai sini sistem dasar sudah selesai. Silakan keluar dari CHROOT dengan CTRL+D atau ketik “quit” atau “exit”. Setelah puas memasang segala sesuatu, saatnya sistem ditaruh ke dalam mount.

Menaruh Aplikasi Ke MicroSD

Saya diberi pinjaman sebuah MicroSD sebesar 4GB. Saya partisi dengan:

  • BOOT: 128MB
  • SWAP: 384MB
  • ROOT: Sisanya.

Saya tidak tahu sisanya itu ada berapa. Tapi silakan lihat gambar. Saya menggunakan pemartisi KDE.

Raspberry Pi 2 Partitions

My Raspberry Pi 2 partition scheme

Partisi BOOT memang harus FAT32 atau FAT16. Ya, saya pilih FAT16 saja. Yang menarik, saya memberikan partisi utama dengan sistemberkas XFS. GUNAKAN SAJA EXT3/4!

Persiapan Partisi BOOT

Anda bisa lakukan ini di penjelajah berbasis GUI favorit Anda (Nautilus/Dolphin/dsb.) atau gunakan cara yang lebih sulit.

Saya asumsikan partisi MicroSD ada di partisi /dev/sde1 ini tergantung sistem Anda. Berikut caranya:

sudo mount /dev/sde1 $REALBOOTFS

Salin dari unduhan kita ke direktori itu

sudo cp -r $FIRMWARE_DIR/boot/* $REALBOOTFS

Tambahkan baris parameter pada berkas cmdline.txt, biasanya belum ada.

 echo "root=/dev/mmcblk0p3 rw rootwait console=ttyAMA0,115200 console=tty1 selinux=0 plymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 elevator=noop" | sudo tee $REALBOOTFS/cmdline.txt

Selesai, jangan lupa sinkronisasikan perubahan ke dalam MicroSD.

sync

Persiapan Partisi Utama

Sekali lagi, Anda tidak perlu menyusahkan diri. Tapi, kalau mau pakai cara ini, ya, sudah.

sudo mount /dev/sde3 $REALROOTFS

Salin semua kerjaan kita ke sana.

sudo cp -a $ROOTFS/* $REALROOTFS/

Dan jangan lupa,

sync

Setelah ini selesai, lepas kaitan dan masukkan ke dalam RaspberryPi.

sudo umount $REALROOTFS $REALBOOTFS

Selesai.

Referensi

Akses WiFi Ala Debian Wheezy

Tulisan ini varian dari tulisan saya sebelumnya. Sesuai keinginan saya kalau saya sedang tidak bermain DoTA 2, saya mau mengoprek versi distro lain. Siapa tahu ada yang kesulitan.

Menyiapkan Penggerak

Saya menggunakan perangkat adapter WIFI USB LinkSys WUSB54GC.

$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 13b1:0020 Linksys WUSB54GC v1 802.11g Adapter [Ralink RT73]
Bus 002 Device 002: ID 80ee:0021 VirtualBox USB Tablet

Menurut WIKI Debian, saya harus menambahkan cabang non-free. Maafkan saya, Mbah Stallman. Saya harus mengubah /etc/apt/sources.list menjadi:

deb http://kambing.ui.ac.id/debian/ wheezy main contrib non-free
deb-src http://kambing.ui.ac.id/debian/ wheezy main contrib non-free

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

Ya, intinya, saya menambahkan kata non-free di belakang setiap baris penyedia repositori. Adapter WIFI saya membutuhkan binari firmware yang tidak tersedia kode sumbernya. Ya, nasib…

sudo apt-get update

Pasang binari firmware yang dibutuhkan:

sudo apt-get install firmware-ralink

Selanjutnya memasang perkakas yang dibutuhkan.

Jaringan

Yang pertama kita akan memasang dahulu firewall, baru perkakas yang lain. Ingat! Firewall harus dijalankan pertama kali sebelum sebuah antarmuka jaringan berjalan.

Memasang iptables

Cara pasangnya biasa, tapi saya menambahkan satu paket lagi. Paket iptables-persistent membuat aturan IPTables yang ada tersimpan permanen. Sehingga, aturan tersebut akan dimuat kembali saat Debian dijalankan ulang.

sudo apt-get install iptables iptables-persistent

Kalau ditanyakan apakah mau menyimpan aturan IPv4 dan IPv6, jawab saja “YES”.

Aktifkan penerusan IPv4.

sudo sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf

Baris pertama adalah cara yang dianjurkan untuk langsung mengaktifkan sebuah parameter di kernel. Baris kedua untuk menyimpan konfigurasi itu secara permanen.

Selanjutnya, aktifkan IP Masquerade pada eth0 untuk membuat NAT.

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Selanjutnya mengonfigurasi antarmuka jaringan

Antarmuka Jaringan

Sejujurnya, karena kita baru memasang firmware, kemungkinan kita harus menyalakan ulang Debian kita. Sebelum itu, siapkan konfigurasi jaringan untuk antarmuka nirkabel kita.

allow-hotplug wlan0
iface wlan0 inet static
        address 10.10.0.1
        netmask 255.255.255.0

Setelah beberapa baris ini ditambahkan, selanjutnya memasang perkakas-perkakas yang diperlukan

Perkakas

Seperti artikel sebelumnya, kita akan memasang isc-dhcp-server dan hostapd.

Memasang isc-dhcp-server

Pasang isc-dhcp-server.

sudo apt-get install isc-dhcp-server

Buat aturannya seperti pada artikel sebelum ini.

ddns-update-style none;
log-facility local7;
subnet 10.10.0.0 netmask 255.255.255.0 {
    range 10.10.0.2 10.10.0.32;
    option domain-name-servers 8.8.8.8;
    option routers 10.10.0.1;
}

Selanjutnya memasang aplikasi pengautentikasi jaringan WIFI.

Memasang hostapd

Pasang hostapd.

sudo apt-get install hostapd

Buat konfigurasi /etc/hostapd/hostapd.conf

interface=wlan0
driver=nl80211
ssid=AP Lo Nyambung2
hw_mode=g
ieee80211d=1
country_code=ID  ### 802.11d harus ada kode negara
channel=3     ### Channel 3
wmm_enabled=1 ### QoS
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=s4nD1Al4yFtW
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Perhatikan bahwa baris ieee80211h = 1 tidak ada. Aplikasi hostapd pada Debian belum mendukung itu sepertinya.

Terakhir

Muat ulang sistem operasi Debian. Seharusnya kalau tidak ada halangan mau pun rintangan, semua akan terkonfigurasi secara otomatis. Gambar ada di artike sebelumnya.

Bacaan Lebih Lanjut

Steam Gagal Pada Ubuntu Vivid

Saat tulisan ini ditulis, Steam tidak dapat berjalan pada Ubuntu Vivid dengan menggunakan penggerak MESA. Penyebabnya:

$ env LIBGL_DEBUG=verbose steam
Running Steam on ubuntu 15.04 64-bit
STEAM_RUNTIME is enabled automatically
Installing breakpad exception handler for appid(steam)/version(1424305157)
libGL: screen 0 does not appear to be DRI3 capable
libGL: pci id for fd 7: 1002:68b8, driver r600
libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/tls/r600_dri.so
libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/r600_dri.so
libGL: dlopen /usr/lib/i386-linux-gnu/dri/r600_dri.so failed (/home/user/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/lib/i386-linux-gnu/dri/r600_dri.so))

Itu artinya versi pustaka C yang dipakai sistem lebih tinggi dari versi yang terpaket dalam Steam. Solusinya adalah dengan menghapus pustaka C. Oh, iya, sekalian juga menghapus pustaka GCC.

rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6*
rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libgcc_s.so.1

Beres!

Membuat WIFI Sendiri dengan hostapd, dhcpd, dan nftables

Membuat WIFI Sendiri dengan hostapd, dhcpd, dan nftables

Access point configuration

Access point configuration

Saya hendak membuat sebuah jaringan nirkabel. Jaringan nirkabel itu terhubung ke sebuah komputer yang berfungsi sebagai router. Setiap akses dari perangkat-perangkat dalam jaringan tersebut dienkapsulasi dalam NAT dan dikirim ke Internet/jaringan lainnya.

Komputer yang saya gunakan adalah GNU/Linux Gentoo dengan spesifikasi sebagai berikut:

  • Kernel Linux 3.19-pf1
  • Systemd 219

Saya pun tertarik menggunakan nftables karena dia yang akan menggantikan iptables di masa mendatang. Perkakas nftables pertama kali ada di Linux 3.13. Jadi, ya, lumayan relatif baru.

Aktifkan IP Forwarding

Setiap kali mau memakai NAT, jangan lupa mengaktifkan IP Forwarding di kernel. Lihat dulu kalau dia aktif:

$ sudo sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

Kalau nilainya 0, berarti belum aktif. Aktifkan:

sudo sysctl -w net.ipv4.ip_forward=1

Supaya permanen, tambahkan ke konfigurasi. Ingat! Sistem ini menggunakan systemd. Jadi, berkasnya ada di /etc/sysctl.d

echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf

Ini kalau tadi sebelumnya IPv4 belum menyala. Kalau sudah, lewati saja. Tapi, biasanya distro-distro bakunya mematikan fitur ini.

nftables

Ada beberapa langkah yang dilakukan untuk memasang nftables:

  1. Memasang kernel yang sudah mendukung nftables.
  2. Memasang perkakas nftables.
  3. Memasang unit systemd.

Modul Kernel

Saya tidak tahu Anda menggunakan kernel versi apa. Tapi, seandainya kernel tersebut di atas 3.13, kemungkinan ada. Kalau saya kebetulan mengompilasi sendiri kernel saya. Jadinya, saya aktifkan nftables pada bagian:

-> Networking support
  -> Networking options
    -> Network packet filtering framework (Netfilter)
      -> Core Netfilter Configuration

Lalu saya centang saja semua yang berbau nf_tables di konfigurasi seperti terlihat pada gambar.

I just opt-in every "nf_tables" in Core Netfilter Configuration

I just opt-in every “nf_tables” in Core Netfilter Configuration

Setelah saya kompilasi dan pasang kernel saya. Lalu saya masuk ke sistem dengan menggunakan kernel tersebut. Selanjutnya saya memasang perkakas nftables untuk bisa memanipulasi tabel nftables.

Perkakas

Saya memasang nftables dengan cara berikut:

sudo emerge -av net-firewall/nftables

Atau gunakan pemaket dari distro kesayangan Anda masing-masing. Untuk Debian dan turunannya, ada bacaan menarik mengenai cara cepat membuat perkakas ini.

Jika sudah, ada beberapa contoh penggunaan nftables yang menarik, misalnya:

  • Melihat seluruh isi tabel:
    nft list ruleset
  • Menghapus seluruh tabel:
    nft flush ruleset
  • Menyimpan seluruh tabel ke berkas konfigurasi:
    nft list ruleset > /var/lib/nftables/rules-save
  • Memuat konfigurasi dari berkas konfigurasi:
    nft -f /var/lib/nftables/rules-save

Saya mengikuti tata letak berkas di Gentoo. Dia menaruh aturan iptables, nftables, ebtables, dan lain-lain di direktori /var/lib. Kalau Debian menaruhnya di /etc. Anda terserah mau taruh di mana, yang penting konsisten.

Inisialisasi Aturan nftables

Awal-awalnya nftables masih kosong. Saya menggunakan aturan yang telah disediakan gentoo untuk IPv4 NAT. Gentoo saat ini menaruh berbagai aturan siap pakai di /etc/nftables.

Mengapa saat ini? Karena biasanya aturan siap pakai ditaruh di /usr/share. Mungkin saja bilamana nftables sudah stabil, aturan-aturan ini dipindahkan ke sana. Ya, sudah, pakai saja:

sudo nft -f /etc/nftables/ipv4-nat

Supaya Anda tidak penasaran, isi berkas itu sebenarnya cuma aturan biasa:

#!/sbin/nft -f

table nat {
    chain prerouting    { type nat hook prerouting priority -150; }
    chain postrouting   { type nat hook postrouting priority -150; }
}

Mirip-miriplah dengan tutorial nftables NAT yang resmi.

Lalu tambahkan aturan yang mentranslasi semua paket jaringan dari wlan0 ke eth0.

sudo nft add rule nat postrouting ip saddr 10.10.0.0/24 meta oif eth0 snat 192.168.0.5

Ganti 192.168.0.5 dengan IP kartu ethernet Anda. Lihat gambar awal mengenai skema jaringan yang hendak dibangun.

Padanan di iptables

Aturan ini padanannya di iptables seperti ini:

sudo iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j SNAT --to 192.168.0.5

Lalu mengapa tidak menggunakan iptables saja biar sederhana? Judul artikel ini belajar nftables. Lagipula, sebenarnya lebih sederhana nftables, hanya saja ia belum terintegrasi dengan distro-distro yang ada saat ini. Dia masih baru, bahkan kernel yang mendukung belum masuk.

Sebelum ini saya biasanya menggunakan perintah berikut untuk iptables:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Nanti saya coba di Wheezy, deh. Kalau tidak malas, tapinya. Untuk saat ini jangan lupa untuk mematikan NAT di iptables supaya tidak kacau!

sudo rmmod iptable_nat

Menyimpan Aturan nftables

Kalau sudah selesai, seharusnya aturan nftables akan sebagai berikut:

$ sudo nft list ruleset
table ip nat {
    chain prerouting {
         type nat hook prerouting priority -150;
    }

    chain postrouting {
         type nat hook postrouting priority -150;
         ip saddr 10.10.0.0/24 oif eth0 snat 192.168.0.5
    }
}

Nah, kalau di Gentoo, dia sudah menyediakan skrip initnya. Sayangnya cuma untuk OpenRC. Kita bisa memanfaatkan skrip itu untuk menyimpan aturan NAT:

sudo /etc/init.d/nftables save

Atau cara manualnya:

sudo mkdir -p /var/lib/nftables
sudo nft list ruleset | sudo tee /var/lib/nftables/rules-save

Selanjutnya membuat aturan systemd supaya dijalankan otomatis.

Aturan systemd untuk nftables

Belum ada aturan untuk nftables. Ada seseorang yang berbaik hati untuk membuat skrip untuk systemd. Tetapi, saya memilih untuk membuat sendiri.

Skrip orang itu membuat nftables sebagai layanan. Tetapi, saya pikir seharusnya perilaku nftables sama seperti skrip ALSA dan iptables. Ia hanya perlu dijalankan sekali saja. Itu sebabnya, sama seperti kedua subsistem, saya memecah nftables menjadi tiga berkas aturan.

Aturan /usr/lib/systemd/system/nftables.service

[Unit]
Description=Store and restore nftables firewall rules
Documentation=man:nftables(8)

[Install]
Also=nftables-store.service
Also=nftables-restore.service

Aturan /usr/lib/systemd/system/nftables-restore.service

[Unit]
Description=Restore nftables firewall rules
# if both are queued for some reason, don't store before restoring :)
Before=nftables-store.service
# sounds reasonable to have firewall up before any of the services go up
Before=network.target
Conflicts=shutdown.target

[Service]
Type=oneshot
ExecStart=/sbin/nft -f /var/lib/nftables/rules-save

[Install]
WantedBy=basic.target

Aturan /usr/lib/systemd/system/nftables-store.service

[Unit]
Description=Store nftables firewall rules
Before=shutdown.target
DefaultDependencies=No

[Service]
Type=oneshot
ExecStart=/bin/sh -c "/sbin/nft list ruleset > /var/lib/nftables/rules-save"

[Install]
WantedBy=shutdown.target

Selanjutnya, pasang ketiga layanan tersebut:

sudo systemctl enable nftables

Selesai untuk nftables, selanjutnya mengonfigurasi antarmuka jaringan.

Mengonfigurasi Antarmuka Jaringan

Sudah menjadi aturan umum kalau firewall berjalan sebelum antarmuka jaringan diaktifkan. Dengan memulai firewall terlebih dahulu, tidak ada jeda yang bisa dipakai untuk masuk. Tidak ada waktu antara menjalankan antarmuka jaringan dengan menyalakan firewall. Itu sebabnya, nftables dipasang pertama kali sebelum antarmuka jaringan.

Kalau Anda pengguna destop, kemungkinan sudah ada NetworkManager. Untuk konfigurasi minimal, NetworkManager biasanya tidak dipasang. Antarmuka jaringan harus dipasang dengan cara lain.

Saya gagal menggunakan metode systemd-networkd. Kalau saya menggunakan infrastruktur itu, firewall (nftables/iptables) tidak ada yang berjalan! Mungkin saya ada yang kurang. Entahlah, yang pasti saya mengonfigurasi statik dengan cara lain saja.

Antarmuka eth0

Gentoo menggunakan pendekatan yang sama dengan Arch Linux. Mereka menggunakan systemd untuk menjalankan skrip Gentoo. Dengan demikian, konfigurasi Gentoo yang lama bisa dibaca. Ini konfigurasi lama saya di  /etc/conf.d/net

dns_servers=( "8.8.8.8" )

config_eth0="192.168.0.5 netmask 255.255.255.0"
routes_eth0="default via 192.168.0.1"

Cara mengaktifkan layanan adalah dengan membuat tautan simbolik dari net@.service ke net@eth0.service.

sudo ln -s /usr/lib/systemd/system/net@{,eth0}.service

Kalau Anda tidak percaya diri dengan menggunakan enumerasi BASH, bentuk lain dari perintah itu adalah

sudo ln -s /usr/lib/systemd/system/net@.service /usr/lib/systemd/system/net@eth0.service

Setelah itu, pasang layanan ini ke systemd agar dijalankan pada waktu komputer baru menyala.

sudo systemctl enable net@eth0

Kalau Debian, seperti biasa ada di /etc/network/interfaces. Jadi, mungkin systemd tidak terlalu dibutuhkan.

Antarmuka wlan0

Saya menggunakan Linksys WUSB54GC. Kemampuan yang dimiliki:

    Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * WDS
         * monitor
         * mesh point

Dia bisa menjadi Access Point (AP)!

Implementasi yang kita pilih merupakan implementasi statik. Kita bisa dengan aman berasumsi bahwa IP yang dipakai tidak akan berubah.

Saya tadinya ingin membuat seperti antarmuka Ethernet. Tapi, konfigurasi gagal karena RFKill selalu memblokir wlan0 dengan soft block. Saya pun memutuskan untuk membuat sebuah layanan kecil untuk menjalankan wlan0 di /usr/lib/systemd/system/ap-static.service

[Unit]
Description=Static WLAN0 as an Access Point
Documentation=man:rfkill(8) man:ip(8)
After=network.target
After=time-sync.target

[Service]
Type=oneshot
RemainAfterExit=yes 
ExecStart=/usr/sbin/rfkill unblock all
ExecStart=/bin/ip addr add 10.10.0.1/24 dev wlan0
ExecStart=/bin/ip link set wlan0 up

[Install]
WantedBy=multi-user.target

Seperti biasa, pasang layanan ini:

sudo systemctl enable ap-static

Untuk antarmuka nirkabel sudah selesai. Saatnya memasang layanan yang akan mengonfigurasi klien WIFI.

Layanan Konfigurator WIFI

Ada dua layanan utama yang dipakai untuk tutorial kali ini. Keduanya masing-masing bisa diganti dengan yang lain. Namun, saat ini saya menggunakan dua layanan ini karena keduanya dapat dikembangkan untuk kebutuhan kompleks.

hostapd
Hostapd adalah aplikasi penyedia Access Point. Dia menyediakan autentikator, mengatur antarmuka WIFI, dan sejenisnya. Selain memiliki autentikator internal, hostapd dapat terhubung ke Radius dan mendukung ACS.
DHCPd
DHCPd adalah penyedia layanan DHCP. Layanan ini yang mengatur kepemilikan IP dan sejenisnya kepada klien. Sebenarnya masih ada udhcpd yang lebih sederhana. Yah, namanya juga belajar.

Mari konfigurasi keduanya.

Layanan hostapd

Setiap distro umum memiliki paket hostapd. Saya sendiri di Gentoo mengunakan hostapd versi:

$ sudo hostapd -v
hostapd v2.3
User space daemon for IEEE 802.11 AP management,
IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Copyright (c) 2002-2014, Jouni Malinen <j@w1.fi> and contributors

Pertama-tama, konfigurasikan AP yang hendak kita buat. Berikut contohnya pada /etc/hostapd/hostapd.conf

# WiFi Hotspot
interface=wlan0
driver=nl80211
# Access Point
ssid=AP Lo Nyambung2
hw_mode=g
ieee80211d=1
country_code=ID  ### 802.11d/h harus ada kode negara
# WiFi Channel:
ieee80211h=1  
channel=3     ### Channel 3
wmm_enabled=1 ### QoS
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=s4nD1Al4yFtW
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Saya menyalin skrip layanan systemd hostapd yang disediakan oleh Gentoo menjadi /usr/lib/systemd/system/hostapd-wlan0.service. Alasan saya supaya kalau ada pembaharuan sistem, skrip ini tidak berubah. Lagipula, saya mengubah agar layanan berjalan setelah ap-static.service sudah berjalan. Isinya:

[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
After=network.target
After=ap-static.service

[Service]
ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf

[Install]
WantedBy=multi-user.target

Setelah itu, pasang layanan ini.

sudo systemctl enable hostapd-wlan0

Selesai.

Layanan dhcpd

Seperti saya bilang, sebenarnya DHCPd agak mubazir. Tapi, berhubung sistem ringan, saya pasang saja. Oh, iya, kalau di Debian, nama paketnya isc-dhcp-server.

Gentoo:

sudo emerge -av net-misc/dhcp

Debian dan turunannya:

sudo apt-get install isc-dhcp-server

Setelah terpasang, buat berkas konfigurasi /etc/dhcp/dhcpd.conf

ddns-update-style none;
log-facility local7;
subnet 10.10.0.0 netmask 255.255.255.0 {
    range 10.10.0.2 10.10.0.32;
    option domain-name-servers 8.8.8.8;
    option routers 10.10.0.1;
}

Jangkauan IP tidak saya buat jauh karena pun jumlah maksimal klien yang terhubung ke AP tidak begitu banyak. Lain cerita kalau misalnya DHCPd kita pakai juga untuk yang lain.

Seperti biasa, saya menyalin berkas systemd DHCPd dan menamainya menjadi /usr/lib/systemd/system/dhcpd4-wlan0.service

[Unit]
Description=DHCPv4 Server Daemon
Documentation=man:dhcpd(8) man:dhcpd.conf(5)
After=ap-static.service

[Service]
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcp -group dhcp --no-pid

[Install]
WantedBy=multi-user.target

Terakhir, pasang layanan DHCPd:

sudo systemctl enable dhcpd4-wlan0

Selesai.

Terakhir

Matikan dan kemudian hidupkan kembali komputer yang dipakai sebagai AP. Kalau benar, maka otomatis layanan ini akan berjalan.

Example on working AP.

Example on working AP from my phone.

Tamat.

ffmpeg/libav conflict management: USE=libav

2015-02-01-use-libav
  Title                     ffmpeg/libav conflict management: USE=libav
  Author                    Michał Górny 
  Posted                    2015-02-01
  Revision                  1

The support for automatic choice between ffmpeg and libav is going to be
deprecated in favor of explicit choice via USE flags. This change aims
to solve multiple repeating issues, including Portage undesirably
wanting to replace one package with the other, lack of proper reverse
dependency on ffmpeg/libav upgrades and some of the hard-to-understand
upgrade failures involving blockers. It also may be used to make ffmpeg
and libav co-installable in the future.

The current USE=ffmpeg will maintain its role of enabling optional
support for ffmpeg or a compatible implementation (libav) in a package.
However, whenever appropriate additional USE=libav will be introduced to
control the preference of one implementation over the other.

Users who currently use libav (the Gentoo default) do not have to
perform any action since USE=libav is enabled by default. It should be
noted that the users still need to enable USE=ffmpeg on packages with
optional libav support as well. Users who want to use ffmpeg instead
need to specify USE=-libav in make.conf explicitly.

Please also note that some packages support only one of the two
implementations. An attempt to install one of those packages may result
in blockers requiring the user changes the global USE=libav state.
The most notable example of such package is media-video/mplayer.
media-video/mpv may be used as a replacement for users who prefer libav.

Please do not alter the state of 'libav' flag on a per-package basis
(e.g. via package.use). The flag needs to be set globally to have
consistent value throughout all packages. Otherwise, blockers will
prevent upgrades.

— taken from GENTOO ESELECT NEWS.

CPU_FLAGS_X86 introduction

CPU_FLAGS_X86 introduction

The USE flags corresponding to the instruction sets and other features specific to the x86 (amd64) architecture are being moved into a separate USE flag group called CPU_FLAGS_X86. In order not to lose CPU-specific optimizations, users will be required to update their make.conf (and package.use) file. For example, if the following USE flags were present: USE=”mmx mmxext sse sse2 sse3″ Those flags need to be copied into: CPU_FLAGS_X86=”mmx mmxext sse sse2 sse3″ Please note that the same CPU_FLAGS_X86 variable is used both on x86 and amd64 systems. When in doubt, you can consult the flag descriptions using one of the commonly available tools, e.g. `equery uses` from gentoolkit: $ equery uses media-video/ffmpeg Most of the flag names match /proc/cpuinfo names, with the notable exception of SSE3 which is called ‘pni’ in /proc/cpuinfo (please also do not confuse it with distinct SSSE3). To help users enable the correct USE flags, we are providing a Python script that generates the correct value using /proc/cpuinfo. It can be found in the app-portage/cpuinfo2cpuflags package: $ emerge -1v app-portage/cpuinfo2cpuflags $ cpuinfo2cpuflags-x86 In order to ensure safe migration and maintain compatibility with external repositories, it is recommended to preserve the old USE settings for a period of one year or until no package of interest is still using them.

PS: This is a verbatim copy of a reminder in ESELECT NEWS. I take it to this blog as a reminder for myself in the future.

Peramban Baru Vivaldi
Vivaldi browser change color like chameleon.

Peramban Baru Vivaldi

Phoronix mengumumkan tentang Vivaldi, sebuah peramban baru. Vivaldi dibangun oleh mantan CEO Opera dengan tujuan membangkitkan fitur-fitur Opera seperti dahulu. Fitur seperti mendengar para kontributor dan pengguna.

Seperti peramban baru lainnya, Vivaldi dibangun dengan menggunakan Chromium. Setelah beberapa kali mencoba, saya menemukan beberapa fitur unik:

  • Penggunaan papan ketik didukung. Pintasan-pintasan papan ketik cukup kuat untuk para pengguna mahir. Setidaknya itu yang saya lihat dari daftar pintasan papan ketik.
  • Warna dasar peramban berubah mengikuti situs yang dikunjungi. Ini menimbulkan efek immersive experience.
  • Tampilan sederhana.

Yak, kira-kira TL;DR-nya seperti itu.

Cara Pasang

Vivaldi menyediakan paket RPM dan Debian untuk dipasang. Silakan gunakan cara yang disarankan pada masing-masing sistem operasi Anda. Berhubung saya menggunakan Gentoo, cara saya berbeda. Saya asumsikan Anda sudah mengunduh berkas Debian Vivaldi_TP_1.0.83.38-1_amd64.deb (versi terbaru saat penulisan). Silakan ganti dengan versi yang lain.

Ekstraksi Vivaldi.

ar p Vivaldi_TP_1.0.83.38-1_amd64.deb \
  tar xvfJ -

Lalu pindahkan ke sistem.

sudo mv opt/vivaldi /opt
sudo mv usr/bin/vivaldi-browser /usr/bin

Jangan lupa sandbox Chromium harus punya setuid.

sudo chmod 4755 /opt/vivaldi/vivaldi-sandbox

Selesai.

Cuplikan

Tidak enak tanpa cuplikan. Omong-omong, saya ubah-ubah sedikit sebelum ambil cuplikan. Saya menyesuaikan tata letak dengan Opera saya yang dulu.

 

Memperbaharui Samsung Galaxy Grand Duos i9082

PENULIS TIDAK BERTANGGUNG JAWAB ATAS KERUSAKAN YANG TERJADI. PANDUAN INI DAPAT MEMATIKAN GARANSI ANDA (kalau pun masih ada garansi).

RISIKO TANGGUNG SENDIRI!

Saya dipinjami teman sebuah telepon Samsung Galaxy Grand Duos i9082. Seperti pada perangkat Samsung umumnya, telepon ini menggunakan Touchwiz. Beliau ingin memperbaharui perangkat ini. Ya, wajarlah. Touchwiz sangat memberatkan sistem. Apalagi untuk perangkat satu ini yang mulai uzur.

Kalau saya lihat spesifikasi perangkat ini, perangkat ini adalah seperti Raspberry Pi dengan dua prosesor. Sama-sama menggunakan BCM VideoCore IV sebagai grafis. RAM yang terbaca sekitar 832MB. Jadi, mungkin sekitar 192MB memori digunakan untuk video. Cukup, sih, untuk memasang video Full HD 1080p.

Saatnya mengganti dengan ROM yang enteng!

Setelah beberapa hari bersemedi di XDA, saya menemukan ROM yang optimal:

AOGP adalah ROM terakhir yang masih aktif dikembangkan untuk perangkat ini; yang lainnya aktif di 2013 dan awal 2014. AOGP menggunakan CyanogenMod 11 (CM11) sebagai basis. Beberapa modifikasi penting dia lakukan seperti mengaktifkan Dual SIM. Biasanya, produk-produk AOSP tidak mendukung Dual SIM.

Memasang Recovery Termodifikasi

Sumber bacaan: [Ultimate Guide] Installing / Rooting / Self-Customizing Stock Rom 4.2.2 / 1 [13/08]

Yang paling saya sebal dari proses ini adalah proses ini menggunakan sistem operasi Windoze. Hal ini karena ODIN hanya berjalan di sistem operasi tersebut. Memang, ada Heimdall yang bisa berjalan di GNU/Linux. Saya sudah mencobanya. Tapi, berhubung saya lagi baik karena menjelang Natal, saya tuliskan saja versi menggunakan Windoze.

Oh, iya, pastikan USB Debugging dinyalakan. USB Debugging ada dari menu Pengembang. Kalau belum ada menu Pengembang, nyalakan dari menu About device lalu menekan beberapa kali versi Build Number.

Perangkat Lunak yang diperlukan

Berikut perangkat lunak yang diperlukan.

  1. Pasang Penggerak USB Samsung. Cara paling gampang adalah memasang perangkat lunak KIES. Kalau di GNU/Linux, memasang Heimdall sudah memasang aturan UDEV juga.
  2. Saya mengunduh ODIN versi 2.07 dari thread ini. Cukup diekstraksi dan Odin3 siap digunakan.
  3. Saya menggunakan recovery termodifikasi dari Philz Touch. Saya mengunduh philz_touch_6.19.3-i9082.tar.md5. Format .tar.md5 adalah format yang diketahui oleh Odin3.

Yak, cukup tiga itu. Silakan pastikan bahwa perangkat terdeteksi. Berhubung PC teman saya pernah digunakan untuk perangkat Samsung lainnya, perangkat ini langsung terdeteksi. Sepertinya Penggerak USB Samsung dibuat untuk semua perangkat Android dia.

Pemasangan

ODIN flashing recovery image. (Source: XDA)

ODIN flashing recovery image. (Source: XDA)

Caranya:

  1. Matikan perangkat. Dari keadaan mati, pencet tombol Volume Turun + Home + Power bersamaan. Kombinasi tombol ini membuat perangkat masuk ke Mode Unduhan (Download Mode).
  2. Pastikan KIES atau peramban berkas tidak berjalan. Setelah yakin tidak ada aplikasi yang dapat mengambil alih telepon, jalankan ODIN dengan Run As Administrator.
  3. Setelah perangkat di Mode Unduhan dan ODIN sudah menyala, hubungkan kabel USB dari PC ke perangkat. Kalau terhubung, bagian awal batang akan berwarna hijau dan log berisi Added!
  4. Pastikan Auto Reboot dan F. Reset Time tercentang. Pilihan Auto Reboot akan menyalakan ulang perangkat ketika sudah selesai. Pilihan F. Reset Time akan melakukan Factory Reset, alias menghapus konfigurasi yang ada. Pilihan F. Reset Time itu yang paling penting harus dicentang!
  5. Klik tombol PDA dan pilih berkas philz_touch_6.19.3-i9082.tar.md5 yang kita unduh tadi.

Kalau tidak ada aral melintang, seharusnya Pada layar log pesan ada tulisan: PASS. Kalau Auto Reboot dinyalakan, perangkat akan otomatis menyala ulang. Saatnya ke hidangan utama.

Memasang ROM AOGP 4.4.4

Unduh beberapa berkas berikut:

Taruh itu semua di perangkat. Bisa di penyimpan internal atau penyimpan eksternal. Terserah, yang penting ingat saja di mana ditaruh berkas-berkas tersebut. Oh, iya, kalau pakai sideload, berkas-berkas tersebut tidak perlu ditaruh di perangkat.

Masuklah ke mode Recovery. Cara manual adalah dengan mematikan perangkat lalu tekan

Selanjutnya pemasangan saya asumsikan menggunakan Philz Recovery. Karena ini sudah berulang kali saya lakukan pada artikel LG G2, maka untuk kemalasan saya menghemat waktu, saya berikan langkah-langkah singkat saja. Silakan cari artikel sejenis di blog ini yang lebih detail.

  1. Lakukan Factory Reset. Langkahnya secara berurutan.
    • Wipe Data/Factory Reset
    • Clean to Install a New ROM
    • Yes, I will install a new ROM
  2. Pasang ROM AOGP.
  3. Pasang Google Play
    • Install Zip
    • Choose Zip from /sdcard
    • gapps-kk-20140105-signed.zip
    • Yes – Install gapps-kk-20140105-signed.zip
  4. Pasang SuperSU
    • Install Zip
    • Choose Zip from /sdcard
    • UPDATE-SuperSU-v2.37.zip
    • Yes – Install UPDATE-SuperSU-v2.37.zip
  5. Nyalakan ulang perangkat.
    • Reboot System Now

Catatan, kalau ada di eksternal, jangan pilih “Choose Zip from /sdcard”, tapi pilih direktori yang satu lagi.

Kalau saya, sih, menggunakan GNU/Linux menggunakan sideload. Itu sebabnya, saya pilih Install zip from sideload. Lalu, pada terminal di PC saya, saya lakukan perintah ini:

adb sideload <NAMA_BERKAS>

untuk ketiga berkas itu. Contohnya:

adb sideload UPDATE-SuperSU-v2.37.zip

Enaknya sideload, tidak perlu menaruh berkas di perangkat, cukup jalankan dari terminal.

Beberapa Langkah Tambahan Setelah Masuk Pertama Kali

Ada beberapa hal yang harus dilakukan setelah masuk ke dalam ROM untuk pertama kali. Yang paling standar memasukkan ID Google Anda. Setelah itu, ditanyakan untuk masuk ke ID CyanogenMod Anda. Kedua proses ini bisa dilewati. Tapi, kalau mau memasang aplikasi dari Google Play, sebaiknya ID Google diisi.

Setelah selesai proses registrasi tadi, ada satu langkah kecil yang diperlukan untuk mengaktifkan tombol-tombol yang ada di bawah (MENU, HOME, BACK).

  1. Masuk ke:
    • Settings
    • Buttons
  2. Hilangkan centang pada Hardware key option for hardware keys to work. Ketiga tombol akan mati.
  3. Centang kembali Hardware key option for hardware keys to work. Ketiga tombol akan kembali menyala.
  4. Selesai.

Sampai proses ini Anda sudah mendapati Samsung Galaxy Grand Duos I9082 yang telah berfungsi. Selesai.

Proses yang Kelupaan

Iya, saya ada satu proses yang kelupaan, yakni memasang radio. Saya hampir tidak pernah menggunakan fitur ini. Tapi, yang kalau mau, silakan unduh APK Spirit1 dari thread ini. Caranya ada di pos #4.

Saya belum mencobanya karena sudah kepalang saya kembalikan perangkatnya.

Terakhir

Selamat mencoba. Terlampir hasil tangkapan layar. Maaf, ya, ini sudah memakai tematik beda, tapi saya lupa apa. Saya juga sudah memasang Google Chrome Beta.

Memasang Pustaka Teroptimasi untuk LG G2
Super Android, recharge!

Memasang Pustaka Teroptimasi untuk LG G2

PERHATIAN:

BIONIK DAN DALVIK YANG ADA PADA TUTORIAL INI HANYA UNTUK STOK DAN ROM TERMODIFIKASI YANG DIBUAT DARI STOK.

JANGAN GUNAKAN PUSTAKA-PUSTAKA INI UNTUK AOSP! (CyanogenMod dan sejenisnya)

Sumber bacaan: [Mod] [Nexus 5] Dalvik+bionic library optimization – Flashable

Saya sebenarnya sudah menjelaskan pada tulisan sebelum ini. Saya akan coba jelaskan lebih lengkap. Terutama alasan mengapa ini perlu.

Karena pustaka Android itu Kode Sumber Terbuka (Open Source Software) dan bukan Perangkat Lunak Bebas (Free Software), semua orang bisa saja mendistribusikan binari tanpa menyertakan kode sumber. Dalam hal ini, Qualcomm sebagai penyedia keping untuk perangkat Android dan beberapa pabrik menyediakan binari yang terkompilasi secara optimal untuk perangkat buatannya. Untungnya, karena ini Android, pustaka binari tersebut bisa dipakai di perangkat lain dengan spesifikasi yang (hampir) sama.

Ada dua pustaka yang ditawarkan: BIONIC dan Dalvik. Kalau pada pemasangan sebelumnya saya hanya memasang BIONIC, kali ini saya memasang juga Dalvik. Supaya kalau mau tetap di Dalvik atau kembali dari ART ke Dalvik, perangkat menggunakan pustaka yang teroptimasi.

Memasang Pustaka Bionic yang Teroptimasi

Sumber bacaan: Bionic (perangkat lunak)

Bionic adalah Pustaka C yang digunakan oleh sistem Android. Karena lisensi yang digunakan Bionic adalah BSD, maka Google memilih pustaka ini ketimbang GLIBC yang menggunakan LGPL. Lisensi BSD lebih ramah terhadap produk-produk tertutup (proprietary).

Untuk memasang Bionic:

  1. Dari menu utama pilih Install Zip
  2. Pilih Choose zip from /sdcard
  3. Pilih LG_G3_BIONIC.zip
  4. Pilih Yes – Install LG_G3_BIONIC.zip

Selanjutnya Dalvik.

Memasang Pustaka Dalvik yang Teroptimasi

Sumber bacaan: Dalvik (perangkat lunak)

Semua aplikasi Android adalah aplikasi Java. Aplikasi Java dijalankan oleh mesin JVM. Dalvik adalah mesin JVM yang menjalankan aplikasi-aplikasi tersebut di Android.

Awal mulanya Google menggunakan JAMVM. Namun, kemudian secara gradual pindah ke Dalvik. Kini, Google akan melakukan transisi lagi ke ART.

Cara pasang Dalvik:

 

  1. Dari menu utama pilih Install Zip
  2. Pilih Choose zip from /sdcard
  3. Pilih LG_G3_DALVIK.zip
  4. Pilih Yes – Install LG_G3_DALVIK.zip

Kalau Anda memasang ART, Dalvik tidak perlu dipasang. Toh, pustaka ini tidak akan dipakai bila kita mengaktifkan ART.