ブートローダー GRUB 設定
(2021年1月 加筆編集)
メニュー画面の設定
OSを非表示にする
マルチブート環境でデフォルト以外の OSを非表示にする設定です
下の画像は サブPC にインストールしている Pear Linux 6 64-bitを起動するためのブートローダーGRUBメニュー OS選択画面の写真です。
上から5行目までが Pear Linux 6 64-bit(以後 Pear Linux)のものです。1行目を選択すれば Pear Linuxが通常起動します。
2行目の(recovery mode)は OSのレスキューモードで Windowsで言うところのセーフモードの様なものです。
6行目以降は Pear Linuxがインストールされているパーティション以外のパーティション或いは HDDとSSDにインストールされている Linuxディストリビュージョン(以後 Linux)や Windowsが表示されています。
Windowsは XPだけですが Linuxの場合カーネルが数カ月ごとにバージョンアップされるためその度にアップグレードインストールしなければいけません。新バージョンをインストールしても旧バージョンのカーネルは削除されずに残されます。
こういった理由で旧バージョンカーネルは時間の経過と共にどんどん溜まってゆき結果このような大量表示となる訳です。
下の画像はサブPCにインストールしているチェーンローダー MBM(Multiple Boot Manager)の OS選択画面の写真です。
ここに表示されているOSの数だけ GRUBメニューOS選択画面に表示されている訳です。補足 ↓
根本的に旧バージョンのカーネルは削除してしまえば良いと思うのですがなにしろその数が尋常ではないのです。
当ページ冒頭の写真は1ページ目ですがこの後数ページに渡って記述が続いており最後のページまで行くのを明らめた位です。
カーネルが大量表示されたからといって何か問題があるわけではないのですが見苦しいので表示させないように GRUBの設定ファイルを編集します。編集エディタは nanoエディタを使用します。geditでも構いません。
ではログインして端末から
$ sudo nano /etc/default/grub
「Pear Linux以外のOSエントリーを非表示にする」を記述します。(上スクリーンショットの赤枠内)
GRUB_DISABLE_OS_PROBER=true
【補足】 上記を設定すると Ubuntu 18.04 LTS 以降、GRUBメニューは表示されなくなりました。表示させたい時は、ブートシーケンスの間に Shift キーを押します。恒久的に表示させる方法は後述しています。
画面解像度の変更
次に、画面の解像度が高すぎ(1280x1024)て文字が見にくいので適正な解像度 1024x768 辺りに設定してみようと思います。モニターは 19インチのスクエア(4:3)です。
/etc/default/grubファイルに「画面解像度を1024x768にする」を記述します。26行目辺り(下スクリーンショットの赤枠内)
GRUB_GFXMODE=1024x768
編集保存後 nanoエディタを閉じます。
【補足】 モニター解像度の確認方法
モニターがサポートしてる解像度の確認方法は 2つあります。
1. GRUBシェル で確認
GRUBメニュー画面が表示されたら C キーを押してプロンプト(grub>)を起動します。
まず結果を 1ページづつ表示するように次のコマンドを実行します。
GRUB SHELL :
grub > set pager=1
なお GRUBシェルを起動するとキーボードは 英語101 / 102 になります。上記 = は へ キーです。次のコマンドで下の画像のように解像度が表示されます。
grub > vbeinfo
下の画像は VirtualBox にインストールしている Ubuntu 20.04 LTS GRUBシェルのスクリーンショットです。
キーボードの ↓ キーで次のページが表示されます。最初にページャを設定しないと結果の前半部分が見れない可能性があります。
2. デスクトップ上から確認
端末から次のコマンドを実行します。
$ xrandr
参考|Ubuntu Manpage:xrandr - primitive command line interface to RandR extension
下の画像は実機 サブPC にインストールしている Ubuntu 20.04 LTS GMOME端末のスクリーンショットです。
「*」が現在の解像度です。
設定を反映する
ここまでの編集内容を設定に反映するため、必ず下記コマンドを実行します。時々これを忘れて変更した設定が反映されず慌てることがあります。
$ sudo update-grub
これで初めて設定が反映されます。パソコン再起動。
$ sudo reboot
下の画像は設定変更後の GRUBメニュー画面です。
すっきりしましたね。
【補足】
下記は、いわゆる「2段階ブート」によるOS起動の概念です。各OSがそれぞれ完全に独立しているのでマルチブートの構築や管理が効率的で容易です
2段階ブートの概念
PC電源on → BIOS起動
↓
MBM起動(OS選択)→ GRUB → Linux OS起動
↓
NTローダー → windowsOS起動
メニュー画面の表示
Ubuntu 18.04 LTS 以降、GRUB_DISABLE_OS_PROBER=true を設定すると GRUBメニューは表示されなくなりました。このセクションでは恒久的に表示するように設定してみます。
参考|15.1.43 timeout, 15.1.44 timeout_style
なお、このセクションの画像は Ubuntu 20.04 LTS のスクリーンショットです。
GRUBメニューを表示する
端末から
$ sudo nano /etc/default/grub
を実行し、設定ファイルの hidden の行をコメントアウトして下記を追記します。
#GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT_STYLE=menu GRUB_TIMEOUT=-1
そして次のコマンドを実行します。
$ sudo update-grub $ sudo reboot
これでGRUBメニューは表示されたままになります。
GRUBメニューを表示しタイムアウトする
今度は、GRUBメニューを一定時間表示しタイムアウト後、OSを起動するように設定します。
/etc/default/grubファイルの hidden と GRUB_TIMEOUT=-1 の行をコメントアウトします。
#GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT_STYLE=menu #GRUB_TIMEOUT=-1
そして次のコマンドを実行します。
$ sudo update-grub $ sudo reboot
これで GRUBメニューが表示され、5秒後に OSが起動します。5秒がデフォルトのタイムアウト時間です。6秒以上でタイムアウトさせたい場合は、
#GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT_STYLE=menu GRUB_TIMEOUT=10
とすれば、10秒後に OSが起動します。
タイムアウト設定が反映されない時は(2021年7月 追記)
稀に、設定した秒数が update-grub コマンドを実行しても反映されない場合があります。その場合、設定ファイル本体である /boot /grub /grub.cfg を直接編集する方法があります。
なお grub.cfg ファイルを直接編集するのは邪道ですが、このような原因不明の状況では致し方ありません。
ここでの例は、端末から root権限でテキストエディタを開き タイムアウトを 5秒に設定します。(Gedit を root権限で開くと Tepl-WARNING が出るので nanoエディタをお奨めします)
$ sudo nano /boot/grub/grub.cfg
開いたら Ctrl+W キーを押し timeout と入力して Enter します。目的のコードの行が表示されるので、次の 2ヶ所を編集します。
nano editor : ︙ (前略) else if [ x$feature_timeout_style = xy ] ; then set timeout_style=menu set timeout=5 # Fallback normal timeout code in case the timeout_style feature is # unavailable. else set timeout=5 fi fi ### END /etc/grub.d/00_header ### (後略) ︙
保存して閉じます。PC再起動して設定が反映されていれば完了です。
【補足】|GRUB_TIMEOUT_STYLE=countdown にすると
次のように記述してみると
#GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT_STYLE=countdown GRUB_TIMEOUT=10
GRUBメニューは表示されず、画面左上にカウントダウンの数字10が表示され10秒後に OSの起動プロセスがスタートする結果になりました。