Linux に関するよくある質問

デベロッパーとチャットできる場所はありますか?

Chromium OS の開発に関するすべての議論は、Chromebook ヘルプ コミュニティで行われます。ご不明な点がありましたら、お気軽にお問い合わせください。ただし、まず検索して、質問がすでに解決済みかどうかをご確認ください。

機能リクエストはどこから送信できますか?

このプロジェクトはまだ始まったばかりで、リリースを予定しているものがたくさんあります。そのため、しばらくお待ちいただき、ChromeOS のリリースが数回行われた後に再度ご確認ください。

それまでの間、上記のメーリング リストでチャットや質問をしてください。

安定した状態になったら、公開バグトラッカーをご利用いただけます。詳しくは、次の質問をご覧ください。

バグはどこで報告できますか?

まず、最新のデベロッパー チャンネルを使用していることを確認してください。多くの作業がまだ進行中です。

次に、問題がすでに報告されているか、修正されているかを確認します。既存のバグのリストをご確認ください。

フィードバックを送信する場合は、フィードバック レポートを提出し、説明に #crostini(ChromeOS 上の Linux の別の名前)を含めてください。ChromeOS のあらゆる部分に関するフィードバックは、alt+shift+i で送信できます。

それでもデベロッパーにバグを報告したい場合は、こちらのリンクを使用して適切な担当者に転送してください。

Crostini という名前の由来

これは、デベロッパー モードを有効にしたユーザー向けに、完全な Linux 環境(デベロッパー ツールを含む)を簡単に作成するプロジェクトである crouton をもじったものです。Crostini(ChromeOS 上の Linux)は、crouton でカバーされるユースケースの大部分を満たすことを目指しています。また、crouton よりも大きく、おいしいスナックであることから、この名前が付けられました。

crouton は、デベロッパーが ChromeOS で求めていたユースケースの多くを定義するのに役立ち、要件の観点から ChromeOS での Linux の方向性を定めるのに役立ちました。crouton ユーザーの大多数が、ニーズを満たすために ChromeOS で Linux を安全な環境で使用できるようにしたいと考えていました。

そのため、crouton は ChromeOS での Linux の方向性を決めるうえで参考になりましたが、両者の間でコードが共有されたり再利用されたりすることはありませんでした。crouton が悪いわけではなく、単にまったく異なるモデルであるということです。

デバイスはいつサポートされますか?

現時点では、このドキュメント以外の情報は公開していません。デバイスが Chromium OS の公式ドキュメントのデバイス サポート セクションに記載されていない場合、その特定のデバイスについては、一般公開の準備が整った決定はまだ行われていません。

デバイスのサポート ロードマップは提供しておりませんので、お問い合わせはお控えください。

デベロッパー モードを有効にする必要がありますか?

デベロッパー モードを有効にする必要はありません(起動時に OS の確認がオフになっているという恐ろしい画面が表示されます)。これらの機能はすべて、システムが通常モードまたは検証モードで実行されているときに安全に実行されるように設計されています。

一部のデバイスでは dev チャンネルに切り替える必要がありますが、これはデベロッパー モードとはまったく関係ありません。

ChromeOS で Linux を実行していますか?

ターミナル アプリや、Google が提供するデフォルトのコンテナ内のプログラム(統合を容易にするためのプログラム(Sommelier など)を含む)を使用している場合は、はい。

独自のコンテナまたは VM を実行している場合は、必要ありません。

VM を実行する理由コンテナは安全ではないのですか?

コンテナは多くの場合、Linux の名前空間を介して分離されますが、カーネルや同様のシステム リソースは分離されません。つまり、カーネルに 1 つのバグがあるだけで、システムが完全に悪用され、データが盗まれる可能性があります。

ChromeOS ではこれでは不十分なため、すべてを VM 内に配置しています。ゲストとの限られたやり取りを通じて crosvm をエクスプロイトする必要があります。crosvm 自体は厳重にサンドボックス化されています。

詳しくは、Chromium OS の公式ドキュメントのセキュリティのセクションをご覧ください。

ChromeOS とコンテナの間でファイルを共有するにはどうすればよいですか?

