Tag Archives

19 Articles
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.

Bebaskan LG G2 D802 Saya!
Super Android, recharge!

Bebaskan LG G2 D802 Saya!

Tulisan ini dibuat dari

PERINGATAN:

SEMUA INI DAPAT MERUSAK TELEPON ANDA, LG G2. SAYA TIDAK BERTANGGUNG JAWAB ATAS RUSAKNYA TELEPON ANDA. RISIKO TANGGUNG SENDIRI!

Sebelumnya

Di komputer pasang dev-util/android-sdk-update-manager

sudo emerge dev-util/android-sdk-update-manager

Aktifkan Perunutan USB dari Opsi Pengembang.

Pergi ke Pengaturan ⇒ Umum ⇒ Tentang ponsel ⇒ Informasi perangkat lunak

Tekan sekitar tujuh kali pada Versi perangkat lunak

Lalu, kembali dan masuk ke Opsi pengembang.

Aktifkan Perunutan USB dari Modus Pengembang

Aktifkan Perunutan USB (USB Debugging) dari Opsi Pengembang

Tekan Pilih untuk mengaktifkan konfirmasi.

Berikan otorisasi kepada komputer yang kita gunakan untuk melakukan pemasangan.

Berikan otorisasi kepada komputer yang kita gunakan untuk melakukan pemasangan.

Spesifikasi

Berikut dari telepon

 

Spesifikasi Telepon LG G2 saya

Spesifikasi Telepon LG G2 saya sebelum dibongkar

Pesan dari lsusb

Bus 007 Device 026: ID 1004:61f1 LG Electronics, Inc. Optimus Android Phone [LG Software mode]

Berikut pesan dari dmesg

[317809.731719] usb 7-4: new high-speed USB device number 25 using ehci-pci
[317809.882599] usb 7-4: New USB device found, idVendor=1004, idProduct=631f
[317809.882602] usb 7-4: New USB device strings: Mfr=2, Product=3, SerialNumber=4
[317809.882603] usb 7-4: Product: LGE Android Phone
[317809.882604] usb 7-4: Manufacturer: LG Electronics Inc.
[317809.882605] usb 7-4: SerialNumber: 03020af49f549229

Berikut pesan dari adb devices

List of devices attached 
03020af49f549229        device

Saatnya dibongkar

Unduh berkas dengan pergi ke laman unduhan.

Buka berkas Zip dan masuk ke dalam direktori.

unzip ioroot.zip && cd ioroot/bts

Sebenarnya ioroot sudah menyediakan adb versi GNU/Linux (adblinux). Tapi, saya lebih memilih menggunakan adb yang telah dipasang ke sistem (lewat paket dev-util/android-sdk-update-manager). Lebih barokah. 🙂

Perintahkan telepon ke recovery

adb reboot recovery

Tunggu beberapa saat untuk telepon menyalakan kembali dirinya. Bila benar, akan muncul menu recovery. Gunakan tombol volume untuk naik dan turun.

Pilih menu apply update from adb

Lalu, dari komputer kirim perintah [PASTIKAN ANDA MASIH DI DIREKTORI bts]

adb sideload datroot.zip

Kalau sudah benar, akan ada gambar ASCII art “Dat Root” dan terakhir tulisan “Install from ADB Complete”.

Silakan pilih reboot system now untuk kembali masuk ke mode normal.

Terakhir

Pergi ke toko Google Play Store dan pasang aplikasi SuperSU.

Selesai.

Kompilasi Kernel UKSM + tambalan Con Kolivas pada Gentoo 3.8.8

Kompilasi Kernel UKSM + tambalan Con Kolivas pada Gentoo 3.8.8

Sesuai dengan kebijakan UI, kami pekerja PAU diberi kebebasan untuk berolahraga dan melakukan hal-hal yang menyenangkan pada Jumat pagi. Berikut adalah hasil kegiatan menyenangkan saya: saya mengompilasi kernel baru.

Kebetulan Gentoo menggunakan kernel 3.8.8, saya pun menggunakan kernel tersebut sebagai dasar:

$ sudo cp -a /usr/src/linux-3.8.8-gentoo /usr/src/linux-3.8.8-gentoo-jp
$ sudo cp /usr/src/linux/.config /usr/src/config-jp.txt

Kernel UKSM menggunakan dua bahasa. Namun, untuk dapat mengakses tambalannya harus pindah ke bahasa Cina. Tambalan dari Kolivas dapat diakses langsung.

$ sudo mkdir /usr/src/patches && sudo chown -R jp:jp /usr/src/patches
$ wget http://kerneldedup.org/download/uksm/0.1.2.2/uksm-0.1.2.2-for-v3.8.ge.3.patch -P /usr/src/patches
$ wget http://ck.kolivas.org/patches/3.0/3.8/3.8-ck1/patch-3.8-ck1.bz2 -P /usr/src/patches

Tambal semuanya:

$ sudo rm -rf /usr/src/linux && ln -s /usr/src/linux-3.8.8-gentoo-jp /usr/src/linux && cd /usr/src/linux/
$ bzcat /usr/src/patches/patch-3.8-ck1.bz2 | patch -Np1
$ cat /usr/src/patches/uksm-0.1.2.2-for-v3.8.ge.3.patch | patch -Np1

Jalankan Genkernel

$ time sudo genkernel --kernel-config=/usr/src/config-jp.txt  --bootloader=grub2 --tempdir=/var/tmp/portage/ --cachedir=/var/tmp/portage/ --makeopts=-j9  all

real    5m22.299s
user    32m40.423s
sys     3m30.137s

Beres, tinggal jalankan ulang komputer. Berhubung saya menggunakan ZFS, saya mengompilasi ulang ZFS dan SPL. Tak lupa pula, saya memperbaharui sistem saya. Kebetulan SystemD mengeluarkan versi terbaru. Tapi, itu semua di luar cakupan tulisan ini. Selamat bersenang-senang!

Perjalanan Membangun Sistem (ZFS)

Perjalanan Membangun Sistem (ZFS)

My PC, built with Gentoo

My PC, built with Gentoo inside.

Ada dua WDC Green 1 TB yang bertengger di atas. Dua itu adalah milik rekan saya. Dia sedang melakukan forensik dengan salah satunya. Katanya chipset AMD lebih cepat dan stabil dalam melakukan operasi salin daripada Intel. Meh, he’s the hardware guy, /me dunno…

Punya saya yang ada di salah satu tiga itu cuma sebesar 300 GB. Satu penyimpan di bawah monitor, SATA3 Cheetah 10K RPM 300 GB, saya pakai buat direktori pusat (root directory). Satu lagi di sebelahnya juga 250 GB.

