🐧

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

2022/04/26に公開

ChromeOS

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

Brunch Toolkit

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

Brunch Toolkitを用いれば、Arch系またはUbuntu系でChromeOSの導入作業を補助してくれます。

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
mkdir -p ~/tmpmount
git clone --depth 1 https://github.com/phoepsilonix/brunch-toolkit
cd bruch-toolkit
bash brunch-toolkit

LinuxLoops

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

sudo pacman -S zenity
curl -L https://raw.githubusercontent.com/sebanc/linuxloops/main/linuxloops -o ~/linuxloops
sudo bash ~/linuxloops

Stable/ShyvanaのRecoveryImageの例

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
mkdir -p ~/tmpmount
sudo mount /dev/sdX ~/tmpmount
sudo bash ~/linuxloops -distro Brunch -env Stable/Shyvana -dst ~/tmpmount/chromeos.img -s 64

セキュアブート

sudo pacman -S mokutil
sudo mokutil --import <image_path>/<image_name>.img.der

手動での導入手順

手動で、導入する場合は、下記を参照してください。
Install Brunch with Linux

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


デュアルブート環境の構築

前提条件

  • Root権限を持つLinux環境があること。
  • インストール用に16GB以上のext4またはNTFSのパーティションを用意できること。
  • pv, tar, unzip and cgptの4つのプログラムをインストールすること。
  • Linuxの起動にGrub2を使っていること。

リカバリイメージのダウンロード

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

Intel

AMD

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

brunchプログラムの入手

brunchプログラムの入手は次のgithubのサイトから行ってください。releases tab
最終版を入手するのがベターです。 latest release

インストールに必要なプログラムを用意する

  • 現在、vboot-utilsがビルドできないようなので、代替手段で、cgpt-binパッケージを導入します。
  • またrootdevコマンドも導入しておきます。
    Manjaroで端末を開き、
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デバイスがあれば、それらを取り除きます。

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にする場合。

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も、よろしくお願いいたします。
(GPG signing public key:536487F1470D7187)

1F9BNxvoBfxYm4E1PqF6J9FYqyCtLypdP

脚注
  1. https://github.com/WesBosch/brunch-toolkit ↩︎

Discussion