1 คะแนน โดย GN⁺ 2024-01-01 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Bazzite คืออิมเมจแบบคัสตอมที่พัฒนาบน Fedora Atomic โดยมีเป้าหมายเพื่อมอบสภาพแวดล้อมการเล่นเกมบน Linux ตั้งแต่อุปกรณ์พกพาอย่าง Steam Deck ไปจนถึงเดสก์ท็อปและ HTPC
  • โครงการนี้เริ่มต้นขึ้นเพื่อแก้ปัญหา แพ็กเกจที่ล้าสมัย และการขาดตัวจัดการแพ็กเกจที่ใช้งานได้จริงใน SteamOS โดยแม้จะเป็นระบบแบบ image-based แต่ก็ยังสามารถ ติดตั้งแพ็กเกจ Fedora ได้ และยังคงอยู่หลังการอัปเดต
  • มีหลายรุ่นให้เลือก เช่น bazzite, bazzite-deck, รุ่นย่อยแบบ GNOME และอิมเมจไดรเวอร์เฉพาะสำหรับ NVIDIA พร้อมรองรับ Game mode, HDR, Mesa, การพอร์ตแพ็กเกจจาก SteamOS, การย้อนกลับเวอร์ชัน และ Secure Boot
  • ชุดตั้งต้นมาพร้อม Distrobox, Waydroid, vkBasalt, MangoHud, OBS VkCapture, xone, DisplayLink, ROCM OpenCL/HIP และรองรับไดรเวอร์สำหรับอุปกรณ์อินพุต, RGB และแท็บเล็ตหลากหลายแบบ
  • มีทั้ง ISO สำหรับติดตั้งและคำสั่ง rebase พร้อมรองรับการ ตรวจสอบลายเซ็น cosign และผู้ใช้สามารถใช้ GitHub Actions กับคีย์ Cosign เพื่อสร้าง Bazzite รุ่นดัดแปลงของตนเองได้

จุดประสงค์และพื้นฐานของ Bazzite

  • Bazzite คืออิมเมจแบบคัสตอมที่พัฒนาบน Fedora Atomic และสร้างด้วยแนวทางคลาวด์เนทีฟของ Universal Blue
  • เป้าหมายคือขยายสภาพแวดล้อมการเล่นเกมบน Linux ให้ครอบคลุมตั้งแต่เดสก์ท็อป, HTPC สำหรับห้องนั่งเล่น ไปจนถึง อุปกรณ์พกพา อย่าง Steam Deck
  • Bazzite ถูกสร้างจาก ublue-os/main และใช้เทคโนโลยีของ Fedora เพื่อมอบการรองรับฮาร์ดแวร์ที่กว้างขึ้นและไดรเวอร์ที่ติดตั้งมาในตัว
  • โครงการนี้เริ่มต้นขึ้นเพื่อแก้ปัญหา แพ็กเกจที่ล้าสมัย และการขาดตัวจัดการแพ็กเกจที่ใช้งานได้จริงใน SteamOS
  • แม้จะเป็นระบบแบบ image-based แต่ก็สามารถติดตั้งแพ็กเกจ Fedora ผ่านบรรทัดคำสั่งได้ และแพ็กเกจที่ติดตั้งไว้จะยังคงอยู่หลังการอัปเดต
  • มีการอัปเดตหลายครั้งต่อสัปดาห์ตามแพ็กเกจ upstream ของ Fedora และรองรับเคอร์เนล Linux รุ่นใหม่ล่าสุด, SELinux ที่เปิดใช้งานเป็นค่าเริ่มต้น, Secure Boot และการเข้ารหัสดิสก์