Dari set tersebut, 2 penyimpan (300 GB dan 250 GB) saya ambil untuk iseng-iseng. Tadinya, saya menggunakan 250 GB saja. Tapi, seiring dengan perkembangan kepercayaan diri yang tinggi, saya mencopot penyimpan saya dari komputer kerja dan menaruh di komputer ini.

Sistemberkas

Kebutuhan saya akan sistemberkas kali ini adalah untuk memanajemennya dengan mudah. Kebutuhan yang paling utama adalah untuk virtualisasi. Saya butuh setiap VM untuk sebuah lingkungan pengembangan yang terisolasi.

Yang kedua, saya butuh untuk bisa secara daring memperbesar ruang penyimpan. Hal ini karena terkadang ketika saya membangun sistem dalam VM, ruang yang disediakan ternyata tidak cukup. Saya perlu menambah ruang dengan dinamis tanpa harus memindah-mindahkan data.

Saya menguji 3 sistem berkas: LVM, BTRFS, dan ZFS. Dari ketiganya, yang paling familiar adalah LVM. Namun, entah mengapa Device Mapper gagal membuatkan node di “/dev” untuk LVM. Saya jadi tidak bisa memasangnya.

Hal serupa juga terjadi dengan BTRFS. Ternyata BTRFS juga menggunakan menggunakan Device Mapper. Saya jadi tak bisa memasang BTRFS. Hal ini ditambah pula dengan kegamangan menggunakan BTRFS.

Kemudian, saya mencoba memasang ZFS. Memasangnya cukup sederhana di Gentoo. Karena faktor itu, saya jadinya suka ZFS. Mungkin tulisan ini lebih menjelaskan mengapa sederhana itu indah. Mengingat terminologi setiap sistem berkas berbeda, ZFS memiliki konsep yang sama dengan LVM tapi jauh lebih canggih.

Saya menggunakan versi GIT. Jangan salah, saya bukannya penyuka ketidakstabilan. Akan tetapi, menurut saya, teknologi terbaru seharusnya menggunakan kode yang terbaru. Selain lebih stabil, beberapa fitur lebih didukung. Apalagi, pengembangan ZFS di GNU/Linux sangat cepat.

Pasang ZFS

Aktifkan versi GIT.

echo "=sys-kernel/spl-9999 **" | sudo tee -a /etc/portage/package.accept_keywords 
echo "=sys-fs/zfs-9999 **" | sudo tee -a /etc/portage/package.accept_keywords

Saya lupa, bila ada sesuatu yang salah, aktifkan “–autowrite-unmask” pada emerge. Selain itu, pastikan bahwa header kernel merupakan versi yang terpasang dan aktif. Saya sempat gagal memasang SPL karena dia membutuhkan versi header yang valid.

Lanjut pasang:

sudo emerge -av zfs

Selanjutnya tentang jenis-jenis volum.

Sekilas mengenai ZFS

ZFS mengenal konsep pool yang kalau dalam LVM itu artinya volume group. Berhubung saya hanya memiliki 1 penyimpan saja (waktu itu). Saya hanya menambahkan:

sudo zfs create vmdisk /dev/sda

Sistemberkas utama saya ada di /dev/sdb1, jadi hati-hati kawan. Saya tidak menambahkan /dev/sdb1 ke dalam ZFS saya. Saya masih belum tahu cara memasangnya ZFS sebagai berkas utama.

Baru-baru ini, saya menemukan bahwa ternyata subvolum ZFS terdiri atas dua:

  1. Sebuah blok yang bisa diformat
  2. Sebuah direktori

Berikut bedanya.

Subvolum Blok

Saya membutuhkan sebuah partisi untuk BlankOn Rote. Sistem ini sangat stabil dan cocok untuk membangun OpenELEC. Saya selalu gagal bila melakukan di Gentoo. Hal ini karena Python yang digunakan sama. Entahlah, saya hanya percaya BlankOn untuk sistem stabil.

sudo zfs create -V 20g vmdisk/blankon

Dengan menyatakan ukuran, ZFS secara otomatis menganggap bahwa yang hendak dibuat adalah sebuah subvolum blok. Ia akan otomatis membuat node di /dev/vmdisk/blankon dan /dev/zvol/vmdisk/blankon.

Subvolum Direktori

Subvolum yang kedua adalah membuat sebuah direktori khusus (child node) di bawah sebuah pool (vmdisk). Beda dengan subvolum blok, ia tidak memiliki node di /dev, ia hanya sebuah direktori biasa. Namun, ia bisa diisolasi dengan memberikan kuota dan hak khusus kepada beberapa orang misalnya.

Cara buatnya:

sudo zfs create vmdisk/musik

Lalu buat kuota untuk direktori itu:

sudo zfs set quota=30g vmdisk/musik

Entah mengapa, subvolum ZFS jenis ini di Gentoo belum terintegrasi. Jadinya, saya harus memasang manual. Yah, saya juga belum eksplorasi lebih lanjut dengan ZFS. Yang keren dari cara memasang ZFS adalah kita bisa mengubah titik pemasangan subvolum ini:

sudo zfs set mountpoint=/home/jp/Musik vmdisk/musik

Lalu pasang:

sudo zfs mount vmdisk/musik

Seperti sistemberkas lainnya, biasanya direktori tersebut dimiliki oleh root. Saya harus mengganti menjadi milik pengguna biasa:

sudo chown jp:jp /home/jp/Musik

Tidak ada yang istimewa dengan perintah ini. Namun saat kita memasang ulang, direktori ini tetap menjadi milik pengguna biasa.

Hasil penyalinan yang saya lakukan dengan memindahkan berkas Musik ke dalam subvolum vmdisk/musik.

sent 13448261665 bytes  received 29625 bytes  92428118.83 bytes/sec
total size is 13446492269  speedup is 1.00

Lumayanlah.

Tambahan

Ada banyak properti yang bisa diubah untuk sebuah subvolum. Untuk tahu lebih lanjut apa saja properti yang bisa diubah-ubah:

sudo zfs get vmdisk/musik

Saya sendiri telah mengubah properti kuota sebelumnya. Saya juga mengaktifkan kompresi [pasti, dong., Vishera 8 inti sayang kalau tak digunakan] untuk sistem berkas saya:

sudo zfs set compression=lz4 vmdisk/musik

Kalau mau tahu tentang nilai sebuah properti, silakan:

sudo zfs get compression vmdisk/musik

Silakan eksplorasi sendiri. Oh, iya, ZFS menghabiskan banyak memori. Katanya, sih, yang ideal itu minimal memori 4GB.

Kesimpulan

