タッチパネル一体型業務向けPC MSI-R104I8BD1を入手したのでWindows/Ubuntu/ChromeOSで起動してみた


sueboさんがうっかり落札してしまった14台のタッチパネル一体型PCを2台譲ってもらった。

現状は全台はけた、ということですが、この機種およびマザーボードについてぐぐっても情報がほとんど出てこないので、ここにメモとして残しておきます。

目次
 スペックについて
 中をあける方法
 USBメモリからの起動について
 Windows 10の起動状況
 Ubuntu 20.04の起動状況
 ChromeOSの起動状況
 BIOSアップデートについて

スペックについて

マザーボードはMSI MS-98I8 で、この一体型PCは下記の様なスペックになっている。

Celeron N3160
DDR3x1 / Mini-PCIex1 / mSATAx1 / SATAx1 / DPx1 / HDMIx1 / GbEx2
10インチ SVGA(800×600)+タッチパネル
Windows 10 IoT Enterprise 2016 LTSB ライセンスシール
メモリ/ディスクは搭載なしだが、CF/SATA変換ボードと2.5インチHDD接続用ケーブルが残存
電源は12V単一。一般的なコネクタではなく電線を直接入力するタイプ
ただ、マザーボード自体の仕様としては9V~36Vと書いてある

中をあける方法

抜けたりするのを防ぐため中のケーブルのコネクタ部分が固められています。

とりあえず中身を確認するためには、下記のような感じで開けてみてから、その次をどうしていくかを考えた方がいいと思います。

画像

このような感じであけるには以下の赤い丸印のネジを外します。

画像
画像
画像

中をあけたらメモリとディスクなどをいれて単体で動作できるようにしましょう。

USBメモリからの起動について

BIOSメニューからUSBメモリを選んでもなんか普通のマザーボードと同様にUSBメモリからの起動になりません。(後述のWindows, Ubuntu, ChromeOSで同じ)

起動順序を「UEFI: Built-IN EFI Shell」を一番最初にして起動します。

画像

EFI Shellが起動してくるので、何かキーを押してEFI Shellプロンプトで止めます。

画像

今回はUSBメモリが「fs1」で認識されていたので「fs1:」でドライブを移動したあと、

「efi\boot\bootx64.efi」を実行するとUSBメモリからの起動が開始されます。

下記の写真では「cd efi」「cd boot」でディレクトリ移動してから「bootx64.efi」を実行しています。

画像

なお、このEFI Shellはタブキー補完が効くのでefiを指定する際に「e」を入力したあとにタブキーを押すと「efi」と変換されます。

また、fs1:で移動した後にそこにどんなディレクトリ/ファイルがあるかを確認するには「ls」を実行することで確認出来ます。

なお、USBメモリに startup.nsh というファイルを置いて、「.\efi\boot\bootx64.efi」とかかいておけば自動起動されるんじゃないかなぁとは思います。

参考:拡張ファームウェアインターフェイス (EFI) インテル®の基本手順サーバーボード

Windows 10の起動状況

Windows 10 IOT ENT 2016 LTSBのプロダクトキーがついていますが、このプロダクトキーが通るのは、「Windows 10 IOT ENT 2016 LTSBメディア」か「Windows 10 ENT 2016 LTSB」だけのようです。「Windows 10 Enterpriseメディア」や「Windows 10 Enterprise 2019 LTSCメディア」では通りませんでした。

「Windows 10 IOT ENT 2016 LTSBメディア」を含めて2016年頃のWindows 10メディアだとデバイスが2個△マークとなりますが、タッチパネル/イーサネット含めて動作しています。

2017年以降のWindows 10 メディアを使ったり、Windows Updateを実行すると、全デバイスが正常に認識されますので、問題はありません。

画像

なお、Windows 10 IOT ENT 2016 LTSBのプロダクトキーを入力してライセンス認証を行った場合、「Windows 10 Enterprise 2016 LTSB」として認識されています。

画像

なお、Windows 10 Enterprise 2016 LTSBのライフサイクル ポリシーはメインストリームが2021/10/12、延長が2026/10/13となっています。

画像

Ubuntu 20.04の起動状況

普通にインストールすると、タッチパネル用のドライバが認識されているもののX-Window上でタッチパネル動作を認識できていません。

画像
画像

この問題についてはxserver-xorg-input-evdevをインストールして、xserver-xorg-input-libinputを削除して対応できました。(xinput-calibratorはタッチパネルの位置調整用コマンドxinput_calibratorをインストールするために追加している)

$ sudo apt install xserver-xorg-input-evdev xinput-calibrator
$ sudo apt remove xserver-xorg-input-libinput

これを行った後、再起動するとタッチパネルが動作するようになっていると思います。

画像

Ubuntuのオンスクリーンキーボードは、「設定」の「アクセスビリティ」から設定できますが、最初のログイン画面では動いていないようです。

とりあえず、自動ログインさせてログイン画面をスキップする設定をGUIで行おうとしたところ画面が表示できていない・・・

画像

このため設定ファイル /etc/gdm3/custom.conf を直接編集し、下記の設定を行いました。

[daemon]
AutomaticLoginEnable=yes
AutomaticLogin =ユーザ名

ChromeOSの起動状況

純正ChromeOSのリカバリイメージを元に汎用ChromeOS起動ディスクを作成するbrunchを使ってUSBメモリを作成して起動したもの。

rammus用リカバリイメージを元に作成してあるUSBメモリがあったので起動してみたところ、標準状態でそのままタッチパネルもLineOUTからのオーディオ出力も普通に使える状態で起動してきました。

画像

ただ、Chrome OSは、800×600解像度で使うものではない感じですね・・・


BIOSアップデートについて

マザーボードの製品ページを開いて少しスクロールすると上側に「Download」リンクが現れ、そこにBIOSアップデートが提供されており、Version 170と書いてある。

ZIPファイルをダウンロードするとバージョンアップ履歴のテキストファイルがあり、Version 170とは、E98I8IMS V1.7ということのようだ

画像

届いたものを確認すると E98I8IMS V1.6となっているので、少し古いバージョンということになっている。

画像

BIOSアップデータはEFIで実行する形式なので、EFI Shellから実行する必要があります。

EFI ShellではFAT32領域しか見れず、NTFSやLinux ext4領域などは使えない、という制約があるので、FAT32でフォーマットしたUSBメモリにBIOSアップデート関連ファイルを展開して使用します。

USBメモリをさして、EFI Shellに入ってから下記のように入力してアップデートを実施します

Shell> fs1:
fs1:\> cd E98I8IMS170
fs1:\> EFUx64.EFI E98I8IMS.170
画像
画像

アップデートが終わったら再起動します。

バージョンを確認するとV1.7に変わったことが確認できます。

画像

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

画像

この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$