ฟีเจอร์ด้านเกมและฮาร์ดแวร์ที่ใช้ร่วมกัน

  • Bazzite ใช้ bazzite kernel เพื่อรองรับ HDR และฮาร์ดแวร์เพิ่มเติม พร้อมรวมแพตช์หลายรายการ
  • สามารถใช้ HDR ใน Game mode ได้
  • ในบิลด์ที่ไม่ใช่ NVIDIA สามารถใช้ NVK ได้
  • รองรับโค้ดแปลงสัญญาณแบบเร่งด้วยฮาร์ดแวร์สำหรับการถอดรหัส H264
  • รองรับรันไทม์ ROCM OpenCL/HIP ของ AMD
  • รองรับไดรเวอร์ xone สำหรับคอนโทรลเลอร์ Xbox และ DisplayLink
  • มีธีม KDE ของ SteamOS จาก Valve รวมมาให้
  • ติดตั้ง vkBasalt, MangoHud, OBS VkCapture มาให้เป็นค่าเริ่มต้น
  • รองรับ Winesync/Fastsync/NTsync
  • ติดตั้ง Distrobox มาให้ล่วงหน้า
  • ทำให้การติดตั้ง Davinci Resolve จาก davincibox ง่ายขึ้นผ่าน ujust install-resolve
  • มีบริการ duperemove อัตโนมัติเพื่อลดพื้นที่ดิสก์ที่คอนเทนต์ใน wine prefix ใช้งาน
  • รองรับ HDMI CEC ผ่าน libCEC
  • ใช้ Google BBR เป็นค่าเริ่มต้นสำหรับ TCP congestion control
  • ติดตั้งและเปิดใช้งาน Input Remapper มาให้ล่วงหน้า ส่วนในรุ่น Deck สามารถใช้งานได้แต่ถูกปิดไว้เป็นค่าเริ่มต้น
  • Bazzite Portal มีปุ่มสำหรับติดตั้งแอปและการปรับแต่ง รวมถึงอัปเดต, rebase และรีเซ็ตอิมเมจของระบบ
  • ติดตั้ง Waydroid มาให้ล่วงหน้าเพื่อรองรับการรันแอป Android
  • ใช้ Flatseal, Warehouse, Gear Lever สำหรับจัดการ Flatpak และ AppImage
  • รวมไดรเวอร์ OpenRGB i2c-piix4 และ i2c-nct6775 สำหรับควบคุม RGB ของเมนบอร์ดบางรุ่น
  • มีไดรเวอร์ OpenRazer ติดตั้งมาในตัว และสามารถใช้งานผ่าน Bazzite Portal หรือ ujust install-openrazer
  • มีกฎ udev ของ OpenTabletDriver ติดตั้งมาในตัว และสามารถติดตั้งชุดซอฟต์แวร์เต็มผ่าน Bazzite Portal หรือ ujust install-opentabletdriver
  • รองรับคีย์บอร์ด Wooting โดยค่าเริ่มต้น
  • รองรับ AMD GPU ซีรีส์ Southern Islands HD 7000 และ Sea Islands HD 8000 ด้วยไดรเวอร์ amdgpu
  • ผ่าน Webapp Manager สามารถเปลี่ยนเว็บไซต์จากเบราว์เซอร์ต่าง ๆ เช่น Firefox ให้เป็นแอปได้