ZFS memiliki zona-zona yang terisolasi dan hak akses yang terintegrasi. Cocok sekali digunakan untuk sistem yang memiliki banyak pengguna. Saya belum sempat membahas, namun ZFS bisa diekspor sebagai NFS, iSCSI, dan SMB. Tak heran banyak pusat data yang menggunakan ZFS sebagai sistemberkas dasar. Saya juga belum membahas mengenai format RAIDZ yang dimilikinya dan fasilitas membuat cuplikan secara daring. Maklum, ruang penyimpan saya belum banyak.

Gentoo, Wine, dan DoTA 2
DoTA 2 with Wine

Gentoo, Wine, dan DoTA 2

DoTA 2 with Wine

DoTA 2 with Wine

Spesifikasi Komputer

Spesifikasi Xorg Komputer

X.Org X Server 1.13.2
Release Date: 2013-01-24
X Protocol Version 11, Revision 0
Build Operating System: Linux 3.7.4-gentoo x86_64 Gentoo
Current Operating System: Linux rajagukguk 3.7.4-gentoo #1 SMP PREEMPT Tue Feb
5 11:07:06 WIT 2013 x86_64
Kernel command line: BOOT_IMAGE=/boot/kernel-genkernel-x86_64-3.7.4-gentoo
root=UUID=70003eb6-dc6b-4d34-b61f-e7bcdb167dd3 ro real_init=/bin/systemd
nomodesetting
Build Date: 05 February 2013  07:35:49AM

Current version of pixman: 0.29.2
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.

Untuk informasi Kartu Grafis: (dicuplik dari Xorg.log)

[    30.722] (II) NVIDIA(0): NVIDIA GPU GeForce 8800 GT (G92) at PCI:1:0:0 (GPU-0)
[    30.722] (--) NVIDIA(0): Memory: 524288 kBytes
[    30.722] (--) NVIDIA(0): VideoBIOS: 62.92.12.00.04
[    30.722] (II) NVIDIA(0): Detected PCI Express Link width: 16X
[    30.730] (--) NVIDIA(0): Valid display device(s) on GeForce 8800 GT at PCI:1:0:0

Monitor ACER X203H mendukung resolusi 1600×900.

Perangkat Lunak GNU/Linux

Wine

Buat konfigurasi aplikasi yang hendak dipasang oleh Gentoo:

cat > /etc/portage/package.use/wine << EOF
>=dev-libs/elfutils-0.155 static-libs
sys-fs/udisks systemd
app-emmulation/wine opencl samba fontconfig gstreamer gnutls
EOF

Setelah itu pasang seperti biasa:

emerge -av wine

Sesuaikan dengan distro Anda. Kalau saya menggunakan Gentoo. Versi yang saya pasang adalah Wine 1.5.23.

Winetricks

Saya menggunakan versi SVN dari Google Code agar lebih terbaru. Sebab, checksum dari versi winetricks yang lama tidak kompatibel dengan klien Steam terbaru.

wget http://winetricks.googlecode.com/svn/trunk/src/winetricks
chmod +x winetricks && sudo cp winetricks /usr/local/bin

Setelah itu, saatnya memasang Steam.

Perangkat Lunak Winedoze

Semua ini saya pelajari dari panduan yang tertulis dari halaman Youtube Ubuntugeeks.

Mono

Mono dibutuhkan untuk menjalankan aplikasi .NET.

winetricks mono210

Gecko

Gecko untuk menjalankan peramban.

wget http://downloads.sourceforge.net/wine/wine_gecko-1.4-x86.msi
sudo mkdir -p /usr/share/wine/gecko
sudo mv wine_gecko-1.4-x86.msi /usr/share/wine/gecko/

Visual C++ Redistributable

Pustaka Visual C++ yang disediakan untuk menjalankan aplikasi yang dibangun dengan Visual Studio.

winetricks vcrun2010

Steam

Aplikasi utama yang digunakan untuk mengunduh DoTA 2.

winetricks steam --no-isolate

Parameter “–no-isolate” menandakan Steam dipasang ke direktori standar WINE. Biasanya, winetricks memasang Steam atau aplikasi lainnya ke lingkungan direktori yang berbeda. Hal ini dilakukan karena setiap aplikasi konfigurasi yang berbeda. Berhubung semua aplikasi saya didistribusikan dari Steam, maka saya menggunakan Steam di direktori standar.

Optimasi Sistem

Memasang huruf Lucida.

winetricks lucida

Menggunakan OpenGL sebagai penggambar DirectX dan memberitahu besar memori kartu grafis:

winetricks settings ddr=opengl
winetricks settings videomemorysize=512

DoTA 2

UPDATE: setelah WINE versi 1.5.24, tidak perlu menggunakan metode Desktop. Langsung saja gunakan Wine untuk DoTA 2.

Jalankan Steam dan pasang DoTA 2. DoTA 2 Early Access disediakan gratis dengan sistem undangan. Kebetulan rekan saya ada yang punya undangannya. Dia memberi saya DoTA 2. Agar tidak rusak, aplikasi Steam dipasang dengan menggunakan metode Desktop:

wine explorer /desktop=dota2,1600x900 "C:\Program Files (x86)\Steam\Steam.exe"

Entah mengapa, dengan menjalankan modus ini, DoTA 2 jadi bisa dimainkan.

Setelah DoTA 2 selesai diunduh, Anda bisa menonaktifkan video Valve yang biasa diputar di awal. Caranya:

  1. Pada bagian Library klik kanan pada Dota 2 dan pilih Properties
  2. Klik tombol SET LAUNCH OPTIONS…
  3. Ketik: -no-vid
  4. Lalu, klik OK dan kemudian CLOSE

DoTA 2 telah siap dijalankan.

Tips untuk Menjalankan

Saya menggunakan Enlightenment 17 dan sepertinya ada sebuah galat yang diketahui bersama bahwa aplikasi layar penuh akan kehilangan fokus papan ketik. Untuk itu, saya menyarankan untuk menyiapkan DoTA 2 pada modus Jendela, bukan Layar Penuh. Saya biasanya melakukan ini:

  1. Bila pertama kali saya menjalankan DoTA 2 pada modus Layar Penuh (Fullscreen), saya akan mengubah ke modus Jendela (Window) dengan resolusi layar 1152×864 (4:3). Lalu, saya jalankan ulang DoTA 2.
  2. Ketika DoTA 2 sudah dijalankan pada Jendela, saya mengubah ke modus Layar Penuh dengan resolusi 1600×900 (16:9). Ini merupakan resolusi layar saya. Bisa jadi Anda menggunakan resolusi yang berbeda.
  3. Ketika saya selesai bermain dan sebelum saya keluar, saya kembali mengubah konfigurasi menjadi modus Jendela dengan layar 1152×864 (4:3).

