ManjaroのGRUBに他のOSを手動で追加する方法。

PCを起動したときに出てくる、OSを選ぶデュアルブートの画面のことです。
今回はManjaroをメインのOSとしています。
サブのOSとして、UbuntuならばGRUBが自動で認識して選択肢に追加してくれたのですが、BatoceraやLibreELECは自動追加に対応してくれなかったので、自分で入れる必要がありました。

Dolphinにて「/etc/grub.d」フォルダを開き、GRUBに追加したいそれぞれのOSに対応したファイルをここに作成していきます。
ファイル名の冒頭の2桁の数字が、GRUBにおける並び順になります。manjaroが10になるので、それに続く形として今回は、batoceraを11、libreelecを12としています。

#!/bin/bash

cat << EOF
menuentry "BATOCERA" {
      search --set=root --label BATOCERA
      linux /boot/linux label=BATOCERA console=tty3 quiet loglevel=0 vt.global_cursor_default=0
      initrd /boot/initrd.gz
}
#!/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 "LibreELEC" {
	set root=(hd1,1)
	linux /KERNEL boot=/dev/sdb1 disk=/dev/sdb2 quiet
}

上記のコードは一例です。環境に応じて書き換えてください。

/etc/grub.dフォルダ内はroot権限がかかっているので、コンソールからsudoでなければ新規ファイルを作成できません。
おそらくviで作成することになると思いますが、一般的なテキストエディタしか使ったことがなければかなり操作が複雑だと思うので、とりあえず内容が空のまま、すぐさま「:wq」で空ファイルを作成していったん閉じるのが良いかと。
そしてそのあと使い慣れたkateでファイルを開いて、内容を追記しましょう。
Manjaroのkateだったら、root権限ファイルであっても保存時にパスワード入力すれば保存可能なので楽ちん。Ubuntuのgeditはそれをさせてくれないのがめんどくさい…。

GRUB_TIMEOUT_STYLE=menu

「/etc/default/grub」ファイルを開いて、上記の行を入力しておきます。
menuにしておかないと、そもそもGRUBが表示されずいきなりManjaroが起動してしまいます。

sudo update-grub

最後にコンソールにて、上記コマンドを実行すれば完了です。


GRUBにてサブOSを選択したときに、まれに「/KERNELが見つかりません」みたいなエラーが表示されて起動できないことがあります。
そのときはいったんManjaroを起動してから、再起動してGRUBに戻ってきたらサブOSも起動できるようになることがあります。
そもそものエラーの発生原因はよくわからない。頻度も多くないので後回し。


他のOSを10に近い番号に指定していても、冒頭の画像のようにGRUBのうえではManjaroのすぐ下に「Advance Option」とかいう余計な項目が挟まってしまいます。
「10_linux」ファイルを編集すれば消せないこともないのですが、つい先日のManjaroアップデートで元に戻されてしまいました。よって完璧な対処方とは言えません。