1 poin oleh GN⁺ 11 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • FreeBSD 15 telah meningkat berkat pkgbase, perbaikan driver LinuxKPI, dan proyek dukungan laptop, hingga layak digunakan sebagai lingkungan desktop utama, melampaui citranya sebagai OS server
  • Setelah percobaan dengan FreeBSD 14, dukungan KDE Plasma 6, Wayland, dan Intel WiFi telah ditambahkan sehingga pada ThinkPad X1 Carbon hampir semua fungsi berjalan baik kecuali Bluetooth
  • Instalasi dilakukan dengan asumsi menggunakan image memstick FreeBSD 15.1, boot UEFI, ZFS (GPT), dan memilih jenis instalasi base system Packages
  • Penyiapan lingkungan desktop memerlukan langkah bertahap mulai dari driver, penghematan daya, izin devfs, kompatibilitas Linux, D-Bus, Ly, KDE, PipeWire, hingga akselerasi video perangkat keras
  • Pada beberapa lingkungan laptop masih ada masalah yang sudah diketahui seperti masalah WiFi setelah bangun dari mode tidur, Intel graphics yang macet, dan proses yang tertinggal setelah logout KDE, masing-masing memerlukan solusi sementara

Gambaran umum

  • FreeBSD 15 menunjukkan peningkatan besar untuk lingkungan desktop laptop berkat pkgbase, perbaikan driver LinuxKPI, dan peluncuran Laptop Support and Usability Project
  • Dibanding saat mencoba desktop dengan FreeBSD 14, kini ada porting KDE Plasma 6, Wayland yang berfungsi, dan dukungan penuh untuk Intel WiFi
  • Pada ThinkPad X1 Carbon, daya tahan baterai sekitar 6~7 jam, dan selain Bluetooth yang belum dicoba, fungsi perangkat berjalan dengan baik
  • Melalui Laptop Compatibility Matrix yang baru, pengguna dapat memeriksa apa saja yang berfungsi pada perangkat keras yang mereka miliki
  • Panduan ini mengasumsikan penggunaan grafis Intel dan chipset nirkabel Intel, sementara konfigurasi perangkat keras lain berada di luar pengalaman langsung penulis

Instalasi

  • Unduh image memstick FreeBSD 15.1 lalu tulis ke USB stick dengan dd
    • Contoh penggunaan: unduh image dengan curl -OJ, lalu jalankan sudo dd if=FreeBSD-15.1-RELEASE-amd64-memstick.img of=/dev/sdX bs=1M conv=sync
  • Wizard instalasinya sederhana; atur sistem agar boot dengan UEFI dan pilih tata letak disk ZFS (GPT)
  • Pada tahap yang menanyakan jenis instalasi base system, pilih Packages untuk menggunakan pkgbase yang baru
  • Jika SSH diaktifkan selama instalasi, Anda bisa melakukan salin-tempel melalui sesi SSH alih-alih mengetik langsung di konsol virtual
  • Setelah reboot, login ke akun root dengan kata sandi yang ditetapkan saat instalasi

Menggunakan paket terbaru

  • Pohon ports FreeBSD memiliki dua branch: quarterly dan latest
  • quarterly membekukan snapshot pohon ports empat kali setahun, dan di antaranya paket pihak ketiga hanya menerima patch keamanan penting
  • latest menggunakan model rolling release, sehingga pembaruan paket utama diterima segera setelah tersedia
  • Pengaturan default adalah repositori quarterly; untuk beralih ke latest, buat file override di /usr/local/etc/pkg/repos
  • Atur URL repositori menjadi pkg+https://pkg.FreeBSD.org/${ABI}/latest dan kmods_latest_${VERSION_MINOR}, lalu jalankan pkg update dan pkg upgrade