Lain kali kalau Anda mau menjalankan aplikasi DoTA 2 langsung, bisa dengan mengetik (atau membuat pintasan/skrip sederhana):

wine explorer /desktop=dota2,1600x900 "C:\Program Files (x86)\Steam\Steam.exe" -applaunch 570

Semoga berhasil.

Gentoo Bootstrapping (Untuk Kalangan Sendiri)

Gentoo Bootstrapping (Untuk Kalangan Sendiri)

Catatan

Tulisan ini ditulis untuk saya sendiri. Mungkin ada penjelasan, mungkin juga tidak. Inti dari tulisan ini adalah bagaimana memasang sebuah sistem Gentoo cita rasa sebagai berikut:

  • GCC 4.7.2 (utamanya 4.6.3)
  • SystemD (utamanya sysvinit)
  • Enlightenment 17 (DR17)

Mereka masih eksperimental, itu sebabnya CFLAGS dan CXXFLAGS diset untuk tidak terlalu agresif. Bahkan, systemd tidak disarankan oleh Gentoo karena Gentoo sudah ada OpenRC. Sistem yang dibuat ini belum tentu jalan. Berhubung komputer saya cukup cepat untuk membuat saya tidak malas, maka biar saja.

Sejujurnya, saya malas memasang systemd. Secara filosofis, ia menentang falsafah GNU/Linux: “semua tentang pilihan pengguna”.

Sistem Dasar

Persiapan dengan memasang stage3:

mkfs.reiserfs /dev/sdb1 -l "Pusat Pemerintahan"
mkdir /mnt/gentoo && mount /dev/sdb1 /mnt/gentoo -o noatime,nodiratime,notail
wget http://kambing.ui.ac.id/gentoo/releases/amd64/current-stage3/stage3-amd64-20130130.tar.bz2 -O- | sudo tar xj -C /mnt/gentoo

Mengubah beberapa berkas:

sudo cp /etc/resolv.conf /mnt/gentoo/etc/
sudo rm /mnt/gentoo/etc/fstab
sudo mkdir /mnt/gentoo/usr/portage

Memasang sistemberkas utama:

sudo mount -t proc none /mnt/gentoo/proc
sudo mount -t sysfs none /mnt/gentoo/sys
sudo mount -o bind /dev /mnt/gentoo/dev
sudo mount -t devpts none /mnt/gentoo/dev/pts

Dan pindah:

sudo chroot /mnt/gentoo /bin/bash
emerge-webrsync

Pilih profil yang diinginkan yang diinginkan:

eselect profile set 12 # ganti 13 (GNOME) atau 14 (KDE).
eselect locale set 413 # id_ID.utf-8

Aktifkan GCC 4.7.2:

mkdir /etc/portage/package.unmask && echo ">=sys-devel/gcc-4.7" >> /etc/portage/package.unmask/gcc

Ubah make.conf sesuai selera:

cat > /etc/portage/make.conf << EOF
CFLAGS="-march=native -mtune=native -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
USE="bindist mmx sse sse2 avx threads sse3 sse4_1 ssse3"

MAKEOPTS="-j9"

INPUT_DEVICES="keyboard mouse evdev"
VIDEO_CARDS="radeon 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"
EOF

Duh, memori ada 16GB sayang kalau tak dipakai. Pinjam, ah…

mkdir /var/tmp/portage && mount -t tmpfs -o size=6g,noatime,nodiratime none /var/tmp/portage/

Mari pasang gcc:

env-update && source /etc/profile && emerge --oneshot --nodeps gcc-config
emerge -av gcc

Lanjut untuk melakukan bootstrapping:

USE="-* build bootstrap" emerge linux-headers && emerge --nodeps gdbm libperl perl
/usr/portage/scripts/bootstrap.sh
emerge -O libperl && emerge -O python
emerge -qv shadow && emerge --deep -qv system

Duh, kadang gagal, ya, sudah. Langsung saja mencari masalah:

emerge -qv systemd

Tambahkan “systemd” ke dalam variabel USE di “/etc/portage/make.conf”. Lalu buat ulang sistem:

emerge -eqv @system
emerge --depclean

Lakukan hal yang biasa dilakukan:

cp /usr/share/zoneinfo/Asia/Jakarta /etc/localtime
echo "Asia/Jakarta" > /etc/timezone
echo "hostname=\"rajagukguk\"" > /etc/conf.d/hostname

Optimasi aplikasi emerge:

mkdir -p /etc/portage/package.use
echo "dev-lang/python sqlite" >> /etc/portage/package.use/python
emerge -atv pysqlite
python-updater
emerge -auDNtv @world
echo "portdbapi.auxdbmodule = cache.sqlite.database" > /etc/portage/modules
echo "FEATURES=\"metadata-transfer\"">> /etc/portage/make.conf
rm -rf /var/cache/edb/dep && emerge --metadata

Pasang eix dan layman:

echo "app-portage/eix sqlite" >> /etc/portage/package.use/eix
emerge -qv eix layman
cat >> /etc/eixrc << EOF
> 
> PORTDIR_CACHE_METHOD='sqlite'
> OVERLAY_CACHE_METHOD='parse'
> EOF
eix-update

Berkas /etc/fstab biasanya diubah. Mari ubah kembali menjadi yang kita miliki:

echo "/dev/ROOT               /               reiserfs        noatime,notail  0 1" > /etc/fstab

Setelah itu, pemasangan kernel yang tidak begitu menarik karena sudah biasa.

emerge -qv genkernel gentoo-sources grub

Kebetulan saya sudah pernah membuat kernel yang sama. Jadi, saya menggunakan konfigurasi yang sudah ada. Dari terminal yang berbeda, salin konfigurasi kernel yang sudah ada ke sistem yang baru:

cp /usr/src/linux/.config /mnt/gentoo/tmp/config.txt

Setelah itu, kembali ke terminal kerja. Berhubung 6GB memori sudah terpasang di /var/tmp/portage, ya, sekalian saja digunakan untuk kompilasi kernel. Genkernel menggunakan konfigurasi yang berbeda dengan emerge. Kita harus secara eksplisit menyebutkan lokasi kerja:

time genkernel --kernel-config=/tmp/config.txt  --bootloader=grub2 --tempdir=/var/tmp/portage/ --cachedir=/var/tmp/portage/ --makeopts=-j9  all

Penggunaan time merupakan hal iseng yang saya lakukan untuk menunjukkan waktu kompilasi yang dibutuhkan:

real    5m2.110s
user    29m36.263s
sys     3m55.639s

