はじめに
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
インストールが完了すると以下のようなメッセージが表示されます。
bashを立ち上げ直して、以下のようにsommelierを開始します。
$ startsommelier
これでGUIアプリを立ち上げる準備ができたので、xtermをインストールして立ち上げます。
$ crew install xterm
$ xterm
参考
- Sommelier & X11 Wayland Setup (公式)
- ChromebookのLinux環境を整える(Crouton + Ubuntu20.04 + Chromebrew + Sommelier)
- CroutonとChromeBrewでChromebookをLinux機のように使う
Crouton
Croutonは、chrootを使って、ChromeOS上で、UbuntuなどのLinuxディストリビューションを動かす仕組みですが、すでに開発終了してしまったようなので割愛します。
RootFSのRWマウント
ChromeOS上で、/etc/hostsなどを書き換えるにはRoot File Systemをrwモードで再マウントする必要があります。下記のリンクを参考にRootFSのRWマウントを試みましたが、うまくいきませんでした。VM環境ではうまくいかないのかもしれません。