ChromeOS のデフォルトの Linux コンテナのストレージには、ChromeOS のファイルアプリの [Linux ファイル] からアクセスできます。Secure Shell を使用して、他のリモート コンテナへの SFTP マウントを設定し、ファイルアプリから閲覧することもできます。

コンテナが実行されていないときにファイルにアクセスできますか?

現在、コンテナのコンテンツにアクセスするには、コンテナが実行されている必要があります。ファイル アプリから [Linux ファイル] にアクセスすると、ChromeOS のデフォルトの Linux コンテナが自動的に起動します。

カスタム カーネル モジュールをインストールできますか?

現在のところ、Termina にはモジュールのサポートは含まれていません。つまり、カスタム カーネル モジュールのビルドや読み込みを必要とするソフトウェア(VirtualBox など)を使用しようとしても、動作しません。次の質問も参照してください。

VM 内で VM を実行できますか?

Android Emulator をサポートするため、一部の ChromeOS デバイスでネストされた仮想化がサポートされています。また、qemu-system を実行してハードウェアをエミュレートし、その中で任意の OS を起動することもできます。残念ながら、QEMU はハードウェア アクセラレーションに KVM を利用できないため、かなり遅くなります。

ChromeOS の Linux コンテナ内で Docker コンテナなどのコンテナを実行できますか?

はい。実行するコンテナ形式に応じて、関連するパッケージを最初にインストールする必要がある場合があります。

自分のシステムで動作するアーキテクチャ

Linux コンテナのアーキテクチャは、お使いのデバイスのアーキテクチャと一致します。この値は、次の 2 つの方法で確認できます。

  • 新しいタブで chrome://settings/help/details に移動し、[プラットフォーム] を確認して、ボード名を公開されているデバイスリストと照合します。[User ABI] フィールドで、CPU の種類を確認します。
  • crosh を開き、uname -m を実行します。これにより、現在のデバイスのアーキテクチャが出力されます。

x86_64 が表示される場合は、Intel/AMD 向けにコンパイルされたコードを実行できます(32 ビット/64 ビット/x32 はすべて動作します)。

arm(または armv7l などの類似の文字列)や aarch64 が表示される場合は、ARM/ARM64 向けにコンパイルされたコードを実行できます。

他のアーキテクチャを実行できますか?

現在のところ、Intel システムで ARM コードを実行したり、その逆の操作を行うための統合サポートはありません。これは自分で処理できます(qemu-user を使用するなど)。ただし、qemu-user に精通している場合は、すでにそのことをご存じでしょう。

ログアウト後も実行し続けるプログラムを実行できますか?

いいえ。すべての VM(およびそのコンテナ)はログイン セッションに関連付けられています。ログアウトすると、すべてのプログラムが設計上シャットダウンまたは強制終了されます。

すべてのデータが暗号化されたホームに保存されているため、ログアウト時にデータが漏洩する可能性を排除する必要があります。

詳しくは、Chromium OS の公式ドキュメントのセキュリティのセクションをご覧ください。

ログイン時にプログラムを自動実行できますか?

いいえ。すべての VM(およびそのコンテナ)を手動で再起動する必要があります。これにより、永続的なエクスプロイトを防ぐことができます。

詳しくは、Chromium OS の公式ドキュメントのセキュリティのセクションをご覧ください。

起動時にプログラムを自動実行できますか?

いいえ。前の質問をご覧ください。

コンテナの環境変数を設定できますか?

承知しました。これには いくつかの方法があります

  • environment.d を使用すると、systemd --user セッションの環境変数を設定できます。これには、ターミナルとすべての GUI アプリが含まれます。この方法を使用するには、新しいコンテナ(Debian 10「buster」)が必要になる場合があります。
  • ターミナルで環境変数を使用するだけの場合は、~/.bashrc~/.zshrc などのシェルの構成ファイルで環境変数を設定します。

環境変数の変更は、新しく開始されたプログラムにのみ適用されます。変更を有効にするには、プログラムまたはコンテナ全体を再起動する必要がある場合もあります。

マルチ プロファイルはサポートされていますか?

