1 คะแนน โดย GN⁺ 11 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • FreeBSD 15 ได้รับการปรับปรุงจนก้าวข้ามการเป็น OS สำหรับเซิร์ฟเวอร์ และสามารถใช้เป็นสภาพแวดล้อมหลักบนเดสก์ท็อปได้ ด้วย pkgbase, การปรับปรุงไดรเวอร์ LinuxKPI และโครงการรองรับแล็ปท็อป
  • หลังจากที่เคยลองใช้ FreeBSD 14 ก็มีการเพิ่มการรองรับ KDE Plasma 6, Wayland และ Intel WiFi ทำให้บน ThinkPad X1 Carbon ฟังก์ชันต่าง ๆ ทำงานได้ดี ยกเว้น Bluetooth
  • การติดตั้งอ้างอิงจากอิมเมจ memstick ของ FreeBSD 15.1, การบูตแบบ UEFI, การเลือก ZFS (GPT) และเลือกประเภทการติดตั้ง base system เป็น Packages
  • การตั้งค่าสภาพแวดล้อมเดสก์ท็อปจำเป็นต้องทำเป็นขั้นตอน ตั้งแต่ไดรเวอร์, การประหยัดพลังงาน, สิทธิ์ของ devfs, ความเข้ากันได้กับ Linux, D-Bus, Ly, KDE, PipeWire ไปจนถึงการเร่งวิดีโอด้วยฮาร์ดแวร์
  • ในสภาพแวดล้อมแล็ปท็อปบางแบบยังมี ปัญหาที่ทราบแล้ว เหลืออยู่ เช่น ปัญหา WiFi หลังปลุกจากโหมดสลีป, กราฟิก Intel ค้าง, และโปรเซสค้างหลังออกจากระบบ KDE ซึ่งแต่ละกรณีต้องมีวิธีเลี่ยงเฉพาะ

ภาพรวม

  • FreeBSD 15 แสดงให้เห็นถึงการพัฒนาอย่างมากในสภาพแวดล้อมเดสก์ท็อปบนแล็ปท็อป จาก pkgbase, การปรับปรุงไดรเวอร์ LinuxKPI และการเปิดตัว Laptop Support and Usability Project
  • เมื่อเทียบกับตอนที่เคยพยายามใช้ FreeBSD 14 บนเดสก์ท็อป สิ่งที่เปลี่ยนไปคือการพอร์ต KDE Plasma 6, การทำงานของ Wayland และการรองรับ Intel WiFi อย่างสมบูรณ์
  • บน ThinkPad X1 Carbon ใช้งานแบตเตอรี่ได้ประมาณ 6~7 ชั่วโมง และฟังก์ชันของอุปกรณ์ทำงานได้ดี ยกเว้น Bluetooth ที่ยังไม่ได้ลอง
  • สามารถตรวจสอบได้ว่าฮาร์ดแวร์ที่ตนมีรองรับอะไรบ้างผ่าน Laptop Compatibility Matrix ใหม่
  • คู่มือนี้ตั้งอยู่บนสมมติฐานว่าใช้กราฟิก Intel และชิปเซ็ตไร้สาย Intel ส่วนฮาร์ดแวร์แบบอื่นไม่ได้อยู่ในขอบเขตประสบการณ์ตรง

การติดตั้ง

  • ดาวน์โหลดอิมเมจ memstick ของ FreeBSD 15.1 แล้วเขียนลง USB stick ด้วย dd
    • ตัวอย่างการใช้งานคือรับอิมเมจด้วย curl -OJ แล้วรัน sudo dd if=FreeBSD-15.1-RELEASE-amd64-memstick.img of=/dev/sdX bs=1M conv=sync
  • วิซาร์ดติดตั้งค่อนข้างเรียบง่าย โดยตั้งค่าระบบให้บูตแบบ UEFI และเลือกเลย์เอาต์ดิสก์เป็น ZFS (GPT)
  • ในขั้นตอนที่ถามประเภทการติดตั้ง base system ให้เลือก Packages เพื่อใช้ pkgbase แบบใหม่
  • หากเปิดใช้ SSH ระหว่างการติดตั้ง จะสามารถคัดลอกและวางผ่านเซสชัน SSH แทนการพิมพ์ลง virtual console โดยตรงได้
  • หลังรีบูต ให้ล็อกอินด้วยบัญชี root โดยใช้รหัสผ่านที่กำหนดไว้ระหว่างการติดตั้ง

