Saya adalah pengguna Vim. Bila ada perang sipil antara Vim dan Emacs, secara otomatis saya akan jadi salah satu tentara Vim, anak buah om Tiago atau om Bram. .. intermezzo

Sudah lama saya menggunakan jk sebagai pengganti tombol ESC. Di DVORAK, ini menyakitkan. Tombol jk di DVORAK sama dengan cv di QWERTY. Posisi yang sangat tidak nyaman untuk disentuh berulang-ulang kali. Sedangkan posisi jari jk di QWERTY sama dengan ht di DVORAK. Ini juga sangat menyakitkan. Sangat banyak karakter ht di bahasa Inggris dan untuk mengetiknya di DVORAK saya harus memencet tombol h dan t dengan selisih waktu hampir 1 detik.

Nah, saya baru dapat tips bagus dari grup Vim Indonesia: mengganti ESC dengan tombol CapsLock bila ditekan normal dan menggantinya menjadi Ctrl bila ditekan sedikit agak lama (hold).

Untuk melakukannya tuliskan dua perintah di bawah di berkas .xinitrc.

setxkbmap -option 'caps:ctrl_modifier'
xcape -e 'Caps_Lock=Escape'

Lalu restart Xorg. Selamat!

Di GNU/Linux, kita biasa me-recovery sistem melalui fitur chroot. Sedangkan di FreeBSD, kita bisa memakai sistem single user boot.

Saya baru saja melakukan kesalahan pengaturan di /etc/rc.conf, yang membuat kotak FreeBSD saya kernel panic.

Untuk mengatasinya, saya hanya perlu boot ke FreeBSD sebagai single user. Lalu edit /etc/rc.conf dengan Vi.

Namun, ada kalanya sistem berkas sistem FreeBSD saya terkunci, hanya dalam mode baca-saja (read-only).

Nah untuk mengatasinya, saya perlu me-mount sistem supaya menjadi mode baca-tulis (read-write), dengan perintah:

# mount -a -t ufs

Jika aksi mount gagal, saya menjalankan fsck -y terlebih dahulu. Lalu jalankan perintah mount seperti tadi.

Berawal dari pesan yang saya terima melalui Telegram, apakah di blog ini mengulas cara instal Gentoo. Yang kemudian saya jawab, tidak ada, karena Anda bisa mencarinya di laman wiki. Saya cukup merasa bersalah, mengapa saya tak menuliskannya sendiri?

Oleh karena itu, saya menyediakan tulisan mengenai cara instal Gentoo berikut ini.

Saya asumsikan Anda akan menginstal Gentoo untuk arsitektur x86_64 (amd64) dengan sistem init OpenRC, memakai editor vim dan menggunakan MBR non-UEFI.

Gentoo?

Gentoo Linux (dulu Enoch Linux) adalah sistem operasi GNU/Linux berbasis source code, atau sering disebut source based distro. Istilah ini mengacu pada instalasi paket yang dicompile sendiri di komputer pengguna.

Gentoo sangat populer dengan filosofi “it’s all about choice”. Pengguna dibebaskan untuk mengolah sistem operasi ini sesuai dengan keinginan mereka.

Penjelasan lengkap mengenai sistem operasi ini bisa dibaca di Wikipedia.

Instalasi Gentoo

Persiapan

1. Media instalasi

Media instalasi adalah sebuah sebutan untuk media atau tempat menginstal Gentoo. Media atau tempat ini bukan berarti perangkat komputernya lho yaa.

Media instalasi Gentoo bisa apa saja, dalam arti Anda tidak perlu menggunakan Live CD (Minimal Installation CD) Gentoo. Anda bisa mengunduh Live CD apapun. Bila Anda memakai Live CD Gentoo, Anda harus siap dengan pengaturan konfigurasi pra-instalasi dengan full CLI.

Tapi jika Anda kebelet ingin memakai distro ber-desktop dengan rasa Gentoo, Anda bisa menggunakan SystemRescueCd, distro Linux berbasis Gentoo, sebagai media instalasinya.

