PCで遊んだ日々の備忘録

Making PC and Customization PC

ブートローダー GRUB 設定

参考|GNU GRUB Manual 2.04

(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

etc/default/grubファイルでGRUBメニューを表示する設定

GRUBメニューを表示

そして次のコマンドを実行します。

 $ 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が起動します。

GRUBメニュー表示、5秒後に OSが起動する設定

fig1. 5秒後に OS起動

GRUBメニュー表示、10秒後に OSが起動する設定

fig2. 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 ###
  (後略)
  ︙

編集後の grub.cfg ファイル

編集後の grub.cfg ファイル

保存して閉じます。PC再起動して設定が反映されていれば完了です。

▲ 目次へ

【補足】|GRUB_TIMEOUT_STYLE=countdown にすると

次のように記述してみると

#GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT_STYLE=countdown
GRUB_TIMEOUT=10

GRUB_TIMEOUT_STYLE=countdown

GRUBメニューは表示されない

GRUBメニューは表示されず、画面左上にカウントダウンの数字10が表示され10秒後に OSの起動プロセスがスタートする結果になりました。

▲ 目次へ

クリエイティブ・コモンズ・ライセンス
Top of Pageの画像
sidemenuの画像