いいえ。ターミナルはプライマリ プロファイルでのみサポートされます(*)。Google の目標は、プライマリ プロファイルで完全に機能するスムーズなエクスペリエンスを実現し、セカンダリ プロファイルでクラッシュや問題が発生しないようにすることです。セカンダリ プロファイルの機能を強化する予定はありません。

マルチ プロファイルのサポートについて詳しくは、マルチ プロファイルの一般的なドキュメントをご覧ください。

(*): すべてのセカンダリ プロファイルで Terminal アプリケーションが無効になります。crosh とそのコンテナを介して VM を手動で起動することはできますが、UI とファイル アプリは自動的に統合されない可能性があります。

お子様用アカウントはサポートされていますか?

いいえ。Terminalお子様用アカウントではサポートされていません。このようなアカウントで利用できるようにする予定はありません。

お子様用アカウントについて詳しくは、お子様用アカウントに関する一般的なドキュメントをご覧ください。

VM、コンテナ、データは同期またはバックアップされていますか?

最終的に、コンテナに格納されるデータについては、ユーザーが責任を負います。マシン間でプロジェクト フォルダなどのデータを簡単に同期するには、ドライブのフォルダを Linux と共有します。このフォルダに追加したものはすべて、ドライブにバックアップされ、デバイス間で同期されます。

VM をバックアップするにはどうすればよいですか?

最も簡単な方法は、ChromeOS 自体に組み込まれている新しいバックアップ機能を使用することです。これを行うには、[設定] に移動し、左側のナビゲーションから [デベロッパー] を選択します。次に [Linux] に移動します。[バックアップと復元] が表示されます。このメニューに移動すると、.tini ファイルを保存する [バックアップ] ボタンが表示されます。

個々のコンテナをバックアップする場合は、標準の LXC コマンドを使用する方法もあります。

vmc export コマンドを使用して、VM 全体を手動でエクスポートできます。デフォルトでは、qcow2 ディスク イメージが [ダウンロード] フォルダにダンプされます。VM をインポートする方法はまだないため、これは診断や別のシステムを使用してファイルを抽出する場合にのみ役立ちます。

VM/コンテナのファイルに直接アクセスできますか(ファイル アプリなどから)?

現在、VM で使用されているイメージ ファイルにアクセスする方法はありません。この変更は予定されていません。

バックアップを行う場合は、手動で行う必要があります。

VM/コンテナ内の時間が同期されないのはなぜですか?

VM(およびコンテナ)内の時計は、ChromeOS の時計と自動的に同期されます。そのため、自分で時刻管理サービス(ntp など)を実行する必要はありません。この時計は UTC に基づいています。

R75 以降では、timedatectl を介してタイムゾーン データをコンテナに同期しようとします。それでもうまくいかない場合は、TZ 環境変数をエクスポートしてフォールバックします。

現在、VM 自体のタイムゾーンの詳細は更新されません。また、ディストリビューション間で標準化されていないため、他のタイムゾーン設定の更新も試みません。そのため、これらの環境では、時間が一見正しくないように見えることがあります。また、TZ 環境変数が使用されている場合は、時間が古いように見えることがあります。

技術的な詳細については、https://crbug.com/829934 をご覧ください。これは、皆さんが想像するよりも複雑な問題です。

コピー&ペーストでサポートされている形式

現在、text/plain コンテンツのみがサポートされています。今後、image/pngtext/rtf など、さらに多くの形式を追加する予定です。

現在サポートされているリストは、exo/data_source.cc で確認できます。

X/Wayland は任意の数の MIME 形式をサポートしていますが、最終的な目標は、Chrome 自体がサポートするすべての形式のみをサポートすることです。そのリストについては、clipboard_constants.cc ファイルをご覧ください。

ここで説明しているのは、クリップボードに保存されたデータに対する制約のみです。Wayland アプリは、任意の形式でアプリ間でデータを直接転送できます。

VM 内からクリップボードを自動的に読み取り/書き込みできますか?

現時点ではできません。

