Gentoo(メイン)とUbuntu(サブ)をデュアルブートするときの話
・注意
説明を書きますが、現時点の私の知識で裏付けが取れているわけではないので、多少間違ってるところもあるかもしれません。
間違いがある場合ご容赦ください。
現状私のマシンでは下記の設定で動いてるので、そういう状況証拠的な話として受け止めてください。
マシンは、MacBookAir3.1(2010)でMacなのでUEFIです。
・構成について
今回書くのは以下のような構成の場合の話です。
/dev/sda1 BIOS bootパーティション(Macの場合空けといたほうが良いらしい)
/dev/sda2 bootパーティション
/dev/sda3 swapパーティション
/dev/sda4 Gentoo本体
/dev/sda5 Ubuntu本体
先にGentooをインストールしてから、UbuntuインストールディスクのマネージャーにしたがってUbuntuを追加で入れたような状態です。(Ubuntuの導入方法まで書かなくていいよね?)
・いきさつ
Ubuntuなので、自動で勝手にgurbまでやってくれて自動でデュアルブート環境が出来ていたのですが
当環境は、MacBookAirなのですが、電源ボタンを押すとpeep音が鳴り止まないという怪奇現象(有名なやつ)が起こりました。
手順に従い、SMCリセット、NVRAMリセットを行いました。
peep音は鳴らなくなり一見落着したのですが、
grubの画面がUbuntu導入前に戻ってしまい、Ubuntuがブートできなくなってしまいました。
まあUbuntuだし、どうでもええわ
と思いましたが、GentooとUbuntuのmikutterの比較で使うために環境は整えてる状態なのでまた1からやり直すのは面倒だということで、Ubuntuを復旧させることにしました。
元々レガシーなgrub.confの時代にWindowsとGentooのデュアルブートをしていたので、そのときのやり方ならわかるのですが今の時代はgrub2でgrub.cfgになり設定が変わっていたので結構ハマりました。
・grub2によるマルチブート
/dev/sda2でgrubを立ち上げ、そこから/dev/sda4のGentooと/dev/sda5のUbuntuを立ち上げると言う具合でマルチブート出来るようにします。
ブート関連のオプションを追加する際は、/etc/grub.d/40_customと言うファイルに情報を追記していきます。
メインがGentooなので、/dev/sda4のGentooの/etc/grub.d/40_customを追記しました。(多分メインが逆の場合は逆でしたほうが良いと思います)
デフォルトの状態だと、
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
と書かれていると思います。
ここの下に追記して、ブートを増やしていきます。
とりあえず、具体的な追加内容は以下のとおりです。
menuentry "Ubuntu"{
insmod part_gpt
insmod ext2
set root='(hd0,gpt5)'
linux /boot/vmlinuz-4.13.0-45-generic root=/dev/sda5
initrd /boot/initrd.img-4.13.0-45-generic
}
ざっと説明すると下記のとおりです。
・menuentry
表示名
・insmod
gpt形式とext2ファイルフォーマットを指定している。
多分この部分がなくても起動できると思います。
・set root
ここでは、/dev/sda5をブート対象としてます
(hd1,gpt4)にすると、/dev/sdb4になります。
今回は、gpt形式なのでこのような書き方をしていますが、(hd0,5)でも通る気がします。
・linux /boot/vmlinuz-4.13.0-45-generic root=/dev/sda5
Ubuntuの/boot/ディレクトリにある同じような名前のファイルを指定してあげてください。
root=の部分については、自分にあったものを指定してください
・initrd /boot/initrd.img-4.13.0-45-generic
これも上記と同じで、指定するだけです。
この2つのファイルを指定することで、ブートすることが出来るようです。
そこらへんはまだ勉強不足なので詳しく分かり次第また別の記事で書くと思います。(多分書かない)
上記内容を追記できたら、
# grub-mkconfig -o /boot/grub/grub.cfg
で内容反映させます。
最終的にこのgrub.cfgに反映させるのですが、基本的にこのファイルを直接触るのではなく今回変更した40_customのようなファイルだけを編集するようにしてください。
そこが、grub.confの時代と感覚が異なる気がします。
rebootすれば、Gentooの下にUbuntuが出てきてUbuntuでもブート出来るようになるはずです。
※備考
/etc/default/grub のオプションもちょっと変更しました。
必要なことだったかもしれません。確認取れれば追記します。