รุ่นเดสก์ท็อปและ Steam Deck·HTPC

  • รุ่นพื้นฐานสำหรับเดสก์ท็อปคือ bazzite ซึ่งเหมาะกับคอมพิวเตอร์เดสก์ท็อป
  • การอัปเดตอัตโนมัติ สำหรับ OS, Flatpak และอื่น ๆ จัดการโดย uupd และ topgrade
  • สามารถดาวน์โหลด ISO ได้จาก เว็บไซต์ดาวน์โหลด และมี คู่มือการติดตั้ง
  • สามารถ rebase จาก Fedora Atomic เดิมไปยังอิมเมจไดรเวอร์ GPU แบบโอเพนซอร์สได้
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite:stable
  • อุปกรณ์ที่ต้องใช้ไดรเวอร์เฉพาะของ NVIDIA สามารถ rebase ไปยังอิมเมจ bazzite-nvidia ได้
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-nvidia:stable
  • ผู้ใช้ที่เปิด Secure Boot ต้องทำตามเอกสาร Secure Boot ก่อนทำการ rebase
  • NVK ซึ่งเป็นตัวเลือกโอเพนซอร์สสำหรับ NVIDIA ใน Mesa ยังมีโอกาสเกิดข้อผิดพลาดได้ง่าย ณ เวลาที่เขียน และปัญหาที่เกี่ยวข้องกับ NVK ควรรายงานไปยัง Mesa ไม่ใช่ Ublue/Bazzite
  • bazzite-deck สำหรับ Steam Deck และ HTPC

    • bazzite-deck ออกแบบมาเพื่อเป็นทางเลือกแทน SteamOS บน Steam Deck และเพื่อประสบการณ์แบบคอนโซลบน HTPC
    • บูตเข้าสู่ Game mode ได้ทันทีเหมือน SteamOS
    • duperemove อัตโนมัติช่วยลดขนาด compatdata ได้มาก
    • Mesa รุ่นใหม่สร้าง shader cache ที่เล็กลง และไม่จำเป็นต้องใช้ shader cache เพื่อหลีกเลี่ยงอาการกระตุก
    • สามารถบูตได้แม้ไดรฟ์จะเต็ม
    • รองรับทุกภาษาที่ upstream Fedora รองรับ
    • ใช้ Wayland บนเดสก์ท็อปและรองรับ Steam input
    • รวมเวอร์ชันพอร์ตของแพ็กเกจ SteamOS ส่วนใหญ่ เช่น ไดรเวอร์, ตัวอัปเดตเฟิร์มแวร์ และตัวควบคุมพัดลม จาก evlaV repository
    • ใช้ Mesa ที่ผ่านการแพตช์เพื่อควบคุมเฟรมเรตใน Gamescope ได้อย่างถูกต้อง
    • รวมแพตช์ SteamOS BTRFS เพื่อรองรับ BTRFS บน SD card โดยค่าเริ่มต้น
    • มาพร้อมเวอร์ชันพอร์ตของ SDGyroDSU ที่เปิดใช้งานไว้เป็นค่าเริ่มต้น
    • ระหว่างติดตั้งสามารถเลือกติดตั้ง Decky Loader, EmuDeck, RetroDECK, ProtonUp-Qt และอื่น ๆ ได้
    • มีระบบอัปเดตแบบคัสตอมใน UI ของ Game mode สำหรับอัปเดต OS, Flatpak และอื่น ๆ
    • คงการติดตั้ง GRUB ของ Fedora ไว้เพื่อรองรับการบูตคู่กับ Windows
    • สามารถย้อนกลับไปยัง Bazzite เวอร์ชันก่อนหน้าด้วยความสามารถ rollback ของ rpm-ostree และเลือกอิมเมจก่อนหน้าได้ตอนบูต
    • ติดตั้ง Steam และ Lutris มาในอิมเมจล่วงหน้าในรูปแบบ layered package
    • ใช้ ZRAM ขนาด 4GB พร้อมอัลกอริทึมบีบอัด LZ4 เป็นค่าเริ่มต้น
    • รวมตัวจัดตาราง CPU LAVD และ BORE เพื่อการเล่นเกมที่ลื่นไหลและตอบสนองดี
    • ใช้ตัวจัดตาราง I/O แบบ Kyber เพื่อป้องกัน I/O starvation ระหว่างการติดตั้งเกมหรือการทำงานของ duperemove เบื้องหลัง
    • ใช้พารามิเตอร์เคอร์เนลของ SteamOS
    • รวมโปรไฟล์สีสำหรับปรับเทียบจอของ Steam Deck ทั้งแบบด้านและแบบเงา
    • ฟีเจอร์สำหรับผู้ใช้ขั้นสูง เช่น undervolt แบบความเสี่ยงต่ำของ Steam Deck, การโอเวอร์คล็อกหน้าจอ และการเพิ่ม VRAM สูงสุดเป็นสองเท่าเมื่อดัดแปลง RAM เป็น 32GB จะมีมาให้แต่ปิดไว้เป็นค่าเริ่มต้น
    • บริการอัปเดต BIOS และเฟิร์มแวร์เฉพาะฮาร์ดแวร์ Steam Deck สามารถปิดได้ในเทอร์มินัลด้วย ujust disable-bios-updates, ujust disable-firmware-updates
    • บริการเหล่านี้จะถูกปิดโดยอัตโนมัติบนฮาร์ดแวร์ที่ไม่ใช่ Deck รวมถึง Deck ที่ใช้จอ DeckHD หรือดัดแปลง RAM เป็น 32GB
    • การตั้งค่า Steam Gaming Mode สำหรับอุปกรณ์พกพาทางเลือกควรอ้างอิง Handheld Wiki

รุ่น GNOME และฟีเจอร์จาก upstream

  • มีบิลด์สภาพแวดล้อมเดสก์ท็อป GNOME ให้ทั้งในรุ่นเดสก์ท็อปและรุ่น Deck
  • บิลด์ GNOME เปิดใช้งาน อัตรารีเฟรชแบบแปรผัน และ fractional scaling บน Wayland
  • มีเมนูคัสตอมบนแถบด้านบนสำหรับกลับสู่ Game mode, เปิด Steam และเรียกใช้ยูทิลิตีต่าง ๆ
  • ติดตั้ง GSConnect มาให้ล่วงหน้าและใช้งานได้ทันที
  • รวม Hanabi extension เพื่อมอบฟังก์ชันคล้าย Wallpaper Engine ของ KDE
  • มี GNOME extensions แบบเลือกใช้หลายรายการติดตั้งมาให้ล่วงหน้า พร้อมการปรับแต่งประสบการณ์ใช้งานเพิ่มเติม
  • Firefox GNOME theme และ Thunderbird GNOME theme จะอัปเดตอัตโนมัติหากมีการติดตั้งไว้
  • คำสั่ง rebase สำหรับรุ่นเดสก์ท็อป GNOME มีดังนี้
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-gnome:stable
  • อิมเมจ GNOME ที่ใช้ไดรเวอร์เฉพาะของ NVIDIA สามารถ rebase ได้ด้วยคำสั่งต่อไปนี้
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-gnome-nvidia:stable
  • รุ่น GNOME สำหรับ Steam Deck/HTPC ใช้คำสั่งต่อไปนี้
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-deck-gnome:stable
  • ฟีเจอร์ที่นำมาจาก Universal Blue และ Fedora

    • ฟีเจอร์จากฐาน Universal Blue
    • อิมเมจ NVIDIA จะติดตั้งไดรเวอร์เฉพาะของ NVIDIA มาให้ล่วงหน้า
    • เปิดใช้งาน Flathub เป็นค่าเริ่มต้น
    • มีคำสั่ง ujust เพื่อความสะดวก
    • มีมัลติมีเดียโค้ดेकมาให้เป็นค่าเริ่มต้น
    • สามารถ rollback Bazzite ไปยังบิลด์ใดก็ได้ภายใน 90 วันที่ผ่านมา
    • ฟีเจอร์จากฐาน Fedora Linux Kinoite·Silverblue
    • มอบฐานระบบที่เสถียร
    • แพ็กเกจของระบบค่อนข้างใหม่อยู่เสมอ
    • สามารถเพิ่มแพ็กเกจ Fedora แบบ layer ลงในอิมเมจได้ และยังคงอยู่หลังการอัปเดต
    • มี SELinux ติดตั้งและตั้งค่าไว้ล่วงหน้า
    • สามารถ rebase ไปยังอิมเมจ Fedora Atomic อื่น ๆ ได้โดยไม่สูญเสียข้อมูลผู้ใช้
    • ติดตั้ง CUPS มาให้ล่วงหน้าเพื่อรองรับการพิมพ์

