Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Steam Deck, Linux Container and the Arch Community

Young
July 30, 2022

Steam Deck, Linux Container and the Arch Community

Coscup 2022, Taiwan

Young

July 30, 2022
Tweet

Other Decks in Programming

Transcript

  1. 從 Steam Deck 看 Arch Linux 與 Container Steam Deck,

    Linux container and the Arch Community 2022 Jul 30
  2. Suiong Ng 2

  3. Suiong Ng 3 Steam Deck 與我

  4. Suiong Ng 4 電動與我 • Arch 使用者 • 我的 Arch

    有裝 Steam • 有 Windows VM 有設定 GPU pcie passthrough • 休閒玩家、沒有很常打電動 平常“沒有”打電動的習慣 也沒有任何家機掌機,可以說是電動初心者
  5. Suiong Ng 5 我怎麼發現 Steam Deck 這個酷東西的 註:該朋友對 Linux 一竅不通,但熟悉各種數位科技

  6. Suiong Ng 6 訂購囉! 座標:美國 • 負責訂購 Steam Deck •

    回台灣時帶主機回來給我玩 座標:新竹 • 提供 Linux 問題問到飽服務
  7. Suiong Ng 7 一波三折的訂購過程

  8. Suiong Ng 8 開箱 結果在沒有任何協助的情況下,非 Linux 使用者也可 以輕鬆容易地安裝通訊軟體 , 看圖程式

    , 瀏覽器… 等
  9. Suiong Ng 9 Flatpak 與 Steam Deck SteamOS 改變了 Arch

    安裝軟體的方式
  10. Suiong Ng 10 問題:為什麼一次只能看一張圖片? gThumb 僅顯示一張圖 從檔案總管點選圖片

  11. Suiong Ng 11 Steam Deck 是怎麼安裝程式的

  12. Suiong Ng 12 • Pacman (Arch 套件 ) • 軟體會安裝至

    /etc/, /usr/lib, /usr/bin/ 等多個目錄下 • Flatpak (container 格式 ) • 軟體會安裝至 /var/lib/flatpak/ • 程式無法讀取 container 外面的檔案 Arch SteamOS 3 安裝軟體的方式和 Arch 不同 Manjaro’s pacman frontend (Pamac) SteamOS’ frontend (KDE Discover)
  13. Suiong Ng 13 剛剛發生了什麼事? ↖ 檔案總管的圖片位置 ↖gThumb 的圖片位置 這裡的 gThumb

    是 flatpak 應用程式 所以沒辦法讀取 $HOME/.local/ 目錄 為了讓 gThumb 讀取這張圖片 flatpak 另外把這張圖放入 container 中
  14. Suiong Ng 14 剛剛發生了什麼事? gThumb 預設只能讀取這些目錄 Flatpak 額外允許這張圖片

  15. Suiong Ng 15 • 軟體更新會把整個 rootfs 換掉 也就是用 pacman 裝的軟體會不見

    那在 Steam Deck 上 可以用 pacman 來安裝軟體嗎? 可以的,但是 ... △ pacman 安裝的 gpicview flatpak 安裝的 gThumb
  16. Suiong Ng 16 Steam Deck 系統設計 和 Arch 有什麼不一樣

  17. Suiong Ng 17 • Debian Linux • 安裝軟體 apt-get install

    firefox • Arch Linux 實際上和 Arch 很不一樣 ( 類 immutable rootfs) • 安裝軟體 pacman -S firefox flatpak install flathub org.mozilla.firefox 3.0 (Steam Deck) Steam OS 3 就是 Arch Linux 嗎 不容易個人化成喜歡的樣子 例如:假如你不喜歡 KDE 2.0
  18. Suiong Ng 18 SteamOS 和 Arch Linux 不一樣 SteamOS 和

    Arch Linux 不一樣 SteamOS 和 Arch Linux 不一樣 很重要所以要講三次 !!! 系統 不 能改, 不 容易個人化
  19. Suiong Ng 19 和 Arch 完全不同的更新方式 /home (esp) SD 卡

    (A) /efi (A) rootfs (A) /var (B) /efi (B) rootfs (B) /var /home/.steamos/offload/var/lib/flatpak ../var/lib/docker ../var/cache/pacman ../srv ../root ... bind mount 交替更換 (A) / (B) 兩個系統 不更動 使用者的檔案 和 應用程式 應用程式
  20. Suiong Ng 20 這樣子設計有什麼好處? • 穩定好維護,不易壞 • A / B

    交替更新,不怕更新失敗 • 重新安裝、重設系統時 可以選擇保留 應用程式 和 資料 系統 獨立分開 且 唯讀 程式、遊戲、檔案都放在 /home 的設計
  21. Suiong Ng 21 唯讀 和 A/B 更新其實很常見 • Android 7+

    Seamless A/B update • Chrome OS A/B update • MacOS Catalina read-only system volume Big Sur sealed system volume 更新不需要關機再安裝
  22. Suiong Ng 22 Arch Linux 與 container

  23. Suiong Ng 23 在 Arch Linux 上安裝軟體 • 官方 Repository

    pacman -S firefox • AUR yay -S librewolf-bin • Flatpak / Snap / Appimage / docker ... flatpak install flathub org.mozilla.firefox • 直接下載 binary wget https://download-installer.cdn.mozilla.../firefox-91.11.0esr.tar.bz2 tar xvf firefox-91.11.0esr.tar.bz2 ./firefox/firefox ( 我只相信官方 Repo) ( 我想試試社群版本 ) ( 聽說新版有硬體加速 ) ( 我想裝更舊的版本 ) ( 某些特定版本只能手動 下載了 ) Arch Linux 給了使用者很大的彈性、選擇的自由 但是這樣子的自由,對於非 Linux 的 Steam Deck 使用者來說,不太重要 Container→
  24. Suiong Ng 24 Container 已是時下流行 在 Ubuntu 上預設只能透過 Snap (container)

    安裝 Firefox
  25. Suiong Ng 25 想像一個麻瓜 (container) 版本的 Linux • 不熟數位產品的人,也能簡單上手 •

    唯讀、穩定的系統 • 不怕系統更新失敗 • 系統升級容易、也可以降級 • 可以安裝多個版本的應用程式,不用煩惱相依性 • 非常簡單的就能套用各種安全性設定 • 應用程式各自獨立,隔離在自已的沙盒中 預設使用 container 有什麼好處?
  26. Suiong Ng 26 麻瓜版本的的 Linux Distro. MicroOS (OpenSUSE) SilverBlue (Fedora)

    當然, SteamOS 3 (Steam Deck) 也是!
  27. Suiong Ng 27 Arch Linux 與 Container Q1: 如果你有一台 Steam

    Deck 你會想用 Steam OS 3 嗎? 還是會想重新安裝 Arch Linux + steam 呢? Q2: 你覺得 Arch 社群,是不是也該有類似 MicroOS 或 SilverBlue 那樣的衍生版?
  28. Suiong Ng 28 Container 有什麼安全性上的好處?

  29. Suiong Ng 29 應用程式隔離在 container 中有什麼好處 範例: Firefox 曾有安全性漏洞,駭客可以讀取任意檔案 例如偷走存在

    ~/.ssh/ 下的 ssh key 而透過 Flatpak 安裝的 Firefox ,則預設無法讀取家目錄
  30. Suiong Ng 30 XKCD : Authorization 傳統 unix 的權限設計,已不敷使用 各別應用程式需要更細膩的存取控制

    https://xkcd.com/1200/
  31. Suiong Ng 31 如果不喜歡 container 但又想要安全性 • namespace, seccomp, capabilities

    • Firejail • Bubblejail (Bubblewrap) Container 用了這些技術來隔離應用程式 或者,傳統的 LSM 也很實用 例如用 apparmor 或 selinux 禁止 firefox 讀取 ~/.ssh/ 如果想把用 pacman 安裝的程式,也用上 面的技術隔離起來,可以試試
  32. Suiong Ng 32 Flatpak 和 bubblejail / firejail 一樣安全嗎? 既然

    Flatpak 和 bubblewrap (bubblejail) 系出同源 也使用同樣的技術,那安全性上是不是就沒有差別? • 多數程式沒有 firejail / bubblejail 設定檔 必須自行撰寫 • Firejail / bubblejail 設定檔維護問題 例如不同的 Distro. 路徑不同、依賴的涵式庫不同 • “ 容易使用”很重要 理論上是,可是
  33. Suiong Ng 33 Thank You