Ubuntuから認識されるHDDが、GRUB2で認識されない
環境によっては、Ubuntuから正常に認識され利用可能なHDDが、GRUB2で認識されないことがあります。もしUbuntuをインストールしたHDDからUbuntuを起動できない場合、同じ現象になっていないか確認してみるとよいです。
Ubuntuからは正常に認識されるので、ライブメディアから起動したUbuntuでも同様に、HDDが正常に認識されます。
もちろんUbuntuのインストーラーからもHDDが認識され、正常にインストールが行われます。
結果から言いますと、UEFI/BIOSの設定画面でSATAコントローラーのブート設定が、ブート可能な設定になっているか確認するということです。
現象を確認した環境
ここではこの現象を確認した環境の一例を紹介します。この環境では、以下の2種類のSATAコントローラーがマザーボードに搭載されています。
ubuntu@ubuntupc:~$ lspci | grep SATA
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 05)
04:00.0 SATA controller: Marvell Technology Group Ltd. 88SE9120 SATA 6Gb/s Controller (rev 12)
IntelのSATAコントローラー(2行目)は、チップセットに内蔵されているSATAコントローラーです。00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 05)
04:00.0 SATA controller: Marvell Technology Group Ltd. 88SE9120 SATA 6Gb/s Controller (rev 12)
IntelのSATAコントローラー
こちらはメインで使用するSATAコントローラーなので、このSATAコントローラーに接続されたHDDは、常にブート可能な設定になっています。
ハードウェアレベルの内容なので、HDDにOSがインストールされているかどうかは関係ないです。
言い換えれば、起動ディスクとして使用するかどうか、ということになります。
多くのPCでは、チップセット内蔵のSATAコントローラーなど、メインで使用するSATAコントローラーに接続されたHDDは、常にブート可能な設定になっていると思います。
MarvellのSATAコントローラー
MarvellのSATAコントローラー(3行目)は、SATAポート追加のため、オプションで搭載されているSATAコントローラーです。こちらのSATAコントローラーがポイントです。
このSATAコントローラーに接続したHDDを、ブート可能なHDDとして扱うかどうかを、UEFI/BIOSの設定画面から設定することができます。
もし、UEFI/BIOSの設定画面でブート不可の設定を行っていた場合、このSATAコントローラーに接続されたHDDからUbuntuを起動することができません。
起動ディスクとして扱われないためです。
HDDの構成
もし、HDDを1つだけMarvellのSATAコントローラーに接続し、そのHDDにUbuntuをインストールした場合、ブート可能な設定になっていないとGRUB2すら起動しません。ここでは2台のHDDを、それぞれIntelのSATAコントローラーとMarvellのSATAコントローラーに接続しています。
それぞれのHDDを「HDD_I」、「HDD_M」と記述します。
GRUB2は「HDD_I」にインストールされています。
Ubuntuは、「HDD_M」にインストールされています。
MarvellのSATAコントローラーのブート設定は、ブート不可になっています。
現象
発生した現象の内容です。Ubuntuの起動
IntelのSATAコントローラーに接続されている「HDD_I」は、ブート可能になっているため、PCを起動すると「HDD_I」からGRUB2が起動します。GRUB2のブートメニューから「HDD_M」にインストールされたUbuntuを選択します。
ここで「no such partition」と表示されPCが再起動しました。
GRUB2で認識されているHDDを確認
以下のように、GRUB2で認識されているHDDを確認することができます。ここで「HDD_M」が認識されていないことが分かりました。
というわけで
UEFI/BIOSの設定画面を表示し、MarvellのSATAコントローラーのブート設定をブート可能に変更後PCを起動したら、「HDD_M」にインストールされたUbuntuを起動することができました。MarvellのSATAコントローラーのブート設定をブート可能に変更すると、PC起動時にMarvellのSATAコントローラーの初期化を行うメッセージが表示されました。
どうやらブート不可にすることで、MarvellのSATAコントローラーの初期化はOS側で行い、起動時間を短縮しているようです。
そのためUbuntuからはHDDが認識されるが、GRUB2では初期化を行わないため、今回の現象が発生したと思われます。