先日まで、本サーバーのメインボードだったIntel D945GCLF2 Atom330ボードですが、HDDを取り外したので、このPCを新しい別のサーバーにしようとOSインストール済みSATA HDDを接続したところ、問題発生。
NICが故障したFreeBSDサーバーから取り外したHDDをD945GCLF2に接続して電源投入したところ「No bootable device」で起動しない。
あれれ。HDDもマザーボードも先日まで動いていたものなのに。
BIOSがHDDを認識していないのか?とBIOSを立ち上げて確認するものの、HDDの型番と容量が正しく認識しています。
まさか、HDDの起動電流が足りない?2000年頃のATX電源を使用しているので、まれにHDD起動電流が足りなくなることがあります。そこで、電源を替えてみたものの状況に変化無し。電源は無実。
BIOSでブートデバイスの順番を変更して、HDDを1番目に持ってきたものの効果無し。No bootable device のまま。
こうなってくると、動作確認が出来ているものの、HDDを疑ってみるしかありません。
以前使っていたWindows XP Homeが入っているSATA HDDが手元にあるので、これにつなぎ替えて起動させてみたところ、、、、、、問題無く起動。(Windows XPが起動した途端、サポート切れだの、ライセンス認証だのいろいろメッセージが出て来ましたけどね。全て無視ね。)
ここで気が付きました。パーティションテーブルが原因っぽい。
WindowsXP PCは、MBR(Master Boot Record)で管理されているはず。
そして今回使用しようとしているSATA HDDはGPTパーティション。
Atom330ボードのBIOSはGPTで記述されたFreeBSDブートパーティションから起動できないのかも。MBRのHDDから起動してしまえば、GPTパーティションを扱えるものの、起動にGPTパーティションが使えないみたい。
検索してみると、D945GCLF2 Atom330ボードがGPTパーティションから起動できないというトラブルはたくさん見つかりました。
ただし、GPTに対応していない訳じゃなく、GPTでパーティショニングするユーティリティに依存しているような感じで、D945GCLF2 Atom330ボードでGPTパーティションを作って、そのままブートさせれば使えるのかも知れません。GPTパーティションを別のボードで製作したために、たまたまAtom330ボードBIOSが認識できない書式になってしまっている可能性があります。
パーティションエディタを使ってパーティションを調整すれば起動できるようになる可能性はありますが、今回のHDDは本番HDDなのでそんな恐ろしいことは出来ません。
空いているHDDを確保して、FreeBSDインストーラを使って、最小構成のFreeBSDをGPTパーティションにインストールしてみました。
まず、FreeBSDインストーラは、デフォルトでパーティショニングすると、MBRを選択します。これ、Atom330ボードのBIOSを判定しているのかもしれません。
強制的にGPTを選択して最小OSをインストールした後、HDDから起動しようとすると、やっぱりブートパーティションを見つけられません。
D945GCLF2 はGPTパーティション上のブートパーティションからは起動できないのかも。MBRでパーティショニングしてインストールすれば起動しました。
GPTパーティションからMBRパーティションへの引っ越し
今回行った作業は、
- SATA-0 にGPTパーティションHDDを接続。SATA-1 に引っ越し用空ディスクを接続。
- USBメモリにddしたメモリスティックイメージからFreeBSD 11.3 インストーラを起動
- インストラーを終了させて Live CDモードを選択し、コマンド画面を出す。
- bsdconfig コマンドを起動し、引っ越し先HDDをMBRパーティションでファイルシステム作成。
- 初期化後、root予定パーティション /dev/ada1s1a を /mnt にマウント
- GPT ルートパーティション(/dev/ada0p2)を /media へマウント
- cd /media (GPTパーティションルートへ移動)
- find . | cpio -pmv /mnt (/media から /mnt へデータをコピー。cpio -m オプションはファイルタイムスタンプを維持。これがないと、OS起動時にワーニングが出る)
- コピー完了後、/mnt/etc に移動し、fstab のルートデバイスファイルと rc.conf を新しいハードウェアに合わせて修正。fstabの編集を忘れると OS起動中のファイルシステムマウント時にこける。
- シャットダウンして、USBメモリを引き抜く。MBR HDDをSATA-0に接続。
- MBR HDDから起動できればOK。
- /home を自動マウントできるように fstab を編集して、home ディスクを接続。こっちのディスクパーティションはGPTのままで問題なし。
以上の工程で、D945GCLF2 上で再びサーバーが稼働するようになりました。別HDDを一台使用することになったのはちょっと痛かったですが安全を考えると仕方ありません。