Perangkat keras, driver, dan penyetelan

  • Penyesuaian bootloader

    • Di /boot/loader.conf, Anda dapat mengatur waktu tunggu bootloader, menonaktifkan destructive dtrace, serta memperbesar batas shared memory dan proses
    • Pada sistem yang mendukung Intel Speed Shift, machdep.hwpstate_pkg_ctrl="0" dapat digunakan agar setiap inti mengatur status dayanya sendiri
    • Penghematan daya PCI, soreceive() yang lebih cepat, penambahan panjang antrean jaringan, dan peningkatan timeout transaksi ZFS dapat diatur agar sesuai untuk penggunaan desktop dan laptop
  • Modul kernel

    • Tambahkan cpuctl dan coretemp ke kld_list untuk mengaktifkan pemeriksaan informasi CPU dan suhu
    • Algoritme kontrol kemacetan H-TCP ditujukan untuk kinerja yang lebih baik pada jaringan yang cepat dan berjarak jauh seperti internet, dan dapat digunakan melalui modul cc_htcp
    • Pada ThinkPad, modul acpi_ibm diperlukan agar tombol-tombolnya berfungsi
  • Penyesuaian sysctl

    • Di /etc/sysctl.conf, Anda dapat menerapkan pengaturan keamanan seperti pembatasan perubahan keymap, menonaktifkan core dump, pengaturan terkait ASLR, memblokir ICMP redirect, dan menonaktifkan IP redirect
    • Beberapa panduan keamanan merekomendasikan W^X, pemeriksaan hardlink, dan pembatasan melihat proses milik pengguna lain, tetapi pengaturan tersebut dikomentari karena dinilai lebih banyak menimbulkan masalah
    • Pengaturan performa jaringan memperbesar buffer dan antrean TCP agar cocok untuk koneksi dengan RTT lebih besar, dengan asumsi bahwa nilai bawaan dioptimalkan untuk latensi LAN
    • Optimalisasi desktop mencakup pencegahan swap untuk shared memory, peningkatan ambang preemption scheduler, dan mengizinkan mount oleh pengguna biasa
    • Untuk penghematan daya laptop, hw.snd.latency=7 digunakan untuk menurunkan responsivitas audio
  • WiFi

    • Dukungan WiFi jauh lebih baik daripada sebelumnya berkat LinuxKPI dan driver iwlwifi yang baru
    • Dukungan kartu nirkabel dapat diperiksa pada daftar chipset yang didukung iwlwifi, dan firmware yang diperlukan dipasang dengan fwget -v
    • Untuk memakai iwlwifi baru pada kartu lama, Anda mungkin perlu mencegah driver iwm lama dimuat dengan devmatch_blocklist="if_iwm"
    • 802.11n dan 802.11ac dinonaktifkan secara default, sehingga perlu pengaturan compat.linuxkpi.iwlwifi_11n_disable="0" dan compat.linuxkpi.iwlwifi_disable_11ac="0"
    • Jika perangkat wlan0 dibuat di rc.conf dan WPA DHCP powersave diatur, maka wpa_supplicant(8) akan mengelola jaringan WiFi
    • Pengelolaan jaringan dapat dilakukan dengan mengedit langsung wpa_supplicant.conf(5) atau memakai antarmuka grafis networkmgr
    • networkmgr memerlukan hak superuser, dan aturan sudoers dapat ditambahkan agar grup operator dapat menjalankannya tanpa kata sandi
    • Driver iwlwifi di FreeBSD 15.1-RELEASE memiliki masalah suspend/resume yang sudah diketahui
  • CPU dan grafis

    • Microcode CPU terbaru diatur agar dimuat saat boot dari loader.conf setelah memasang paket cpu-microcode
    • Penghematan daya CPU memakai performance_cx_lowest=Cmax dan economy_cx_lowest=Cmax untuk mengaktifkan C-state yang lebih rendah sehingga baterai lebih awet dan panas berkurang
    • Pada prosesor Intel modern, menjalankan powerd(8) tidak lagi diperlukan
    • Driver grafis Intel diatur agar memuat i915kms saat boot setelah memasang drm-kmod
  • Izin perangkat dan kompatibilitas

    • Pada sistem desktop, tambahkan aturan devfs agar pengguna biasa dapat mengendalikan GPU, video, backlight, dan perangkat USB
    • Di /etc/devfs.rules, tentukan izin dan grup untuk drm/*, video*, backlight/*, dan usb/*, lalu setel devfs_system_ruleset=localrules
    • Menjalankan biner Linux menggunakan Linuxulator dengan mengaktifkan linux_enable=YES, dan bila perlu me-mount devfs, tmpfs, fdescfs, linprocfs, dan linsysfs di bawah /compat/linux
    • Muat modul kernel fusefs untuk me-mount filesystem seperti exFAT atau NTFS
    • Dukungan webcam dapat diharapkan dengan memasang webcamd, v4l-utils, v4l_compat, dan mengatur webcamd_enable=YES
    • Printer memerlukan CUPS dan cups-filters, dan cups-files.conf dimodifikasi agar grup operator dapat mengonfigurasi printer
    • GUI konfigurasi CUPS dapat diakses di browser melalui localhost:631
  • Daya laptop dan backlight ThinkPad

    • Pada laptop, usbconfig dan power_save dijalankan dari /etc/rc.local untuk menempatkan perangkat USB yang tidak aktif ke mode hemat daya
    • Agar tombol backlight ThinkPad berfungsi, diperlukan pemuatan modul acpi_ibm, pengaturan dev.acpi_ibm.0.handlerevents="0x10 0x11", dan aturan devd
    • Skrip /usr/local/libexec/thinkpad-brightness menaikkan atau menurunkan kecerahan dalam langkah 2, 5, atau 10 tergantung kecerahan saat ini
    • Berikan izin eksekusi pada skrip dan mulai ulang devd untuk menerapkan perubahan
    • Setelah konfigurasi perangkat keras dan driver selesai, lakukan reboot untuk memastikan perubahan tersebut tidak merusak sistem

Firewall

  • Konfigurasinya ditujukan agar firewall berjalan di semua sistem, dan contoh dasarnya memblokir semua koneksi masuk kecuali SSH
  • Di /etc/pf.conf, ganti antarmuka egress dengan nama antarmuka jaringan yang sebenarnya dan izinkan hanya port SSH untuk koneksi TCP masuk
  • Izinkan rentang UDP 1024:65535 untuk panggilan suara dan video
  • Setel pf_enable=YES dan jalankan firewall dengan service pf start

Menonaktifkan skrip periodic

  • FreeBSD secara bawaan menyertakan banyak skrip periodic(8) yang memindai hard disk, terhubung ke internet, dan mengirim email
  • Daftar lengkapnya dapat dilihat di periodic.conf(5)
  • Bagi pengguna desktop biasa, hanya sebagian tugas yang berguna, dan sebagian besar dapat dinonaktifkan dengan aman
  • Contoh konfigurasinya mengubah banyak tugas keluaran cadangan, laporan status, antrean email, dan pemeriksaan keamanan terkait daily, weekly, monthly, serta security menjadi NO

Akun pengguna

  • Buat akun pengguna lokal dan tambahkan ke grup operator, video, dan wheel
  • operator diperlukan untuk konfigurasi perangkat dan printer, dan video diperlukan untuk akses ke perangkat GPU
  • Grup wheel digunakan untuk menjalankan perintah dengan hak root melalui sudo
  • Setelah memasang sudo, setel %wheel ALL=(ALL:ALL) ALL di file sudoers

Locale, waktu, SSH, sertifikat

  • Locale

    • Variabel lingkungan shell login diatur di login.conf(5), dengan menambahkan charset=UTF-8 dan lang=en_US.UTF-8
    • Untuk menerapkan perubahan, bangun ulang basis data login dengan cap_mkdb /etc/login.conf
    • Untuk shell non-login, atur LANG dan CHARSET di /etc/profile.d/locale.sh
  • NTP dan zona waktu

    • Untuk menjaga jam sistem tetap mutakhir, diperlukan ntpd(8)
    • ntp.conf berisi server NTP pool FreeBSD dan pengaturan pembatasan akses
    • Jika zona waktu tidak diatur saat instalasi, buat symbolic link dari /usr/share/zoneinfo/America/New_York ke /etc/localtime
  • openssh-portable

    • ssh di base system FreeBSD memiliki banyak patch yang diterapkan, dan versi murni openssh-portable dari ports lebih disukai
    • File konfigurasi sshd pada versi baru berada di bawah /usr/local/etc/ssh
    • Nonaktifkan sshd bawaan di /etc/rc.conf dan jalankan layanan baru dengan openssh_enable=YES
    • Perintah ssh akan tetap menggunakan /usr/bin/ssh dari base system kecuali $PATH diubah
    • Agar versi ports diprioritaskan untuk semua pengguna, ubah urutan path di login.conf supaya /usr/local berada lebih depan lalu bangun ulang basis datanya
  • Terminal, sertifikat, D-Bus

    • Basis data termcap(5) FreeBSD lebih sederhana dibanding yang umum di Linux, dan warna terang mungkin tidak dirender di terminal keluarga XTerm
    • Masalah ini bisa diperbaiki dengan memasang terminfo-db
    • FreeBSD secara default hanya memercayai sebagian otoritas sertifikat standar, jadi pasang bundel CA lengkap Mozilla yaitu ca_root_nss
    • KDE dan banyak fungsi desktop modern memerlukan D-Bus, yang dapat diaktifkan dengan dbus_enable=YES dan service dbus start

Display manager Ly

  • Biasanya sesi desktop dimulai dengan display manager grafis seperti SDDM, tetapi pada saat penulisan di FreeBSD ini belum bisa memulai sesi Wayland secara stabil
  • SDDM hampir berfungsi, tetapi ada bug di mana beberapa kombinasi tombol mengakhiri sesi
  • Pendekatan saat ini adalah memulai sesi Wayland dengan Ly display manager berbasis konsol
  • Ly tidak berjalan sebagai daemon; di /etc/ttys, konsol virtual dikonfigurasi untuk menjalankan /usr/local/bin/ly_wrapper
  • Tambahkan entri Ly ke /etc/gettytab, lalu reboot atau segarkan init dengan kill -HUP 1 agar prompt login Ly muncul
  • Di config.ini, penggunaan sesi Wayland bisa dipaksakan dengan xinitrc=null, xsessions=null, shell=false, waylandsessions=/usr/local/share/wayland-sessions

Font, KDE, aplikasi desktop

  • Agar situs web dirender dengan benar, pasang font standar seperti Cantarell, Droid, Inconsolata, Noto, Noto Emoji, Roboto, Ubuntu, dan webfonts
  • Untuk KDE dan komponen desktop, pasang kde, kdegraphics, kdemultimedia, kdeutils, phonon-mpv, pipewire, pulseaudio, wireplumber, dan lainnya
  • Contoh aplikasi desktop meliputi Chromium, Firefox, LibreOffice, Thunderbird, Signal Desktop, Wine, Emacs Wayland, Git, mpv, tmux, dan sebagainya
  • Beberapa fungsi desktop bergantung pada PipeWire, dan pratinjau taskbar tampaknya tidak berfungsi jika PipeWire tidak berjalan
  • PipeWire dapat dijalankan otomatis dengan file autostart /usr/local/etc/xdg/autostart/pipewire.desktop
  • Untuk menyimpan passphrase kunci SSH di kwallet, ekspor SSH_ASKPASS_REQUIRE=prefer dan SSH_ASKPASS=/usr/local/bin/ksshaskpass di lingkungan KDE

Akselerasi video perangkat keras

  • Dengan memasang paket yang sesuai, akselerasi video perangkat keras dapat digunakan pada sebagian besar GPU Intel
  • Akselerasi video perangkat keras memberikan pemutaran video yang lebih mulus dan daya tahan baterai yang lebih baik
  • Paket yang diperlukan adalah libva-intel-media-driver, libva-utils, libvdpau-va-gl, dan vdpauinfo
  • Pengguna harus dapat mengakses GPU melalui perangkat drm, sehingga harus masuk ke grup video
  • Beberapa aplikasi mungkin memerlukan pengaturan tambahan untuk memanfaatkan offload perangkat keras
  • Chromium Browser

    • Di FreeBSD, decoding video perangkat keras Chromium dulu memerlukan banyak flag command line
    • Pada saat penulisan, decoding video perangkat keras Chromium berfungsi tanpa flag tambahan
  • MPV

    • Jika hwdec=vaapi-copy, vo=gpu-next, vd-lavc-dr=yes, dan audio-channels=stereo diatur di mpv.conf, video HD dapat diputar dengan penggunaan CPU rendah

Masalah yang Diketahui dan Solusinya

  • Laptop langsung masuk mode tidur lagi saat tutup dibuka

    • Saat KDE berjalan, desktop environment seharusnya mendeteksi event penutup ACPI dan menangani suspend serta resume
    • Pada ThinkPad, ada bug yang menyebabkan laptop langsung masuk mode tidur lagi begitu tutup dibuka
    • Solusinya adalah menonaktifkan aksi sakelar tutup di pengaturan daya KDE, lalu mengonfigurasi native suspend saat tutup ditutup dengan devd
    • Skrip /usr/local/libexec/kde-suspend mengunci layar pengguna login KDE, menunggu 0,5 detik, lalu masuk ke mode tidur S3 dengan acpiconf -s3
    • Aturan /etc/devd/kde-suspend.conf menjalankan skrip tersebut pada event ACPI Lid 0x00
  • Proses tetap berjalan setelah logout

    • Di FreeBSD, setelah logout dari sesi KDE, beberapa proses bisa terus berjalan tanpa batas
    • Chromium kadang masuk ke kondisi yang menghabiskan satu inti CPU 100%
    • Pada distribusi Linux berbasis systemd, systemd-logind akan menghentikan proses yang terkait dengan sesi pengguna, tetapi asumsi yang sama tidak berlaku di lingkungan KDE FreeBSD
    • Dengan memanfaatkan fitur skrip cleanup saat logout di KDE, proses seperti baloo_file, chrome, dirmngr, pipewire, signal-desktop, dan wireplumber dihentikan
    • Ini diterapkan dengan membuat /usr/local/etc/xdg/plasma-workspace/shutdown/cleanup.sh dapat dieksekusi
  • Peralihan pengguna tidak berfungsi

    • Peralihan pengguna desktop di FreeBSD rusak karena bug ConsoleKit2 yang sudah lama ada
    • Agar pengguna tidak mencoba memakainya, diatur action/start_new_session=false dan action/switch_user=false dalam /usr/local/etc/xdg/kdeglobals
  • WiFi rusak setelah bangun dari mode tidur

    • FreeBSD 15.1-RELEASE memiliki bug iwlwifi yang membuat WiFi rusak setelah bangun dari mode tidur
    • Solusinya adalah menghentikan interface wlan0 sebelum suspend lalu menyalakannya kembali setelah resume
    • Skrip /usr/local/etc/rc.d/iwlwifi_fix mengaitkan service netif stop wlan0 dan service netif start wlan0 ke perintah suspend/resume
    • Skrip tersebut diaktifkan dengan memberi izin eksekusi dan mengatur iwlwifi_fix_enable="YES"
    • Perbaikannya sudah di-commit ke 15-STABLE, sehingga solusi ini mungkin tidak lagi diperlukan saat FreeBSD 15.2 keluar
  • Audio laptop macet

    • Beberapa laptop memiliki bug i915 yang menyebabkan hard lockup
    • Masalah ini disertai error seperti hdac0: Command timeout 2 di dmesg
    • Solusinya adalah mengatur loader tunable compat.linuxkpi.i915_disable_power_well=0
  • Grafis macet dan GPU hang

    • Di FreeBSD 15.1, driver DRM bawaan naik dari 6.6 ke 6.12
    • Versi baru ini tampaknya memiliki bug yang menyebabkan grafis macet dan pesan GPU HANG di dmesg pada beberapa chip Intel
    • Solusi stabilnya adalah tetap menggunakan versi sebelumnya, drm-66-kmod
  • Tidak ada batas waktu idle konsol

    • FreeBSD beberapa tahun lalu beralih dari driver konsol lama syscons(4) ke driver vt(4) yang native UEFI
    • Konsol vt tidak mendukung blanktime, sehingga praktis tidak ada cara untuk mematikan layar bila tidak ada sesi X11 atau Wayland
    • Karena Ly berjalan di konsol TTY, layar akan tetap menyala saat tidak ada yang login
    • Pada laptop pengguna tunggal ini bukan masalah besar, tetapi pada workstation multi-pengguna prompt login bisa menyebabkan burn-in pada panel LCD
  • Ikon aplikasi GTK4 hilang

    • Aplikasi GTK4 yang digunakan adalah klien XMPP Dino IM, dan banyak ikon tidak dirender serta pengaturan font KDE juga tidak diikuti
    • Masalah langsung teratasi setelah portals dinonaktifkan
    • Solusinya adalah mengatur export GDK_DEBUG=no-portals
  • Audio tersendat saat diputar

    • Pulseaudio kadang menimbulkan bunyi crackling dan skipping saat memutar file audio
    • Masalah teratasi dengan menaikkan nilai default di daemon.conf menjadi default-fragments = 8 dan default-fragment-size-msec = 5

1 komentar

 
GN⁺ 11 jam lalu
Komentar Lobste.rs
  • Tulisan ini patut diapresiasi, tetapi tampaknya masih ada terlalu banyak langkah manual untuk hal-hal yang seharusnya ditangani installer

    • Dukungan laptop di FreeBSD secara historis hanya bekerja setengah matang dan lebih cocok untuk pengguna yang sangat antusias
      Belakangan ini banyak upaya dicurahkan untuk mem-port driver Wi-Fi dan grafis dari Linux, sehingga jauh lebih banyak orang bisa memakainya di laptop
      Sekarang kondisinya bisa dibilang mirip Linux era 2000-an; masih banyak pekerjaan tersisa, tetapi pengerjaannya sedang berlangsung di garis depan
    • Lambat, tetapi jelas membaik. Linux juga 10~15 tahun lalu tidak sebagus sekarang, dan FreeBSD pada akhirnya akan sampai ke titik itu
  • “Kalau tidak melakukan sekitar dua belas langkah instalasi sendiri, apa mesin itu benar-benar milik saya?” rasanya /s tapi juga bukan /s
    Komentar ini sedang saya tulis di Thinkpad T14 Gen 1 bekas yang saya beli agar bisa menjalankan OpenBSD tanpa terlalu banyak repot
    Saya belum mencoba FreeBSD, tetapi kemungkinan akan mencobanya, dan NAS rakitan saya sendiri menjalankan FreeBSD 15 dengan pool ZFS
    Pekerjaan kompatibilitas laptop dari FreeBSD Foundation jelas sangat patut dihargai
    Untuk saat ini nuansanya memang seperti Linux era 2000-an, tetapi seperti kata tulisan aslinya, ini adalah “pekerjaan yang perlu dilakukan, dan sedang dikerjakan di garis depan”

  • Sejak akhir 2010-an saya memakai FreeBSD sebagai daily driver di laptop yang dipilih dengan sangat hati-hati
    Waktu itu benar-benar ada banyak hal yang harus diutak-atik dalam konfigurasi desktop FreeBSD, jadi saya membuatnya menjadi skrip, memasukkannya ke repositori Git, lalu terus menyempurnakannya
    Misalnya mengganti StumpWM ke i3 sambil mengantisipasi situasi saat nanti harus berpindah dari Wayland ke Sway
    Sekarang installer desktop sedang dikembangkan, jadi tampaknya bisa menjawab kritik valid dari @technomancy, dan kemungkinan juga akan membuat banyak skrip konfigurasi saya menjadi tidak berguna lagi
    https://wiki.freebsd.org/desktop-installer

  • Senang membaca bagian yang mengatakan, “Berkat LinuxKPI dan driver iwlwifi baru, masa ketika dukungan Wi-Fi buruk sebagian besar sudah berlalu. Jika itu kartu Intel yang umum, kemungkinan besar akan langsung berfungsi”
    Saya juga pernah mencoba FreeBSD 13/14 di desktop, tetapi karena keterbatasan driver, performanya terlalu lambat sehingga sulit dipakai terus
    Senang mendengar keterbatasan ini akan hilang, dan lain kali kalau saya ingin mencoba sesuatu yang baru di desktop, saya berencana memberi FreeBSD kesempatan lagi

  • Yang menarik, driver Wi-Fi RTL8812 di FreeBSD ternyata sudah ada sejak lama, kalau tidak salah lebih dari 10 tahun, sedangkan di Linux baru masuk sekitar kernel 6.13
    Saya kurang tahu kenapa di Linux driver itu begitu lama tetap menjadi modul di luar tree. Mungkin karena masalah lisensi