Yah, lumayan, butuh sekitar 5 menit untuk mengompilasi kernel dan modul-modulnya. Sistem ini baru pertama kali dibuat, sehingga kita harus membuat konfigurasi GRUB yang pertama kali secara manual. Selain itu, tambahkan konfigurasi systemd:

sed '/GRUB_CMDLINE_LINUX_DEFAULT=\"\"/c GRUB_CMDLINE_LINUX_DEFAULT=\"real_init=/bin/systemd nomodesetting\"' /etc/default/grub > /tmp/grub && mv /tmp/grub /etc/default/grub
mkdir /boot/grub2
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-install /dev/sdb

Selanjutnya memasang Enlightenment 17 (DR17) dan Xorg. Saya menggunakan penggerak dari NVidia karena Nouveau belum stabil. Lagipula, saya bermain Steam.

echo "x11-wm/enlightenment ukit emotion" > /etc/portage/package.use/enlightenment
emerge -av "enlightenment:0.17" --autounmask-write
emerge -av x11-base/xorg-server x11-drivers/nvidia-drivers
eselect opengl set nvidia
eselect opencl set nvidia

Penambahan Pengguna

Saya lupa membuat pengguna.

emerge -qv sudo vim

Buat pengguna:

useradd -m -G users,wheel,audio,cdrom,disk,video -s /bin/bash jp
passwd jp
echo "%wheel ALL=(ALL) ALL" >> /etc/sudoers

Selesai. Sekarang saya mau menyalakan ulang komputer saya ke sistem yang baru.

Sumber Bacaan

Mempercepat Kompilasi

Mempercepat Kompilasi

Saya menaruh ccache dan portage ke dalam memori berdasarkan trik dari sebuah forum. Hasilnya:

time emerge -aq kdeartwork-meta kdeadmin-meta kdebindings-meta kdegraphics-meta kdemultimedia-meta kdenetwork-meta kdepim-meta kdeutils-meta
real    53m47.053s
user    163m3.295s
sys     26m38.003s

Sekitar 140-an paket baru di bawah satu jam.

Tulisan di atas ditulis kemarin. Setelah saya telaah lebih lanjut, penggunaan ccache tidak berguna. Bukannya mempercepat, malah ccache melambatkan kompilasi aplikasi. Itu sebabnya, saya mematikan fitur ccache dari Portage.

Menurut Flameeyes. pengembang utama Gentoo, ccache tidak begitu berguna untuk aplikasi  yang selalu baru. Checksum yang dipakai untuk menandai tembolok akan selalu berbeda. Sehingga, mau tidak mau malah mengompilasi ulang.

Tentu saja, tidak selamanya ccache salah. Bisa saja optimasi ccache dilakukan pada pembangunan aplikasi-aplikasi tertentu. Bagaimana pengalaman rekan-rekan?

Membangun Komputer Impian
Bahan Impian

Membangun Komputer Impian

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.

Read More

Steam Linux Beta
Klien Steam Beta

Steam Linux Beta

Steam Linux Beta

Steam Linux Beta

Adanya klien Steam Linux tidak menambah apa pun kepada gerakan perangkat lunak bebas. Namun, saya senang untuk usaha Gabe dan kawan-kawan untuk menerjemahkan Steam ke dalam GNU/Linux. Usaha ini menambal kelemahan sistem operasi GNU/Linux, yakni kurangnya permainan. Ini juga sebagai ajang pembuktian bahwa GNU/Linux merupakan ekosistem potensial.

Tiga hari yang lalu saya mendapatkan surel dari Steam Beta. Hari ini saya sudah selesai mengunduh berkas-berkas pemasangan. Saya baru memasangnya kepada komputer kerja saya (Gentoo), jadi saya belum bisa menulis untuk laptop saya (BlankOn).  Saya juga tidak yakin untuk menulis tutorial, sebab ini masih Beta tertutup (ataukah sudah bisa diunduh?).

Untuk bisa masuk ke dalam program beta, Anda harus mengisi borang pada blog Valve Linux. Saya sudah lupa di mana, jadi silakan cari tulisan tentang itu di sana.

Steam Linux

Ada beberapa proses yang dilakukan oleh Steam Linux begitu selesai dipasang:

  • Memasang versi terbaru, alias mengunduh lagi untuk versi Steam Linux terbaru.
  • Memasukkan ulang kode verifikasi, kita dianggap sebagai komputer baru walau pun sudah ada klien Steam.
  • Memasukkan ulang login.
Saya lupa membuatkan cuplikan. Saya pikir ini proses yang trivial karena kalau Anda menggunakan Steam versi Windows, Anda sudah familiar dengan proses tersebut.
Steam Beta

Klien Steam Beta

Saya sulit membuat komparasi selain mengatakan bahwa baru ada beberapa permainan saja di dalam klien Steam Linux. Tampaknya, permainan Team Fortress 2 disediakan dengan status Free to Play, alias tersedia gratis khusus untuk Steam Linux. Saya sendiri, sih, sudah membeli permainan ini dari dulu. Tapi, yang lainnya perlu gesek-gesek kartu. Ah, saya masih banyak kebutuhan. 🙂

 

Steam System Information

Omong-omong, saya belum mencoba menjalankan Team Fortress. Proses ini butuh waktu lama karena di Indonesia belum tersedia koneksi murah nan cukup cepat. Mungkin saya bisa membandingkan Steam Linux dengan Steam yang dijalankan dengan Wine.

Berikut poin-poin yang saya dapati:

  • Fitur identik, kecuali pada permainan yang ditawarkan.
  • Sama-sama menggunakan emulasi, hal ini karena Steam Linux masih menggunakan pustaka 32-bit. Mungkin mereka mengingat bahwa sebagian besar permainan ditulis untuk mesin 32-bit (Windoze). Jadi, untuk menerjemahkan ke GNU/Linux juga perlu ke pustaka yang sama.
  • Tulisan lebih alami karena menggunakan fonta sistem. Tulisan pun sudah anti-alias sehingga tidak patah-patah seperti versi Wine.
  • Steam Big Picture (SBP) hanya dapat dijalankan pada Steam Linux. SBP ini adalah sebuah moda pusat media pada Steam. Sayangnya, suara yang ada pada saya terpotong-potong. Mungkin ada konfigurasi tambahan yang harus dilakukan.
Steam Big Screen

Steam Big Screen

Penutup

Untuk Gentoo, dapat menggunakan Layman untuk memasangnya. Saya tidak jabarkan di sini karena saya belum ada waktu. Saya menggunakan penggerak dari nVIDIA. Seandainya ada yang menggunakan penggerak terbuka (radeon/nouveau) harus menjalankan ini sebelum memulai steam:

export force_s3tc_enable=true

