Beberapa pembaca blog evilfactorylabs yang budiman mungkin sudah pernah mendengar tentang Linux, GNU/Linux, UNIX, ataupun UNIX-like something yang sering dikaitkan dengan sistem operasi. Sepengetahuan penulis sendiri ada 3 (keluarga) sistem operasi yang mendominasi lingkungan per-komputer-an yang antara lain:

  • Windows
  • *BSD
  • GNU/Linux

Selain itu ada beberapa sistem operasi yang terkesan "niche" seperti plan9 nya Bell Labs, Redox, dsb yang tidak menggunakan "Linux/BSD Kernel" dalam sistem operasi nya.

Berbicara tentang sistem operasi sebenarnya topik yang lumayan kompleks, beberapa ada yang bermaksud ke "distribusi" seperti Ubuntu, Mac OS X, Windows 10 dan ada yang mengarah ke kernel seperti "Windows NT", "Linux kernel", dan "BSD kernel", ataupun "Darwin kernel".

Sebelum kita masuk ke topik utama, mari kita bahas lebih lanjut pertanyaan dasar yakni "apa itu komputer?"

what is computer, literally?

Pada dasarnya komputer adalah suatu alat yang digunakan untuk mempermudah pekerjaan manusia, setidaknya definisi itu yang gue dapet dari pelajaran TIK ketika SMA dulu.

Oke oke, komputer adalah kumpulan komponen yang membentuk sebuah sistem, sebagaimana tubuh kita. Komputer biasanya memiliki keyboard untuk menerima interaksi melalui ketikan dari pengguna nya, memiliki layar untuk menampilkan gambar yang ada di komputer, memiliki "kartu jaringan" untuk dapat mengakses sesuatu bernama internet, dsb.

Komputer pasti memiliki sebuah program atau yang biasa disebut dengan perangkat lunak. Program tersebut bermacam-macam, ada kalkulator untuk menghitung 1+1=2, ada LibreOffice untuk membuat dokumen, ada Firefox untuk berselancar di sesuatu bernama internet, dsb.

Yang singkatnya, komputer adalah sesuatu yang terdiri dari perangkat lunak & keras yang mana saling berhubungan. Ketika kamu mengetik send nudes di keyboard, dan ketika kamu sedang membuka LibreOffice, dilayarmu akan muncul tulisan yang kamu ketik tersebut.

Magic? Tentu saja.

Belum lagi ketika kamu mengucap "Hello Siri" lalu ada seorang wanita menjawab dan ketika kamu mengucapkan "send me some random music" dilanjutkan dengan Siri membuka Apple Music dan memainkan lagu Peradaban.

Magic? Sekali lagi, tentu saja.

Jika melihat dari 4 paragraf diatas, pada dasarnya komputer adalah tentang I/O alias Input dan Output. Ketika kamu mengetik atau berbicara (input) maka sesuatu bernama program akan memproses interaksi tersebut dan mengembalikan input tersebut menjadi keluaran (output) seperti menampilkan tulisan ataupun memainkan lagu.

Pertanyaan selanjutnya, bagaimana komputer dapat memproses ketikan kita di keyboard? Bagaimana komputer dapat mengeluarkan suara wanita dan lagu peradaban tadi?

Untuk menjawab pertanyaan tersebut, kita akan berkenalan dengan Kernel!

what is this kernel thing?

Kernel pada dasarnya adalah "penghubung" antara perangkat lunak dan perangkat keras. Ketika kamu ingin menjelajahi internet dengan menyambung ke "jaringan Wi-Fi" bernama "Starbucks@Wifi.id", kamu menekan sesuatu berlogo Wi-Fi, memilih "Starbucks@Wifi.id", lalu setelah beberapa detik kamu bisa membuka situs ini yang berada di jaringan internet!

Magic? Tentu saja.

Program untuk tersambung ke jaringan Wi-Fi di Mac mungkin bernama AirPort, yang berguna untuk berkomunikasi dengan Network Interface Card/Controller (NIC) yang ada di komputer kamu (mungkin dari Broadcom) ke target Router yang memiliki SSID "Starbucks@Wifi.id".

