Quantcast
Viewing all articles
Browse latest Browse all 1111

ChromeOSリカバリイメージを流用して汎用ChromeOSを作り出すBrunch

公式の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のノートパソコンで起動してみる。

Image may be NSFW.
Clik here to view.
画像

このBrunch Frameworkの画面がそこそこ時間がかかる。

待つと普通のChromeBookの初期画面になった。

Image may be NSFW.
Clik here to view.
画像

Androidアプリも普通に動くやつになっていた。

Image may be NSFW.
Clik here to view.
画像
Image may be NSFW.
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.

Viewing all articles
Browse latest Browse all 1111

Trending Articles