Tidak seperti GNU/Linux berbasis GUI (Ubuntu, Fedora, openSUSE, dsb), instalasi Gentoo menggunakan fitur chroot, sehingga calon pengguna Gentoo perlu memakai Live CD (atau sistem operasi GNU/Linux yang sudah terinstal sebelumnya di perangkat yang sama) untuk menginstal distro berlogo “Magatama” ini.

2. Unduh berkas stage3

Berkas stage merupakan berkas pondasi penginstalan Gentoo. Berkas ini berisi compiler (gcc), berkas-berkas utama GNU/Linux (/bin,/usr, dsb), dan berkas lainnya.

Jika Anda sudah membaca laman Wikipedia tentang Gentoo, Anda seharusnya sudah tahu mengapa yang disediakan adalah berkas stage3, bukan stage 1 atau stage 2.

Anda bisa mengunduh berkas stage3 di tautan ini.

Mulai instal

1. Partisi

Jika media instalasi Anda membawa aplikasi Gparted, pakai saja. Jika tidak ada, Anda bisa memakai cfdisk.

Rekomendasi partisi dari saya:

/dev/sda1 (2MB) sebagai bootloader

/dev/sda2 (128MB) ext2 atau ext4, sebagai partisi /boot, tidak wajib

/dev/sda3 (sesuai kebutuhan) sebagai partisi swap

/dev/sda4 (50GB) ext4, sebagai partisi root

/dev/sda5 (sisanya) ext4, sebagai partisi /home, tidak wajib

Format /dev/sda2, /dev/sda4, dan /dev/sda5 dengan:

# mkfs.ext4 /dev/sda2
# mkfs.ext4 /dev/sda4
# mkfs.ext4 /dev/sda5

Aktifkan partisi swap dengan:

# mkswap /dev/sda3
# swapon /dev/sda3

2. Mount partisi Gentoo

Silakan mount partisi root Gentoo ke /mnt.

# mkdir -p /mnt/gentoo
# mount /dev/sda4 /mnt/gentoo

Langkah mount ini dipakai untuk melakukan chroot nanti.

3. Ekstrak stage3 ke /mnt/gentoo

Copykan berkas stage3 ke /mnt/gentoo.

# cp ~/Dowloads/stage3-amd64-20160225.tar.bz2 /mnt/gentoo

Ekstrak stage3.

# cd /mnt/gentoo
# tar -xf stage3-amd64-20160225.tar.bz2

4. Edit berkas /mnt/gentoo/etc/portage/make.conf

Tambahkan konfigurasi di bawah ini ke berkas tersebut.

CFLAGS="-march=native -O2"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j2"

Biarkan CFLAGS dan CXXFLAGS seperti itu. Khusus untuk opsi -j dalam MAKEOPTS, Anda harus memperhatikan core prosesor yang Anda miliki. Rumus untuk mengisi opsi -j di MAKEOPTS adalah core+1. Misalnya, saya mempunyai 1 core maka nilai -j adalah 2, dan bila saya mempunyai 4 core, nilai -j adalah 5.

MAKEOPTS digunakan untuk menentukan banyaknya komputasi paralel yang akan dilakukan saat mengompil paket.

5. Copy konfigurasi repositori Gentoo

# mkdir -p /mnt/gentoo/etc/portage/repos.conf
# cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/gentoo.conf

6. Copy konfigurasi DNS ke /mnt/gentoo

# cp -L /etc/resolv.conf /mnt/gentoo/etc/

Cara ini dipakai untuk meng-online-kan lingkungan chroot.

7. Masuk ke lingkungan chroot Gentoo

Sebelum ke lingkungan chroot Gentoo, mount terlebih dahulu beberapa device file yang penting.

# mount -t proc proc /mnt/gentoo/proc
# mount --rbind /sys /mnt/gentoo/sys
# mount --rbind /dev /mnt/gentoo/dev

Chroot ke Gentoo.

# chroot /mnt/gentoo /bin/bash
# source /etc/profile

8. Perbarui snapshot Portage

Snapshot Portage merupakan kumpulan berkas yang memberitahu Portage, perangkat lunak apa yang bisa diinstal, profil mana yang bisa dipilih, dan lainnya.

Jalankan,

# emerge-webrsync

Perintah ini akan mengambil snapshot Portage terbaru dari repositori Gentoo, dan menginstalnya ke sistem.

