公式の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つのパッケージをインストールする
1 | osakanataro@ubuntuserver:~/cros$ sudo apt install cgpt pv |
3 | 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形式なので展開します。
2 | `chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip' に保存中 |
3 | chromeos_13421.99.0_samus_recove 100%[=========================================================>] 1.08G 9.04MB/s 時間 1m 51s |
4 | 2020-12-07 00:24:12 (9.90 MB/s) - `chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip' へ保存完了 [1154643907/1154643907] |
5 | osakanataro@ubuntuserver:~/cros$ unzip chromeos_13421.99.0_samus_recovery_stable |
7 | Archive: chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip |
8 | inflating: chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin |
9 | osakanataro@ubuntuserver:~/cros$ |
10 | osakanataro@ubuntuserver:~/cros$ ls -l |
11 | -rw-r--r-- 1 osakanataro osakanataro 2320468480 11月 11 23:54 chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin |
12 | -rw-rw-r-- 1 osakanataro osakanataro 1154643907 12月 2 01:55 chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip |
13 | osakanataro@ubuntuserver:~/cros$ |
手順2: Brunchファイルを入手
BrunchのReleaseにアクセスして最新版のBrunchファイルを入手。「brunch_r86_k5.4_stable_20201201.tar.gz」というような感じになっている。
これをダウンロードして、展開する。
2 | download/r86-k5.4-stable-20201201/brunch_r86_k5.4_stable_20201201.tar.gz |
3 | HTTP による接続要求を送信しました、応答を待っています... 200 OK |
4 | 長さ: 356198827 (340M) [application/octet-stream] |
5 | `brunch_r86_k5.4_stable_20201201.tar.gz' に保存中 |
6 | brunch_r86_k5.4_sta 100%[===================>] 339.70M 8.50MB/s 時間 58s |
7 | 2020-12-07 09:32:44 (5.85 MB/s) - `brunch_r86_k5.4_stable_20201201.tar.gz' へ保 存完了 [356198827/356198827] |
8 | osakanataro@ubuntuserver:~/cros$ |
9 | osakanataro@ubuntuserver:~/cros$ ls -l |
11 | -rw-rw-r-- 1 osakanataro osakanataro 356198827 12月 3 04:27 brunch_r86_k5.4_stable_20201201.tar.gz |
12 | -rwxr-xr-x 1 osakanataro osakanataro 13521 12月 2 05:17 chromeos-install.sh |
13 | -rw-r--r-- 1 osakanataro osakanataro 2320468480 11月 11 23:54 chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin |
14 | -rw-rw-r-- 1 osakanataro osakanataro 1154643907 12月 2 01:55 chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip |
15 | -rw-r--r-- 1 osakanataro osakanataro 33554432 12月 2 05:32 efi_legacy.img |
16 | -rw-r--r-- 1 osakanataro osakanataro 33554432 12月 2 05:32 efi_secure.img |
17 | -rw-r--r-- 1 osakanataro osakanataro 1073741824 12月 2 05:32 rootc.img |
18 | osakanataro@ubuntuserver:~/cros$ |
手順3: USBメモリへ書き込み
LinuxにUSBメモリを差し込んでからコマンドを実行。
直接USBメモリに書き込む以外にも「-dst ファイル名」と指定することでイメージファイルを作成することもできる。
1 | osakanataro@ubuntuserver:~/cros$ sudo bash chromeos-install.sh -src chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin -dst chromeos.img |
5 | 0 bytes copied, 0.000438446 s, 0.0 kB/s |
6 | WARNING: Primary GPT header is invalid |
7 | WARNING: Secondary GPT header is invalid |
8 | DE9B9ECE-0883-AA43-A8C1-CAEAEAB0E243 |
9 | start size part contents |
10 | 0 1 PMBR (Boot GUID: DE9B9ECE-0883-AA43-A8C1-CAEAEAB0E243) |
13 | 19255304 10104776 1 Label: "STATE" |
15 | UUID: 0E6FAFDE-D6D7-184A-A64D-CD63CF869244 |
16 | 2117638 65536 2 Label: "KERN-A" |
18 | UUID: 3A09DFE5-08AB-2948-975D-24C1D96A136A |
19 | Attr: priority=15 tries=15 successful=0 |
20 | 10866696 8388608 3 Label: "ROOT-A" |
22 | UUID: DEC257F3-CB10-5F47-8D04-22E777B01FE7 |
23 | 2183174 65536 4 Label: "KERN-B" |
25 | UUID: 131595A8-5812-1749-B2C3-D3EFE1B20D9E |
26 | Attr: priority=0 tries=15 successful=0 |
27 | 2478088 8388608 5 Label: "ROOT-B" |
29 | UUID: D47CACE8-6505-5C49-8DDC-3967F2367108 |
30 | 16448 1 6 Label: "KERN-C" |
32 | UUID: E8025D6B-7477-2E48-8655-69E8FEF91887 |
33 | Attr: priority=0 tries=15 successful=0 |
34 | 16456 2097152 7 Label: "ROOT-C" |
36 | UUID: C1E18F01-4178-4E4E-9726-B4E212EBF270 |
37 | 2248712 32768 8 Label: "OEM" |
39 | UUID: 87C5B1DE-66D1-2645-84BD-1E8B0A6EB040 |
40 | 2113608 1 9 Label: "reserved" |
41 | Type: ChromeOS reserved |
42 | UUID: C1D004AE-CD97-124E-864A-BFF3A72A3D6E |
43 | 2113609 1 10 Label: "reserved" |
44 | Type: ChromeOS reserved |
45 | UUID: 1EE850E8-22AC-4E45-A88A-F29C9AC25A93 |
46 | 64 16384 11 Label: "RWFW" |
47 | Type: ChromeOS firmware |
48 | UUID: CEAA44C9-C738-7A4A-A372-B043109C1419 |
49 | 2412552 65536 12 Label: "EFI-SYSTEM" |
50 | Type: EFI System Partition |
51 | UUID: DE9B9ECE-0883-AA43-A8C1-CAEAEAB0E243 |
52 | 29360095 32 Sec GPT table |
53 | 29360127 1 Sec GPT header |
55 | 8.95MiB 0:00:00 [ 119MiB/s] [<=> ] |
57 | 16.0MiB 0:00:00 [74.7MiB/s] [<=> ] |
59 | 2.00GiB 0:00:47 [43.2MiB/s] [ <=> ] |
61 | 16.0MiB 0:00:00 [57.2MiB/s] [<=> ] |
63 | 2.00GiB 0:00:49 [41.1MiB/s] [ <=> ] |
65 | 512 B 0:00:00 [3.37KiB/s] [<=> ] |
67 | 1.00GiB 0:00:21 [47.8MiB/s] [ <=> ] |
69 | 16.0MiB 0:00:03 [4.38MiB/s] [ <=> ] |
71 | 512 B 0:00:00 [10.5KiB/s] [<=> ] |
73 | 512 B 0:00:00 [26.1KiB/s] [<=> ] |
75 | 8.00MiB 0:00:00 [69.4MiB/s] [<=> ] |
77 | 32.0MiB 0:00:00 [89.6MiB/s] [<=> ] |
78 | ChromeOS disk image created. |
79 | To boot directly from this image file, add the lines between stars to either: |
80 | - A brunch usb flashdrive grub config file (then boot from usb and choose boot from disk image in the menu), |
81 | - Or your hard disk grub install if you have one (refer to you distro's online resources). |
82 | ******************************************************************************** |
83 | menuentry "ChromeOS (boot from disk image)" { |
85 | img_part=/dev/mapper/ubuntu--vg-root |
86 | img_path=/home/osakanataro/cros/chromeos.img |
87 | search --no-floppy --set=root --file $img_path |
88 | loopback loop $img_path |
89 | linux (loop,7)/kernel boot=local noresume noswap loglevel=7 disablevmx=off \ |
90 | cros_secure cros_debug loop.max_part=16 img_part=$img_part img_path=$img_path \ |
91 | console= vt.global_cursor_default=0 brunch_bootsplash=default |
92 | initrd (loop,7)/lib/firmware/amd-ucode.img (loop,7)/lib/firmware/intel-ucode.img (loop,7)/initramfs.img |
94 | ******************************************************************************** |
95 | 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」を追加する必要があった。
1 | osakanataro@ubuntuserver:~/cros$ sudo bash chromeos-install.sh -src chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin -dst chromeos.img |
2 | [sudo] osakanataro のパスワード: |
3 | cgpt needs to be installed first |
4 | osakanataro@ubuntuserver:~/cros$ apt search cgpt |
7 | cgpt/bionic 0~R63-10032.B-3 amd64 |
8 | GPT manipulation tool with support for Chromium OS extensions |
9 | vboot-utils/bionic 0~R63-10032.B-3 amd64 |
10 | Chrome OS verified u-boot utilities |
11 | osakanataro@ubuntuserver:~/cros$ sudo apt install cgpt |
12 | パッケージリストを読み込んでいます... 完了 |
15 | 以下のパッケージが自動でインストールされましたが、もう必要とされていません: |
16 | linux-hwe-5.4-headers-5.4.0-42 linux-hwe-5.4-headers-5.4.0-45 |
17 | linux-hwe-5.4-headers-5.4.0-47 linux-hwe-5.4-headers-5.4.0-51 |
18 | linux-hwe-5.4-headers-5.4.0-52 |
19 | これを削除するには 'sudo apt autoremove' を利用してください。 |
20 | 以下のパッケージが新たにインストールされます: |
22 | アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。 |
23 | 30.7 kB のアーカイブを取得する必要があります。 |
24 | この操作後に追加で 77.8 kB のディスク容量が消費されます。 |
26 | 30.7 kB を 0秒 で取得しました (359 kB/s) |
27 | 以前に未選択のパッケージ cgpt を選択しています。 |
28 | (データベースを読み込んでいます ... 現在 350304 個のファイルとディレクトリがインストールされています。) |
29 | .../cgpt_0~R63-10032.B-3_amd64.deb を展開する準備をしています ... |
30 | cgpt (0~R63-10032.B-3) を展開しています... |
31 | cgpt (0~R63-10032.B-3) を設定しています ... |
32 | man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ... |
33 | osakanataro@ubuntuserver:~/cros$ |
34 | osakanataro@ubuntuserver:~/cros$ sudo bash chromeos-install.sh -src chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin -dst chromeos.img |
35 | pv needs to be installed first |
36 | osakanataro@ubuntuserver:~/cros$ |
37 | osakanataro@ubuntuserver:~/cros$ sudo apt install pv |
38 | パッケージリストを読み込んでいます... 完了 |
41 | 以下のパッケージが自動でインストールされましたが、もう必要とされていません: |
42 | linux-hwe-5.4-headers-5.4.0-42 linux-hwe-5.4-headers-5.4.0-45 |
43 | linux-hwe-5.4-headers-5.4.0-47 linux-hwe-5.4-headers-5.4.0-51 |
44 | linux-hwe-5.4-headers-5.4.0-52 |
45 | これを削除するには 'sudo apt autoremove' を利用してください。 |
48 | 以下のパッケージが新たにインストールされます: |
50 | アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。 |
51 | 48.3 kB のアーカイブを取得する必要があります。 |
52 | この操作後に追加で 123 kB のディスク容量が消費されます。 |
54 | 48.3 kB を 0秒 で取得しました (621 kB/s) |
55 | 以前に未選択のパッケージ pv を選択しています。 |
56 | (データベースを読み込んでいます ... 現在 350309 個のファイルとディレクトリがインストールされています。) |
57 | .../archives/pv_1.6.6-1_amd64.deb を展開する準備をしています ... |
58 | pv (1.6.6-1) を展開しています... |
59 | pv (1.6.6-1) を設定しています ... |
60 | man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ... |
61 | osakanataro@ubuntuserver:~/cros$ |