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は非サポート

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$

GloDroidがninjaのエラーでビルドできない

PinePhoneやOrange Pi OneなどのAllwinner SoCで動くAOSPベースのandroidであるGloDroidというのがある。

これはGoogle Play StoreなどのGoogle関連(GMS)が入っていないので使いづらい。OpenGappsでも入れられないかなぁ?とパッケージをみてみたけど、こちらはTWRP用にカスタマイズされていてよく分からない・・・

GloDroidのgithubを見るとprebuilt_appsなんてレポジトリがありfdroidとkodiのインストールについての定義がある。ここらを応用すれば何かできないかなぁ、と思ってGloDroidを自分でビルドしてみることにした。

最初Ubuntu 18.04環境で作ってみたけど、うまくいかないのでGoogleのドキュメント上では推奨されているUbuntu 14.04環境作ってみたりしたけど、うまくいかなかった。

エラーの状況

Ubuntu 18.04でもUbuntu 14.04でもほぼ同じで下記のようなエラーが出力されます。

============================================
[100% 451/451] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
FAILED: out/soong/build.ninja
out/soong/.bootstrap/bin/soong_build -t -l out/.module_paths/Android.bp.list -b out/soong -n out -d out/soong/build.ninja.d -globFile out/soong/.bootstrap/build-globs.ninja -o out/soong/build.ninja Android.bp
Killed
10:47:31 soong bootstrap failed with: exit status 1
ninja: build stopped: subcommand failed.build/make/core/main.mk:21: recipe for target 'run_soong_ui' failed
make: *** [run_soong_ui] Error 1
osakanataro@ubuntuserver:~/GloDroid$

out/soong.log の最後は下記のようなエラーです。

2020/06/12 10:47:31.168342 build/soong/ui/build/exec.go:95: soong bootstrap failed with: exit status 1

Ubuntu 14.04の場合

Javaのバージョンが古いので新しいOpenJDKを使える様にする。

$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt install openjdk-13-jdk

Googleのドキュメント(Establishing a Build Environment)記載のパッケージをインストール。

$ sudo apt install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

また、上記のNoteに記載されている「python-networkx」と「libnss-sss:i386」も必要で、これが無いことでninjaのエラーがでていました。

$ sudo apt install python-networkx libnss-sss:i386

Repoのインストールを「Downloading the Source」記載の手順で行います。

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
 gpg --recv-key 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65
$ curl https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ~/bin/repo

repo内部ではgitコマンドを使用するためgitの初期設定も行います。

$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"

次にGloDroidで要求されているパッケージをインストール。(記述にはrepoが含まれてますがパッケージじゃないので抜く)

$ sudo apt install swig  python-dev python3-dev libssl-dev flex bison device-tree-compiler

で・・・この後、試行錯誤した結果、さらに以下のパッケージも必要でした。

$ sudo apt install python-pip gettext gdisk

Ubuntu 18.04の場合

Ubuntu 14.04の場合とだいたい一緒でした。