9. Pilih profil Gentoo

Profil akan menentukan bagaimana sistem operasi Gentoo Anda berjalan. Profil akan menentukan konfigurasi default, dan akan mengaturnya sedemikian rupa sesuai dengan profil yang dipilih.

Misalnya, profil default/linux/amd64/13.0/desktop akan mengaktifkan USE Flag “X” secara default, berbeda dengan profil default/linux/amd64/13.0 yang hanya membawa konfigurasi basic sebuah distro Linux.

Untuk melihat semua profil:

# eselect profile list
Available profile symlink targets:
  [1]   default/linux/amd64/13.0
  [2]   default/linux/amd64/13.0/selinux
  [3]   default/linux/amd64/13.0/desktop *
  [4]   default/linux/amd64/13.0/desktop/gnome
  [5]   default/linux/amd64/13.0/desktop/gnome/systemd
  [6]   default/linux/amd64/13.0/desktop/kde
  [7]   default/linux/amd64/13.0/desktop/kde/systemd
  [8]   default/linux/amd64/13.0/desktop/plasma
  [9]   default/linux/amd64/13.0/desktop/plasma/systemd
  [10]  default/linux/amd64/13.0/developer
  [11]  default/linux/amd64/13.0/no-multilib
  [12]  default/linux/amd64/13.0/systemd
  [13]  default/linux/amd64/13.0/x32
  [14]  hardened/linux/amd64
  [15]  hardened/linux/amd64/selinux
  [16]  hardened/linux/amd64/no-multilib
  [17]  hardened/linux/amd64/no-multilib/selinux
  [18]  hardened/linux/amd64/x32
  [19]  hardened/linux/musl/amd64
  [20]  hardened/linux/musl/amd64/x32
  [21]  default/linux/uclibc/amd64
  [22]  hardened/linux/uclibc/amd64

Karena kita akan membangun Gentoo desktop, saya akan memilih profil 3.

# eselect profile set 3

10. Atur timezone

Lihat daftar timezone di /usr/share/zoneinfo/.

# ls /usr/share/zoneinfo/

Untuk mengaturnya,

# echo "Asia/Jakarta" > /etc/timezone

Konfigurasi ulang dengan perintah,

# emerge --config sys-libs/timezone-data

11. Atur locales

# vim /etc/locale.gen

Untuk pengaturan Indonesia, Anda hanya butuh:

en_US ISO-8859-1
en_US.UTF-8 UTF-8

Jalankan perintah di bawah untuk men-generate pengaturan locale.

# eselect locale list
Available targets for the LANG variable:
  [1]   C
  [2]   en_US
  [3]   en_US.iso88591
  [4]   en_US.utf8
  [5]   POSIX
  [ ]   (free form)
# eselect locale set 4

Untuk mengaktifkan peraturan ini, Anda perlu memuat ulang lingkungan Gentoo dengan,

# env-update && source /etc/profile

12. Atur dan instal Kernel Linux

Ada dua cara instal kernel di Gentoo; dengan cara manual dan cara otomatis (dengan genkernel).

Saya hanya akan mengulas cara manualnya, karena cara inilah yang sesuai dengan alasan mengapa Gentoo ini dibuat.

12.1 Persiapan

Di sesi ini, Anda harus benar-benar jeli. Komponen mana yang perlu di aktifkan melalui menuconfig dan komponen mana yang dibiarkan tidak aktif. Oleh karena itu, Anda tentu butuh perkakas lspci untuk melihat jenis dan nama komponen PCI yang ada di komputer Anda.

# emerge -av sys-apss/pciutils

12.2 Mulai instal

Instal kernel Linux (gentoo-sources),

# emerge -av sys-kernel/gentoo-sources
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 22 Jan 23 21:02 /usr/src/linux -> linux-4.1.15-gentoo-r1

Atur konfigurasi Gentoo dengan menuconfig,

# cd /usr/src/linux
# make menuconfig

Anda akan melihat tampilan konfigurasi kernel seperti di bawah ini,

menuconfig

Saya akan menuliskan beberapa hal yang perlu diaktifkan, yang saya ambil dari Handbook Gentoo.

