Windowsを傷付けずにUSBからLinuxをブートせよ!−ザ・組み込み−ソフトウェアのハードウェア化(1)(2/3 ページ)

» 2008年07月22日 00時00分 公開
[鳥海佳孝 設計アナリスト,@IT MONOist]

これで準備OK! いやいや修正が必要なんです

 インストールが完了したので、後は再起動してUSBのハードディスクからブートすればOK! かというと、そうはいきません。

 次に、以下のような修正が必要となります。

  1. Windowsの入ったハードディスクにあるブートローダ、GRUBを削除
  2. ブートローダのメニューの書き換え
  3. USBのハードディスクにブートローダをインストール
  4. 現状のVine LinuxのディストリビューションはUSBブートに対応していないので(立ち上げる最中にkernel panicを起こす)、USBブートに対応するための修正

 これらの修正作業をLinuxマシン上で行います(注)。


※注:なお、以降の作業ではMBRの変更などが含まれております。万が一の場合、リスクをともないますので、各自バックアップなどを作成したうえで、作業を進めてください。また、Linuxマシン上で作業を行います。本稿では、Linuxの基本的なコマンドについての解説は割愛しておりますので、詳しく知りたい方は@IT−「Linux Square」などをご覧ください。<追記:2009年6月16日>


関連リンク:
Linux Tips Index − @IT

 しかしながら、最初は手元にLinuxマシンがないはず(という前提)ですので、ここで先ほど作成した1CD-LinuxのKNOPPIXを用います。まず、KNOPPIXのISOイメージを書き込んだCD-RでKNOPPIXを起動します。

 起動したところで、以下のように「su」コマンドを入力し、rootユーザーに変更します。

$ su - 

 それでは、1〜4までの修正作業を順番に解説していきます。

1.ブートローダの削除(初期化)

 まず、Windowsが入っているハードディスクからブートローダを削除します。ハードディスクがどのデバイスファイルで認識されているか、KNOPPIXのデスクトップに表示されているアイコンで確認します(図1)。

Windowsの入ったハードディスクの認識 図1 Windowsの入ったハードディスクの認識

 デバイスファイル(今回の例では/dev/hda)が分かったところで、以下のコマンドを実行します。

# lilo -M /dev/hda 

 これでMBRが初期化されました(図2)。

liloコマンドによるMBRのアップデート 図2 liloコマンドによるMBRのアップデート

2.ブートローダのメニューの書き換え

 次に、GRUBのブートローダが立ち上がるときに使用する設定ファイルを変更します。まず、Vine LinuxをインストールしたUSBのハードディスクを接続します。すると、KNOPPIXのデスクトップ上にアイコンが表示されますので、デバイスファイル名(今回の例では/dev/sda)を確認します(図3)。

Linuxの入ったUSBハードディスクの認識 図3 Linuxの入ったUSBハードディスクの認識

 その際に、追加されたデバイスをどうするのか聞かれますので、ここでは「何もしない」を選択します(図4)。

新しい媒体を検出したことを知らせるウィンドウ 図4 新しい媒体を検出したことを知らせるウィンドウ

 続いて、「mount」コマンドで以下のようにマウントします。

# mount /dev/sda1 /mnt/sda1
# mount /dev/sda2 /mnt/sda2 

 「/mnt/sda1/grub」のディレクトリの下にmenu.lstというファイルがあるので、以下のように書き換えます。

root (hd1,0) 
root (hd0,0) 

 この変更は、USBのハードディスクがUSBブート時に1番目のハードディスクとして認識させるためのものです。変更が完了したmenu.lstの全容をリスト1に示します(注)。

# menu.lst generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd1,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=5
title Vine Linux (Current kernel)
        root (hd0,0)
        kernel /vmlinuz ro root=LABEL=/ resume2=swap:/dev/sda3 vga=0x314
        initrd /initrd.img
title Vine Linux (Previous kernel)
        root (hd0,0)
        kernel /vmlinuz.old ro root=LABEL=/ resume2=swap:/dev/sda3 vga=0x314
        initrd /initrd.old.img
# title Other
#       rootnoverify (hd0,0)
#       chainloader +1
リスト1 menu.lst

※注:実は、リスト1の22〜24行目(title Other以降)も“#”を入れることでコメントアウトしています。理由は、GRUBのブートローダからWindowsを起動しなくてもよいと判断したからです。つまり、Windowsを起動するのであれば、USBのハードディスクを接続しなければよいからです。


3.USBのハードディスクにブートローダをインストール

 まず、以下のようにUSBのハードディスクをアンマウントします。

# umount /mnt/sda1
# umount /mnt/sda2 

 次に、「grub」コマンドを用いてブートローダをセットアップします(図5)。

GRUBの実行 図5 GRUBの実行
# grub
  
grub> root (hd1,0)
grub> setup (hd1)
grub> quit 

 この例では、

  • hd0:1番目のディスク(Windowsの入ったハードディスク)
  • hd1:2番目のディスク(Vine Linuxの入ったUSBのハードディスク)

になっています。

 ちなみに、上記のコマンドでroot(hd0,0)と入力すると、ファイルフォーマットが0x7(FATのファイルフォーマット)となっているので、hd0がWindowsの入ったハードディスクだということが確認できます。

Copyright © ITmedia, Inc. All Rights Reserved.