การใช้แพ็กเกจล่าสุด

  • FreeBSD ports tree มีสองสาขา คือ quarterly และ latest
  • quarterly จะตรึงสแนปช็อตของ ports tree ปีละสี่ครั้ง และในช่วงระหว่างนั้นแพ็กเกจจากภายนอกจะได้รับเฉพาะแพตช์ความปลอดภัยที่สำคัญ
  • latest เป็นรูปแบบ rolling release ที่จะได้รับอัปเดตแพ็กเกจหลักทันทีที่พร้อมใช้งาน
  • ค่าเริ่มต้นคือคลังแพ็กเกจ quarterly และหากต้องการสลับไป latest ให้สร้างไฟล์ override ใน /usr/local/etc/pkg/repos
  • จากนั้นตั้งค่า URL ของคลังเป็น pkg+https://pkg.FreeBSD.org/${ABI}/latest และ kmods_latest_${VERSION_MINOR} แล้วรัน pkg update และ pkg upgrade

อุปกรณ์ฮาร์ดแวร์ ไดรเวอร์ และการจูน

  • การปรับแต่งบูตโหลดเดอร์

    • ใน /boot/loader.conf สามารถตั้งค่าเวลารอบูตโหลดเดอร์ ปิด destructive dtrace และขยายขีดจำกัด shared memory กับจำนวนโปรเซสได้
    • ระบบที่รองรับ Intel Speed Shift สามารถตั้ง machdep.hwpstate_pkg_ctrl="0" เพื่อให้แต่ละคอร์ตั้งค่าสถานะพลังงานของตัวเองได้
    • สามารถตั้งค่าการประหยัดพลังงานของ PCI, soreceive() แบบเร็ว, การเพิ่มความยาวคิวเครือข่าย และการเพิ่ม transaction timeout ของ ZFS ให้เหมาะกับการใช้งานเดสก์ท็อปและแล็ปท็อปได้
  • โมดูลเคอร์เนล

    • เพิ่ม cpuctl และ coretemp เข้าไปใน kld_list เพื่อเปิดใช้การดูข้อมูล CPU และอุณหภูมิ
    • อัลกอริทึมควบคุมความคับคั่ง H-TCP มุ่งให้ประสิทธิภาพดีขึ้นบนเครือข่ายที่เร็วและมีระยะทางไกล เช่น อินเทอร์เน็ต และสามารถใช้งานได้ผ่านโมดูล cc_htcp
    • บน ThinkPad ต้องใช้โมดูล acpi_ibm เพื่อให้ปุ่มต่าง ๆ ทำงานได้
  • การปรับแต่ง sysctl

    • ใน /etc/sysctl.conf สามารถใช้ค่าตั้งด้านความปลอดภัย เช่น จำกัดการเปลี่ยนคีย์แมป, ปิด core dump, ตั้งค่าที่เกี่ยวข้องกับ ASLR, บล็อก ICMP redirect และปิด IP redirect ได้
    • คู่มือด้านความปลอดภัยบางส่วนแนะนำ W^X, การตรวจสอบ hardlink และการจำกัดการมองเห็นโปรเซสของผู้ใช้อื่น แต่ผู้เขียนเห็นว่าค่าตั้งเหล่านี้ก่อปัญหามากกว่า จึงคอมเมนต์ทิ้งไว้
    • ค่าตั้งประสิทธิภาพเครือข่ายจะขยาย TCP buffer และคิวให้เหมาะกับการเชื่อมต่อที่มี RTT สูงกว่า โดยตั้งอยู่บนสมมติฐานว่าค่าเริ่มต้นถูกปรับมาเพื่อ latency ของ LAN
    • การปรับแต่งสำหรับเดสก์ท็อปประกอบด้วยการป้องกันไม่ให้ shared memory ถูกสลับออก, เพิ่ม threshold การ preempt ของ scheduler และอนุญาตให้ผู้ใช้ทั่วไป mount ได้
    • เพื่อประหยัดพลังงานบนแล็ปท็อป จะตั้ง hw.snd.latency=7 เพื่อลดความตอบสนองของเสียงลง
  • WiFi

    • การรองรับ WiFi ดีขึ้นมากเมื่อเทียบกับอดีตด้วย LinuxKPI และไดรเวอร์ iwlwifi ตัวใหม่
    • ตรวจสอบการรองรับการ์ดไร้สายได้จากรายการชิปเซ็ตที่ iwlwifi รองรับ และติดตั้งเฟิร์มแวร์ที่ต้องใช้ด้วย fwget -v
    • หากต้องการใช้ iwlwifi ตัวใหม่กับการ์ดรุ่นเก่า อาจต้องบล็อกการโหลดไดรเวอร์ iwm เดิมด้วย devmatch_blocklist="if_iwm"
    • 802.11n และ 802.11ac ถูกปิดไว้เป็นค่าเริ่มต้น จึงต้องตั้ง compat.linuxkpi.iwlwifi_11n_disable="0" และ compat.linuxkpi.iwlwifi_disable_11ac="0"
    • หากสร้างอุปกรณ์ wlan0 ใน rc.conf และตั้ง WPA DHCP powersave แล้ว wpa_supplicant(8) จะเป็นผู้จัดการเครือข่าย WiFi
    • การจัดการเครือข่ายทำได้โดยแก้ไข wpa_supplicant.conf(5) โดยตรง หรือใช้กราฟิกอินเทอร์เฟซของ networkmgr
    • networkmgr ต้องใช้สิทธิ์ superuser และสามารถตั้งกฎ sudoers ให้กลุ่ม operator รันได้โดยไม่ต้องใส่รหัสผ่าน
    • ไดรเวอร์ iwlwifi ใน FreeBSD 15.1-RELEASE มีปัญหาที่ทราบแล้วเกี่ยวกับ suspend/resume
  • CPU และกราฟิก

    • ไมโครโค้ด CPU รุ่นล่าสุดตั้งค่าให้โหลดตอนบูตได้ใน loader.conf หลังติดตั้งแพ็กเกจ cpu-microcode
    • การประหยัดพลังงานของ CPU ใช้ performance_cx_lowest=Cmax และ economy_cx_lowest=Cmax เพื่อเปิดใช้ C-state ที่ต่ำลง ช่วยลดการใช้แบตเตอรี่และความร้อน
    • บนโปรเซสเซอร์ Intel รุ่นใหม่ ไม่จำเป็นต้องรัน powerd(8) อีกต่อไป
    • ไดรเวอร์กราฟิก Intel ตั้งค่าให้โหลด i915kms ตอนบูตหลังติดตั้ง drm-kmod
  • สิทธิ์ของอุปกรณ์และความเข้ากันได้

    • บนระบบเดสก์ท็อปจะเพิ่ม กฎ devfs เพื่อให้ผู้ใช้ทั่วไปควบคุม GPU, วิดีโอ, แบ็กไลต์ และอุปกรณ์ USB ได้
    • ใน /etc/devfs.rules จะกำหนดสิทธิ์และกลุ่มของ drm/*, video*, backlight/*, usb/* และตั้ง devfs_system_ruleset=localrules
    • การรันไบนารีของ Linux ใช้ Linuxulator โดยเปิด linux_enable=YES และหากจำเป็นให้ mount devfs, tmpfs, fdescfs, linprocfs, linsysfs ไว้ใต้ /compat/linux
    • เพื่อ mount ไฟล์ซิสเต็มอย่าง exFAT หรือ NTFS ให้โหลดโมดูลเคอร์เนล fusefs
    • เว็บแคมคาดว่าจะรองรับได้ด้วยการติดตั้ง webcamd, v4l-utils, v4l_compat และตั้ง webcamd_enable=YES
    • เครื่องพิมพ์ต้องใช้ CUPS และ cups-filters และต้องแก้ cups-files.conf เพื่อให้กลุ่ม operator ตั้งค่าเครื่องพิมพ์ได้
    • GUI สำหรับตั้งค่า CUPS เข้าถึงได้ในเบราว์เซอร์ที่ localhost:631
  • พลังงานของแล็ปท็อปและแบ็กไลต์ของ ThinkPad

    • บนแล็ปท็อป จะรัน usbconfig และ power_save ใน /etc/rc.local เพื่อเปลี่ยนอุปกรณ์ USB ที่ไม่ได้ใช้งานเข้าสู่สถานะประหยัดพลังงาน
    • หากต้องการให้ปุ่มแบ็กไลต์ของ ThinkPad ทำงาน ต้องโหลดโมดูล acpi_ibm, ตั้ง dev.acpi_ibm.0.handlerevents="0x10 0x11" และมีกฎ devd
    • สคริปต์ /usr/local/libexec/thinkpad-brightness จะเพิ่มหรือลดความสว่างทีละ 2, 5, 10 ตามระดับความสว่างปัจจุบัน
    • หลังให้สิทธิ์รันสคริปต์และรีสตาร์ต devd แล้ว การทำงานจะมีผล
    • หลังตั้งค่าฮาร์ดแวร์และไดรเวอร์เสร็จแล้ว ให้รีบูตเพื่อตรวจสอบว่าการเปลี่ยนแปลงไม่ได้ทำให้ระบบเสียหาย

ไฟร์วอลล์

  • เป็นการตั้งค่าเพื่อให้ทุกระบบรันไฟร์วอลล์ โดยตัวอย่างค่าเริ่มต้นจะบล็อกการเชื่อมต่อขาเข้าทั้งหมด ยกเว้น SSH
  • ใน /etc/pf.conf ให้เปลี่ยนอินเทอร์เฟซ egress เป็นชื่ออินเทอร์เฟซเครือข่ายจริง และอนุญาตเฉพาะพอร์ต SSH สำหรับ TCP inbound
  • เพื่อรองรับการโทรด้วยเสียงและวิดีโอ ให้อนุญาตช่วง UDP 1024:65535
  • ตั้ง pf_enable=YES และเริ่มไฟร์วอลล์ด้วย service pf start

การปิดใช้งานสคริปต์ periodic

  • FreeBSD มีสคริปต์ periodic(8) จำนวนมากมาให้โดยค่าเริ่มต้น ซึ่งจะสแกนฮาร์ดดิสก์ เชื่อมต่ออินเทอร์เน็ต และส่งอีเมล
  • ดูรายการทั้งหมดได้ใน periodic.conf(5)
  • สำหรับผู้ใช้เดสก์ท็อปทั่วไป มีเพียงบางงานเท่านั้นที่มีประโยชน์ และส่วนใหญ่สามารถปิดใช้งานได้อย่างปลอดภัย
  • ค่าตั้งตัวอย่างจะเปลี่ยนงานจำนวนมากที่เกี่ยวกับ daily, weekly, monthly, การสำรองข้อมูล, รายงานสถานะ, mail queue และผลลัพธ์การตรวจสอบความปลอดภัย เป็น NO

บัญชีผู้ใช้

  • สร้างบัญชีผู้ใช้ภายในเครื่องและเพิ่มเข้าไปในกลุ่ม operator, video, wheel
  • operator จำเป็นสำหรับการตั้งค่าอุปกรณ์และเครื่องพิมพ์ และ video จำเป็นสำหรับการเข้าถึงอุปกรณ์ GPU
  • กลุ่ม wheel ใช้สำหรับรันคำสั่งสิทธิ์ root ด้วย sudo
  • หลังติดตั้ง sudo แล้ว ให้ตั้ง %wheel ALL=(ALL:ALL) ALL ในไฟล์ sudoers

โลแคล, เวลา, SSH, ใบรับรอง

  • โลแคล

    • ตัวแปรสภาพแวดล้อมของล็อกอินเชลล์ตั้งค่าใน login.conf(5) โดยเพิ่ม charset=UTF-8 และ lang=en_US.UTF-8
    • เพื่อให้การเปลี่ยนแปลงมีผล ให้สร้างฐานข้อมูลล็อกอินใหม่ด้วย cap_mkdb /etc/login.conf
    • สำหรับเชลล์ที่ไม่ใช่ล็อกอิน ให้ตั้งค่า LANG และ CHARSET ใน /etc/profile.d/locale.sh
  • NTP และเขตเวลา

    • ต้องใช้ ntpd(8) เพื่อให้เวลาของระบบเป็นปัจจุบันอยู่เสมอ
    • ใน ntp.conf ให้กำหนดเซิร์ฟเวอร์ NTP ของ FreeBSD pool และการตั้งค่าจำกัดการเข้าถึง
    • หากไม่ได้ตั้งค่าเขตเวลาระหว่างการติดตั้ง ให้สร้าง symbolic link จาก /usr/share/zoneinfo/America/New_York ไปที่ /etc/localtime
  • openssh-portable

    • ssh ใน base system ของ FreeBSD มีการแพตช์จำนวนมาก และผู้เขียนเลือกใช้ openssh-portable เวอร์ชันต้นฉบับจาก ports
    • ไฟล์ตั้งค่า sshd ในเวอร์ชันใหม่อยู่ภายใต้ /usr/local/etc/ssh
    • ปิด base sshd ใน /etc/rc.conf และเปิดใช้บริการใหม่ด้วย openssh_enable=YES
    • คำสั่ง ssh จะยังคงใช้ /usr/bin/ssh ของ base system ต่อไป หากไม่เปลี่ยน $PATH
    • หากต้องการให้ผู้ใช้ทุกคนใช้เวอร์ชันจาก ports ก่อน ให้แก้ลำดับ path ใน login.conf ให้ /usr/local มาก่อน แล้วสร้างฐานข้อมูลใหม่อีกครั้ง
  • เทอร์มินัล, ใบรับรอง, D-Bus

    • ฐานข้อมูล termcap(5) ของ FreeBSD เรียบง่ายกว่าที่พบได้บ่อยบน Linux และสีสว่างอาจไม่ถูกเรนเดอร์ในเทอร์มินัลตระกูล XTerm
    • ปัญหานี้แก้ได้ด้วยการติดตั้ง terminfo-db
    • โดยปริยาย FreeBSD เชื่อถือเฉพาะบางส่วนของผู้ออกใบรับรองมาตรฐาน จึงติดตั้ง ca_root_nss ซึ่งเป็น Mozilla CA bundle แบบเต็ม
    • KDE และความสามารถของเดสก์ท็อปสมัยใหม่หลายอย่างต้องใช้ D-Bus โดยเปิดใช้งานด้วย dbus_enable=YES และ service dbus start

Ly display manager

  • โดยปกติเดสก์ท็อปเซสชันจะเริ่มผ่าน graphical display manager เช่น SDDM แต่ ณ เวลาที่เขียน บน FreeBSD ยังไม่สามารถเริ่ม Wayland session ได้อย่างเสถียร
  • SDDM เกือบใช้งานได้ แต่มีบั๊กที่คีย์ผสมหลายชุดทำให้เซสชันปิดลง
  • วิธีที่ใช้ในตอนนี้คือเริ่ม Wayland session ผ่าน Ly display manager แบบคอนโซล
  • Ly ไม่ได้ทำงานเป็นเดมอน และตั้งค่าใน /etc/ttys ให้ virtual console เรียกใช้ /usr/local/bin/ly_wrapper
  • เพิ่มรายการของ Ly ใน /etc/gettytab แล้วรีบูต หรือสั่ง kill -HUP 1 เพื่อรีเฟรช init จากนั้นจะเห็นพรอมป์ตล็อกอินของ Ly
  • ใน config.ini สามารถบังคับให้ใช้ Wayland session ได้ด้วย xinitrc=null, xsessions=null, shell=false, waylandsessions=/usr/local/share/wayland-sessions

ฟอนต์, KDE, แอปเดสก์ท็อป

  • ติดตั้งฟอนต์มาตรฐานอย่าง Cantarell, Droid, Inconsolata, Noto, Noto Emoji, Roboto, Ubuntu และ webfonts เพื่อให้เว็บไซต์เรนเดอร์ได้ถูกต้อง
  • สำหรับ KDE และองค์ประกอบเดสก์ท็อป ให้ติดตั้ง kde, kdegraphics, kdemultimedia, kdeutils, phonon-mpv, pipewire, pulseaudio, wireplumber เป็นต้น
  • ตัวอย่างแอปเดสก์ท็อปได้แก่ Chromium, Firefox, LibreOffice, Thunderbird, Signal Desktop, Wine, Emacs Wayland, Git, mpv, tmux เป็นต้น
  • ความสามารถบางอย่างของเดสก์ท็อปพึ่งพา PipeWire และตัวอย่างภาพตัวอย่างบนทาสก์บาร์ดูเหมือนจะไม่ทำงานหาก PipeWire ไม่ได้รันอยู่
  • สามารถตั้งให้ PipeWire เริ่มอัตโนมัติได้ด้วยไฟล์ autostart /usr/local/etc/xdg/autostart/pipewire.desktop
  • หากต้องการเก็บรหัสผ่านของ SSH key ไว้ใน kwallet ให้ export SSH_ASKPASS_REQUIRE=prefer และ SSH_ASKPASS=/usr/local/bin/ksshaskpass ในสภาพแวดล้อม KDE

การเร่งวิดีโอด้วยฮาร์ดแวร์

  • หากติดตั้งแพ็กเกจที่เหมาะสม ก็สามารถใช้ การเร่งวิดีโอด้วยฮาร์ดแวร์ ได้บน GPU Intel ส่วนใหญ่
  • การเร่งวิดีโอด้วยฮาร์ดแวร์ช่วยให้เล่นวิดีโอได้ลื่นขึ้นและใช้งานแบตเตอรี่ได้ดีขึ้น
  • แพ็กเกจที่จำเป็นคือ libva-intel-media-driver, libva-utils, libvdpau-va-gl, vdpauinfo
  • ผู้ใช้ต้องอยู่ในกลุ่ม video เพราะต้องเข้าถึง GPU ผ่านอุปกรณ์ drm
  • บางแอปพลิเคชันอาจต้องตั้งค่าเพิ่มเติมเพื่อใช้งาน hardware offload
  • Chromium Browser

    • บน FreeBSD การถอดรหัสวิดีโอด้วยฮาร์ดแวร์ของ Chromium ในอดีตต้องใช้ command-line flag หลายตัว
    • ณ เวลาที่เขียน การถอดรหัสวิดีโอด้วยฮาร์ดแวร์ของ Chromium ทำงานได้โดยไม่ต้องใช้ flag เพิ่มเติม
  • MPV

    • หากตั้งค่า hwdec=vaapi-copy, vo=gpu-next, vd-lavc-dr=yes, audio-channels=stereo ใน mpv.conf ก็จะเล่นวิดีโอ HD ได้โดยใช้ CPU ต่ำ

ปัญหาที่ทราบและวิธีเลี่ยง

  • เมื่อเปิดฝาแล้วแล็ปท็อปกลับเข้าสู่โหมดสลีปทันทีอีกครั้ง

    • เมื่อ KDE ทำงานอยู่ เดสก์ท็อปเอนวायरอนเมนต์ควรตรวจจับอีเวนต์ฝา ACPI และจัดการ suspend กับ resume
    • บน ThinkPad มีบั๊กที่ทำให้แล็ปท็อปกลับเข้าสู่โหมดสลีปอีกครั้งทันทีที่เปิดฝา
    • วิธีเลี่ยงคือปิดการทำงานของสวิตช์ฝาในตั้งค่าพลังงานของ KDE แล้วตั้งค่า native suspend เมื่อปิดฝาด้วย devd
    • สคริปต์ /usr/local/libexec/kde-suspend จะล็อกหน้าจอของผู้ใช้ที่ล็อกอิน KDE จากนั้นรอ 0.5 วินาที แล้วเข้าสู่โหมดสลีป S3 ด้วย acpiconf -s3
    • กฎ /etc/devd/kde-suspend.conf จะเรียกใช้สคริปต์ดังกล่าวเมื่อเกิดอีเวนต์ ACPI Lid 0x00
  • มีกระบวนการค้างอยู่หลังออกจากระบบ

    • บน FreeBSD กระบวนการบางตัวอาจยังคงทำงานต่อไปไม่มีกำหนดหลังออกจากระบบจากเซสชัน KDE
    • บางครั้ง Chromium จะเข้าสู่สถานะที่ใช้ CPU หนึ่งคอร์ 100%
    • บนดิสทริบิวชัน Linux ที่ใช้ systemd นั้น systemd-logind จะยุติกระบวนการที่เกี่ยวข้องกับเซสชันผู้ใช้ แต่ในสภาพแวดล้อม KDE บน FreeBSD สมมติฐานแบบเดียวกันนี้ใช้ไม่ได้
    • ใช้ฟังก์ชันสคริปต์ cleanup ตอนออกจากระบบของ KDE เพื่อปิด baloo_file, chrome, dirmngr, pipewire, signal-desktop, wireplumber เป็นต้น
    • ใช้งานโดยทำให้ /usr/local/etc/xdg/plasma-workspace/shutdown/cleanup.sh สามารถรันได้
  • การสลับผู้ใช้ใช้งานไม่ได้

    • การสลับผู้ใช้บนเดสก์ท็อปของ FreeBSD ใช้งานไม่ได้เพราะ บั๊กเก่าใน ConsoleKit2
    • ตั้งค่า action/start_new_session=false และ action/switch_user=false ใน /usr/local/etc/xdg/kdeglobals เพื่อไม่ให้ผู้ใช้พยายามใช้งาน
  • WiFi ใช้งานไม่ได้หลังปลุกจากโหมดสลีป

    • FreeBSD 15.1-RELEASE มี บั๊ก iwlwifi ที่ทำให้ WiFi ใช้งานไม่ได้หลังปลุกจากโหมดสลีป
    • วิธีเลี่ยงคือหยุดอินเทอร์เฟซ wlan0 ก่อน suspend แล้วเริ่มใหม่หลัง resume
    • สคริปต์ /usr/local/etc/rc.d/iwlwifi_fix จะผูก service netif stop wlan0 และ service netif start wlan0 เข้ากับคำสั่ง suspend/resume
    • ให้สิทธิ์รันกับสคริปต์ดังกล่าวและเปิดใช้งานด้วย iwlwifi_fix_enable="YES"
    • แพตช์แก้ไขถูกคอมมิตเข้า 15-STABLE แล้ว และเมื่อ FreeBSD 15.2 ออกมา วิธีเลี่ยงนี้อาจไม่จำเป็นอีกต่อไป
  • เสียงของแล็ปท็อปหยุดทำงาน

    • แล็ปท็อปบางรุ่นมี บั๊ก i915 ที่ทำให้เกิด hard lockup
    • ปัญหานี้มาพร้อมกับข้อผิดพลาดอย่าง hdac0: Command timeout 2 ใน dmesg
    • วิธีแก้คือกำหนด loader tunable compat.linuxkpi.i915_disable_power_well=0
  • ภาพค้างและ GPU hang

    • ใน FreeBSD 15.1 ไดรเวอร์ DRM เริ่มต้นถูกอัปเกรดจาก 6.6 เป็น 6.12
    • เวอร์ชันใหม่นี้ดูเหมือนจะมีบั๊กที่ทำให้เกิดภาพค้างและข้อความ GPU HANG ใน dmesg บนชิป Intel บางรุ่น
    • วิธีเลี่ยงที่เสถียรคือใช้ drm-66-kmod เวอร์ชันเก่าต่อไป
  • ไม่มีการจำกัดเวลาว่างของคอนโซล

    • FreeBSD ได้เปลี่ยนจากไดรเวอร์คอนโซลแบบเดิม syscons(4) ไปเป็นไดรเวอร์ vt(4) แบบ UEFI-native เมื่อหลายปีก่อน
    • คอนโซล vt ไม่รองรับ blanktime ดังนั้นหากไม่มีเซสชัน X11 หรือ Wayland ก็แทบไม่มีวิธีปิดหน้าจอ
    • เนื่องจาก Ly ทำงานบนคอนโซล TTY หน้าจอจึงติดอยู่ตลอดเมื่อไม่มีใครล็อกอิน
    • สำหรับแล็ปท็อปผู้ใช้คนเดียวอาจไม่ใช่ปัญหาใหญ่ แต่บนเวิร์กสเตชันหลายผู้ใช้อาจทำให้หน้าจอเข้าสู่ภาวะเบิร์นอินจากพรอมป์ตล็อกอินบนพาเนล LCD
  • ไอคอนหายไปในแอป GTK4

    • แอป GTK4 ที่ใช้งานคือไคลเอนต์ XMPP อย่าง Dino IM ซึ่งมีไอคอนจำนวนมากไม่ถูกเรนเดอร์ และยังไม่ใช้การตั้งค่าฟอนต์ KDE ด้วย
    • เมื่อปิดใช้งาน portals ปัญหาก็หายทันที
    • วิธีเลี่ยงคือกำหนด export GDK_DEBUG=no-portals
  • เสียงกระตุกระหว่างเล่นเสียง

    • Pulseaudio บางครั้งทำให้เกิดเสียง crackling และ skipping ระหว่างเล่นไฟล์เสียง
    • ปัญหานี้แก้ได้โดยเพิ่มค่าเริ่มต้นใน daemon.conf เป็น default-fragments = 8 และ default-fragment-size-msec = 5

1 ความคิดเห็น

 
ความเห็นจาก Lobste.rs
  • ขอบคุณสำหรับบทความนี้ แต่ดูเหมือนว่าจะมี ขั้นตอนแบบทำเอง มากเกินไปสำหรับสิ่งที่ตัวติดตั้งควรจัดการให้

    • ในทางประวัติศาสตร์ การรองรับโน้ตบุ๊ก ของ FreeBSD มักจะใช้งานได้แค่ครึ่งๆ กลางๆ และเหมาะกับผู้ใช้สายฮาร์ดคอร์เท่านั้น
      ช่วงหลังมีความพยายามอย่างมากในการพอร์ตไดรเวอร์ Wi‑Fi และกราฟิกจาก Linux มา ทำให้คนจำนวนมากขึ้นสามารถใช้บนโน้ตบุ๊กได้
      ตอนนี้อาจพูดได้ว่าอยู่ในสภาพคล้าย Linux ยุค 2000s และแม้จะยังมีงานอีกมาก แต่ก็เป็นงานที่กำลังทำอยู่แนวหน้า
    • มันช้า แต่ก็ดีขึ้นอย่างแน่นอน Linux เองเมื่อ 10–15 ปีก่อน ก็ไม่ได้ดีนัก และสุดท้าย FreeBSD ก็น่าจะไปถึงจุดนั้นได้
  • ถ้าไม่ได้ลงมือทำขั้นตอนติดตั้งสักสิบสองขั้นเอง จะเรียกได้จริงหรือว่าเครื่องนั้นเป็นของเรา? /s แต่ก็เหมือนไม่ได้ /s
    ตอนนี้กำลังพิมพ์คอมเมนต์นี้จาก Thinkpad T14 Gen 1 มือสองที่ซื้อมาเพื่อให้รัน OpenBSD ได้โดยไม่ต้องลำบากมาก
    ยังไม่ได้ลอง FreeBSD แต่ก็คงจะลอง และ NAS ที่ประกอบเองก็กำลังรัน FreeBSD 15 พร้อม ZFS pool อยู่
    งานด้านความเข้ากันได้กับโน้ตบุ๊กของ FreeBSD Foundation เป็นสิ่งที่น่าขอบคุณจริงๆ
    ตอนนี้ยังให้บรรยากาศเหมือน Linux ยุค 2000s แต่ก็เหมือนที่โพสต์ต้นฉบับบอกว่า “มีงานต้องทำ และเป็นงานที่กำลังทำอยู่แนวหน้า”

  • ตั้งแต่ช่วงปลายทศวรรษ 2010 ผมใช้ FreeBSD เป็นเดลี่ไดรเวอร์ บนโน้ตบุ๊กที่คัดเลือกอย่างระมัดระวังมาก
    ตอนนั้นการตั้งค่าเดสก์ท็อปบน FreeBSD ต้องลงมือปรับเยอะจริงๆ เลยทำเป็นสคริปต์ ใส่ไว้ใน Git repository แล้วค่อยๆ ปรับต่อมาเรื่อยๆ
    เช่น เปลี่ยนจาก StumpWM ไปเป็น i3 เพื่อเตรียมไว้สำหรับวันที่อาจต้องย้ายจาก X ไป Wayland แล้วใช้ Sway
    ตอนนี้มีตัวติดตั้งเดสก์ท็อประหว่างพัฒนาอยู่ ซึ่งน่าจะแก้ข้อสังเกตที่สมเหตุสมผลของ @technomancy ได้ และอาจทำให้สคริปต์ตั้งค่าหลายส่วนของผมหมดความจำเป็นไปด้วย
    https://wiki.freebsd.org/desktop-installer

  • ดีใจที่เห็นประโยคที่ว่า “ด้วย LinuxKPI และไดรเวอร์ iwlwifi ตัวใหม่ ช่วงเวลาที่การรองรับ Wi‑Fi แย่ๆ เป็นเรื่องปกติได้ผ่านพ้นไปเป็นส่วนใหญ่แล้ว ถ้าเป็นการ์ด Intel ทั่วไปก็น่าจะใช้งานได้เลย”
    ผมเคยลอง FreeBSD 13/14 บนเดสก์ท็อปเหมือนกัน แต่ด้วยข้อจำกัดของไดรเวอร์ทำให้ช้าเกินไปจนใช้งานต่อยาก
    ถ้าข้อจำกัดนี้หายไปก็ดีมาก และถ้าครั้งหน้าผมอยากลองอะไรใหม่ๆ บนเดสก์ท็อป ก็คิดว่าจะกลับมาลอง FreeBSD อีกครั้ง

  • เรื่องที่น่าสนใจคือ ไดรเวอร์ Wi‑Fi RTL8812 มีอยู่ใน FreeBSD มานานแล้ว เท่าที่จำได้ก็เกิน 10 ปี แต่ฝั่ง Linux เพิ่งเข้าเคอร์เนลราวๆ 6.13
    ไม่แน่ใจว่าทำไมบน Linux มันถึงอยู่นอก tree ในรูปแบบโมดูลมานานขนาดนั้น อาจเป็นเรื่องของไลเซนส์ก็ได้