まとめ
GRUBを使えば、カスタマイズされたLinuxディストリビューションのUSBドライブからの直接ブート、組み込みデバイスの自動ブート、使用するディストリビューションやOSを選択できるマシンの構築といったことが可能だ。
| コラム:GRUBを使ったUSBドライブからのブート |
|---|
|
かつてGRUBは、汎用のブート用フロッピーディスクの作成によく使われていた。GRUBを有効化したフロッピーディスクを使うと、システム上でGRUBが認識すればどんなOSでも直接ブートすることが可能であった。この点は、マスターブートレコード(MBR)が壊れたパーティションの修復やシステムのリカバリに活用された。 時代は変わり、最近のコンピュータの多くはフロッピーディスクドライブを搭載しなくなった。その代わり、USBドライブからブートを行うことができる。必然的に、GRUBはUSBドライブに適応していくことになる。GRUBを使ってUSBドライブからブートを行うには、パーティションが適切に設定され、サポートされたファイルシステム(BSD FFS、DOS FAT 16およびFAT 32、Minix fs、Linux ext2fs、ReiserFS、JFS、XFS、VSTa fs)を持つUSBドライブをまず用意する。あとは、rootまたはsudo権限のあるユーザでログインし、以下の手順を実行すればよい。 最初に、USBドライブのマウントを行う。多くのディストリビューションでは、システムがUSBストレージデバイスを認識すると自動的にマウントしてくれる。自動マウントが行われないディストリビューションの場合は、SCSI管理ツール群を含むsg3-utilsパッケージをインストールする必要がある (LinuxではUSBドライブがSCSIとして処理されるため)。sg3-utilsのインストール後、「sg_scan -i」を実行してデバイスの一覧からUSBドライブのデバイス名を見つけ出し、/dev/sg*という情報を書き留める。続いて、sg_mapを実行してデバイスが実際にどのような形でシステムにマッピングされているか確認する。具体的には/dev/sg*という名前にマッピングされている/dev/sd*の行を探してデバイス名を取得すればよい。私のマシンではUSBドライブが/dev/sdaになっているので、マウントを行うコマンドは次のようになる。 # mkdir /mnt/usb # mount /dev/sda1 /mnt/usb 次に、ブート用のステージファイルをUSBドライブにコピーする。ステージファイルは、GRUBを構成する実行ファイルである。ファイルシステムに合ったステージファイルをコピーする必要がある。GNOMEでは、USBドライブのアイコンを右クリックして「Properties」を選択すると、ファイルシステムの情報が「Volume」タブに表示される。GNOMEを実行していない環境でも、fdiskを使うとファイルシステムの種類がわかる。 コピーすべきファイルは、stage1、stage2、そして使用しているファイルシステム用のステージファイルの3つである (以下の例では、ext2ファイルシステムに対応したe2fsステージファイルが使われている)。ステージファイルのコピーが終わったら、MBRの作成ができるようにUSBドライブをアンマウントする必要がある。 mkdir /mnt/usb/grub cp /boot/grub/stage* /boot/grub/e2fs_stage1_5 /mnt/usb/grub/ umount /mnt/usb 最後に、USBドライブにMBRをインストールする。MBRは、ブート処理専用としてデバイス上に確保された512バイトの非表示領域である。MBRのインストールには、GRUB関連の処理を行うシンプルなコマンドシェル、GRUBシェルを使用する。 grub grub> device (hd0) /dev/sda grub> root (hd0,0) grub> setup (hd0) grub> quit
以上でGRUBのインストールが完了したので、USBドライブからのブートが可能である。ブートを実行すると、マシン起動時に大量のディレクトリ情報がGRUBシェルに表示されるはずである。コマンドシェルでどんなことができるかについては、GRUBコマンドラインのマニュアルを参照してもらいたい。 昔のようにGRUBでフロッピーディスクを使いたいという人は、フロッピーディスクをFATファイルシステムでフォーマットし、上記の/dev/sda1を/dev/fd0に、hd0をfd0に置き換えて実行するとよい。 |
Chad Filesはソフトウェア開発者兼ライター。10年以上のソフトウェアアプリケーション開発経験があり、多数のオープンソースプロジェクトに貢献。最近はEmbedded GentooのメディアジュークボックスデバイスのブートにGRUBを利用している。
