3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ChromeOS Flexを仮想マシンで動かす

Posted at

はじめに

ChromeOS は、Chromebookと認定されたハードウェア向けにGoogleがリリースしているOS商品です。

ChromiumOS は、ChromeOSの元となったソースコードをOSSとして公開したものです。

ChromeOS Flex は、もともとはCloud ReadyというNeverware社の製品で、PC向けにChromiumOSから派生したOSでした。その後、Googleが買収し、ChromeOS Flexとなりました。

ChromeOS Flexを実PCにインストールするには Googleの公式ページ に書いてあるとおりにすればいいのですが、仮想マシンで動かそうとするとVirtualBoxやVMWareをサポートしていないため、なかなか動かすことができません。この記事ではChromeFlexを、Linux上のQEMU/KVMで動作させる方法を解説します。

環境

この記事では、以下の環境で動作確認してあります。

  • ホストOS: Fedora39
  • QEMU: 8.1.3
  • ChromeOS Flex: 122

ChromeOS Flexのリカバリイメージを用意する

まずChromeOSのリカバリイメージを、 Chromium Dashからダウンロードします。

「Recovery Images」の列から番号の一番大きいものをダウンロードします。ダウンロードが終わったらzipを解凍しておきます。

ChromeOS Flexのインストール

ChromeOS FlexのVM起動用の chromeoslauncher というシェルスクリプトを作成しました。こちらをベースに進めます。

リカバリーイメージを指定して、VMを立ち上げます。初回起動時にインストール先の仮想HDDイメージも作成されます。

$ chromeoslauncher -r chromeos_15753.46.0_reven_recovery_stable-channel_mp-v3.bin

しばらくするとChromeOSの画面が表示されます。言語とキーボードを選択したら画面に従ってChromeOS Flexをインストールしてください

インストールが終わったら、OSを終了させます。

ChromeOS Flexの起動

ChromeOS Flexを起動させるためにchromeoslauncherを引数なしで実行します。

$ chromeoslauncher

OSが立ち上がるとセットアップが始まります。

これでChromeOS Flexのホーム画面が表示されます。

電源の設定で、スリープに入らないよう設定しておいた方がいいでしょう。

chromeoslauncher について

chromeoslauncherは初回起動時に、 $HOME/vm/qemu/chromeos に以下のファイルを作成します。末尾のchromeosの部分は -n name のように指定することで変更できます。

$ ls ~/vm/qemu/chromeos/
OVMF_VARS.fd  image.qcow2
  • OVMF_VARS.fd: EFIのパラメータを格納します
  • image.qcow2: ChromeOS FlexをインストールするHDDイメージです。 サイズは50GBです

chromeoslauncherは以下のように仮想マシンを起動します。

qemu-system-x86_64 \
-drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=$HOME/vm/qemu/chromeos/OVMF_VARS.fd \
-display sdl,show-cursor=on,gl=on \
-device virtio-vga-gl,xres=1280,yres=800 \
-usb -device usb-tablet \
-drive format=qcow2,file=$HOME/vm/qemu/chromeos/image.qcow2 \
-m 4G \
-enable-kvm \
-smp 2 \
-audiodev sdl,id=audio0 \
-device intel-hda \
-device hda-output,audiodev=audio0 \
-cpu host

usb-tabletを指定してあるのは、デフォルトではマウスをうまく扱えないためで、タブレットモードで起動しています。このためマウスのホイールや右クリックは使用できません(残念ながら端末で文字列をコピーしても、ペーストできません)。

いくつかのパラメータは $HOME/.chromeoslauncher で指定することができます。

※ QEMU/KVMには、virt-managerというGUIフロントエンドがあります。virt-managerでもchromeoslauncherと同様なことはできますが、残念ながらウインドウサイズの変更に追随して、ChromeOS Flex側の解像度を変更するようにはできませんでした。

WSL2やVirtualBoxでの使用

WindowsのWSL2や、VirtualBoxなどの仮想マシン上では、chromeoslauncherは3Dアクセラレーションの関係でうまく動かないかもしません。