Selain perangkat keras bernama NIC tadi, ada perangkat-perangkat lain seperti USB Controller, Multimedia Controller (Camera), dsb. Setiap perangkat keras yang ada di "komputer" kamu akan berjalan bila "kernel" yang kamu miliki mendukungnya.

Sebutan lain dari Kernel adalah Driver, sebutan tersebut lebih familiar di lingkungan Windows. Ketika kamu membeli komputer baru dan di Windows 10 kamu tidak muncul indikator wifi, pasti yang ada dibenak kamu adalah pindah ke Linux mengunduh sesuatu bernama driver dengan menggunakan kata kunci "wifi driver windows 10 <insert_your_computer_model_here>"

Anyway, jika kamu menggunakan Windows ataupun Mac OS, seharusnya kamu tidak perlu memusingkan hal-hal tersebut karena biasanya itu sudah diurus di level vendor (tau lah ya salah satu alasan kenapa lo mahal-mahal beli lisensi Windows ataupun beli komputer mahal-mahal berlogo apel?).

Daaan, jika kamu memilih menggunakan GNU/Linux, kamu akan berurusan dengan hal-hal seputar kernel, khususnya bila perangkat keras yang kamu miliki aneh-aneh seperti Facetime HD Camera nya Macbook yang dimiliki Apple. Untuk hal-hal terkait "firmware", akan dibahas sedikit nanti dibawah.

Oke, setelah kita mengetahui sedikit tentang kernel, mari kita mulai masuk ke topik utama!

say hello to Arch!

Arch Linux sudah berada di radar gue sejak lama tapi belum ada waktu untuk mengopreknya, at least sampai minggu kemarin.

Sistem operasi favorit gue ada di keluarga Debian, untuk kebutuhan server biasanya gue milih Ubuntu dan untuk desktop biasanya gue memilih Elementary.

Yang gue senang dari keluarga Debian (atau spesifiknya Ubuntu) adalah hampir segalanya sudah disiapkan oleh distributor, seperti, gue tidak perlu memusingkan ingin menggunakan XFCE atau GNOME untuk "desktop environment" karena sudah terbundel.

Komputer utama gue adalah Macbook Air 2015 karena gue hanya memiliki itu untuk sekarang dengan sistem operasi Mac OS Big Sur (Mac OS 11). Gue memiliki beberapa masalah pribadi dengan Big Sur dan berniat untuk kembali ke GNU/Linux yang berarti ke Elementary OS.

Elementary OS memiliki tampilan yang hampir sama (dari segi pengalaman dan tampilan) dengan Mac OS, jadi gue tidak terlalu kaget dengan penggunaannya (kecuali keyboard mapping).

Daaan karena gue ada masalah di baterai (cycle count > 1k), penggunaan komputer gue di mode baterai hanya ~2jam untuk kebutuhan yang gue miliki.

Lalu gue kepikiran untuk "rakit Linux® sendiri" daripada menggunakan sesuatu yang sudah ditawarkan oleh distributor, yang dalam konteks disini salah satunya adalah di Desktop Environment.

Dan gue memilih Arch, terlebih teman gue juga menggunakan itu.

Arch merupakan sistem operasi yang "bare minimum" untuk GNU/Linux yang nilai plus nya adalah di package manager, pacman. Jadi daripada gue melakukan kompilasi manual "linux kernel" di Arch gue bisa menggunakan pacman -S linux linux-firmware melalui pacstrap(8).

Baiklah, mari kita mulai petulangan ini.

Jika kamu berasumsi ini adalah tentang memasang Arch Linux, berarti gue juga berasumsi lo udah memiliki Arch Linux versi Live USB nya ya, biar fair. Jika tidak, silahkan unduh Arch Linux ISO nya dan pasang ke flashdrive lo (favorit gue menggunakan Etcher walau electron).

Partisi

Untuk sistem operasi yang menggunakan GNU/Linux umumnya membutuhkan 4 partisi:

  • /boot untuk hal-hal terkait... boot?
  • /boot/efi untuk hal-hal terkait bootloader
  • /swap untuk hal-hal terkait RAM
  • / nah ini adalah "root" directory, tempat "sistem operasi" kamu berada

Dengan asumsi kita menggunakan UEFI daripada BIOS karena... sekarang 2021? Anyway.