Mengapa hal tersebut diperlukan? Karena S3TC merupakan standarisasi OpenGL yang dipatenkan. (Yeah, fsck to those that so lamely put software patents into standards)

Saya rasa, mungkin laptop saya lebih kompatibel mengingat dia BlankOn 32-bit. Proses ini mungkin butuh tiga hari lagi. Sementara itu, demikian laporan pandangan mata saya.

Debootstrap BlankBerry pada Gentoo

Debootstrap BlankBerry pada Gentoo

Halaman membangun BlankBerry hanya memberikan asumsi bahwa kita menggunakan BlankOn atau sistem berbasis Debian lainnya. Untuk sistem Gentoo, ada caranya. Terinspirasi dari halaman ini. Saya mengasumsikan bahwa:

  1. Debootstrap telah terpasang.
  2. Direktori yang akan dipasangi BlankBerry sudah siap (maksudnya drive-nya sudah di-mountpada direktori tersebut, dsb.).
    export rootfs=/mnt/sysroot
  3. Akses Internet mumpuni atau Anda sudah menyiapkan repo lokal.

Persiapan dari sisi Gentoo

USE="static" emerge -b1 qemu-user

Ini akan memasang “/usr/bin/qemu-static-arm” dan “qemu-static-arm-binfmt” dan seabrek-abrek arsitektur lainnya.

Sekarang saatnya berpesta! Debootstrap seperti biasa.

debootstrap --verbose --arch armhf --no-check-gpg --foreign rote $rootfs http://arsip-dev.blankonlinux.or.id/raspbian /usr/share/deboostrap/scripts/wheezy

Pasang sistem-sistemberkas yang perlu.

mount -t proc none $rootfs/proc
mount -t sysfs none $rootfs/sys
mount -o bind /dev $rootfs/dev
mount -t devpts none $rootfs/dev/pts

Mari persiapkan “binfmt_misc”.  Modul “binfmt_misc” adalah sebuah fasilitas kernel Linux untuk menjalankan sebuah binari kepada sebuah aplikasi, misalnya emulator. Mari pasang modul ini untuk menjalankan ARM.

modprobe binfmt_misc
mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc

Beritahu emulator untuk ARM.

echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-static-arm:' > /proc/sys/fs/binfmt_misc/register

Salin kedua berkas emulator ARM.

cp /usr/bin/qemu-static-arm $rootfs/usr/bin/qemu-static-arm-binfmt
cp /usr/bin/qemu-static-arm-binfmt $rootfs/usr/bin/qemu-static-arm-binfm

Yak, sudah selesai.

Lanjutkan Debootstrap:

LC_ALL=C chroot $rootfs /debootstrap/debootstrap --second-stage

Yak, ini semua untuk menggantikan satu baris berikut yang ada pada halaman WIKI BlankOn:

qemu-debootstrap --arch armhf rote $rootfs http://arsip-dev.blankonlinux.or.id/raspbian /usr/share/debootstrap/scripts/wheezy

Selanjutnya terserah Anda.

Menggunakan GCC 4.7.1 di Gentoo
cpu-burn

Menggunakan GCC 4.7.1 di Gentoo

Ternyata Gentoo sudah memiliki GCC 4.7.1 hanya saja di mask. Untuk bisa memasangnya, saya menggunakan cara barbar:

# ebuild /usr/portage/sys-devel/gcc/gcc-4.7.1.ebuild qmerge

Fungsi qmerge adalah untuk mengompilasi dan memasang paket GCC 4.7.1.

Alasan Menggunakan GCC 4.7.1

Fitur Link Time Optimization akhirnya aktif dan cukup stabil. Dengan menggunakan LTO, optimisasi dilakukan saat binari-binari disatukan untuk menjadi sebuah aplikasi. Sayangnya, belum semua aplikasi yang bisa memanfaatkannya.

Fix KMOD vs module-init-tools Gentoo Upgrade

Fix KMOD vs module-init-tools Gentoo Upgrade

Recently Gentoo refused to upgrade, it said:

[blocks B      ] sys-apps/kmod ("sys-apps/kmod" is blocking sys-apps/module-init-tools-3.16-r1)
[blocks B      ] sys-apps/module-init-tools ("sys-apps/module-init-tools" is blocking sys-apps/kmod-7)

Total: 161 packages (143 upgrades, 1 downgrade, 6 new, 11 reinstalls), Size of downloads: 899,585 kB
Conflict: 32 blocks (2 unsatisfied)

I let it slip this few weeks because I don’t have enough time to resolve it and I thought that Gentoo would someday resolve it. Unfortunately, until this time of writing, it has not resolved. So, I have to figure out what was the problem.

It seems that module-init-tools is being obsoleted by its upstream maintainer in favor of KMOD. According to MikeTBob in Linux Forum and toralf in Gentoo forum, the fix is to remove module-init-tools and to install KMOD:

$ emerge -C module-init-tools && emerge -avU kmod

Still, this doesn’t worked out for me. But a post from ssuominen in the same thread suggested that the problem might from Bug #409017. According to this bug, many current profile is still linked to old profile in

/usr/portage/profiles/default/linux/amd64/10.0

After investigating a bit, I found out that my make.conf was altered with this line:

PORTDIR_OVERLAY=/usr/local/portage

I don’t know who put that there, but after investigating a bit, I found out that “/usr/portage” was last time synced in 6 July 2011. Whoa… kind of old. And all this time I was using “/usr/local/portage”. I’m still investigating why this would happens. But, now I have found my solution. I have to select current profile. The list are:

$ eselect profile list
Available profile symlink targets:
  [1]   default/linux/amd64/10.0
  [2]   default/linux/amd64/10.0/selinux
  [3]   default/linux/amd64/10.0/desktop
  [4]   default/linux/amd64/10.0/desktop/gnome
  [5]   default/linux/amd64/10.0/desktop/kde
  [6]   default/linux/amd64/10.0/developer
  [7]   default/linux/amd64/10.0/no-multilib
  [8]   default/linux/amd64/10.0/server
  [9]   hardened/linux/amd64
  [10]  hardened/linux/amd64/selinux
  [11]  hardened/linux/amd64/no-multilib
  [12]  hardened/linux/amd64/no-multilib/selinux

Look, nothing is selected. We should select one. Yours may vary. But, I choose KDE Desktop profile:

$ eselect profile set 5

Voila, now I can carry on life.

BONUS: Fix This Mess

I don’t satisfied with “just work” solution. I need to have consistent portage directory. At this point, I would like to have only one legitimate portage directory. These later methods might not be the best method and I am not encouraging you to do the same as I. But, in case you too want to have the consistent portage dir, let’s do this.