การตรวจสอบ, Secure Boot และการสร้างเอง

  • อิมเมจของ Bazzite ถูกลงนามด้วย cosign ของ sigstore
  • สามารถดาวน์โหลดคีย์ cosign.pub จากที่เก็บและตรวจสอบลายเซ็นด้วยคำสั่งต่อไปนี้
cosign verify --key cosign.pub ghcr.io/ublue-os/bazzite
  • Secure Boot รองรับผ่านคีย์แบบคัสตอม และมีคีย์สาธารณะอยู่ที่ secure_boot.der ในรูทของที่เก็บ
  • หากต้องการลงทะเบียนคีย์ Secure Boot ก่อนติดตั้งหรือ rebase ให้ใช้คำสั่งต่อไปนี้
sudo mokutil --timeout -1
sudo mokutil --import secure_boot.der
  • หากใช้อิมเมจ Universal Blue อยู่แล้ว สามารถรัน ujust enroll-secure-boot-key แทนได้
  • หากระบบถามรหัสผ่าน ให้ใช้ universalblue
  • Steam Deck ไม่ได้มาพร้อมการเปิดใช้งาน Secure Boot และไม่มีคีย์ที่ลงทะเบียนไว้ล่วงหน้า ดังนั้นไม่ควรเปิดใช้งานหากยังไม่เข้าใจอย่างชัดเจน
  • Bazzite ถูกสร้างทั้งหมดด้วย GitHub Actions
  • สามารถสร้างเวอร์ชันคัสตอมของตนเองได้ด้วยการ fork ที่เก็บ เพิ่มคีย์สำหรับลงนามของตนเอง แล้วเปิดใช้งาน GitHub Actions ใน fork นั้น
  • การรันเวิร์กโฟลว์ Build Bazzite จะสร้างอิมเมจคัสตอมสำหรับทุกรุ่นของ Bazzite
  • หากต้องการสร้างเฉพาะบางรุ่น ให้คอมเมนต์รุ่นที่ไม่ต้องการออกในรายการ strategy.matrix ของงาน push-ghcr ในไฟล์ .github/workflows/build.yml
  • หากต้องการซิงก์ fork กับ upstream สามารถใช้การตั้งค่า pull app ได้
  • ขั้นตอนการลงนามอิมเมจของตนเอง

    • ควรตรวจสอบวิธีจัดการ secret ของ GitHub ก่อน
    • สร้างคู่คีย์ใหม่ด้วย Cosign
    cosign generate-key-pair
    
    • แทนที่ cosign.pub ในที่เก็บสาธารณะด้วยคีย์สาธารณะที่สร้างขึ้น
    • เพิ่มข้อความคีย์ส่วนตัวจาก cosign.key ลงใน Repository Secret ของที่เก็บ fork
    • ชื่อ secret ต้องเป็น SIGNING_SECRET

