公式の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は非サポート
手順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種類で、ハードウェアによって選択する
「rammus」
ASUS Chromebook C425, ASUS Chromebook Flip C433, ASUS Chromebook Flip C434用リカバリイメージ
→ 第4世代Intel Coreプロセッサー(Haswell)以降の機種向け
「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: Brunshファイルを入手
BrunshのReleaseにアクセスして最新版のBrunshファイルを入手。「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のノートパソコンで起動してみる。
Clik here to view.
このBrunch Frameworkの画面がそこそこ時間がかかる。
待つと普通のChromeBookの初期画面になった。
Clik here to view.
Androidアプリも普通に動くやつになっていた。
Clik here to view.
Clik here to view.
上記は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$Image may be NSFW.
Clik here to view.