4 partisi tersebut memiliki format berbeda-beda, ada ada vfat32 untuk /boot, ext2 untuk /boot/efi, dan ext4 untuk / dan swap untuk /swap.

Jika disk (HDD/SSD) di komputer kamu hanya 1, biasanya memiliki "label" dengan nama /dev/sda, yang berarti jika menggunakan pendekatan diatas, jadinya partisi kamu memiliki label seperti ini:

  • /dev/sda1 -> /boot
  • /dev/sda2 -> /boot/efi
  • /dev/sda3 -> /swap
  • /dev/sda4 -> /

Untuk ukurannya, biasanya gue gak aneh-aneh. Swap biasanya setengah dari RAM gue (4G), Boot 100M dan untuk menyimpan boot loader 500M (saya suka mubazir), dan sisanya saya serahkan ke root filesystem.

Jika kamu berencana menggunakan dual boot, silahkan atur strategi sendiri dalam merancang partisi. Sepengetahuan gue untuk menggunakan GNU/Linux hanya butuh 4 partisi tersebut, jadi, jika ingin memasang Arch di komputer kamu, silahkan buat 4 partisi diatas.

Booting Arch

Silahkan booting komputer kamu ke Arch melalui Live ISO (via flashdrive), lalu nanti akan muncul tampilan yang kurang lebih seperti ini:

Selamat kamu sudah menggunakan Arch Linux!

Hal pertama yang harus kamu lakukan adalah memastikan bahwa kamu dapat mengakses jaringan internet, namun sebelum itu pastikan bahwa NIC komputermu terbaca oleh Arch.

Untuk memastikannya, kamu bisa menjalankan perintah ip link dan lihat ada interface apa saja yang ada disitu. Untuk Ethernet, biasanya memiliki prefix eth<n> dan untuk Wi-Fi biasanya biasanya wlp<n>s<n>. Network interface yang umum didukung adalah Ethernet, dan bila kabel Ethernet dari router sudah terhubung dengan komputer kamu, harusnya sudah bisa langsung digunakan. Silahkan jalankan ping archlinux.org untuk memastikan.

Install Arch

Proses pertama untuk memasang Arch di komputer kamu adalah dengan "mounting" drive kamu ke Arch di Live ISO.

# aktifkan swap
mkswap /dev/sda3
swapon /dev/sda3

# ini untuk root directory (/)
mount /dev/sda4 /mnt
mkdir /mnt/boot

# ini untuk menyimpan bootloader (GRUB)
mount /dev/sda2 /mnt/boot
mkdir /mnt/boot/efi

# ini untukmenyimpan  hal-hal terkait boot
mount /dev/sda1 /mnt/boot/efi

Sip, setelah itu kita akan memasang "bare minimum" linux ke drive yang ada di komputer kita menggunakan pacstrap(8). pacstrap adalah program untuk memasang packages ke root directory baru, khusus untuk pemasangan baru.

Packages bare minimum yang kita butuhkan ada 7:

  • base: berisi program-program dasar seperti bash, glibc, systemd, dsb
  • base-devel: berisi program-program dasar juga namun untuk keperluan "development" seperti C compiler (gcc), sudo, dan pacman
  • linux: The Linux® kernel.
  • linux-firmware: Ini program-program yang "dipanggil" oleh kernel yang berjalan di perangkat keras, seperti di Webcam misalnya
  • grub-efi-x86_64: ini untuk memasang bootloader (GRUB), oh iya, Arch ini memang dioptimasi untuk arsitektur x86_64 ya
  • efibootmgr: ini nantinya untuk berinteraksi dengan boot manager
  • vi: penyunting teks minimal

Karena komputer adalah hal yang kompleks, disini gue asumsikan lo menggunakan prosesor Intel dengan arsitektur x86_64 ya.

Oke sekarang mari kita pasang program-program yang dibutuhkan untuk menajalankan sistem operasi GNU/Linux, jalankan perintah berikut dan tunggu beberapa menit (tergantung koneksi internet, terlebih bila menggunakan... begitulah)

pacstrap /mnt base base-devel linux linux-firmware grub-efi-x86_64 vi efibootmgr