セキュリティの観点から、信頼できないコードがユーザーのコピーしたものを自動的に抽出することは望ましくありません。ブラウザ セッションで個人データやパスワードがコピーされている可能性があります。これは、ウェブ プラットフォームが直面しているのと同じ問題です。

これは、ユーザーが手動でデータを貼り付ける(Ctrl+v など)のとは異なります。これはプログラマティック リーディングのみに関するものです。

この状態が永遠に続くとは考えていません。権限モデルと UI を作成してこれらのことを管理できるようになれば、ユーザーがこの権限を付与できるようにすることを検討できます。

xclip ツールまたは X ツールを使用する場合、多くの場合、ローカル バッファ(XWayland 内)がありますが、システムの残りの部分と自動的に同期することはありません。

VM の更新を管理する必要がありますか?

いいえ。Termina VM は、自動的に更新されるコンポーネントです。

VM はコンテナとは別のものであることに注意してください。

Termina のバージョンを確認するにはどうすればよいですか?

Termina はダウンロードされたコンポーネントであるため、新しいタブで chrome://components にアクセスして cros-termina を探すことができます。

vsh 経由で VM に接続して cat /etc/lsb-release を実行することもできます。

コンテナの更新を管理する必要がありますか?

コンテナ内の ChromeOS と通信する、または ChromeOS の統合に必要な Google 提供のパッケージは、定期的に自動更新されます。これにより、必要な依存関係が自動的にインストールされます。

コンテナにインストールされている他のパッケージの自動アップグレードはありません。すでにインストールされているプログラムを壊す可能性のあるパッケージの更新は避けるべきです。コンテナは他の Linux ディストリビューションと同様であるため、新しいソフトウェアが必要な場合は、定期的に更新する必要があります。

sudo apt-get update && sudo apt-get dist-upgrade を実行できます。

IPv6 を使用できますか?

はい。R81 以降でサポートされています。デュアルスタック ネットワークと IPv6 のみのネットワークの両方がサポートされています。

ChromeOS は SLAAC のみをサポートしています。詳しくは、ChromeOS での IPv6 サポートのサポートページをご覧ください。

レイヤ 2 ネットワーキングにアクセスできますか?

いいえ。現在、ネットワーク アクセスはレイヤ 3(IP)のみです。そのため、ブリッジングや下位レベルの楽しいことはできません。

この仕様が変更されるかどうか、またいつ変更されるかは不明です。Wi-Fi では外部とのブリッジングが難しく、イーサネット接続を備えたデバイスも多くありません。コンテナ間のレイヤ 2 をサポートすることはできますが、この機能を必要とするユーザーの数が、必要な労力を正当化するほど多いかどうかは不明です。

CrOS/Android(VM/コンテナの外部)によって設定された VPN は機能しますか?

現在のところ、できません。最新情報については、https://crbug.com/834585 にスターを付けてください。

音声出力はサポートされていますか?

はい。R74(Termina バージョン 11707.0.0 以降)から対応しています。

音声サポートがデプロイされる前にコンテナをセットアップした場合、コンテナが正しく構成されていない可能性があります(以前のデフォルトでは null デバイスに出力していました)。次の手順で復元をお試しください。

# Make sure the new cros-pulse-config package is installed.
$ sudo apt-get update
$ sudo apt-get dist-upgrade

# Clear out existing pulse settings.
$ rm -rf ~/.config/pulse

# Turn it off & on again via crosh ([Ctrl]+[[Alt]]+[[T]]).
crosh> vmc stop termina

音声キャプチャ(マイクなど)はサポートされていますか?

この機能は ChromeOS M84 リリースでサポートされるようになりました。音声キャプチャを有効にするには、[設定] に移動し、左側のナビゲーションから [デベロッパー] を選択します。次に、[Linux] に移動します。このメニューに [Linux にマイクへのアクセスを許可する] というオプションが表示されます。

ハードウェア(USB、Bluetooth、シリアルなど)にアクセスできますか?

ChromeOS で、USB 経由で特定のデバイスを共有できるようになりました。USB アクセスを有効にするには、[設定] に移動し、左側のナビゲーションから [デベロッパー] を選択します。次に、[Linux]、[USB 設定] の順に移動します。ここで、USB アクセスを個別に有効にできます。