First, remove the line

PORT_DIR=/usr/local/portage

from “make.conf”. I think this was added by layman in some point in 6 July 2011, or not…. Anyway, that’s that.

Next, update the portage tree again.

$ eix-sync

I’m using EIX and you should too. But if not, use the traditional one

$ emerge --sync

In my case, it took quite a while for the tree to be synced completed.

If anything goes right, none of the profile is selected, just like the above. Then, reselect the profile:

$ eselect profile set 5

Let’s double check that it lead to “/usr/portage” and not “/usr/local/portage”:

$ ls -al /etc/make.profile
lrwxrwxrwx 1 root root 60 Apr  3 07:48 /etc/make.profile -> ../usr/portage/profiles/default/linux/amd64/10.0/desktop/kde

Yup, it’s there. Now, make a leap of faith:

$ rm -rf /usr/local/portage

Considering that “distfiles” is in “/usr/portage”, I think the “/usr/local/portage” is no longer needed.

Just a bonus, emerge have new parameter “–autounmask-write” to add certain packages USE parameters automatically in “/etc/portage/package.use” in order to upgrade. Add that parameter to write changes needed.

Now, I can really carry on with my life.

Adding Patches to Gentoo EBUILD

Adding Patches to Gentoo EBUILD

It’s not that hard. In fact, I’ve found that it wasn’t like the documentation stated. Let’s use KMix 4.8.0 as an example.

According to Bug 292595, KMix failed to compile with the new OSS4. I too affected by this. Luckily, the bug provide a patch as an attachment:

