Bahan Impian

Bahan Impian

Setelah patah arang karena Diablo 3 harus selalu daring, saya sempat menghentikan untuk membangun komputer impian saya. Namun, setelah Torchlight 2 dan Valve memutuskan untuk membawa Steam masuk ke GNU/Linux, saya pun kembali meneruskan mega proyek pribadi nan menguras saku ini. Apalagi, dewasa ini banyak sekali sistem-sistem baru yang butuh dikompilasi (Android, Raspberry Pi, dkk.) yang menunggu untuk saya oprek.

Sedikit catatan, saya suka dengan AMD yang berinovasi di arsitektur daripada Intel yang hanya mengoptimasi teknologinya. Inovasi ini memang harus dibayar mahal. Menurut banyak penilaian, Intel i-Series memiliki kelebihan di semua lini. Prosesor Bulldozer buatan AMD kalah bahkan dengan Intel Core-i5.

Ya… ya… ya…. Mereka boleh menilai. Toh, mereka menilai di Windows untuk keperluan permainan yang kebanyakan dikompilasi dengan ICC. Windows sendiri arsitekturnya masih belum multi-threading. Sistem operasi yang benar-benar multi-threading murni hanya BeOS. Tetapi, GNU/Linux pun sudah lama berkeliat di sana. Banyak aplikasi GNU/Linux yang telah dioptimasi untuk lebih dari satu prosesor.

Berhubung saya menggunakan GNU/Linux, saya pun memilih arsitektur multi-prosesor, seri AMD FX. Singkat cerita, ini yang telah saya usahakan:

  • AMD FX-8350 Vishera, Black Edition, versi terbaru AMD (saat tulisan ini ditulis) perbaikan dari prosesor Bulldozer dengan kinerja yang lebih mantap.
  • MSI 990FXA-GD80. Tadinya saya mau beli GD65, tapi stok kosong. Setelah bergalau-galau ria memilih ini atau ASUS Formula Z, saya jadinya pilih ini. Prinsip saya semenjak zaman AthlonXP dulu: “Kalau mau murah meriah, ya, ECS. Kalau mau yang bagus, ya, MSI.” (Ini preferensi pribadi, bukan iklan. ASUS Formula Z atau Sabertooth atau yang lainnya mungkin lebih bagus, tapi MSI punya nilai sentimentil bagi saya.)
  • Patriot Division 4 Viper Xtreme, 16GB (4x4GB) 1866 MHz. Ya, ini yang pertama kali saya beli terlebih dahulu. Sayang, ternyata saat ini sudah keluar modul yang 32GB.

Agar komputer saya sempurna, rekan saya yang baik hati dan tidak sombong meminjamkan saya meminjamkan kartu grafis dan penyuplai daya yang bila digabungkan jauh lebih mahal dari apa yang telah saya beli. Dari sumber yang tak dapat saya sebutkan, saya pun mendapatkan  SATA. [Tenang, bukan diambil dari Opendata] 🙂

Berhubung saya mau tahu kinerja komputer saya, maka saya memasang GNU/Linux Gentoo. Setelah ini, tulisan akan sedikit jorok (banyak kode-kode). Untuk pembaca Planet, saya lindungi dengan pembatas. Tapi, bagi yang hendak tahu tentang trik-trik GNU/Linux, silakan baca selanjutnya.

Persiapan

Saya melakukan proses pemasangan berdasarkan tulisan panduan cepat pemasangan Gentoo. Saya tidak membuat stage1 dan stage2, saya hanya menggunakan stage3 yang sudah jadi.

Pemasangan cukup dilakukan dengan distro apa pun yang sudah 64-bit. Saya sendiri menggunakan ISO harian Gentoo dan memasangnya ke penyimpan USB. Saya melakukannya dengan menggunakan Netbootin. Menggunakan CD Ubuntu pun bisa. (Buat apa susah-susah dd kalau ada yang GUI dan praktis? :))

Saya lebih suka menggunakan ReiserFS, kalau mau pakai yang lain terserah.  Mari persiapkan partisi:

# mkfs.reiserfs /dev/sda1 -l "Pusat Kehidupan"
# mount /dev/sda1 /mnt/gentoo

Setelah itu, unduh Stage3 dan pasang:

# wget http://kambing.ui.ac.id/gentoo/releases/amd64/current-iso/stage3-amd64-20130110.tar.bz2
# tar xvfj stage3-amd64-20130110.tar.bz2 -C /mnt/gentoo

Seperti pada panduan, siapkan beberapa detail:

