Heijastin

Migrate from Legacy to Grub2

Gentoo の Grub2 正式移行に伴い遅ればせながら。

Grub2 自体は Eee PC 1015PD に導入している Arch Linux などで触れていたが、生活環境となると話は別。個人設定の方法を学びつつ、なんとか Grub Legacy と同じ感覚で使えるようになった。比べるまでもなく Grub2 は遥かに手軽、これは凄い!

Grub2 の大きな強み

Grub2
Grub2

コマンド一発で設定ファイル grub.cfg を自動生成。新規 Kernel compile 後、コマンドを打ちさえすれば Grub 設定ファイルに項目が自動追記されるのだ。Gentoo のように Kernel Release が頻繁にある Distro では、めちゃくちゃ助かる。UUID を使用するので、ディスクの位置変更を行っても Bios をいじることなく Boot 可能。root の Path 間違いによる Kernel Panic とも永遠におさらばだ。おまけに Chainload 可能な OS を自動追加してくれるので、最近挿した Linux Mint 15 の HDD もしっかり Boot 可能項目に加えられた。Grub Legacy の時は Chainload の方法がわからずに、いちいち Bios から F11 key を押して Boot Disk を選択していた…ありがとう Grub2 移行して良かった!

grub.cfg の自動生成

Gentoo Wiki の GRUB2 Migration を参照。grub.cfg の生成コマンドは長いので、僕は Alias 登録でもしておかないと記憶出来ない。なお Alias は Reboot すると解除されてしまうので、継続利用には .bashrc への追記が必要。余談だが update-grub は Debian 発祥だそうだ。

# alias update-grub='grub2-mkconfig -o /boot/grub/grub.cfg'

/etc/default/grub の編集

Gentoo Handbook Configuring the bootloader を参照。Grub Legacy での grub.conf しか知らなかった僕は「設定ファイルの自動生成」に一抹の不安を抱いていたのだが…まったくの無知から来る偏見だった。Option を追加する時は /etc/default/grub を編集すれば良い。これで自動生成の度に、各 Option 項目が付与されるようになる。

GRUB_CMDLINE_LINUX

重要項目。Kernel に渡す Parameter を記載する。Grub Legacy に記載していた内容をそのままコピペすれば良いので、僕のような初心者にも優しい。僕は FHD display を使用しているが Nivida driver を選んでいるので Maximum dimension は 1280×800 になってしまう。もちろん Nouveau driver を選べば FHD 表示が可能。

GRUB_CMDLINE_LINUX="video=uvesafb:mtrr:3,ywrap,1280x800-32"

X Window System なしで起動する時は以下の Parameter を渡す。必要とする機会が少なく、つい忘れてしまうので覚書。

gentoo=nox

GRUB_GFXMODE

僕は Nvidia driver を利用しているので、これを設定しても何も反映されない。Grub2 の画面は 1280×1024 から変更不能だ。そのため 16:9 の FHD display においてメニュー画面の縦横比が狂った状態で表示されている。とは言え、後述のように Splash は対処法がある。こちらも Nouveau driver を選ぶことで FHD 表示が可能、犠牲は余りにも大きいが。

GRUB_BACKGROUND

Grub2 の Splash には PNG など馴染みのあるファイル形式がフルカラーで使える。僕の Display は Aspect ratio 16:9 の FHD だが Nvidia driver を利用しているので Grub2 の画面は Aspect ratio 5:4 である 1280×1024 に固定されてしまう。Grub2 の 5:4 画面が 16:9 に変形表示されるので、縦横比が狂った「垂直に潰れた」状態の画面になっている。そのため「垂直に伸びた」状態の Splash 画像を用意しなくてはならない。これには ImageMagick が手軽だ。サイズ指定において Exclamation を追記すると、縦横比を無視した指定通りのサイズに変形出来る。例えば A.png という 1920×1080 の画像を用意し、それを縦横比無視で 1280×1024 に変形して B.png という画像にする。これを Splash に指定すれば、結果的に正しい縦横比で表示される。

$ convert -resize 1280x1024! A.png B.png
Tags