USB メモリを使って,任意の HDD から Linux を起動する方法を紹介します.
HP の格安サーバー ProLiant ML110 G7 は,全面からアクセスできる 4 つのドライブの外にも追加で 5 インチベイに HDD を増設できる拡張性を持っています.
家庭での利用パターンを考えた場合,全面からアクセスできる 4 つの HDD はデータ用に RAID1 等で構成しておき,5 インチベイの HDD をシステムディスクにするようなことが考えられます.
ところが,BIOS の制限によって,素直にはこのような構成をとれません.具体的には,他のメディアとの間の起動の優先順位をつけることは出来るのですが,HDD のうちどれを起動ディスクにするかを任意に選択することができません.
そこで,USB メモリにインストールした GRUB を中継することで,任意の HDD から Linux を起動できるようにします.
準備
以下のものが必要になります.
- 128MB 以上の容量の USB メモリ
シリコンパワーのものがスリムでお勧めです.
USB メモリへの GRUB の書き込み
インストールディスクを使用して Linux を起動し,USB メモリを差したあと,USB メモリに GRUB を書き込みます.
以下では,USB メモリが /dev/sdi と認識されたものとして手順を記述します.
1 2 3 4 5 6 |
$ sudo cfdisk /dev/sdi # パーティションを作成 $ sudo mkfs.ext4 /dev/sdi1 $ sudo mount /dev/sdi1 /mnt $ sudo grub-install --no-floppy --root-directory=/mnt --force /dev/sdi $ sudo umount /mnt |
GRUB の設定ファイルに書き込む内容の調査
インストールディスクを抜いた後,先ほど作成した USB メモリをマザーボード上の USB コネクタに差して再起動します.USB コネクタは,蓋を開けて向かって右端に近い位置にあります.
先ほどの USB メモリから起動した GRUB のプロンプトが表示されていると思いますので,次のコマンドを実行します.
1 |
grub> search.file /boot/grub/grub.cfg |
そうすると,GRUB からみた Linux がインストールされた HDD の名前が表示されますので,その内容をメモします.ここでは,「hd5,msdos1」だったとします.
なお,「/boot/grub/grub.cfg」は Ubuntu の場合ですので,他のディストリビューションの場合は適宜読み替えてください.
続いて次のコマンドを実行し,Linux が起動することを確認してください.「hd5,msdos1」の部分は先ほど出力された内容に置き換えてください.
1 2 3 |
grub> set prefix=(hd5,msdos1)/boot/grub grub> set root=(hd5,msdos1) grub> normal |
上手くいかない場合,HDD に Linux が上手くインストールできていない可能性が高いですので,そこからリトライしてみてください.
GRUB の設定ファイルの書き込み
USB メモリを抜いた後,再びインストールディスクを使用して Linux を起動し,GRUB の設定ファイルを書き込みます.書き換えるのは HDD 側ではなく USB 側の GRUB になりますので,そこだけ注意.
1 2 3 4 5 6 7 |
$ sudo mount /dev/sdi1 /mnt $ sudo emacs /mnt/boot/grub/grub.cfg # 先ほど GRUB に入力したコマンドを書き込み $ cat /mnt/boot/grub/grub.cfg set prefix=(hd5,msdos1)/boot/grub set root=(hd5,msdos1) normal |
これで完了です.USB メモリを差して再起動すれば,普通に Linux が起動すると思います.
参考文献
- GNU GRUB Manual 2.00
- GRUB のマニュアルです.
ネット上には古いバージョンの GRUB を前提として書かれたドキュメントが割と多くあるので,このマニュアルと照らし合わせて適宜読み替えてやることが必要になります.例えば,上で使用した「search.file」は古い GRUB では「search」という名前だったのですが,現時点(‘14.8.19)で日本語で書かれたドキュメントの多くが後者を使用しています.
コメント