Google ChromeOS FlexをSurface Go(初代)にインストール (外付けWi-Fiアダプタでインストール、その後内蔵Wi-Fiへ切り替え)

## 概要

:::note alert
2025/5/4 現在、chromeOS Flex は `cros_debug` スイッチをつけても開発者モードにできないため、ドライバーのインストールができません。

回避策は無い模様。
:::

Google ChromeOS Flexは、インストール時からネットワーク接続が必要です。しかし、標準ではSurface Go の内蔵Wi-Fiを認識できないため、インストールすらできません。
Chrome OS Flexは、外付けのネットワークアダプタは認識可能です。そこで、**外付けネットワークアダプタを利用してインストールを行い、その後内蔵Wi-Fiに切り替える手順**です。
![PXL_20221001_142236488.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22754/86d244f4-b2c9-186b-2a3d-22474aa73112.jpeg)
ちなみに、ChromeOS Flexのディスクイメージに対して、[他OS(Linux Mint)からWi-Fi認識に等に必要なパッケージを先にインストールしてから起動させる方法](https://www.rgm79sf.site/?p=3793)もあるようです(私は未確認)。

## 必要なもの

- [Google ChromeOS Flex で必要なもの](https://support.google.com/chromeosflex/answer/11552529?hl=ja&ref_topic=11551271#:~:text=%E5%BF%85%E8%A6%81%E3%81%AA%E3%82%82%E3%81%AE)
- キーボード
    - Surface用のキーボードである必要はありません。USBキーボードでも良いです。ChromeOS Flexはタイプカバー&キーボードが一番良いと思います。
- USBハブ
    - USB ドライブと、外付けネットワークアダプタ(キーボード分も考慮)が同時に使えればOKです。
    - 例: [ドッキング USB Type C ハブ](https://www.amazon.co.jp/dp/B094N6XBKD)
- 外付けネットワークアダプタ
    - 例: [USB Wi-Fi アダプタ](https://www.amazon.co.jp/dp/B00JTSF7DY/)
- USBドライブ
    - ChromeOS Flex を開発者モードにするためのgrub.conf編集用です。ChromeOS Flexインストール後に不要となったUSBドライブの流用も可能ですが、別に用意しておいた方が楽でしょう。

## やっておいた方がいい事

- [自分用の USB 回復ドライブの作成](https://support.microsoft.com/ja-jp/surface/surface-%E3%81%AE-usb-%E5%9B%9E%E5%BE%A9%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E4%BD%BF%E7%94%A8-677852e2-ed34-45cb-40ef-398fc7d62c07#bkmk_create_usb_recovery11#:~:text=%E8%87%AA%E5%88%86%E7%94%A8%E3%81%AE%20USB%20%E5%9B%9E%E5%BE%A9%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E4%BD%BF%E7%94%A8) (ChromeOS FlexからWindows戻す時に使います)
    - 任意ですが、あると安心ですね。

## 手順

#### ChromeOS FlexのUSBドライブを作成

[Chrome OSFlex インストール ガイド](https://support.google.com/chromeosflex/answer/11552529?hl=ja&ref_topic=11551271)

#### ChromeOS FlexのUSBドライブで起動

[USBドライブからSurface Goを起動](https://support.microsoft.com/ja-jp/surface/usb-%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%8B%E3%82%89-surface-%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B-fe7a7323-8d1d-823d-be17-9aec89c4f9f5)

> Surface の音量を下げるボタンを長押しします。 これを行っている間に、電源ボタンを押して離します。
> Microsoft または Surface のロゴが画面に表示されます。 音量を下げるボタンを押したままにします。 ロゴの下に回転する点が表示されたら、ボタンを離します。

起動対象のUSBドライブ名は「Linpus Lite」です。

#### ChromeOS Flexをインストール

「ネットワークへの接続」の表示で外付けネットワークアダプタを接続すると、ネットワークが認識できます。"試す" でも、試すことが可能です。先に試してみてもいいかもしれません。

インストール自体は画面の指示に沿って行えば OK です。

## ChromeOS Flex へドライバーをインストールする

ChromeOS Flex へ、Surface Go が使用している Wi-Fi チップ※向けドライバーをインストールします。
※ https://yukineko.me/archives/1076 によると Qualcomm Atheros QCA6174)

#### ChromeOS Flexで開発者モードを有効にする

##### Live Linux が入ったUSBドライブを準備 (私は [SystemRescue](https://www.system-rescue.org/) を使いました)

##### Surface Go をシャットダウンし、Surface UEFI を起動 (Secure Boot = Disable)

[Surface UEFI への入り方](https://support.microsoft.com/ja-jp/surface/surface-uefi-%E3%81%AE%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95-df2c8942-dfa0-859d-4394-95f45eb1c3f9)

* Surface の音量を上げるボタンを長押しして、同時に、電源ボタンを押して離します。
    * > Microsoft または Surface のロゴが画面に表示されます。 音量を上げるボタンを長押しします。 UEFI 画面が表示されたら、ボタンを離します。

* Surface UEFI > Security > Secure Boot → Disable に変更します。
* Surface UEFI > Exit > Restart now → 再起動します。

##### Live Linux を起動

※ UEFI の再起動直後に「Surface の音量を下げるボタンの長押し」で、すぐ Live Linux が起動できます

[USB デバイスから Surface を起動する](https://support.microsoft.com/ja-jp/surface/usb-%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%8B%E3%82%89-surface-%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B-fe7a7323-8d1d-823d-be17-9aec89c4f9f5)

* Surface Go の USB ポートに Live Linux が入った USB ドライブを差します。
* キーボードを Surface Go に接続します。
* Surface の音量を下げるボタンを長押しします。 これを行っている間に、電源ボタンを押して放します。
    * > Microsoft または Surface のロゴが画面に表示されます。 音量を下げるボタンを押し続けます。 ロゴの下に回転するドットが表示されたら、ボタンを離します。
* Live Linux を起動します。

##### Chrome OS Flex の開発者モードを有効にする

[Chrome OS Flex の開発者モードを有効にする](https://yukineko.me/archives/1065)

```bash
sudo fdisk -l | grep 'EFI System' | cut -d ' ' -f 1
#=> /dev/mmcblk*p**
sudo mount $(sudo fdisk -l | grep 'EFI System' | cut -d ' ' -f 1) /mnt
sed -i 's/noinitrd console=/noinitrd cros_debug console=/' /mnt/efi/boot/grub.cfg
sudo systemctl reboot
```

<details><summary>自分用スクリプト</summary>
```bash
mount /dev/sdb1 /mnt
sh /mnt/0_enable_devmode.sh
systemctl reboot
</details>

##### Surface Go をシャットダウンし、Surface UEFI を起動 (Secure Boot = Enable)

※ Live Linux の再起動直後に「Surface の音量を上げるボタンの長押し」で、すぐ UEFI が起動できます

* Surface の音量を上げるボタンを長押しして、同時に、電源ボタンを押して離します。
* Surface UEFI > Security > Secure Boot → Enable に変更します。
* USB ドライブを抜きます（抜いておかないと "Security Boot Fail" となり、ChromeOS Flex が起動できません）
* Surface UEFI > Exit > Restart now → 再起動します。

##### ChromeOS Flex 上で無線 LAN ドライバをインストールする

手順は「[Chrome OS Flexに無線LANドライバを突っ込んでWiFi (とBluetooth)を使えるようにする](https://yukineko.me/archives/1076)」の通りです。

* `Ctrl+Alt+T` で crosh を起動して `shell` コマンドでシェルを開きます。



内蔵Wi-FiとBluetoothが使えるようになったChromeOS Flexをお楽しみください。

### ハードウェアの対応状況

| ハードウェア | 結果 |
|-------------|-----|
| タイプカバー&キーボード | 標準で動作するが、右クリックが動作しない(対策後述) |
| タッチパネル | ✓ 標準で動作 |
| タブレットモード時の画面回転 | 不具合あり(対策後述) |
| 内蔵スピーカー | ✓ 標準で動作、Surface Go 本体の音量ボタンも動作 |
| 内蔵マイク | ✓ 標準で動作 |
| 内蔵カメラ | 動きません |
| 内蔵 Wi-Fi | ✓ 本手順で動作 |
| 内蔵 Bluetooth | ✓ 本手順で動作 |
| スタイラスペン | ✓ 本手順で動作 |
| USB Type-C 給電 | ✓ 標準で動作 |
| [スリープ](https://support.google.com/chromebook/answer/3420029?hl=ja)復帰 | ✓ 標準で動作 | 

注意点や対策:

- **タイプカバー&キーボードのタッチパッドの右クリック**
    - タッチパッドボタンの右クリックは動作しません。
    - **対策:** 二本指でのタップをすれば右クリックとして使えるので、実用上は問題ありません(左クリックは動くのにね)。
- **タブレットモード時の画面回転の不具合**
    - タイプカバー&キーボードを外すとタブレットモードになりますが、画面の上下が逆転します。おそらく加速度センサーの値を逆転読みしてるんだろうな。
     ![output.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22754/af762b27-3a5f-66b9-4105-d4b5bbbbaa58.gif)
    - **対策:** タブレットモードで希望する方向に向けたら、右下時計をタップして「ロック」で固定すれば、とりあえずは使えます(内部的には上下逆転なんでしょうけど)。ログアウト後/再起動後も方向を覚えててくれるようです。

- **内蔵カメラ**
    - カメラが動きません。どうにもならん。そのたｍ顔認証(バイオメトリクス認証)も不可能です。ログインには Google アカウントのパスワード、画面ロック解除には[PINの設定](https://support.google.com/chromebook/answer/2587994?hl=ja)が可能です。こういった背景からも、キーボードはあったほうが良さそうです。

## 使用感と今後の運用

当該ドライバのライセンスについて当方では未確認です。技術的に動いたという記録としてご覧ください。

Windows 10/11 より動作がかなり軽快です。Google Chromeさえ使えれば良い方向けとしては、とても良い端末となりえます。ただ、内蔵カメラが動かない事、あとはタブレットモード時の画面回転判定に不具合があるのは、やはり対応機種では無いが故の問題でしょう。

最後にアップデート時の挙動です。ChromeOS Flex アップデート時に、入れ替えたドライバがどうなるかは不明です。アップデート後に内蔵Wi-Fiを認識しなかったら、同様の手順で入れ替えが必要でしょう。

SurfaceシリーズはChromeOS Flexとの相性が良さそうなので、正式対応いただけると嬉しいと切に思います。

EoT