LinuxとChromeOSのデュアルブート環境を構築しましょう。


# ChromeOS
Manjaro Linuxを使っていて、空いたパーティションにChromeOSを導入し、デュアルブート環境を構築する手順を説明します。
ここで導入できるChromeOSは公式サポートは受けられませんので、自力で問題解決できる方のみ、ご参考にしてください。

## Brunch Toolkit
下記レポジトリで、Brunch Toolkit[^2]のURLの取得部分などを修正したものをアップしました。

https://github.com/phoepsilonix/brunch-toolkit
[^1]
Brunch Toolkitを用いれば、Arch系またはUbuntu系でChromeOSの導入作業を補助してくれます。

```sh
losetup -l -n | cut -d" " -f1 | xargs sudo umount
losetup -l -n | cut -d" " -f1 | xargs sudo losetup -d
losetup -l -n | cut -d" " -f1 | xargs sudo umount
```
```sh
mkdir -p ~/tmpmount
git clone --depth 1 https://github.com/phoepsilonix/brunch-toolkit
cd bruch-toolkit
bash brunch-toolkit
```

## LinuxLoops

https://github.com/sebanc/linuxloops


https://github.com/sebanc/brunch/blob/main/Readme/install-with-linuxloops.md


さまざまなLinuxやChromeOSなどのイメージをディスクにインストールする試みです。
ディスクまたはイメージファイルの形式でインストールできます。
対話形式なので、容易に導入できます。
コマンドオプションを指定しても導入可能です。
ChromeOSをインストールする場合には`Brunch`を選んでください。
特定のパーティションにインストールしたい場合には、そのパーティションをフォーマットしておいて、そこにディスクイメージのファイル形式でインストールする形にすれば良いかと思われます。
Grubの更新手順は、最後にメッセージが表示されるので、それをコピーして、ターミナルで実行すればOKです。

```sh
sudo pacman -S zenity
curl -L https://raw.githubusercontent.com/sebanc/linuxloops/main/linuxloops -O --create-dirs --output-dir ~/bin
sudo bash $HOME/bin/linuxloops -l
sudo bash $HOME/bin/linuxloops
```
Stable/ShyvanaのRecoveryImageの例
```sh
losetup -l -n | cut -d" " -f1 | xargs sudo umount
losetup -l -n | cut -d" " -f1 | xargs sudo losetup -d
losetup -l -n | cut -d" " -f1 | xargs sudo umount
```
```sh
sudo bash $HOME/bin/linuxloops -distro Brunch -ver Stable -env Shyvana -dst /dev/sdX -s 64
```

### セキュアブート
```sh
sudo pacman -S mokutil
sudo mokutil --import <image_path>/<image_name>.img.der
```

