LinuxとChromeOSのデュアルブート環境を構築しましょう。
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
andcgpt
の4つのプログラムをインストールすること。 - Linuxの起動にGrub2を使っていること。
リカバリイメージのダウンロード
- 自分の使っている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
Discussion