Jika sudah, packages tersebut akan dipasang di /mnt alias / atau root filesystem yang sudah kita "mount" sebelumnya yang berlabel /dev/sda4.

Hal kedua yang harus kita lakukan adalah membuat "file system table" dengan genfstab(8).

Program tersebut digunakan untuk membuat "hierarki filesystem" khususnya ketika proses instalasi OS khususnya karena kita "mounting" drive secara manual, kan?

Baiklah semoga dapat dimengerti, jalankan perintah berikut:

genfstab -pU /mnt >> /mnt/etc/fstab

Lalu kita akses Arch Linux kita dengan perintah arch-chroot(8).

arch-chroot /mnt /bin/bash

Jika sudah, selamat datang di Arch Linux!

Sekarang kita sudah tidak berada di "sistem operasi" yang berada di flashdrive kita lagi. Tapi sebelum melakukan reboot, ada beberapa upacara yang harus dilakukan agar ketika kita menjalankan komputer kita, maka yang dijalankan adalah sistem operasi Arch Linux yang ada sekarang ini.

Namun sebelum kesitu, mari kita lakukan upacara terkait hal-hal yang harus dilakukan pertama kali ketika memasang sistem operasi baru!

konfigurasi hostname

Ini sederhananya adalah "nama" dari komputer kamu. Harusnya digunakan untuk loopback, jadi, ketika ada koneksi yang menuju hostname_name seharusnya berarti koneksi tersebut menuju ke komputer/lokal kamu sehingga kernel tidak perlu ribet-ribet nanya router terkait pemilik dari hostname_name tersebut.

echo hostname_name > /etc/hostname

Silahkan ganti hostname_name menjadi nama yang kamu inginkan, namun dengan format yang rasional, favorit gue adalah format "slug" yang mana menggunakan lower case, tanpa karakter spesial, dan menggunakan dash (-) daripada spasi/underscore.

locale

Lalu, kita harus mengatur "locale language" yang akan kita gunakan nanti. Sebagai nilai awal, mari gunakan en_US dengan encoding UTF-8 karena menurut gue itu yang paling umum.

echo LANG=en_US.UTF-8 >> /etc/locale.conf
echo LANGUAGE=en_US >> /etc/locale.conf
echo LC_ALL=C >> /etc/locale.conf

Setelah itu kita buka berkas /etc/locale.gen, cari bagian en_US.UTF-8, dan uncomment.

vi /etc/locale.gen

Baru deh kita buat komputer kita generate hal-hal terkait "bahasa" dengan perintah locale-gen.

root & main account

Sekarang kita hampir selesai! Kita harus atur kata sandi untuk akun root kita dengan perintah passwd.

Setelah itu, mari buat akun biasa untuk aktivitas sehari-hari.

Kita buat akun tersebut dengan perintah:

useradd -m -g users -G wheel,storage,power -s /bin/bash <change_me>

Lalu atur kata sandi dengan perintah passwd <change_me>, setelah itu agar akun tersebut dapat menjalankan perintah sebagai "orang lain" yang biasanya sebagai root, jalankan perintah visudo, cari baris ini:

%wheel ALL=(ALL) ALL

Dan uncomment baris tersebut. Ketika membuat pengguna sebelumnya kita memasukkan dia ke grup wheel, kan? Nah baris %wheel ALL=(ALL) ALL pada dasarnya berarti: semua anggota dari grup wheel dapat menjalankan "semua" perintah sebagai "semua" akun.

upacara instalasi terakhir

Disini kita akan membuat "initial ramdisk" dan memasang bootloader sehingga ketika reboot nanti, bootloader kita mengetahui sistem operasi apa saja yang ada dan apa yang harus dia lakukan.

Pertama kita buat si initial ramdisk ini dulu dengan perintah mkinitcpio -p linux, jangan tanya gue kenapa namanya mkinitcpio.

Kedua, kita pasang grub . Jalankan 2 perintah dibawah:

grub-install
grub-mkconfig -o /boot/grub/grub.cfg

# unmount paritions and restart (remove usb)
exit
umount -R /mnt
reboot

Setelah itu keluar dari arch-root menggunakan perintah exit, unmount semua drive yang kita mount manual dengan perintah umount -R /mnt dan reboot komputer dengan perintah reboot. Silahkan cabut flashdrive karena sudah tidak dibutuhkan lagi.