## 手動での導入手順
手動で、導入する場合は、下記を参照してください。
[Install Brunch with Linux](https://github.com/sebanc/brunch/blob/main/Readme/install-with-linux.md)

上記の手順通りにするのですが、環境によって若干、前提として必要なパッケージ名が違ったりしますので、その辺りの差異を吸収するための日本語で一部翻訳した手順書です。

  ***
 
# デュアルブート環境の構築
### 前提条件
- Root権限を持つLinux環境があること。
- インストール用に16GB以上のext4またはNTFSのパーティションを用意できること。
- `pv`, `tar`, `unzip` and `cgpt`の４つのプログラムをインストールすること。
- Linuxの起動にGrub2を使っていること。


### リカバリイメージのダウンロード
1. 自分の使っているPCにあったリカバリイメージをダウンロードする必要があります。

#### Intel
* ["shyvana" for 4th gen -> 9th gen.](https://cros.tech/device/shyvana)
* ["jinlon" for 10th gen.](https://cros.tech/device/jinlon)
* ["voxel" for 11th gen & above.](https://cros.tech/device/voxel)
#### AMD
* ["gumboz" for Ryzen.](https://cros.tech/device/gumboz)

上記のリンクから、見つけることができます。[cros.tech](https://cros.tech/)に移動し、適切なリカバリイメージをダウンロードしましょう。

### brunchプログラムの入手
 brunchプログラムの入手は次のgithubのサイトから行ってください。[releases tab](https://github.com/sebanc/brunch/releases)
 最終版を入手するのがベターです。 [latest release](https://github.com/sebanc/brunch/releases/latest)

### インストールに必要なプログラムを用意する
* 現在、vboot-utilsがビルドできないようなので、代替手段で、cgpt-binパッケージを導入します。
* またrootdevコマンドも導入しておきます。
Manjaroで端末を開き、
```sh
sudo pacman -S pv tar unzip --needed
yay -S cgpt-bin chromeos-rootdev-git
tar zxvf brunch_filename.tar.gz
unzip chromeos_filename.bin.zip
```

### インストール先パーティションの用意
パーティションの状況確認をします。
```
lsblk -e7
```
Gpartedなどを用いて、最低14G、できれば64G,128G,256Gの空きパーティションをChromeOS用に用意しましょう。ファイルシステムはext4またはNTFSを選びます。

### インストール先パーティションをマウントする
仮のマウント先を作成します。
```
mkdir -p ~/tmpmount
```

partの部分は```lsblk -e7```で出てくる自分で用意したインストール先パーティションの名前を入れてください。
```
sudo mount /dev/part ~/tmpmount
```

### インストール手順
すでにマウントされているloopbackデバイスがあれば、それらを取り除きます。
```sh
losetup -l -n | cut -d" " -f1 | xargs sudo umount
losetup -l -n | cut -d" " -f1 | xargs sudo losetup -d
losetup -l -n | cut -d" " -f1 | xargs sudo umount
```

chromeos-install.shはgithubのbrunchのリリースファイルを展開したら存在します。
chromeos_filename.binの部分はリカバリイメージをunzipしたファイル名です。
dstはそのまま変更しないでください。ChromeOSのストレージサイズを64Gにする場合。
```sh
sudo ./chromeos-install.sh -src chromeos_filename.bin -dst ~/tmpmount/chromeos.img -s 64
```

### Grubの設定追加

ChromeOSをgrubから起動できるように、ファイルを準備します。
```sudo cp /etc/grub.d/40_custom /etc/grub.d/99_brunch```

ChromeOSをgrubから起動するための設定は、
~/tmpmount/chromeos.img.grub.txtにあります。
この設定を99_brunchに追加します。

```sudo nano /etc/grub.d/99_brunch```
99_brunchファイルを編集して、上部の数行書かれている行は、そのまま残しておいて、その下側にchromeos.img.grub.txtの内容をそのまま転記します。

コマンドで行うには、こんな感じ?
```
sudo cp /etc/grub.d/40_custom /etc/grub.d/99_brunch
cat ~/tmpmount/chromeos.img.grub.txt | sudo tee -a /etc/grub.d/99_brunch
```
または、
```
sudo cat /etc/grub.d/40_custom ~/tmpmount/chromeos.img.grub.txt | sudo tee /etc/grub.d/99_brunch; sudo chmod 0755 /etc/grub.d/99_brunch
```

### Grubの更新
```
sudo update-grub
```
または
```
sudo grub-mkconfig -o /boot/grub/grub.cfg
```
  
### インストール先のパーティションをアンマウント
```
sudo umount ~/tmpmount
```

### セキュアブート
セキュアブートに対応させたい場合には、次のコマンドを使います。
```
sudo mokutil --import brunch.der
```

### 終わりに
以上で、再起動するとGrubのメニューにbrunchとbrunch Settingのメニューが追加されているかと思います。そのメニューから起動すると、初回起動は時間がかかりますが、ChromeOSが起動します。

ChromeOSには、Google Play Storeに魅力的なアプリがあるので、Manjaro Linuxと切り替えて使うのも、良いのではないでしょうか？
ただChromeBookと違い、機種との相性（ハードウェア構成の違いのため）で、マウスやタッチパッド、あるいはサウンド関係などで動作が怪しい場合があるようです。brunch settingで、設定を調整することで、改善される場合もありますが、難しい場合もあるかもしれません。

[Manjaro-jp](https://manjaro-jp.phoepsilonix.love/)も、よろしくお願いいたします。
(GPG signing public key:536487F1470D7187)

1F9BNxvoBfxYm4E1PqF6J9FYqyCtLypdP

### その他、参考サイト
[Xユーザーのrfriendsさん: 「Windows環境にchromeOSを追加してマルチブートに。 &quot;Windows chromeOS マルチブート&quot;で検索するとたくさん出てきますが、少々古い物が多く、以下のサイトがお勧め。 Chrome OS をダウンロードしてインストールする方法【Window 10/11】 https://t.co/A80hbibusU #Windows #chromeOS #マルチブート」 / X](https://x.com/rfriends2017/status/1784136171200950344)
[Chrome OS をダウンロードしてインストールする方法【Window 10/11】 - MiniTool Partition Wizard](https://www.partitionwizard.jp/partitionmagic/install-chrome-os-on-windows.html)
[shrikant2002/ChromeOS: Chrome OS Easy Installation Scripts](https://github.com/shrikant2002/ChromeOS)

[^1]: https://github.com/phoepsilonix/brunch-toolkit
[^2]: https://github.com/WesBosch/brunch-toolkit