เอกสารและชุมชน

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

 
GN⁺ 2024-01-01
ความคิดเห็นจาก Hacker News
  • ดีมาก มีเดียเซิร์ฟเวอร์ในห้องนั่งเล่นน่าจะเป็นม้าโทรจันที่ช่วยชุบชีวิตการ self-hosting และสุดท้ายอาจเปลี่ยนอินเทอร์เน็ตให้กลับไปเน้น P2P อีกครั้ง
    เมื่อคนส่วนใหญ่มีอินเทอร์เน็ตแบบ symmetric และมีระบบ Linux ที่ทรงพลังแล้ว สิ่งที่เหลืออยู่ก็เป็นแค่ปัญหาซอฟต์แวร์ที่คอยขัดขวางไม่ให้ผู้คนใช้อินเทอร์เน็ตแบบที่ตั้งใจไว้แต่แรก คือเป็นทั้งผู้บริโภคและผู้เผยแพร่ในเวลาเดียวกัน

    • ฉันใช้มีเดียเซิร์ฟเวอร์ในห้องนั่งเล่นมาหลายปีแล้ว และถ้าจะแนะนำก็คือ อย่าวางมีเดียเซิร์ฟเวอร์ไว้ในห้องนั่งเล่น
      ทางที่ดีกว่าคือวางไคลเอนต์ขนาดเล็ก เงียบ และเคารพความเป็นส่วนตัว เช่น Apple TV แล้วเก็บสื่อไว้ใน NAS ที่อยู่ที่อื่น จะต้องมีแอปแยกสำหรับให้บริการสื่อแบบ Plex หรือไม่ ก็ขึ้นอยู่กับ UX ของไคลเอนต์ที่ชอบ หรืออาจไม่ต้องมีเลยแบบ Infuse
      ไม่ว่าเซิร์ฟเวอร์จะอยู่ในห้องนั่งเล่น ในห้องทำงาน หรือใน home lab ก็แทบไม่ต่างกันต่อ การทำให้ self-hosting เข้าถึงคนทั่วไป และยิ่งไปกว่านั้นการจัดการคลังสื่อภายในเครื่องอาจได้รับความนิยมน้อยลงด้วยซ้ำ ผู้คนทำสิ่งนี้กันมาหลายสิบปีแล้ว ถ้ามีผลแบบม้าโทรจันจริงมันก็น่าจะเกิดขึ้นไปนานแล้ว
    • ชอบมุมมองนี้มาก และเกลียดจริง ๆ ที่อินเทอร์เน็ตกลายเป็น อินเทอร์เน็ตแบบรวมศูนย์ ไปแล้ว ตอนนี้แม้แต่การค้นหาพื้นฐานบนแพลตฟอร์มใหญ่ ๆ ก็ยังทำได้ไม่ดี
    • ฉันพยายามประกอบชุด มีเดียเซ็นเตอร์ PC/เซิร์ฟเวอร์ ด้วยตัวเองมาหลายครั้ง แต่สุดท้ายก็สู้ Fire Stick ที่ราคาถูกกว่าหนึ่งในสิบและแทบไม่ต้องออกแรงอะไรเลยไม่ได้
      เพราะงั้นถ้ามีสินค้าประเภทเสียบแล้วใช้ได้เลยออกมาในตลาดนี้จะน่าสนใจมาก
    • ชอบแนวคิดของ Roku สำหรับอินเทอร์เน็ตจริง ๆ
  • ได้รู้จักเครื่องมือหลายตัวสำหรับดิสโทรตระกูล rpm-ostree
    gnome-randr-rust: https://github.com/maxwellainatchi/gnome-randr-rust
    ทำหน้าที่เหมือน xrandr สำหรับ Gnome/Wayland บนดิสโทรที่ไม่รองรับ wlr-randr
    Kernel-fsync: https://copr.fedorainfracloud.org/coprs/sentry/kernel-fsync/
    gnome-vrr: https://copr.fedorainfracloud.org/coprs/kylegospo/gnome-vrr/
    gsettings set org.gnome.mutter experimental-features "['variable-refresh-rate']"
    obs-vkcapture: https://copr.fedorainfracloud.org/coprs/kylegospo/obs-vkcapt...
    system76-scheduler: https://copr.fedorainfracloud.org/coprs/kylegospo/system76-s...

  • ดีใจที่ในที่สุดอันนี้ก็ขึ้นมาแล้ว ตอนโพสต์เมื่อไม่กี่สัปดาห์ก่อน ฉันยังแปลกใจเลยว่าทำไมไม่รู้จักมันให้เร็วกว่านี้ และคิดว่าน่าจะขึ้นไปติดอันดับบนทันที แต่กลับจมหายไปเฉย ๆ (https://news.ycombinator.com/item?id=38642298)
    ฉันประทับใจกับ Bazzite มาก จนถึงตอนนี้ยังไม่เห็นข้อเสียของการใช้ Bazzite แทน SteamOS เลย และกลับมีข้อดีอยู่มาก ฉันอยากเอา Deck เข้าไปอยู่ใน tailnet ของตัวเองมานานแล้วแต่ทำได้ไม่ง่ายนัก อีกทั้งก็อยากติดตั้งแพ็กเกจหลายตัวลงใน OS พื้นฐานโดยตรง ซึ่ง Flatpak ทำได้ไม่ค่อยดีนัก แต่ตอนนี้ทำได้แล้ว
    ตัวอย่างเช่น ฉันรันเกมบนเดสก์ท็อปแรง ๆ ผ่าน Remote Play แล้วดูบนทีวี จากนั้น SSH เข้าไปที่โฮสต์ เปิด tmux โดยให้ pane หนึ่งรัน htop และอีก pane หนึ่งรัน nvtop สำหรับการ์ด AMD ซึ่งตอนนี้ก็ทำงานได้ดีแล้ว สำหรับฉันมันให้ความรู้สึกเหมือนความต่างระหว่างการขับรถพร้อมมีมาตรวัดความเร็วกับมาตรวัดรอบ กับการขับรถแบบไม่มีอะไรให้ดูเลย เรื่องง่าย ๆ แบบนี้บน SteamOS กลับทำได้ยาก แต่บน Bazzite ทำได้ง่าย

    • Steam Deck ของฉันก็อยู่ใน tailnet บน NixOS ด้วย services.tailscale.enable = true เหมือนกัน
      ชักอยากลองเทียบ NixOS กับ Bazzite ดูแล้วว่าเป็นอย่างไร
  • ดูน่าสนใจมาก ไม่ได้ต้องการความพกพาและไม่ชอบเสียงพัดลม แต่ก็อยากได้ความใช้งานง่ายแบบ Steam เลยกำลังหาประมาณว่า “พีซีสเปกใกล้เคียง Steam Deck” อยู่พอดี
    เท่ากับว่าตอนนี้มีทางเลือกสำหรับรันเกมได้ง่าย ๆ บนพีซีเฉพาะทางทั่วไปที่เงียบ ๆ แล้ว เพียงแต่น่าจะไม่มีการปรับแต่งให้เหมาะกับชุด GPU/CPU/RAM แบบสุ่มเหมือนที่ Valve กับ AMD ทำให้ Steam Deck
    น่าสนใจที่มีแพตช์ SteamOS BTRFS เข้ามา ทำให้ SD การ์ดรองรับ BTRFS แบบเต็มรูปแบบได้เป็นค่าเริ่มต้นด้วย ก่อนหน้านี้ก็สงสัยว่าข้อดีของ BTRFS ในบริบทของเกมหรือ Steam Deck คืออะไร พอไปดู https://gitlab.com/popsulfr/steamos-btrfs ก็เห็นว่ามันช่วยประหยัดพื้นที่เก็บข้อมูลด้วยการบีบอัดแบบโปร่งใสและการกำจัดข้อมูลซ้ำ อ่านข้อมูลน้อยลงจึงอาจช่วยให้เวลาโหลดดีขึ้น และยังย้อนกลับไปสถานะก่อนหน้าได้ง่ายด้วย snapshot ทันที น่าจะมีประโยชน์กับการ rollback ระบบหรือ rollback เกมเวอร์ชันต่าง ๆ ของเกมเดียวกัน

    • ระบบไฟล์แบบ copy-on-write ไม่เขียนทับในตำแหน่งเดิม จึงดีต่อสื่อแฟลชโดยธรรมชาติ
      มันจะจัดสรรบล็อกใหม่เสมอ และทำเครื่องหมายปลดบล็อกเก่าเมื่อไม่มีการอ้างอิงจากระบบไฟล์ที่กำลังใช้งาน หรือจาก snapshot หากรองรับ
      สื่อแฟลชไม่ชอบการเขียนทับตำแหน่งเดิมอย่างมาก เพราะต้องปลดบล็อกก่อนแล้วค่อยเขียนใหม่ แม้เฟิร์มแวร์แฟลชสมัยใหม่จะพยายามจัดสรรบล็อกใหม่อยู่แล้วจึงช่วยหักล้างไปบางส่วน แต่โดยรวมก็ยังเป็นรูปแบบการเขียนที่ดีกว่าสำหรับแฟลช
    • ใช้ R5-5600, Radeon 6800XT พร้อม Xbox wireless dongle และคอนโทรลเลอร์ Xbone 4 ตัวกับ Bazzite บน HTPC สำหรับเล่นเกมที่ประกอบเอง
      งานหนักส่วนใหญ่จริง ๆ แล้วเป็นฝีมือของ kernel และ Mesa stack ซึ่งเป็นที่ที่งานจริงเกิดขึ้น Fedora ก็ดึงอัปเดต kernel และ Mesa มาได้ค่อนข้างเร็ว ส่วน Steam client ก็จัดการอัปเดต Proton ให้
      ซินเนอร์ยีระหว่างดิสโทรสายเกมอย่าง Bazzite, ChimeraOS และ Nobara ก็ดีมาก มีการแชร์โค้ดและร่วมมือกันเยอะ และทั้งหมดก็เปิดให้ใครก็เข้าไปแตะต้องได้
      มันทำงานเหมือน Steam Deck เครื่องใหญ่ ๆ ดังนั้น performance overlay, Xbox controller, FSR ฯลฯ ใช้งานได้ดีทันที ต้องจับคู่คอนโทรลเลอร์แต่ละตัวก่อน แต่ทำครั้งเดียวก็พอ ส่วนตัวเล่นแคมเปญ AAA อย่าง God of War, Horizon Zero Dawn, Baldur’s Gate 3 จบที่ 4K มาแล้ว และเวลาเดินทาง เซฟความคืบหน้าก็ไปอยู่บน Deck ต่อได้เลย เป็นประสบการณ์หลายอุปกรณ์แบบเต็มตัว
      แต่ก็ต้องตั้งความคาดหวังให้เหมาะสม เกม VR กับเกมมัลติเพลเยอร์ที่ไม่เลือกใช้ EAC หรือใช้แอนตีชีตระดับเคอร์เนล รวมถึงเกมที่ Epic ทำ แทบจะใช้งานไม่ได้ สำหรับผมมันคล้ายแพลตฟอร์มคอนโซล คือเล่นได้หลายเกมแต่ไม่ใช่ทุกเกม ณ จุดนี้ทั้ง Windows และ Linux ก็ยังมี UX ที่เละพอกัน และปัญหาแย่ที่สุดในทั้งสองฝั่งก็คือ third-party launcher สุดสยอง
      เผื่ออ้างอิงไว้ ผมมีส่วนเกี่ยวข้องกับ universal blue แต่ไม่ได้มีส่วนร่วมกับ Bazzite โดยตรง
    • ใช้ BTRFS ที่เปิดการบีบอัด เพราะ SD การ์ดเก่าและช้า แม้จะเสียเวลา CPU ไปเล็กน้อยกับการคลายบีบอัด asset แต่ I/O ที่ช้าก็เร็วขึ้นอย่างเห็นได้ชัด
      ถ้าเก็บ Proton/Wine runtime ไว้บนดิสก์เดียวกัน การกำจัดข้อมูลซ้ำ ก็อาจมีประโยชน์เช่นกัน เพราะแต่ละเกมอาจต้องใช้ runtime ต่างกัน และเวอร์ชันล่าสุดก็ไม่ใช่ว่าจะดีที่สุดเสมอไป อีกทั้งสภาพแวดล้อม Wine ที่ไม่มีเกมเลยก็ยังอาจกินพื้นที่หลายร้อย MB จาก DLL และ dependency ร่วมต่าง ๆ การกำจัดข้อมูลซ้ำช่วยลดพื้นที่เสียเปล่าได้ แต่พอมองจากราคาสื่อเก็บข้อมูลแฟลชทุกวันนี้ ก็อาจไม่ใช่เรื่องที่ต้องกังวลมากนัก
      บางคนชอบ checksums แต่ผมมองว่าถ้าไม่มีหน่วยความจำ ECC ก็ไม่ได้มีประโยชน์มากนัก
    • Fedora ใช้ BTRFS เป็นค่าเริ่มต้นอยู่แล้วจริง ๆ และ SteamOS เองก็ใช้ BTRFS เป็นค่าเริ่มต้นสำหรับระบบ โดยมีแค่ home และ SD การ์ดที่เป็น ext4
      ข้อดีหลักคือการบีบอัด และโดยเฉพาะการเพิ่มความเร็วในการอ่านบนไดรฟ์ที่มีการบีบอัดอย่าง MicroSD ส่วนการกำจัดข้อมูลซ้ำของ BTRFS ก็ช่วยแก้ปัญหา Wine prefix ที่มี dependency คล้ายกันกินพื้นที่เกินจำเป็นได้ด้วย
    • ควรมีการปรับแต่งทั้งหมดที่ Valve และ AMD ใส่มาใน Steam Deck ครบอยู่แล้ว และยังมีการปรับจูนกับการเปลี่ยนแปลงของตัวเองที่ใส่เข้าไปใน Fedora upstream เพิ่มอีกด้วย
  • เกี่ยวข้องกันนิดหน่อย วันนี้เพิ่งเจอ SteamOS รีดิสทริบิวชันสำหรับเครื่องทั่วไป โดยมีเงื่อนไขว่าต้องไม่มีกราฟิก Nvidia: https://github.com/HoloISO/holoiso

    • ผมใช้อยู่ https://chimeraos.org/ ซึ่งตัวนี้อัปเดตระบบแบบ atomic update
    • อ่านจากหน้านั้นแล้ว ผมเข้าใจว่ากราฟิก Nvidia แทบจะใช้ไม่ได้เลยบนดิสโทรนั้น แต่ก็สงสัยว่าทำไม
      ผมไม่ค่อยรู้รายละเอียดเรื่องความเข้ากันได้ของ GPU บน Linux แต่ทำไมมันถึงไม่ใช่แค่ติดตั้งแพ็กเกจปิดซอร์สของ Nvidia แล้วจบ?
  • สงสัยว่าแรงจูงใจในการทำโปรเจกต์นี้คืออะไร และมีใครหนุนหลังอยู่หรือเปล่า มันให้ความรู้สึกเหมือนความเคลื่อนไหวแบบ โอเพนซอร์สเชิงกลยุทธ์ มากกว่าโปรเจกต์งานอดิเรกช่วงสุดสัปดาห์
    หรืออาจเกี่ยวกับ Nvidia?

    • ผมเป็นผู้สร้างดั้งเดิมของโปรเจกต์นี้ แรงจูงใจเกิดขึ้นเองล้วน ๆ ไม่มีสปอนเซอร์ และไม่เคยรับเงินบริจาคใด ๆ ทั้งสิ้น ค่าใช้จ่ายของโปรเจกต์ทั้งหมดผมออกเอง
      ตอนแรกผมแค่อยากได้อะไรที่คล้าย SteamOS แต่ยังติดตั้งแพ็กเกจและดูแลอัปเดตต่อไปได้ หลังจากใช้ Silverblue อยู่ราว 1 ปี ก็พบว่า Fedora ให้สิ่งนั้นได้ จากนั้นมันก็ค่อย ๆ พัฒนาและขยายใหญ่ขึ้น
      เพิ่งใส่ HDR เข้าไปในช่องทดสอบ และตอนนี้ก็กำลังทำ custom kernel signing เพื่อย้ายมันไปช่องเสถียรโดยไม่ทำให้การรองรับ Secure Boot พัง
      ถ้าอยากช่วยสนับสนุนตอนนี้ วิธีที่ดีที่สุดคือทดลองติดตั้งแล้วรายงานบั๊กที่เจอ ยิ่งมีผู้ใช้มากก็ยิ่งดี
    • เป็นตัวแปรแยกของ Universal Blue (https://universal-blue.org)
  • สงสัยว่ามันทำงานได้ดีแค่ไหนบนอุปกรณ์ที่เป็นระบบสัมผัสล้วน เช่น แท็บเล็ต
    ผมมี ThinkPad X1 Tablet รุ่นที่ 3 และยังคงหาดิสโทร Linux ที่เหมาะกับการใช้เป็นแท็บเล็ตล้วน ๆ โดยไม่ต่อคีย์บอร์ดอยู่ Fedora ปกติมีบั๊กที่ค่อนข้างน่ารำคาญกับคีย์บอร์ดบนหน้าจอ และแม้การติดตั้งส่วนขยาย Phosh จะช่วยแก้ได้เกือบหมด แต่ก็มีความยุ่งยากอื่นตามมาจนใช้งานไม่สะดวก
    อีกอย่างคือการเข้ารหัสดิสก์ เพราะ Grub ไม่มีคีย์บอร์ดบนหน้าจอ ทำให้ตอนบูตยังต้องต่อคีย์บอร์ดอยู่ดี เลยสงสัยว่าที่นี่แก้ปัญหานี้อย่างไร

    • ไม่แน่ใจว่าจะทำงานที่อ่อนไหวมากบนแท็บเล็ตหรือเปล่า แต่ถ้าใช้ การเข้ารหัสดิสก์ทั้งลูก แทนการเข้ารหัสโฟลเดอร์ home ปัญหาเรื่องการป้อนข้อมูลด้วยการสัมผัสก็น่าจะแก้ได้
  • ดูสิ Bazzite รันบน Mac Pro ถังขยะ: https://youtu.be/te1AEj_RA64

  • ตอนประกอบพีซีเกมมิงเมื่อไม่กี่เดือนก่อน มันดูเป็นตัวเลือกที่น่าสนใจเลยลองใช้
    แต่เจอปัญหาหลายอย่าง และหลังจากล้มเหลวไปราว ๆ 6~7 ครั้งก็ยอมแพ้ ตอนนี้เลยมาตั้งหลักที่ Debian แทน (https://blog.c10l.cc/09122023-debian-gaming)
    ถึงอย่างนั้นก็ยังยินดีจะลอง Bazzite อีกครั้งเพื่อดูว่าปัญหาหลายอย่างที่เจอตอนนั้นได้รับการแก้ไขหรือยัง เพียงแต่สำหรับผมมีข้อจำกัดร้ายแรงอยู่ข้อหนึ่งคือมันไม่รองรับ การบูตคู่/หลายระบบ ไม่ทราบว่าตอนนี้เปลี่ยนไปแล้วหรือยัง?