Ketika booting, seharusnya di layar kamu ada tampilan GRUB berikut dengan daftar sistem operasi yang ada di drive komputer kamu. Pilih Arch Linux, lalu akan muncul tampilan yang kurang lebih seperti gambar yang terkait Arch Linux di mode Live ISO, bedanya, sekarang sudah tidak berada di flashdrive kamu!

Selamat menggunakan Arch Linux!

bagaimana cara klik klik???

Pada dasarnya kamu sudah berhasil memasang sistem operasi dan sudah bisa menggunakan komputer kamu untuk melakukan hal-hal yang bisa dikerjakan. Jika pekerjaan kamu hanyalah untuk memastikan server kantor tetap nyala, silahkan ping ke alamat ip server kantor, that's it.

Tapi sayangnya pekerjaan saya tidak seperti itu, saya dibayar untuk menulis kode JavaScript demi membuat tampilan yang dapat digunakan oleh pengguna untuk melakukan pekerjaannya.

Saya butuh teks editor. Saya butuh peramban. Dan saya butuh god damn spotify untuk mendengarkan reza artamevia menyanyikan izinkan akuuu.

Apa yang harus saya lakukan?

Sebelum kita menuju ke hal itu, mari kita bahas tentang sesuatu yang biasa disebut dengan Desktop Environment terlebih dahulu, oke?

desktop environment

Saya yakin masih sedikit yang "sadar" akan desktop environment ini karena memang dari awal dibuat seakan tidak terlalu penting.

By default, di Windows 7 mungkin DE tersebut adalah Aero, di Mac OS adalah Aqua, Ubuntu adalah GNOME, Elementary adalah Pantheon (GNOME juga), dan Manjaro yang menggunakan KDE Plasma dari (KDE).

Di Arch, kita dibebaskan untuk memilih Desktop Environment apa, atau bahkan tidak menggunakan DE sekalipun.

Berbicara tentang desktop environment, sesuatu yang perlu kita ketahui adalah tentang "display server" yang mana komponen utama dari hal-hal terkait Graphical User Interface (GUI) ini.

Sumber

Display server (dan atau Window Manager) yang populer ada X Server (kebanyakan GNU/Linux), Quartz Compositor (Mac OS), Weston, Sway, dan SurfaceFlinger (Android).

Display server yang ada tersebut menggunakan "communication protocol" yang berbeda-beda, seperti untuk X Server menggunakan X11, Quartz Compositior menggunakan Quartz, dan Weston & Sway menggunakan Wayland.

Sebagai contoh, berikut alur komunikasi yang ada bila menggunakan protokol X11:

Sumber

Dan berikut bila menggunakan Wayland:

Sumber

Yang sejujurnya gue tidak terlalu menguasai tentang hal seputar display server ini. Tapi gue sedang penasaran dengan Wayland, dan compositor di Wayland yang paling terkenal sejauh yang gue tahu adalah Sway.

Gue sudah mempelajari sedikit hal-hal terkait Sway ini khususnya di bagian pro-kontra bila dibandingkan dengan X. Dan berdasarkan kebutuhan gue, sepertinya tidak ada masalah bila menggunakan Wayland (via Sway), so here we go.

Tampilan "desktop" gue menggunakan Sway seperti ini:

sway+swaybar+alacritty

Jika melihat ke CPU usage (4 core, fwiw), tidak pernah menyentuh <40% sekalipun sedang membuka Neovim (via alacritty) + Firefox + Chrome + Spotify (DPWA). Yang berarti, less cpu usage = less battery usage.

Untuk mulai menggunakan sway, kita bisa memasang packages yang dibutuhkan dengan perintah berikut:

pacman -S sway swaybar swayidle swaylock alacritty

Yang mana swaybar adalah "bar" yang ada di paling bawah di screenshot diatas, swayidle untuk mengatur idle (misalnya "lock screen" ketika tidak ada aktivitas selama 3 menit) dan swaylock untuk melakukan lock screen itu.

Oh iya, alacritty untuk terminal emulator karena kita belum memasang terminal emulator sama sekali, kan? Dan ketika kita menjalankan arch pertama kali, itu adalah "virtual console" yang ada di kernel.

