公式のChromeOSリカバリイメージを利用して、汎用のChromeOSイメージを作り出すBrunchというものを発見。
権利的にはかなり微妙なもの。
とりあえず試してみた。
使用できる条件
UEFIブート可能
Intel CPUの場合、第1世代Intel Coreプロセッサー(Nehalem)以降
AMD CPUの場合、Stoney Ridge世代のみ(E2-90??, A4-91??, A6-92??, A9-94??, Pro A4-4350B, Pro A6-7350B)
Ryzenは非サポート
Nvidia GPUは非サポート
2023/11/24追記:brunch 2023/11/10付け更新でIntel第4,5世代がサポートから外れました。
2023/07/10追記:ChromeOSリカバリイメージの名称が変更。および古い世代のCPU対応が終了した、ということもありbrunchとしてもCPUの対応が変わりました。Intelだと第4世代(Haswell)以降となりました。
AMDはAMD 3015Ce(zen 2コア/4スレッド)搭載機のリカバリイメージを使用し、zenコア(Ryzen系)対応となりました。
Intel 4th~9th用: ASUS Chromebook FLip C434 (機種コードネーム:Shyvana, 基板名:rammus) AUE:2026年6月まで
Intel 10th用: HP Elite c1030 Chromebook (機種コードネーム:jinlon, 基板名:hatch) AUE:2028年6月まで
Intel 11th以降用: Acer Chromebook Spin 713(CP713-3W) (機種コードネーム:Voxel, 基板名:volteer) AUE:2029年6月まで
AMD用: HP CHromebook x360 14a-cb0010ng(機種コードネーム:Gumboz,基板名:zork) AUE:2029年6月
機種コードネーム/基板名についての出典: Developer Information for Chrome OS Devices
AUE(サポート終了期限)についての出典:自動更新ポリシー
手順0: Ubuntuパッケージの追加
Brunshのshell scriptで「cgpt」と「pv」を使用するため、この2つのパッケージをインストールする
osakanataro@ubuntuserver:~/cros$ sudo apt install cgpt pv
<略>
osakanataro@ubuntuserver:~/cros$
手順1: ChromeOSリカバリイメージを入手
ChromeOSリカバリイメージをGoogleのページからダウンロードする。
ただし、Google公式では一覧ページ的なものは用意されていないので、 https://cros-updates-serving.appspot.com/ か https://cros.tech/ でURLを調べてダウンロードする。
前者の https://cros-updates-serving.appspot.com/ の方が一覧になっていて分かりやすい。
Brunshで利用できるリカバリイメージは下記の3種類で、ハードウェアによって選択する
「shyvana」(rammus)
ASUS Chromebook C425, ASUS Chromebook Flip C433, ASUS Chromebook Flip C434用リカバリイメージ
→ 第4世代Intel Coreプロセッサー(Haswell)以降の機種向け
→ 第6世代Intel Coreプロセッサー~第9世代Intel Coreプロセッサー向け(Skylake,Kaby Lake,Coffee Lake,Coffee Lake-R)
「jinlon」(hatch)
Chromebook x360 13c-ca0用リカバリイメージ
→ 第10世代Intel Coreプロセッサー向け(Comet Lake-S)
「voxel」(volteer)
Acer Chromebook Spin 713 (CP713-3W)用リカバリーイメージ
→ 第11世代Intel Coreプロセッサー向け(Rocket Lake-S)
「gumboz」(zork)
HP Chromebook x360 14a-cb0用リカバリイメージ
→ AMD Ryzen向け
「samus」→廃止
Google Chromebook Pixel (2015) 用リカバリイメージ
→ 第3世代Intel Coreプロセッサー(Ivy Bridge)以前の機種向け
「grunt」→廃止
Acer Chromebook 315 (CB315-2H), HP Chromebook 11A G6 EE / HP Chromebook 11A G8 EE, HP Chromebook 14 db0000-db0999 / HP Chromebook 14A G5, Acer Chromebook 311 (C721), Acer Chromebook Spin 311 (R721T), Lenovo 14e Chromebook, Lenovo Chromebook S345-14, NEC Chromebook Y1 Gen2A, 100e 2nd Gen AMD, 300e 2nd Gen AMD用リカバリイメージ
→ AMD プロセッサー機種向け
ちなみに、プロダクトコードネームからだと具体的にCPUを採用しているかわかりませんが、ChromeOSハードウェア向けにカスタマイズしたcorebootを提供している「MrChromebox.tech」のSupported Devicesを見るとCPU毎に分類されていて参考になります。
さて、ダウンロードしたファイルは、zip形式なので展開します。
osakanataro@ubuntuserver:~/cros$ wget https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip
`chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip' に保存中
chromeos_13421.99.0_samus_recove 100%[=========================================================>] 1.08G 9.04MB/s 時間 1m 51s
2020-12-07 00:24:12 (9.90 MB/s) - `chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip' へ保存完了 [1154643907/1154643907]
osakanataro@ubuntuserver:~/cros$ unzip chromeos_13421.99.0_samus_recovery_stable
-channel_mp-v3.bin.zip
Archive: chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip
inflating: chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin
osakanataro@ubuntuserver:~/cros$
osakanataro@ubuntuserver:~/cros$ ls -l
-rw-r--r-- 1 osakanataro osakanataro 2320468480 11月 11 23:54 chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin
-rw-rw-r-- 1 osakanataro osakanataro 1154643907 12月 2 01:55 chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip
osakanataro@ubuntuserver:~/cros$
手順2: Brunchファイルを入手
BrunchのReleaseにアクセスして最新版のBrunchファイルを入手。「brunch_r86_k5.4_stable_20201201.tar.gz」というような感じになっている。
これをダウンロードして、展開する。
osakanataro@ubuntuserver:~/cros$ wget https://github.com/sebanc/brunch/releases/
download/r86-k5.4-stable-20201201/brunch_r86_k5.4_stable_20201201.tar.gz
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 356198827 (340M) [application/octet-stream]
`brunch_r86_k5.4_stable_20201201.tar.gz' に保存中
brunch_r86_k5.4_sta 100%[===================>] 339.70M 8.50MB/s 時間 58s
2020-12-07 09:32:44 (5.85 MB/s) - `brunch_r86_k5.4_stable_20201201.tar.gz' へ保 存完了 [356198827/356198827]
osakanataro@ubuntuserver:~/cros$
osakanataro@ubuntuserver:~/cros$ ls -l
合計 4855664
-rw-rw-r-- 1 osakanataro osakanataro 356198827 12月 3 04:27 brunch_r86_k5.4_stable_20201201.tar.gz
-rwxr-xr-x 1 osakanataro osakanataro 13521 12月 2 05:17 chromeos-install.sh
-rw-r--r-- 1 osakanataro osakanataro 2320468480 11月 11 23:54 chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin
-rw-rw-r-- 1 osakanataro osakanataro 1154643907 12月 2 01:55 chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip
-rw-r--r-- 1 osakanataro osakanataro 33554432 12月 2 05:32 efi_legacy.img
-rw-r--r-- 1 osakanataro osakanataro 33554432 12月 2 05:32 efi_secure.img
-rw-r--r-- 1 osakanataro osakanataro 1073741824 12月 2 05:32 rootc.img
osakanataro@ubuntuserver:~/cros$
手順3: USBメモリへ書き込み
LinuxにUSBメモリを差し込んでからコマンドを実行。
直接USBメモリに書き込む以外にも「-dst ファイル名」と指定することでイメージファイルを作成することもできる。
osakanataro@ubuntuserver:~/cros$ sudo bash chromeos-install.sh -src chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin -dst chromeos.img
Creating image file
0+0 レコード入力
0+0 レコード出力
0 bytes copied, 0.000438446 s, 0.0 kB/s
WARNING: Primary GPT header is invalid
WARNING: Secondary GPT header is invalid
DE9B9ECE-0883-AA43-A8C1-CAEAEAB0E243
start size part contents
0 1 PMBR (Boot GUID: DE9B9ECE-0883-AA43-A8C1-CAEAEAB0E243)
1 1 Pri GPT header
2 32 Pri GPT table
19255304 10104776 1 Label: "STATE"
Type: Linux data
UUID: 0E6FAFDE-D6D7-184A-A64D-CD63CF869244
2117638 65536 2 Label: "KERN-A"
Type: ChromeOS kernel
UUID: 3A09DFE5-08AB-2948-975D-24C1D96A136A
Attr: priority=15 tries=15 successful=0
10866696 8388608 3 Label: "ROOT-A"
Type: ChromeOS rootfs
UUID: DEC257F3-CB10-5F47-8D04-22E777B01FE7
2183174 65536 4 Label: "KERN-B"
Type: ChromeOS kernel
UUID: 131595A8-5812-1749-B2C3-D3EFE1B20D9E
Attr: priority=0 tries=15 successful=0
2478088 8388608 5 Label: "ROOT-B"
Type: ChromeOS rootfs
UUID: D47CACE8-6505-5C49-8DDC-3967F2367108
16448 1 6 Label: "KERN-C"
Type: ChromeOS kernel
UUID: E8025D6B-7477-2E48-8655-69E8FEF91887
Attr: priority=0 tries=15 successful=0
16456 2097152 7 Label: "ROOT-C"
Type: ChromeOS rootfs
UUID: C1E18F01-4178-4E4E-9726-B4E212EBF270
2248712 32768 8 Label: "OEM"
Type: Linux data
UUID: 87C5B1DE-66D1-2645-84BD-1E8B0A6EB040
2113608 1 9 Label: "reserved"
Type: ChromeOS reserved
UUID: C1D004AE-CD97-124E-864A-BFF3A72A3D6E
2113609 1 10 Label: "reserved"
Type: ChromeOS reserved
UUID: 1EE850E8-22AC-4E45-A88A-F29C9AC25A93
64 16384 11 Label: "RWFW"
Type: ChromeOS firmware
UUID: CEAA44C9-C738-7A4A-A372-B043109C1419
2412552 65536 12 Label: "EFI-SYSTEM"
Type: EFI System Partition
UUID: DE9B9ECE-0883-AA43-A8C1-CAEAEAB0E243
29360095 32 Sec GPT table
29360127 1 Sec GPT header
Writing partition 1
8.95MiB 0:00:00 [ 119MiB/s] [<=> ]
Writing partition 2
16.0MiB 0:00:00 [74.7MiB/s] [<=> ]
Writing partition 3
2.00GiB 0:00:47 [43.2MiB/s] [ <=> ]
Writing partition 4
16.0MiB 0:00:00 [57.2MiB/s] [<=> ]
Writing partition 5
2.00GiB 0:00:49 [41.1MiB/s] [ <=> ]
Writing partition 6
512 B 0:00:00 [3.37KiB/s] [<=> ]
Writing partition 7
1.00GiB 0:00:21 [47.8MiB/s] [ <=> ]
Writing partition 8
16.0MiB 0:00:03 [4.38MiB/s] [ <=> ]
Writing partition 9
512 B 0:00:00 [10.5KiB/s] [<=> ]
Writing partition 10
512 B 0:00:00 [26.1KiB/s] [<=> ]
Writing partition 11
8.00MiB 0:00:00 [69.4MiB/s] [<=> ]
Writing partition 12
32.0MiB 0:00:00 [89.6MiB/s] [<=> ]
ChromeOS disk image created.
To boot directly from this image file, add the lines between stars to either:
- A brunch usb flashdrive grub config file (then boot from usb and choose boot from disk image in the menu),
- Or your hard disk grub install if you have one (refer to you distro's online resources).
********************************************************************************
menuentry "ChromeOS (boot from disk image)" {
rmmod tpm
img_part=/dev/mapper/ubuntu--vg-root
img_path=/home/osakanataro/cros/chromeos.img
search --no-floppy --set=root --file $img_path
loopback loop $img_path
linux (loop,7)/kernel boot=local noresume noswap loglevel=7 disablevmx=off \
cros_secure cros_debug loop.max_part=16 img_part=$img_part img_path=$img_path \
console= vt.global_cursor_default=0 brunch_bootsplash=default
initrd (loop,7)/lib/firmware/amd-ucode.img (loop,7)/lib/firmware/intel-ucode.img (loop,7)/initramfs.img
}
********************************************************************************
osakanataro@ubuntuserver:~/cros$
できたchormeos.imgをUSBメモリに書き込んで完成
ノートパソコンで起動
先日手に入れたCore i5-5200Uのノートパソコンで起動してみる。
このBrunch Frameworkの画面がそこそこ時間がかかる。
待つと普通のChromeBookの初期画面になった。
Androidアプリも普通に動くやつになっていた。
上記はsamusイメージをベースにしてたけど、rammusベースにしてみたところ、起動時のgrubでkernel行に「options=alt_touchpad_config」を追加して起動しないとキーボード/タッチパッドが使用できない状態だったが、LTEも使える形になった。
おまけの記録:コマンドが足りなくて失敗した場合のログ
Ubuntu 20.04だとパッケージ「pv」と「cgpt」を追加する必要があった。
osakanataro@ubuntuserver:~/cros$ sudo bash chromeos-install.sh -src chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin -dst chromeos.img
[sudo] osakanataro のパスワード:
cgpt needs to be installed first
osakanataro@ubuntuserver:~/cros$ apt search cgpt
ソート中... 完了
全文検索... 完了
cgpt/bionic 0~R63-10032.B-3 amd64
GPT manipulation tool with support for Chromium OS extensions
vboot-utils/bionic 0~R63-10032.B-3 amd64
Chrome OS verified u-boot utilities
osakanataro@ubuntuserver:~/cros$ sudo apt install cgpt
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
linux-hwe-5.4-headers-5.4.0-42 linux-hwe-5.4-headers-5.4.0-45
linux-hwe-5.4-headers-5.4.0-47 linux-hwe-5.4-headers-5.4.0-51
linux-hwe-5.4-headers-5.4.0-52
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージが新たにインストールされます:
cgpt
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
30.7 kB のアーカイブを取得する必要があります。
この操作後に追加で 77.8 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 cgpt amd64 0~R63-10032.B-3 [30.7 kB]
30.7 kB を 0秒 で取得しました (359 kB/s)
以前に未選択のパッケージ cgpt を選択しています。
(データベースを読み込んでいます ... 現在 350304 個のファイルとディレクトリがインストールされています。)
.../cgpt_0~R63-10032.B-3_amd64.deb を展開する準備をしています ...
cgpt (0~R63-10032.B-3) を展開しています...
cgpt (0~R63-10032.B-3) を設定しています ...
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
osakanataro@ubuntuserver:~/cros$
osakanataro@ubuntuserver:~/cros$ sudo bash chromeos-install.sh -src chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin -dst chromeos.img
pv needs to be installed first
osakanataro@ubuntuserver:~/cros$
osakanataro@ubuntuserver:~/cros$ sudo apt install pv
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
linux-hwe-5.4-headers-5.4.0-42 linux-hwe-5.4-headers-5.4.0-45
linux-hwe-5.4-headers-5.4.0-47 linux-hwe-5.4-headers-5.4.0-51
linux-hwe-5.4-headers-5.4.0-52
これを削除するには 'sudo apt autoremove' を利用してください。
提案パッケージ:
doc-base
以下のパッケージが新たにインストールされます:
pv
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
48.3 kB のアーカイブを取得する必要があります。
この操作後に追加で 123 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 pv amd64 1.6.6-1 [48.3 kB]
48.3 kB を 0秒 で取得しました (621 kB/s)
以前に未選択のパッケージ pv を選択しています。
(データベースを読み込んでいます ... 現在 350309 個のファイルとディレクトリがインストールされています。)
.../archives/pv_1.6.6-1_amd64.deb を展開する準備をしています ...
pv (1.6.6-1) を展開しています...
pv (1.6.6-1) を設定しています ...
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
osakanataro@ubuntuserver:~/cros$