2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

BIOS環境で今更ハマったGrub2トラブル

Posted at

今更BIOS boot

って内容ですが。古いサーバマシンのトラブルついでにUbuntuのupgradeやってたらgrub-installでcritical errorが起きて焦ったので、その対応メモなど。

事例1:core.img ‘unusually large’

Grubが何やってるか知らないとまったく意味不明なエラーですが「最初のパーティションの開始位置をもう少し後ろにずらして下さい」というエラーでした。

ディスクの先頭512BがMBRと呼ばれる部分です。BIOSはここにローダがあると想定して読んで実行するんですが、Grubはlegacyの頃からMBRより後ろ、かつ先頭パーティションの直前までの隙間領域(伝統的には62セクタ)を利用していました。legacyだとStage 1.5とか呼ばれていた部分。2でも同じ場所にStage 2を読むためのcore.imgというのをこっそり置いています。

で、upgradeの際にcore.imgが少し大きくなっちゃって入りきらなくなった、というのが今回のエラーでした。……知らんがな。自分はまるまる1パーティションをraid用に切って突っ込んでたので、パーティションをずらすのは面倒。このディスクにGrubを入れるのは諦めて、かわりに/tmpとswapに使ってたSSDの先頭をずらしてインストールしました。先頭がswap用だったので% sudo swapoff -aしてからfdiskで1つ目のパーティションを切り直してgrub-install /dev/sdX(Xは環境に合わせて変えてください)。当面こっちから起動して、次にディスク交換する時に余裕を持ってパーティションを切ることにします。

事例2:this GPT partition label contains no BIOS Boot Partition

壊れたRAIDのディスクを交換する際にサイズを2TBから3TBに上げたのですが、fdiskが

WARNING: The size of this disk is 3.0 TB (3000592982016 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID 
partition table format (GPT).

と言っていたので、partedから何も考えずにGPTでパーティションを切りました。で、こちらのエラーはGPTではcore.img用の領域を明示的に作ってください、というエラー。確かに言われるがままにGPTで切ってしまいましたが、EFI環境外で使うとなると、なんらかのケアが必要なのは確かに想定できたトラブル。

で、このcore.img用の特殊なパーティションについては、partedで適当なパーティションを作って(parted) set X bios_grub on(Xはパーティション番号)で設定できました。パーティション番号が1である必要はないみたいです。確保するセクタ位置について縛りがあるかどうかは今回調べていません(先頭が空いてたので、冒険はせずに先頭に確保した)。

おわりに

昔はこの手のメモを日記としてウェブ上に書き残してたもんですが、最近はGoogle Docsに自分用のメモを書くだけになってました。トラブル時に検索しても「ハマった」情報ばかりで、解決したという情報が少ない時代が続いていた気がしますが、最近は検索結果からQiitaの記事があれば「この情報でいけるか?」みたいな雰囲気があったので、せっかくだから自分もまた書き残すことにしました。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?