Setelah terpasang, ketik sway di virtual console maka dilayar kamu akan tampil seperti ini kurang lebih:

Diambil dari swayvm.org

Selamat menikmati "Desktop Environment" barumu!

what's next, riz?

Tenang, kawan. Perjalan masih panjang, sangat panjang.

Di momen ini kamu akan tersadar ada seberapa banyak yang kamu butuhkan untuk dapat membuat komputer berjalan sesuai dengan kehendakmu.

Misal, bagaimana cara:

  • Mengatur kecerahan layar?
  • Mengatur kecerahan "backlight keyboard"?
  • Mengatur suara?
  • Mengatur "media key" seperti play, pause, next, dsb
  • Melakukan tangkapan layar?
  • Menyambung ke Wi-Fi?
  • Menyambung ke Airpods?
  • AKSES BLOG INI VIA FIREFOX????

Dan ratusan pertanyaan lainnya.

Yang berarti, silahkan pikirkan ada berapa banyak "magic" yang ditawarkan oleh sistem operasi yang distributor kamu lakukan untuk dapat membuat komputermu dapat berjalan out-of-the-box sesuai keinginan distributor.

Ehm, maksud gue sesuai kebutuhan pengguna.

Gue kasih bocoran, pertama kita pasang Firefox terlebih dahulu. Buka terminal dengan menekan tombol Command+Enter/Return jika menggunakan Macbook atau (sepertinya) Windows+Enter/Return bila bukan Macbook.

Harusnya muncul Alacritty, lalu ketik perintah sudo pacman -S firefox, masukkan kata sandimu, lalu tunggu proses selesai.

Buka Firefox dengan mengetik firefox di terminal.

Bisa? Tentu tidak.

Beruntung jika langsung bisa.

Untuk saat ini kita harus memberitahu Firefox bahwa kita menggunakan Wayland. Bisa dengan cara mengatur environment variable bernama MOZ_ENABLE_WAYLAND dengan nilai 1.

MOZ_ENABLE_WAYLAND=1 firefox

Bisa? Harusnya.

Sekarang ketik Google (DuckDuckGo will be nice!), gunakan kotak pencarian yang ada disitu untuk menjawab pertanyaan-pertanyaanmu. Sebagai bocoran, silahkan cari "things to do after install arch linux" atau bisa akses halaman General Recommendations dari Arch Wiki untuk mendapatkan gambaran.

Lalu silahkan mulai merakit "GNU/Linux" impian kamu sendiri dengan bantuan Arch yang pada dasarnya adalah "bare minimum GNU/Linux" namun dengan tambahan Package Manager.

Penutup

Don't worry, you're not alone.

Jika butuh bantuan, silahkan gabung ke Discord server kita dan say hello di #umum dan khususnya #archlinux, kita akan diskusi tentang bagaimana membangun sistem operasi impianmu menggunakan Arch Linux!

Tentu saja Arch Linux bukan untuk semua orang, gambarannya mungkin sama seperti "build vs buy" atau yang lebih realistis seperti membeli rumah yang sudah jadi daripada membangun rumah dari awal. Segala sesuatu pasti memiliki pro-kontra, memiliki drawbacks, memiliki plus-minus (sengaja biar panjang aja).

Jika kamu tidak/belum memiliki waktu & motivasi untuk membangun rumah impianmu, cukup beli rumah yang sudah siap huni & pakai saja. Rekomendasi gue adalah Elementary, cocok untuk yang sudah terbiasa dengan tampilan Mac OS ataupun yang ingin menggunakan Mac OS.

Poin dari tulisan ini adalah tentang membangun rumah impianmu. Dan kabar baiknya, kamu adalah arsiteknya. a fucking architect. Dimana lagi yang bisa menjadi arsitek sekaligus pengembang sekaligus penghuni jika bukan di industri IT?

Tulisan ini menjadi langkah awal untukmu yang sudah memiliki gambaran akan rumah impian, dan kita cuma kasih rekomendasi fondasi utamanya adalah Arch linux.

Menggunakan Arch Linux tidak membuat salarymu naik, but it's kinda fun; fascinating, and feels safer, just like your dream house.

And that's your fucking dream.