diff -ur kdemultimedia-4.8.0.orig/kmix/backends/mixer_oss4.cpp kdemultimedia-4.8.0/kmix/backends/mixer_oss4.cpp
--- kdemultimedia-4.8.0.orig/kmix/backends/mixer_oss4.cpp 2012-01-27 22:02:21.368720442 +0800
+++ kdemultimedia-4.8.0/kmix/backends/mixer_oss4.cpp 2012-01-27 22:10:27.844842363 +0800
@@ -430,7 +430,7 @@
 {
 Volume vol(ext.maxvalue, ext.minvalue,
 false, isCapture);
- vol.addVolumeChannel(VolumeChannel(Volume::MLEFT));
+ vol.addVolumeChannel(VolumeChannel(Volume::LEFT));
 
 MixDevice* md = new MixDevice (_mixer,
 QString::number(i),

Those lines are verbatim copies from the attachment and I save it to “$PORTAGE_TREE/kde-base/kmix/files/kmix-4.8.0-oss4-fix.patch”. I have $PORTAGE_TREE in “/usr/local/portage”; that might vary on you.

Then, in the “$PORTAGE_TREE/kde-base/kmix/kmix-4.8.0.ebuild” I add these lines before “src_configure”:

PATCHES=( 
 "${FILESDIR}/kmix-oss4.patch"
)

And generate the new checksum for it so that Gentoo won’t complain:

# ebuild /usr/local/portage/kde-base/kmix/kmix-4.8.0.ebuild digest

Voila! We do the routine as usual. No need to make “src_unpack()” function.

Pembaharuan Gentoo

Pembaharuan Gentoo

Galat di

dev-libs/icu

Sepertinya sedang ada perubahan versi yang menyebabkan Gentoo gagal memasang versi terbaru. Setelah saya cari tahu, ternyata kegagalan menemukan pustaka dari pake “dev-libs/icu”, sebuah paket internasionalisasi. Ternyata saya memasang versi baru “48” sedangkan yang lama versi “46”. Anehnya, ini tidak terdeteksi oleh “

revdep-rebuild

“.

Cerita pendeknya, ternyata saya harus mengompilasi ulang “

dev-libs/libxml2

“.

$ emerge -av dev-libs/libxml2

Galat di

media-libs/mlt

Sistem saya berusaha memasang “xulrunner” yang menggunakan MLT. Ternyata versi 0.7.2 dari MLT memiliki galat ketika mengompilasi dukungan Ruby. Maka cara sementara membetulkannya adalah dengan mematikan dukungan Ruby.

$ USE="-ruby" emerge -av media-libs/mlt

Saya lupa, buat apa, yah, dibutuhkan dukungan Ruby?

Gentoo Screw Up After Python2.6 Removed

Gentoo Screw Up After Python2.6 Removed

Call me hardcore, but yes I ran a crazy command:

emerge --depclean

The effect was I lost my python2.6  and all applications that depend on that, including emerge. After a careful examination, I found out that I had 2 Python versions installed: python2.7 and python3.1.

Here’s what I do to fix this:

  1. Rename the
    /usr/bin/python
    and
    /usr/bin/python2
    into
    /usr/bin/python.old
    and
    /usr/bin/python2.old
    . This is because both of them is actually a symlink to
    /usr/bin/python-wrapper
    that select non-existent python2.6.
    mv /usr/bin/python /usr/bin/python.old
    mv /usr/bin/python2 /usr/bin/python2.old
    
  2. Make a symlink from python2.7 to python and python2.
    ln -s /usr/bin/python2.7 /usr/bin/python
    ln -s /usr/bin/python2.7 /usr/bin/python2
    
  3. Then, do eselect to select one of the available python. I’m a hardcore, I select the pyhon3.1: (you may choose python2.7 for the safest bet)
    eselect python set python2.7
    
  4. Build your packages accordingly.

When I said Python3 is hardcore, it IS a hardcore choice. Many packages failed to build using this thing. So, please, don’t use it if you don’t want to run into deep trouble.

Many sane solutions other than this solution can be read from this thread: http://forums.gentoo.org/viewtopic-t-786104-postdays-0-postorder-asc-start-25.html

Perjalanan Saujana dalam Gentoo

Perjalanan Saujana dalam Gentoo

Setelah ditinggal pergi Sabtu-Minggu, akhirnya Gentoo 64bit telah selesai memasang KDE4.4. Perjalanan terganggu ketika saya gagal masuk ke dalam sistem. Setelah berguru kepada Mbah Gugel dan bersemedi berjam-jam, akhirnya saya putuskan bahwa masalahnya ada pada perangkat keras, Acer Aspire. Sebelum Anda menuduh Acer jelek, saya perlu kemukakan bahwa komputer yang saya gunakan adalah sebuah PC bermerek yang sudah dimodifikasi. Saya hapus instalasi Windows Vista Premium (asli, karena bermerk). Omong-omong, bisakah di Indonesia kita minta refund untuk sistem operasi mahal itu?

Saya memasang sendiri 2 GB memori (bakunya 1 GB). Lalu, saya memasang kartu pengendali SCSI. Nah, ternyata, kartu pengendali inilah yang menyebabkan komputer ini gagal memuat Gentoo yang terpasang pada SATA. Anehnya, BIOS hanya mengenali SCSI saja. Akhirnya demi Gentoo, saya mencopot SCSI saya. Sebuah keputusan berat, namun cukup berarti. Akhirnya saya bisa memuat Gentoo. Mungkin saya perlu menambal BIOS dengan firmware yang baru. Beberapa modifikasi saya buat pada berkas

/etc/make.conf
untuk dapat mengompilasi secara optimal.

# Konfigurasi kompilasi

Saya mengubah kompilasi saya dengan menambahkan perintah sebagai berikut:

CFLAGS="-O2 -pipe -march=core2 -mtune=native -msse4.1"

Sebenarnya bisa saja ditambahkan "

-fomit-frame-pointer
" untuk membuang simbol-simbol debug. Tapi, saya rasa ini cukup aman untuk konfigurasi saya (CPU Core2 Duo E7400)

# Pemasangan Sun JDK

Pemasangan SUN Oracle JDK cukup rumit. Ternyata, kita harus menambah variabel berikut pada berkas

/etc/make.conf
atau pada berkas
/etc/portage/package.license
, yaitu:

 

ACCEPT_LICENSE="dlj-1.1"

Jika ada lisensi lain yang diperlukan dapat ditambahkan dengan pemisahan menggunakan spasi. Setelah ada dibuat seperti demikian, kita baru bisa memasang dengan normal paket
sun-jdk
.
 
Saya mengunduh driver NVIDIA Beta dari situs NVIDIA. Lalu, saya mengunduh driver Omnikey 5321 dari situsnya (wow, mereka menatar driver Linux). KDE 4 berjalan stabil, bagus, dan responsif. Masih banyak kilikan lainnya yang saya belum paparkan, tetapi rasanya itu perlu di episode selanjutnya. 😀
Trying Gentoo: A Compiling Distro

Trying Gentoo: A Compiling Distro

Sambil menunggu KDE 4.4 selesai dipasang, saya memutuskan untuk mengisi blog ini. Ada sekitar 220+ paket yang perlu dipasang. Komputer kerja saya (Core2 Duo 2GB) pun terasa lambat. Entah saat ini sudah paket ke berapa. Sudah selesai ganti-ganti tema blog, menyampah di jejaring sosial, dan menjalani blog-blog orang, ternyata kompilasi masih saja berjalan.

Sebelum ada yang marah-marah, perlu saya beritahukan kalau saya adalah seorang pengguna Debian. Jadi, kalau saya membandingkan dengan Debian/Ubuntu, itu semata-mata demi petualang-petualang lain yang mungkin juga sama dengan saya.

Berbicara tentang kompilasi, dulu saya pernah memasang Linux From Scratch (LFS). Waktu yang dibutuhkan sekitar sebulan lebih. Dari LFS ke BLFS paket GNOME, saya membutuhkan waktu beberapa minggu. Proses yang lama itu termasuk untuk mengunduh paket-paket kode sumber. Instalasi kala itu sangat lama, terutama ketika membuat bootstrapping.

Apakah bootstrapping?

Bootstrapping adalah sebuah fase untuk menciptakan lingkungan perantara sebelum benar-benar memasang sistem. Fase ini diperlukan agar sistem yang kita buat itu dikompilasi dengan ABI (Application Binary Interface) yang sama. Untuk menjaga konsistensi, pustaka dasar seperti GCC dan GLIBC harus dikompilasi oleh pustaka dengan versi yang sama. Selain itu, harus dipastikan bahwa setiap pustaka dasar itu menaut kepada dirinya sendiri, bukan pustaka induk mau pun pustaka lingkungan perantara. Itu sebabnya, GCC dikompilasi sekitar 3 kali dan proses kompilasi itu diulang lagi kemudian.

Jika Anda seorang bintang porno (istilah Gentoo untuk orang-orang yang suka hardcore, benar-benar membangun dari dasar), proses penciptaan lingkungan perantara ini dinamakan Stage 1 dan Stage 2. Untungnya, Gentoo tidak membiarkan saya kembali ke zaman pra sejarah tersebut. Gentoo sudah membuat sebuah lingkungan hasil bootstrapping-nya sendiri yang diberi nama Stage 3.  Stage 3 adalah sebuah lingkungan dasar yang bisa dibuka dan dipasang langsung ke sebuah partisi kosong. Semacam debootstrap pada Debian.

Kalau di Debian/Ubuntu, saya akan lakukan seperti ini:

$ debootstrap lucid /mnt/target http://kambing.ui.ac.id/ubuntu

Sedangkan kalau di Gentoo:

$ tar xvfj /tmp/stage3-latest.tar.bz2 -C /mnt/target

Saya masih mereka-reka sistem pemaketan Gentoo. Yang saya baca, mereka menggunakan Portage. Portage menggunakan Ebuild. Intinya, sebuah skrip untuk mengunduh dan memasang paket. Yang saya suka, mereka mengizinkan kita untuk mengatur sendiri parameter-parameter yang diperlukan. Kebetulan, sewaktu zaman jahiliyah dulu, saya suka memain-mainkan parameter GCC. 

Untuk kompilasi, saya pasang berikut di berkas

 /etc/make.conf
saya:

CFLAGS="-march=core2 -msse3 -mtune=native -O2 -pipe"

CXXFLAGS="${CFLAGS}"

Saya tidak tahu, apakah penggunaan SSE 4.1 didukung oleh GCC 4.4? Ada, sih, parameternya dengan menggunakan

-msse4.1
. Tapi, saya masih belum yakin kalau itu didukung penuh. Saya juga tertarik untuk mencoba LLVM, tapi belum sempat belajar. Saya juga mau coba pakai EGLIBC bukan GLIBC. Ugh, banyak juga, yah, keinginan….

Berhubung Core2 Duo punya dua inti, buat 2 kompilasi paralel:

MAKEOPTS="-j2"

Pasang server terdekat (benar-benar dekat, tinggal nyerosot sebentar):

SYNC="rsync://kambing.ui.ac.id/gentoo-portage"

DIST_MIRRORS="http://kambing.ui.ac.id/gentoo"

Lalu tinggal jalankan

emerge
seperti di dalam buku panduan Gentoo. Untuk beberapa entri mendatang saya akan membahas petualangan di dunia kompilasi saya. Jadi, mohon maaf jika bahasa semakin kotor. Saya akan menyelipkan entri yang ringan juga agar blog ini tidak berat.

Bacaan dan bahan menarik yang saya mau buat:

undocumented features

No Description

http://www.linuxfromscratch.org/pipermail/hints/2002-June/000969.html