いまコンパイルして実証中です・・・(まだ結果が出ていない

2020/06/13 22:39 うーん・・・エラーだ

[100% 8/8] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
FAILED: out/soong/build.ninja
out/soong/.bootstrap/bin/soong_build -t -l out/.module_paths/Android.bp.list -b out/soong -n out -d out/soong/build.ninja.d -globFile out/soong/.bootstrap/build-globs.ninja -o out/soong/build.ninja Android.bp
Killed
22:37:24 soong bootstrap failed with: exit status 1
ninja: build stopped: subcommand failed.
#### failed to build some targets (02:38:03 (hh:mm:ss)) ####

out/soong.log の最後のあたりはこんな感じ

2020/06/13 19:59:25.251629 build/soong/ui/build/dumpvars.go:109: PRODUCT_SOONG_NAMESPACES
2020/06/13 19:59:25.252084 build/soong/ui/build/exec.go:57: prebuilts/build-tools/linux-x86/bin/nsjail [-x build/blueprint/bootstrap.bash -H android-build --cwd /home/osakanataro/GloDroid -t 0 -e --proc_rw -u nobody -g nogroup --rlimit_as soft --rlimit_core soft --rlimit_cpu soft --rlimit_fsize soft --rlimit_nofile soft -B / --disable_clone_newcgroup -q -- -t]
2020/06/13 19:59:25.326955 build/soong/ui/build/exec.go:57: prebuilts/build-tools/linux-x86/bin/nsjail [-x out/soong/.bootstrap/bin/soong_env -H android-build --cwd /home/osakanataro/GloDroid -t 0 -e --proc_rw -u nobody -g nogroup --rlimit_as soft --rlimit_core soft --rlimit_cpu soft --rlimit_fsize soft --rlimit_nofile soft -B / --disable_clone_newcgroup -q -- out/soong/.soong.environment]
2020/06/13 19:59:25.761444 build/soong/ui/build/exec.go:57: prebuilts/build-tools/linux-x86/bin/nsjail [-x prebuilts/build-tools/linux-x86/bin/ninja -H android-build --cwd /home/osakanataro/GloDroid -t 0 -e --proc_rw -u nobody -g nogroup --rlimit_as soft --rlimit_core soft --rlimit_cpu soft --rlimit_fsize soft --rlimit_nofile soft -B / --disable_clone_newcgroup -q -- -d keepdepfile -w dupbuild=err -j 2 --frontend_file out/.ninja_fifo -f out/soong/.minibootstrap/build.ninja]
2020/06/13 19:59:27.066701 build/soong/ui/build/exec.go:57: prebuilts/build-tools/linux-x86/bin/nsjail [-x prebuilts/build-tools/linux-x86/bin/ninja -H android-build --cwd /home/osakanataro/GloDroid -t 0 -e --proc_rw -u nobody -g nogroup --rlimit_as soft --rlimit_core soft --rlimit_cpu soft --rlimit_fsize soft --rlimit_nofile soft -B / --disable_clone_newcgroup -q -- -d keepdepfile -w dupbuild=err -j 2 --frontend_file out/.ninja_fifo -f out/soong/.bootstrap/build.ninja]
2020/06/13 22:37:24.168572 build/soong/ui/build/exec.go:95: soong bootstrap failed with: exit status 1

ワコムの廉価液タブWacom Oneの使えるペンとAndroid対応機種

ワコムからEMRペン採用の廉価液晶タブレットWacom Oneが出るそうで

製品ページその1
製品ページその2

ワコムの比較的廉価ラインや他社WindowsタブやAndroidタブで使われるWacom Feel IT technologysのうち、EMRペン(電磁誘導方式ペン)を採用しているとのこと。

(AESペン/ アクティブ静電結合ペンではない)

EMRペンは、ドスパラが出した 絵描き向けWindowsタブレットraytrektab とか、CES2020で発表されたAcerの絵描き向けタブレット(Acer、イーゼルヒンジ採用のクリエイター向けPCなど のクリエイター向けのConceptDシリーズ)とかで使われている。

数年前まではAESペン採用例が多かったけど、最近のワコム採用タブレットというとEMRペン採用例が多いような気がする。

Amazonで簡単に買えるあたりだと↓のような感じ

Samsungスマホ向けの以下も使えるはず。

で、今回のWacom Oneは一部のAndroidでも使えると記載されているのでどんな機種か確認・・・

画像

SamsungとHuaweiの一部のみ対応??

Androidスマホを液晶につないでパソコンみたいにつかう?

そういえば、SamsungもHuaweiもそういったオプションを提供しているぞ、と確認

HUAWEI MateDock 2対応機種

Compatible devices with the HUAWEI MateDock 2

The HUAWEI MateDock 2 is compatible with devices with USB-C and DP ports and supports wired projection. The following phone, tablet, and laptop models are compatible with the HUAWEI MateDock 2: HUAWEI P20 series, HUAWEI P30 series, HUAWEI Mate 10 series, HUAWEI Mate 20 series, HUAWEI Mate RS Porsche Design series, HONOR V20 series, HUAWEI MediaPad M6 10.8″, HUAWEI MateBook series, and HONOR MagicBook series.

Samsung Dex Station対応機種

Samsung DeX device requirements

Mobile Device: Samsung Galaxy S8, S8+, S9, S9+, and Note 8, Note 9, and Tab S4.

Samsungのリストの方はちょっと古いけど、だいたい重複している。

おそらく、Android本体のディスプレイとペンタブ部分を同時に使える機能を実装しているのは、こういった特殊なオプションを用意しているメーカ以外にはないと思うので、これから先もおそらくSamsungとHuaweiの高い機種以外での対応は増えないでしょうね。

もう1つ気になる点は、Wacom Oneとパソコンを繋ぐケーブルについて

画像

こんな感じの液タブ側はType-Cと同じ形状で、そこから3つに分かれたケーブルになり、1つは電源用USBコネクタ、1つはパソコン接続用のUSBコネクタ、1つはディスプレイ出力用のHDMIコネクタとなっている。

この形状、実は中華タブ系統では以前から見かけるものなんです。

たとえば、HUIONのKAMVAS Pro 13 GT-133/Pro 12 GT-116で使われているケーブルはこんな感じ。

画像

Type-C形状のコネクタがL型配置になっているという点も同じですね。

これ・・・もしかして、同じケーブルだったりしますかね?

ちょっと気になるところですが、単品販売が見つからないので試せないですね・・・

どうなんだろうなぁ・・・

PinePhone BraveHeart Limited Edition購入申し込み

Allwinner A64搭載のオープンハードウェア「PinePhone BraveHeart Limited Edition」の申し込みが始まったので手続きしてみた。

「BraveHeart Limited Edition」 とは「勇者の心」、意訳すると「人柱エディション」ですね。

どう人柱なのかというと、まず、発送時のハードウェアにはOSが入っていない。

先行してOS開発者向けにPinePhone Developer kitというのが2019年初頭から出回っていて、いろんなOSが開発中。

どんなOSがあるかと「Project Don’t be evil」のページを確認してみると・・・

OS名称ベース
Postmarket OSAlpine Linux
UBPortsUbuntu Touch
KDE Plasma MobileUbuntu Touch+Lineage OS/KDE
Sailfish OSMeeGo OSだけどAndroid寄りの商用
Maemo LesteMeeGo OS 
NixOSLinuxベースの関数型ディストリビューション
LunaOSpalmOSの末裔webOS
Nemo MobileSailfish OSの全てをOSS実装に?

Allwinner SoCなだけあってLinux kernelベースのものがずらりと並んでいます。

現状は基本的にUbuntuなどが稼働しているマシンにUSB接続してfirmwareを書き込むという感じになっている。

人柱エディションを卒業するまではこの初期導入の高さは抜けられないでしょう。

次に、メモリスペックが2GBというところが難点といえば難点ですが、そもそも↑であがっているOSが動くハードウェアでメモリ2GBって普通なので、まぁ・・・

PinePhoneの通信関連のスペックは下記の様になっている。

  • Worldwide, Global LTE bands
  • LTE-FDD: B1/ B2/ B3/ B4/ B5/ B7/ B8/ B12/ B13/ B18/ B19/ B20/ B25/ B26/ B28
  • LTE-TDD: B38/ B39/ B40/ B41
  • WCDMA: B1/ B2/ B4/ B5/ B6/ B8/ B19
  • GSM: 850/900/1800/1900MHz
  • WLAN: Wi-Fi 802.11 b/g/n, single-band, hotspot
  • Bluetooth: 4.0, A2DP
  • GPS: Yes, with A-GPS, GLONASS

使用されるモジュールは「Quectel Wireless EG25-G」で、メーカ製品ページには「JATE/TELEC」と技適などが取得されているような記述が・・・まぁ、アンテナ込みでの認証になるところチップのみ提供っぽいから無理なような気が・・・

ともかく到着が楽しみです

時々話題に上がるOSのメモ(AliOS,Harmony,webOS,Tizen,KaiOS) 2021/11/25

HuaweiのHarmonyOS関連をおっていたら、中国におけるIoT向け開発する場合のサイト一覧みたいなものを発見したので、その情報を追加しつつ、全体的に情報更新を実施。

中国のIoT向けサイト一覧 https://gitee.com/zhengnianli/EmbedSummary

ただ、Huawei系の人なようで、AliOSに関する記載がなかったりしている。

AliOS系統

AliOS

元々はalibabaがAndroid(AOSP)をベースにカスタマイズしたOS。「Yun OS」「Aliyun OS」といった呼び方をされていた時期もある。

公式ページ: AliOS

基本的にはGapps(Google Play Storeなど)が入っておらず、代わりにalibaba系でやってるサービスやストアが導入されている中国向けのAndroidといった感じのものになっている。

AliOS Things

AliOSのIoT向けとして作成されているOS。AliOSといってもAndroidベースではない。

公式ページ: AliOS Things
github: https://github.com/alibaba/AliOS-Things

IoT向けということで、ESP32とか、RISC-Vを使ったC-Sky SoCとかもサポートしている。

Huawei系統

LiteOS

Narrow Band IoT(NB-IoT)など向けにHuaweiが開発していたOS。これが、OpenHarmonyに発展した。

てっきり、全面OpenHarmonyに移行なのかと思ったら、2021年11月現在も更新は続いている。

公式: Huawei LiteOS(英語) / 轻量级操作系统 LiteOS(中国語)
github: https://github.com/LiteOS/LiteOS

以前は動作対象ボード一覧があったのだが発見出来ず。

HarmonyOS

「鴻蒙 OS( HongMeng OS)」とも呼ばれることがある。LiteOSはIoT向けのみだったが、その適用範囲を大幅に広げ、スマートフォンも対象に含むようだ。

最初はgithubで公開されていたがhuawei排除の波におされgiteeというサイトに移動した。

HarmonyOS 公式
HarmonyOS開発者向けサイト

ただ、Androidアプリも動くスマホなど向けのものと、IoT向けのものの区別がよく分からない。

GoogleのAndroidとAOSPみたな関係で、HarmonyOSとOpenHarmony があるようで、giteeでソースが公開されている。

gitee: https://openharmony.gitee.com/openharmony or https://gitee.com/openharmony

OpenHarmonyリリースノートからSIG_DevBoardという開発者向け基板に関する情報を見てみると、Android向けのメーカ名だけではなく、espressifなどのIoT向けのメーカ名も入っている。

いまいちここらへんの区切りがどうなっているのかよくわからない

HuaweiではARKという、AndroidでいうとART(Android Run Time)みたいなものを作成しているようで、「方舟编译器(Open Ark compiler)」というページで関連資料が公開されている。

昔からのやつら

Tizen

Samsungが開発している自社向けOS。2020/10/27にTizen 6.0がリリースされていたりしている。

Android代替のTizen Mobileということで始まっているので、スマホやタブレットでTizen OS搭載のものがリリースされたりしているが、あまり売れていないようだ。
TV向けのTizen TVやWearデバイス向けTizen Wearなどは出ている。

Tizen Wearについては2021年6月にGoogleのWear OSとの統合が発表された。(グーグルとサムスン、「Wear OS」「Tizen」を統合)

いままでAndroidベースだったWear OS by Googleを、省電力なTizenベースで構築し、その上にGoogle基盤を載せるという方向転換が行われている。

公式ページ: Tizen
ソースコード: Tizen Source

Tizen RT」というCortex-M/R SoC向けのバリエーションもあるようだが、こちらは2017/5のTizen RT 1.0以降更新がないようだ。

webOS

現在はLGが主体となって開発しているpalm webOS。
LG社のTV向けOSとして現在も開発は続けられている。(最新のwebOS TV SDK v6.0.1のリリースが2021/8で、webOS OSE v2.13.2は2021/10)

公式ページ: webOS TV Developer
オープンソースサイト: webOS Open Source Edition

ラズパイ4がwebOS OpenSource Editionの公式デバイスとして掲載されている。

kaiOS

Firefox OSのB2G部分をベースに開発が続けられているモバイル向けOS。
インドのJio社やNOKIAのフィーチャーフォンで使われており、昨日も新しいデバイスが発表されたりしている。

公式ページ: KaiOS tech
開発者向け: KaiOS Developer
github: https://github.com/kaiostech

元々はFirefox version 59をベースに開発を進めていたが、2020年のMozillaと提携して、更新を行っているようだが、それを反映したKaiOSは2021年11月時点でも製品に搭載されていない模様。

mozilla wikiにも「KaiOS」というページが出来て、構築手法の紹介がされている。