Untuk mengaktifkan devtmpfs,

Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [ ]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

Untuk mengaktifkan sistem berkas /proc dan yang Anda pakai (contoh ext3, ext4, Raiser, JFS, XFS).

File systems --->
(Select one or more of the following options as needed by your system)
  <*> Second extended fs support
  <*> Ext3 journalling file system support
  <*> The Extended 4 (ext4) filesystem
  <*> Reiserfs support
  <*> JFS filesystem support
  <*> XFS filesystem support
  ...
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] Virtual memory file system support (former shm fs)

Untuk mengaktifkan driver untuk koneksi PPP (menjalankan modem USB).

Device Drivers --->
  Network device support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

Untuk mengaktifkan SMP.

Processor type and features  --->
  [*] Symmetric multi-processing support

Untuk mengaktifkan USB.

Device Drivers --->
  [*] HID Devices  --->
    <*>   USB Human Interface Device (full HID) support

Setelah yakin, Anda bisa menyimpan konfigurasi dan keluar. Lalu compile dengan perintah,

# make && make modules_install

Salin hasil kompilasi ke /boot dengan perintah,

# make install

Beberapa perangkat butuh firmware, Anda bisa menginstal paket linux-firmware.

# emerge -av sys-kernel/linux-firmware

13. Atur /etc/fstab

Misalnya seperti ini,

/dev/sda2		/boot		ext4		noauto,noatime	1 2
/dev/sda3		none		swap		sw		0 0
/dev/sda4		/		    ext4		noatime		0 1
/dev/sda5		/home		ext4		noatime		0 2

14. Atur /etc/conf.d/hostname

Berkas ini dipakai untuk mengatur nama host perangkat, misalnya

hostname="localhost"

15. Atur koneksi internet

Edit berkas /etc/conf.d/net

Untuk koneksi internet kabel, tambahkan

config_eth0="DHCP"

Untuk koneksi Wi-Fi, tambahkan

config_wlan0="DHCP"

Saya rekomendasikan Anda pakai wpa_supplicant untuk membangun koneksi dengan Wi-Fi.

# emerge -av wpa_supplicant

Jika Anda ingin membangun koneksi internet dengan modem USB, Anda bisa membaca tulisan saya di Kabar Linux: Cara Menggunakan Modem USB di Gentoo.

16. Atur jam di /etc/conf.d/hwclock

Ada dua pengaturan di sini. Yang pertama UTC, yang kedua lokal. Di Indonesia, Anda harus menggunakan lokal.

clock="local"

17. Pasang system logger

# emerge -av syslog-ng

Tambahkan ke runlevel default,

# rc-update add syslog-ng default

18. Pasang cron

# emerge -av sys-proccess/cronie

Tambahkan ke runlevel default,

# rc-update add cronie default

19. Instal klien DHCP

# emerge -av net-misc/dhcpcd

20. Atur bootloader dengan GRUB2

Instal GRUB2,

# emerge -av sys-boot/grub:2

Pasang berkas-berkas GRUB2 ke /boot/grub/,

# grub2-install /dev/sda

Generate menu-menu grub,

# grub2-mkconfig -o /boot/grub/grub.cfg

21. Keluar dari chroot dan unmount /mnt/gentoo

# exit

# cd
# umount -l /mnt/gentoo/dev{/shm,/pts,}
# umount /mnt/gentoo{/boot,/sys,/proc,}

     

Saatnya reboot dan masuk ke Gentoo Anda. Selamat!

Bulan Agustus 2015, Gentoo mengalihkan repositorinya ke teknologi git. Keputusan ini tidak hanya menguntungkan pengembang, tapi juga penggunanya.

Sebelum menggunakan git, satu-satunya jalan untuk menyinkronkan repositori adalah menggunakan rsync, yang paling tidak membutuhkan waktu 5-10 menit. Dengan git, kita bisa memangkasnya menjadi kurang dari 1 menit saja.

Beneran? Benar! Silakan ubah berkas konfigurasi repositori Gentoo terlebih dahulu, tambahkan dengan,

[gentoo]
location = /usr/portage
sync-type = git
sync-uri = https://github.com/gentoo-mirror/gentoo.git
auto-sync = yes