この分野はチームが積極的に開発を進めており、今後対応デバイスが追加される予定です。

Wayland プログラムを実行できますか?

はい。実際、これらが推奨されています。Chrome 自体が Wayland クライアントを多用しているため、アップグレードすると「動作する」可能性が高くなります。

Sommelier はこのサポートをシームレスに提供します。

X プログラムを実行できますか?

はい。ただし、互換性の問題が発生する可能性があり、従来の X サーバーの実行ほど完璧ではない可能性があります。ただし、より広範なコミュニティが Wayland に移行しているため、十分なはずです。

Sommelier は、XWayland の起動、WM としての動作、Chrome と X プログラム間の X リクエストと Wayland リクエストの変換を行います。

ウィンドウが小さく表示されたり、ぼやけて表示されたりすることがあります。なぜですか?

ランチャー シェルフに表示される Linux アプリには、高密度または低密度のいずれかを使用するオプションが必要です。解像度が期待どおりに機能していない場合は、アイコンを右クリックして、高密度と低密度を切り替えるオプションを表示します。

Chrome は高 DPI ディスプレイをサポートしていますが、多くの Linux アプリケーションはサポートしていません。プログラムが DPI スケーリングを適切にサポートしていない場合、結果は不十分になります。

現在、組み込みの解像度と DPI はアプリケーションに直接公開されています。小さく表示されたり、ぼやけて表示されたりする場合は、スケーリングが正しくサポートされていないことが原因です。これらの問題は、いつか「正常に動作する」ようになることを期待して、それぞれのアップストリーム プロジェクトに報告する必要があります。

それまでの間、Sommelier は一部のランタイム設定を公開しているため、プログラムごとにスケール ファクタを設定して、誤動作を回避できます。詳細については、Sommelier のドキュメントをご覧ください。

システム全体のズームを適用したり、デフォルトのディスプレイ解像度を変更したりすると、アプリの出力がそれに合わせてスケーリングされます。これにより、結果がぼやける可能性があります。ディスプレイの解像度を調整したり、Sommelierで設定を調整したりできます(詳しくは上記をご覧ください)。ランチャー シェルフに表示される Linux アプリには、高密度または低密度のいずれかを使用するオプションが必要です。解像度が期待どおりに機能していない場合は、アイコンを右クリックして、高密度と低密度を切り替えるオプションを表示します。

シナジーは機能しますか?

Synergy は(クライアントまたはサーバーとして)動作しません。すべてのウィンドウの入力(マウス/キーボードなど)をキャプチャしてスプーフィングする必要があります。Wayland 上に構築されているため、設計上、1 つのクライアントがシステム上の他のクライアントにアクセスすることはできません。これは、コンテナ内で実行されている任意のコードが、他のクライアント(ブラウザなど)を攻撃して任意のキーストロークを送信することを防ぐための、クライアント間の強力なセキュリティ境界です。

コンテナからこの種の制御を有効にする予定はありません。これは、ChromeOS でシナジーのようなソリューション(CRD など)が実現しないという意味ではありません。ただ、そのソリューションはシナジーやコンテナ内の他のツールではないということです。

シナジーを実行して、実行中の単一ウィンドウの入力イベントを伝達することはできますが、それ以上のことはできません。

Windows プログラムを実行できますか?

WINE を試してみてください。互換性は主に WINE に依存するため、サポートはご遠慮ください。

macOS プログラムを実行できますか?

おそらく、そうではありません。既存のさまざまな Linux ソリューションを試すこともできますが、それらはさらに粗削りなものになる可能性が高いです。

(QEMU / kvmtool などを使用するのではなく)crosvm をゼロから実装する理由は何ですか?

他のプロジェクトに反対するものではありません。実際、どれも素晴らしいもので、それらのデザインは私たちのデザインに影響を与えました。最も重要なのは、必要な以上のことを行い、独自のコードを記述することで達成できるセキュリティ モデルほど優れたモデルではなかったことです。crosvm は他のプロジェクトほど多くのことはできませんが、必要なことはすべて実行できます。