WSL2のUbuntu22に関しては、下記ページのOption2に従ってMesaの最新版を入れれば、多少動作は不安定ですが、動きました。

VirtualBox上のFedoraやUbuntuは、NestedVMと3Dアクセラレーションを有効にしても起動できませんでした。

$ chromeoslauncher -3

とすると一応動くかもしれません。ただし一つの操作に対して、画面の書き換えに5分ほどかかったりするので、実用レベルではないかもしれません。

Linux開発環境(Crostini)

Linux開発環境を利用するには、以下の画面でLinux開発環境をオンにします。
後述の開発者モードは不要です。

インストールが終わるとLinux開発環境のコンソールが立ち上がります。

中身はDebianなので、aptなどを使って必要なパッケージをインストールできます。以下のページなどを参考にしてください。

開発者モード

ChromeOS Flexでは、開発者モードを有効にすると、後述のCroshでshellコマンドなどが使用可能になり、ChromeOS Flex自身をLinux端末として使えるようになります(後述のChromeBrewをインストールしないとLinux端末としてはかなり制限されています)。

開発者モードを有効にするには、カーネルパラメータの追加が必要になるので、Liveイメージで起動して、grub.confを書き換えます。Liveイメージは何でも良いですが、ここでは GParted を使用して、以下のように起動します。

$ chromeoslauncher -c gparted-live-1.6.0-1-amd64.iso

画面の指示に従いGPartedを起動すると、ChromeOS Flexのパーティションマップが表示されます。

端末を起動して作業を進めますが、英語キーマップになっているので、必要に応じて、日本語キーマップに変更します。

$ setxkbmap jp

パーティションマップからEFI-SYSTEMパーティションを特定したら、
マウントして、grub.cfg を書き換えます。

$ sudo mount /dev/sda12 /mnt
$ cd /mnt/efi/boot
$ sudo cp grub.cfg grub.cfg.org
$ sudo sed -i -e 's|noinitrd|noinitrd cros_debug|' grub.cfg

書き換えが終わったらOSをシャットダウンして、通常通りChromeOS Flexを起動します。

$ chromeoslauncher

参考

Crosh

  • croshは、ChromeOS標準のシェル環境で、開発者モードでなくても使用可能です
  • Ctrl + Alt + T で起動できます
  • crosh自身は、通常のLinuxシェルとは別物で、専用のコマンドのみ使えます
  • 開発者モードが有効だと、shellコマンドが使用でき、shellコマンドを実行すると、通常のLinuxシェルが使えるようになります

参考

Chromebrew

Chromebrewは、croshで使えるパッケージマネージャーです。これを使うとcroshのshellがLinux端末として十分に使えるようになります。

croshでshellコマンドを実行後、以下のコマンドでセットアップできます。

$ curl -Ls git.io/vddgY | bash

セットアップ後は、例えばvimは以下のようにインストールできます

$ crew install vim

参考

Sommelier

Sommelier(ソムリエ)はChromeOSのディスプレイサーバーへのproxyです。Sommelierを立ち上げておくと、ChromeBrewのGUIアプリ(XアプリやWaylandアプリ)を立ち上げることができるようになります。

インストールは以下のように行います。

$ crew install sommelier

インストールが完了すると以下のようなメッセージが表示されます。

image.png

bashを立ち上げ直して、以下のようにsommelierを開始します。

$ startsommelier

これでGUIアプリを立ち上げる準備ができたので、xtermをインストールして立ち上げます。

$ crew install xterm
$ xterm

参考

Crouton

Croutonは、chrootを使って、ChromeOS上で、UbuntuなどのLinuxディストリビューションを動かす仕組みですが、すでに開発終了してしまったようなので割愛します。

RootFSのRWマウント

ChromeOS上で、/etc/hostsなどを書き換えるにはRoot File Systemをrwモードで再マウントする必要があります。下記のリンクを参考にRootFSのRWマウントを試みましたが、うまくいきませんでした。VM環境ではうまくいかないのかもしれません。

3
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?