これは高度なプロセスであるため、Linux を初めて使用するユーザーにはおすすめしません。
ChromeOS では、VM 内で任意のコードを実行できます。これは、そのサポートに関する低レベルのドキュメントです。よりユーザーフレンドリーな情報については、faqをご覧ください。
前提条件
- ChromeOS デバイスが ChromeOS での Linux をサポートしていることを確認します。
-
ChromeOS リリース 72(M72 以降)(2019 年 2 月リリース)以降を使用していることを確認します。
- 必要に応じてシステム アップデートを開始して再起動します。
- これは Stable チャンネルで動作します。
- デベロッパー モードにする必要はありません 。
- Linux コンテナを有効にします。
ランタイム機能
Linux コンテナを実行すると、次の機能が動作します。
- アウトバウンド ネットワーク接続(IPv4)。
- アクセラレートされていないグラフィック。
- Wayland プログラム(推奨、Sommelier 経由)。
- X プログラム(Sommelier と XWayland を介した互換性)。
- M74 以降のオーディオ出力と、R79 以降のイメージでの試験運用版のキャプチャ/マイク。
必要な機能がない
- 動画のハードウェア デコード。
- IME。
ChromeOS チームは、システム全体のセキュリティが損なわれないように、新しい機能を段階的にリリースしています。ChromeOS での Linux 開発に関するほとんどのトピックを網羅した詳細については、Crostini に関するよくある質問をご覧ください。
セキュリティ
任意のコードを実行することは通常セキュリティ リスクですが、ChromeOS チームは、ChromeOS コンテナの Linux で採用されているランタイム モデルが、そのセキュリティ リスクを十分に軽減し、封じ込めていると考えています。仮想マシン(VM)はセキュリティ境界であり、その内部のものはすべて信頼できないと見なされます。現在の VM ゲスト イメージは、コンテナのセキュリティをさらに強化するためにカスタム強化されたカーネルも実行していますが、これはシステム全体のセキュリティを確保するために依存するものではなく、便利な機能と見なされています。
このモデルでは、ChromeOS システムの残りの部分は、VM 内のコンテナ内で実行される任意のコード(悪意のあるコードまたは誤って実行されたコード)から保護されます。
外部との唯一の接点は crosvm を介しており、各チャンネルは個々のプロセスと通信します(各プロセスは厳重にサンドボックス化されています)。
コンテナ内のユーザーデータ
クラウド サービスへの移行に伴い、現在のセキュリティの考え方では、パソコンやノートパソコンを攻撃するよりも、アカウント認証情報(Google や Facebook のパスワードなど)を取得する方が、より収益性の高い攻撃ベクトルであることが強調されています。これは間違いではありません。現在の VM/コンテナの ChromeOS ソリューションでは、この点が改善されていません。簡単に言うと、コンテナに入力されたものはすべて、現在のユーザーの責任となります。そのため、安全でないコンテナや侵害されたコンテナを実行し、コンテナにパスワードを入力すると、ChromeOS システムの残りの部分が安全な状態であっても、パスワードが盗まれる可能性があります。
プロセスの永続性
VM とコンテナ内のプロセスは、ログアウト後も存続せず(ユーザーの暗号化されたストレージに保存されているため)、自動的に終了します。また、ログイン時に自動的に開始されることもありません(永続的な攻撃を回避するため)。ログイン セッションがないため、起動時に自動的に実行することもできません(ユーザーの暗号化されたストレージに保存されているため、アクセスできないため)。
実行可能コードと書き込み可能コード
Termina VM ディスク イメージは、他の Chrome コンポーネースと同様に、書き込み可能なステートフル パーティションにダウンロードされます。コンテンツが変更されないように、dm-verityが使用されます。つまり、Google が署名したイメージのみを読み込むことができ、イメージは常に読み取り専用になります。
ハードウェア攻撃
Meltdown/Spectre の脆弱性は、VM の安全な使用に影響します。VM がホストシステムや他の VM を攻撃できないように、修正と軽減策を適用しました。詳しくは、ChromeOS デバイスの Meltdown と Spectre の脆弱性のステータスに関する Chromium OS Wiki ページをご覧ください。
ライフサイクル
Linux コンテナを有効にすると(Termina などの必要なコンポーネントがすべてインストールされます)、システムを使用できるようになります。
これらのコンポーネントがインストールされても、すぐに実行されることはありません。ログアウトすると、すべてがシャットダウンして終了し、ログインしても自動的に再起動されることはありません。
ターミナル アプリや、コンテナを起動する他の Linux アプリを実行し、その親コンテナがまだ実行されていない場合は、Termina VM が自動的に起動し、その中でデフォルトの ChromeOS コンテナ(Crostini とも呼ばれます)が起動します。これにより、SSH または SFTP(ファイル アプリ経由)でコンテナに接続できます。
表示されているすべてのアプリケーションを閉じても、VM/コンテナはシャットダウンされません。必要に応じて、手動で停止、開始したり、デフォルト以外のコンテナを生成したりできます。
データの永続化
作成されたすべての VM とコンテナ、およびそれらのコンテナ内のデータは、ユーザー セッション(ログアウト/ログイン)間で保持されます。ブラウザの他のデータと同じ、ユーザーごとの暗号化されたストレージに保存されます。
VM またはコンテナが正常に停止または終了しなかった場合(停電など)、データが失われる可能性があるため、システム内の他のデータと同様に復元する必要があります。
デバイスのサポート
ChromeOS での Linux はすべての 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 以前をサポートする予定はありません。これらには、広範囲にわたる、多くの場合侵襲的な新機能のバックポートが必要です。次に例を示します。
ボードがサポートされているかどうかを確認するには、公開されている デバイスリスト で 3.14 未満のバージョン番号を Kernel 列で検索します。
32 ビット ARM CPU
32 ビット ARM CPU で仮想マシンを動作させるのは難しく、標準外であり、ファームウェアとの連携が必要です。残念ながら、ChromeOS ファームウェアでは拡張機能が構成されていない傾向があります。そのため、これらのシステムは対象外です。
ボードがサポートされているかどうかを確認するには、公開されているデバイスリストでarmをKernel ABI列で検索します。