# cp /etc/resolv.conf /mnt/gentoo/etc/
# echo "127.0.0.1 localhost localhost.localdomain rajagukguk" > /mnt/gentoo/hosts
# echo "rajagukguk" > /mnt/gentoo/conf.d/hostname 
# cp -L /etc/resolv.conf /mnt/gentoo/etc/

Isi Stage3 adalah sistem Gentoo yang setengah jadi, seperti hasil debootstrap pada Debian/Ubuntu. Mari masuk ke dalam sistem tersebut:

# mount -t proc proc /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
# mount -o bind /sys /mnt/gentoo/sys
# chroot /mnt/gentoo /bin/bash
# env-update && source /etc/profile

Seperti panduan, siapkan zona waktu:

# cp /usr/share/zoneinfo/Asia/Jakarta /etc/localtime
# echo "Asia/Jakarta" > /etc/timezone

Selanjutnya, optimasi sesuai kemampuan.

Optimasi Pembangun Sistem

Sebelum bersusah payah membangun sistem, ada beberapa titik lemah pembangunan sistem. Kelemahan itu antara lain adalah membaca ketergantungan paket dan melakukan kompilasi. Sebenarnya, inti dari titik lemah tersebut adalah akses fisik penyimpan SATA. Sebenarnya, ada solusi dengan memasang kartu SCSI dan memasang penyimpan SCSI. Namun, sistem tersebut gagal dikenali. Maka, mari optimasi pembangun sistem yang ada.

Optimasi Ruang Penyimpan

Proses yang paling lama dalam mengompilasi adalah akses ruang penyimpan. Berhubung memori melimpah (16GB), buat ruang sementara untuk pembangunan sistem di memori:

# mount -t tmpfs none /var/tmp/portage/ -o size=5G

Dengan optimasi ini, melakukan emerge sudah seperti apt-get.

Optimasi make.conf

Berikut ini adalah isi dari berkas /etc/portage/make.conf yang saya buat berdasarkan riset:

# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
CFLAGS="-pipe -march=bdver1 -mcx16 -msahf -mno-movbe -maes -mpclmul -mpopcnt -mabm -mlwp -mfma -mfma4 -mxop -mno-bmi -mtbm -mavx -msse4.2 -msse4.1 --param l1-cache-size=16 --param l1-cache-line-size=64 --param l2-cache-size=2048 -mtune=bdver1 -O2"
CXXFLAGS="${CFLAGS}"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="x86_64-pc-linux-gnu"
# These are the USE flags that were used in addition to what is provided by the
# profile used for building.
USE="bindist mmx sse sse2"

MAKEOPTS="-j14"
FEATURES="ccache metadata-transfer"
INPUT_DEVICES="keyboard mouse evdev"
VIDEO_CARDS="nvidia"
LINGUAS="id"

SYNC="rsync://kambing.ui.ac.id/gentoo-portage"
GENTOO_MIRRORS="http://kambing.ui.ac.id/gentoo"
ACCEPT_LICENSE="*"
ACCEPT_KEYWORDS="amd64 ~amd64"

Berhubung tadi baru saja mengubah CFLAGS dan KEYWORDS, alangkah baiknya memperbaharui sistem yang telah diubah secara drastis:

# make -e @system

Mari keluar sejenak dan menyapa kawan-kawan. Proses ini mengompilasi ulang 132 paket aplikasi.

Optimasi Emerge

Secara baku emerge menggunakan berkas sebagai ruang penyimpan. Menurut dokumentasi, penyimpanan dapat dibuat dengan SQLite. Mari mengoptimasi menggunakan SQLite.

Untuk dapat mendapatkan SQLite, Python harus dikompilasi ulang menggunakan SQLite:

# mkdir -p /etc/portage/package.use
# echo "# For the sqlite cache in Portage" >> /etc/portage/package.use
# echo "dev-lang/python sqlite" >> /etc/portage/package.use

Setelah itu, lakukan pemasangan:

# emerge -atv pysqlite

Dan aktifkan konfigurasi.

# echo "portdbapi.auxdbmodule = cache.sqlite.database" > /etc/portage/modules

Lalu buat ulang basis data.

# rm -rf /var/cache/edb/dep && emerge --metadata

Maka akan basisdata akan dibangun dengan SQLite. Untuk penggunaan eix, silakan baca tulisan lebih lanjut.

Memasang Kernel

Setelah itu semua, saatnya memasang kernel seperti biasa. Perhatikan konfigurasi Grub2.