詳しくは、crosvm プロジェクトをご覧ください。

VM を使用すると処理速度が低下しませんか?

VM は、コンテナのみで実行する場合やシステムで直接実行する場合と比較して、オーバーヘッドが増加します。ただし、Google のテストでは、オーバーヘッドはユーザー エクスペリエンスにほとんど影響せず、システム セキュリティの強化という大きなメリットを十分に上回るものでした。

詳しくは、Chromium OS の公式ドキュメントのセキュリティのセクションをご覧ください。

VM 内でコンテナを実行する理由プログラムを VM で直接実行しないのはなぜですか?

VM の起動時間を短く保つためには、Termina をできるだけスリムにする必要があります。つまり、不要なプログラムやファイル、またはそれらに関する情報を削除します。

dm-verity を使用すると、セキュリティのために Termina イメージを読み取り専用にする必要がありますが、VM インスタンス間で安全に共有することもできます。

また、Google が提供するプログラムやライブラリのバージョンは、他のディストリビューションよりも新しいことが多く(Gentoo をベースにしているため)、追加のセキュリティ フラグでコンパイルされています。

ユーザーが VM を変更できるようにすると、常に動作し、ユーザーのミスやプログラムのバグの影響を受けないステートレス イメージが作成できなくなります。

全体として、任意のプログラムの実行をサポートすることは難しく、上記の望ましい特性の多くが欠落したシステムになります。すべてをコンテナに強制的に入れることで、より堅牢なソリューションが実現し、ユーザーは安心して自由にテストできるようになります。

また、カメが大好きです

Foreshadow(L1TF / CVE-2018-3646)は処理されますか?

はい。詳細については、一般公開ドキュメントをご覧ください。

不要になったコンテナを削除できますか?

はい、ご自由に削除してください。ただし、現時点では、この操作を支援する UI やコマンドはありません。

不要になった VM を削除できますか?

はい、ご自由に削除してください。vmc destroy コマンドを使用して、これらを手動で削除できます。

これらの機能を無効にすることはできますか?

管理者は管理コンソールからコンテナ / VM へのアクセスを制御できるため、このアクセスを制限したい企業や教育機関は、この機能を利用できます。

当初は標準の ChromeOS 設定に [Linux] オプションがありますが、長期的な計画では、このオプションを削除してオンデマンドで動作するようにする予定です。この時点で、管理対象外デバイスのノブはなくなります。

Windows、macOS、Linux、*BSD などの別の OS を起動できますか?

現在、Termina という名前のカスタム Linux VM のみ起動できます。次の質問も参照してください。

独自の VM/カーネルを実行できますか?

現在、カスタムの Linux カーネルと構成を使用する Termina のみを起動できます。どうぞご期待ください。

別の Linux ディストリビューションを実行できますか?

もちろんです。完全な LXD コマンドラインを使用でき、付属のイメージ リモートには選択できるディストリビューションが多数あります。ただし、出荷するデフォルトのコンテナ以外ではテストしていないため、別のディストリビューションを実行すると問題が発生する可能性があります。

(ディストリビューション名を挿入)を使用しています。{GUI アプリ、ランチャー アイコンなど} を入手するにはどうすればよいですか?

SommelierGarcon バイナリはすべてのコンテナにバインド マウントされるため、インストールやクロス コンパイルは不要です。cros-container-guest-tools の systemd ユニットと構成ファイルは、systemd ユーザー セッションでこれらのデーモンを起動します。また、loginctl enable-linger <user> を実行して、これらのプロセスをバックグラウンドで実行し続けることを許可することをおすすめします。

実行できる VM の数はいくつですか?

システムが処理できる数(RAM/CPU の観点から)まで生成できます。これらはすべて互いに独立しています。

実行できるコンテナの数

システムが処理できる数(RAM/CPU の観点から)まで生成できます。各 VM インスタンスは複数のコンテナをホストできます。

サポートされているコンテナ形式

現在、TerminaLXC のみを直接サポートしています。Google は Kubernetes、Docker、OCI、rkt などを認識しており、これらすべてを使いやすくしたいと考えています。

当面の回避策については、前の質問をご覧ください。