Sekarang, paling tidak berkas konfigurasi Anda seperti ini.

$ cat /etc/portage/repos.conf/gentoo.conf
[DEFAULT]
main-repo = gentoo
 
[gentoo]
location = /usr/portage
sync-type = git
sync-uri = https://github.com/gentoo-mirror/gentoo.git
auto-sync = yes

Pada bagian sync-uri, Anda bisa menggunakan mirror Github nya (seperti di atas), atau ke alamat resminya https://anongit.gentoo.org/git/repo/gentoo.git.

Kemudian hapus semua berkas di /usr/portage/.

# rm -rf /usr/portage/

Loh mengapa dihapus? Yap, karena berkas git memiliki strukturnya sendiri yang bisa dilihat di direktori .git.

Taaraaa, silakan jalankan emerge --sync.

Pertama kali, emerge akan meng-clone repositori, selanjutnya ia akan melakukan pull. Buktikan kecepatannya! :D

Bagi yang sering berjibaku denga bahasa pemrograman C pasti sudah tidak asing dengan Valgrind.

Melalui situsnya, Valgrind adalah framework instrumentasi untuk membangun tool-tool analisis dinamis. Bahasa simpelnya, Valgrind bisa dipakai untuk mendeteksi bug dan profiling program C.

Umumunya Valgrind sudah disediakan secara default di repositori, termasuk Gentoo, tapi butuh sedikit trik supaya Valgrind berjalan lancar. Tanpa trik, Anda bisa mendapatkan error seperti di bawah ini.

Buat skrip Hello World dengan C,

#include <stdio.h>
int main(){
  puts("Hello world!");
  return 0;
}

Silakan kompil dengan gcc atau make, lalu jalankan dengan Valgrind.

Output akan menghasilkan seperti ini:

==17145== Memcheck, a memory error detector
==17145== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==17145== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
==17145== Command: ./hello-world
==17145== 

valgrind:  Fatal error at startup: a function redirection
valgrind:  which is mandatory for this platform-tool combination
valgrind:  cannot be set up.  Details of the redirection are:
valgrind:  
valgrind:  A must-be-redirected function
valgrind:  whose name matches the pattern:      strlen
valgrind:  in an object with soname matching:   ld-linux-x86-64.so.2
valgrind:  was not found whilst processing
valgrind:  symbols from the object with soname: ld-linux-x86-64.so.2
valgrind:  
valgrind:  Possible fixes: (1, short term): install glibc's debuginfo
valgrind:  package on this machine.  (2, longer term): ask the packagers
valgrind:  for your Linux distribution to please in future ship a non-
valgrind:  stripped ld.so (or whatever the dynamic linker .so is called)
valgrind:  that exports the above-named function using the standard
valgrind:  calling conventions for this platform.  The package you need
valgrind:  to install for fix (1) is called
valgrind:  
valgrind:    On Debian, Ubuntu:                 libc6-dbg
valgrind:    On SuSE, openSuSE, Fedora, RHEL:   glibc-debuginfo
valgrind:  
valgrind:  Cannot continue -- exiting now.  Sorry.

Instalasi di Gentoo

Garis besar untuk mengatasi error seperti di atas.

  1. Tambahkan USE flag debug di glibc.

  2. Tambahkan FEATURES="splitdebug" di make.conf.

  3. Kompil glibc dan valgrind lagi.

Langkah kedua bukanlah cara terbaik. Dengan menambahkan variabel baru di make.conf, berarti Gentoo akan mengaktifkannya secara global, semua paket akan dikompil ulang, dan itu butuh waktu yang laaamaaaa. Oleh karena itu lakukan hal di bawah ini.

Buatlah berkas debug.conf di /etc/portage/env/ dengan isi:

CFLAGS="${CFLAGS} -ggdb"
CXXFLAGS="${CXXFLAGS} -ggdb"
FEATURES="splitdebug"

Lalu buat berkas baru (terserah namanya) di /etc/portage/package.env/ dengan isi:

sys-libs/glibc debug.conf
dev-util/valgrind debug.conf

Taaraa, tinggal jalankan langkah ketiga, Valgrind Anda berjalan sukses!