HP microserver gen8を購入。
HP microserver gen8の中古が手頃な値段*1になっていたので購入してみた。
この機械にシステム用のHDDを積むには、ドライブベイに入っている薄型DVD-ROMを
置き換えるしかありません。配線を最大に利用するには、薄型ドライブケースに
HDD/SSDを入れるのがスマートでしょう。私は以下を使いました。
このドライブに向けて、UbuntuServer20.04LTSを導入しました。
ただし、この機種が起動できるのは
からだけで、ドライブベイにつながるSATAケーブルの先にあるHDD/SSDドライブからは起動できません。
という事は、先にインストールしたUbuntuも普通は起動できません。
そこで、USBまたはmicroSDメモリにgrubを入れてジャンプさせる必要が出てきます。
そこでこちらを参考にしました。
rabbit-note.com
起動microSDの作成
ただ上のサイト通りにやっても私の場合起動しませんでしたので、試行錯誤をして以下の作業が
実際に効果がありました。
- 先頭のMBRを飛ばし dd if=/dev/zero of=/dev/sdx bs=1 count=512
- gdiskで区画割り gptでprotectMBRにする。
1: 34 2047 1007.0KiB EF02 BIOS Boot
2: 2048 3932126 1.9GiB 8300 Linux filesystem
- grubのファーストローダー部分のインストール sudo grub-install --target=i386-pc /dev/sdx
- ここでいったん取り出し。
- microserver gen8のUSBに差し込み、USBメモリから起動する。
grub rescue> ls (hd0)(hd0,gpt1)(hd0,gpt2)(hd0,gpt3)(hd1)(hd2)(hd3) (hd3,gpt1)(hd3,gpt2) ((注:hd1,hd2はサーバー内に入っているHDD2台が見えていたので今回とは無関係。)) grub rescue> ls (hd3,2)/ (Ubuntu入れたドライブベイHDDの中身リスト出てきた!) grub rescue> ls (hd3,2)/boot (それぞれ中身が出てくる) grub rescue> ls (hd3,2)/boot/grub (それぞれ中身が出てくる) grub rescue> ls (hd3,2)/boot/grub/i386-pc/ (normal.modがあることを確認) grub rescue> set root=(hd3,2) grub rescue> insmod (hd3,2)/boot/grub/i386-pc/normal.mod grub rescue> normal
$ sudo mkfs.ext4 /dev/sdd2 $ sudo mount /dev/sdd2 /mnt $ sudo grub-install --no-floppy --root-directory=/mnt --force /dev/sdd
- マウントした領域内の/boot/grub/grub.cfgの名前を変えてバックアップした上で、新しいgrub.cfgを作成。内容はレスキューモードの時の状況を基に作成。(バックアップした最初のgrub.cfgは後で使います。)
set prefix=(hd3,2)/boot/grub set root=(hd3,2) insmod normal normal
grub.cfgを改良
ドライブベイにつながるSATAポートは常にHDDドライブのあとの序列になるため、先に説明した
状況では、実はHDDドライブの台数が変わるとgrub上のドライブ番号も変わり、起動先が
わからなくなるはずです。(試しにドライブを1台引き抜いたら起動しなくなりました)
そこで、HDDの本数に依存しないでドライブベイのHDDから起動させるために、UUIDを使った
指定方法でUbuntuの起動ディスクを指定するよう、grub.cfgを書き換えます。
この時、最初に書き込まれたgrub.cfgの中から、menuentry 'Ubuntu' の部分を拝借します。
既に目的のドライブのUUIDも書き込まれている事から、そのまま便利に使えます。
末尾にbootを挿入する事、カーネルとinitrdは更新を見据えてシンボリックリンクを呼びに行くこと
あたりを書き換えればいいでしょう。
insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_gpt insmod ext2 set root='hd2,gpt2' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd2,gpt2 --hint-efi=hd2,gpt2 --hint-baremetal=ahci2,gpt2 <uuid> else search --no-floppy --fs-uuid --set=root <uuid> fi linux /boot/vmlinuz root=UUID=<uuid> ro maybe-ubiquity initrd /boot/initrd.img boot
以上で無事起動できました。