การใช้งาน FreeBSD 15 บนแล็ปท็อป
(sacredheartsc.com)- 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
- การรองรับ WiFi ดีขึ้นมากเมื่อเทียบกับอดีตด้วย LinuxKPI และไดรเวอร์
-
CPU และกราฟิก
- ไมโครโค้ด CPU รุ่นล่าสุดตั้งค่าให้โหลดตอนบูตได้ใน
loader.confหลังติดตั้งแพ็กเกจcpu-microcode - การประหยัดพลังงานของ CPU ใช้
performance_cx_lowest=Cmaxและeconomy_cx_lowest=Cmaxเพื่อเปิดใช้ C-state ที่ต่ำลง ช่วยลดการใช้แบตเตอรี่และความร้อน - บนโปรเซสเซอร์ Intel รุ่นใหม่ ไม่จำเป็นต้องรัน
powerd(8)อีกต่อไป - ไดรเวอร์กราฟิก Intel ตั้งค่าให้โหลด
i915kmsตอนบูตหลังติดตั้งdrm-kmod
- ไมโครโค้ด CPU รุ่นล่าสุดตั้งค่าให้โหลดตอนบูตได้ใน
-
สิทธิ์ของอุปกรณ์และความเข้ากันได้
- บนระบบเดสก์ท็อปจะเพิ่ม กฎ 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ให้ exportSSH_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 Lid0x00
-
มีกระบวนการค้างอยู่หลังออกจากระบบ
- บน 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
- FreeBSD ได้เปลี่ยนจากไดรเวอร์คอนโซลแบบเดิม
-
ไอคอนหายไปในแอป 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
ขอบคุณสำหรับบทความนี้ แต่ดูเหมือนว่าจะมี ขั้นตอนแบบทำเอง มากเกินไปสำหรับสิ่งที่ตัวติดตั้งควรจัดการให้
ช่วงหลังมีความพยายามอย่างมากในการพอร์ตไดรเวอร์ Wi‑Fi และกราฟิกจาก Linux มา ทำให้คนจำนวนมากขึ้นสามารถใช้บนโน้ตบุ๊กได้
ตอนนี้อาจพูดได้ว่าอยู่ในสภาพคล้าย Linux ยุค 2000s และแม้จะยังมีงานอีกมาก แต่ก็เป็นงานที่กำลังทำอยู่แนวหน้า
ถ้าไม่ได้ลงมือทำขั้นตอนติดตั้งสักสิบสองขั้นเอง จะเรียกได้จริงหรือว่าเครื่องนั้นเป็นของเรา? /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 ในรูปแบบโมดูลมานานขนาดนั้น อาจเป็นเรื่องของไลเซนส์ก็ได้