這是進階程序,不建議 Linux 新手使用。
ChromeOS 支援在虛擬機器中執行任意程式碼。這是該支援的低階說明文件;如需更易於閱讀的內容,請參閱faq。
必要條件
- 確認 ChromeOS 裝置支援 ChromeOS 上的 Linux
- 確認你使用的是 ChromeOS 72 以上版本 (2019 年 2 月發布)。
- 啟用 Linux 容器
執行階段功能
執行 Linux 容器時,下列功能應可正常運作:
- 傳出網路連線 (IPv4)。
- 未加速的圖形。
- 加速圖形 (透過 OpenGL)。
- Wayland 程式 (建議使用;透過 Sommelier)。
- X 程式 (透過 Sommelier 和 XWayland 達成相容性)。
- M74 以上版本和實驗性 擷取/麥克風 R79 以上版本圖片的音訊輸出。
缺少功能
我們正在努力充實許多唾手可得的內容。以下是幾個明確的例子:
- 影片硬體解碼。
- IME。
雖然還有許多事項需要考量,但 ChromeOS 團隊會採取審慎的做法推出新功能,確保整體系統安全無虞。如要進一步瞭解 ChromeOS 開發環境中的 Linux,請參閱 Crostini 常見問題。
安全性
執行任意程式碼通常會造成安全風險,但 ChromeOS 團隊認為,Linux on ChromeOS 容器採用的執行階段模型,已充分減輕並控制這類安全風險。虛擬機器 (VM) 是安全防護界線,內部所有項目都視為不受信任。目前的 VM 客戶端映像檔也執行自訂強化核心,進一步提升容器安全性,但這項功能僅供參考,並非確保整體系統安全性的依據。
在這個模型中,ChromeOS 系統的其餘部分應仍受到保護,免於 VM 容器內執行的任意程式碼 (惡意或意外) 影響。
與外部世界通訊的唯一管道是 crosvm,且每個管道都會與個別程序通訊 (每個程序都經過嚴格的沙箱處理)。
容器中的使用者資料
隨著雲端服務的普及,目前的安全性思維強調,相較於攻擊桌機或筆電,取得帳戶憑證 (例如您的 Google/Facebook 密碼) 是更有利可圖的攻擊途徑。他們沒有錯。目前的 VM/容器 ChromeOS 解決方案無法改善這點。簡單來說,目前使用者必須對容器中輸入的任何內容負責。因此,如果您執行不安全或遭入侵的容器,然後在容器中輸入密碼,即使 ChromeOS 系統的其他部分保持安全,密碼仍可能遭竊。
程序持續性
VM 和容器中的程序不會在登出後繼續執行 (因為這些程序位於使用者的加密儲存空間中),而且系統會自動終止這些程序。此外,這些服務也不會在登入時自動啟動 (避免持續性攻擊),也不會在啟動時自動執行 (沒有登入工作階段),因為這些服務無法存取 (位於使用者的加密儲存空間中)。
可執行及可寫入的程式碼
Termina VM 磁碟映像檔會下載到可寫入的具狀態分割區,就像其他 Chrome 元件一樣。為確保內容未遭修改,系統會使用 dm-verity。這也表示系統只能載入 Google 簽署的圖片,且圖片一律為唯讀。
硬體攻擊
Meltdown/Spectre 安全漏洞會影響 VM 的安全使用。我們已套用修正程式和緩解措施,確保 VM 無法攻擊主機系統或其他 VM。詳情請參閱 Chromium OS 維基頁面,瞭解 ChromeOS 裝置的 Meltdown 和 Spectre 安全漏洞狀態。
Lifecycles
啟用 Linux 容器後 (系統會一併安裝所有其他必要元件,例如 Termina),即可開始使用。
雖然這些元件可能會安裝,但不會立即開始執行任何動作。登出時,所有內容都會關閉並終止,登入時則不會自動重新啟動任何內容。
執行終端機應用程式或任何會啟動容器的 Linux 應用程式時,如果父項容器尚未執行,系統會自動啟動 Termina VM,並在其中啟動 ChromeOS 上的預設 Linux 容器 (也稱為 Crostini)。這樣一來,您就能透過 SSH 或 SFTP (透過「檔案」應用程式) 連線至容器。
關閉所有可見應用程式時,VM/容器不會關閉。您可以視需要手動停止及啟動這些容器,也可以產生多個容器,而不只是預設容器。
資料持續性
建立的所有 VM 和容器,以及容器內的資料,都會在使用者工作階段 (登出/登入) 之間保留。這些資料會與瀏覽器的其他資料一樣,儲存在每個使用者的加密儲存空間中。
如果 VM 或容器停止或遭到異常終止 (例如斷電),資料可能會遺失,需要像系統中的其他項目一樣復原。
確認裝置支援情形
雖然我們希望 Linux on ChromeOS 適用於所有 Chromebook,但由於核心和硬體功能有所限制,因此只能在特定裝置上部署。這個團隊專注於系統安全性和穩定性,並在適當情況下回溯移植功能。我們將持續努力改善這方面。
目前支援的語言
如需目前支援的裝置清單,請參閱「支援 Linux 的 ChromeOS 系統」。
硬體需求
目前執行 ChromeOS 容器中的 Linux 時,沒有 RAM、儲存空間或 CPU 速度下限,但這些資源越多,系統效能就越好。
不過,您需要支援硬體虛擬化的 CPU。在 x86 平台上,這項功能有許多名稱。Intel 將其稱為 VT-x 和 VMX。AMD 稱之為 AMD-V 和 SVM。
BayTrail 系統
使用 Intel BayTrail 的 Chromebook 不包含 VT-x。雖然這款 CPU 通常包含 VMX,但 Chromebook 中的變體不包含,因此很抱歉,我們永遠不會支援。
如要查詢主機板是否支援,請在公開的裝置清單中,搜尋「BayTrail」底下的「Platform」欄。
舊核心
我們目前並未打算支援 Linux 3.14 以下版本。這需要大量且經常侵入性的新功能反向移植。例如:
如要查詢主機板是否支援,請在公開的裝置清單中,搜尋「Kernel」欄下方版本號碼小於 3.14 的項目。
32 位元 ARM CPU
在 32 位元 ARM CPU 下運作虛擬機器相當困難,且不符合標準,需要與韌體協調。很遺憾,ChromeOS 韌體通常不會設定擴充功能。因此系統不支援這些作業系統。
如要查詢主機板是否支援,請在公開的裝置清單中,搜尋「arm」底下的「Kernel ABI」欄。