• 対象とするUbuntuのバージョン

    • すべて

方法の概観

OSのupgradeやmulti-bootの設定などでHDDのMBRが壊れてOSが起動不能となることがありますが、そのための「ブートUSBメモリ」を作成します。

各PCにインストールされているgrubのmenu.lstを編集した上で、次々と連結することによって、多くのPCで使える汎用の「ブートUSBメモリ」を作成します。

ブートローダgrubを使うので、数台のPCを対象とするなら、必要な容量は 500Kb 以下で済みます。 しかも、USBメモリの最後部を使うだけなので、大部分の領域はデータ保存など他の用途に使うことができます。

1台のPCで使う場合は、極めて簡単に作成できます。なお、内蔵HDDが3台以上の場合を割愛します。

Ubuntuを含みmulti-boot環境が構築されている場合を例示しますが、grubがインストールされているOSならどれでも行うことができます。

USBメモリのパーティション分割

  1. USBメモリをPCに接続し、fdisk コマンド ( または GParted ) で、USBメモリ上に2つのパーティションを作成する。

    番号

    接続デバイス

    名称

    サイズ

    ファイルシステム

    1

    /dev/sd*1

    storageパーティション

    残り全部

    fat16

    2

    /dev/sd*2

    grubパーティション

    2Mb

    ext2

  2. 各パーティションに名前を付け、フォーマットする。
      $ sudo /sbin/mkdosfs -F 16 -n storage /dev/sd*1
      $ sudo /sbin/mke2fs -L grub /dev/sd*2

Ubuntuのmenu.lstが、このPCに入っている全てのOSを起動できる内容のものとします。

以下の編集は主として「grubがUSBメモリを /dev/sda、即ち (hd0) と見なす」ための対応です。

1台のPCで使用する場合、下の 2. 3. を省くことができます。

  1. 次のコマンドを実行する。
      $ sed -e 's/(hd1/(hd2/g' /boot/grub/menu.lst | sed -e 's/(hd0/(hd1/g' > menu.lst
  2. ホームディレクトリにできたmenu.lstを開き、ファイルの上の方にある「 default 0 」を「 default 1 」と書き換える。
      $ gedit menu.lst
  3. 続いて、最初の「title .......... ( OS 名 ) .......... 」の行を見つけ、その直ぐ上に次の2行を付け加え,「PC 名」の代 わりに簡単で具体的な名前を英語で書き込む。例えば、「My-Sony」・「Dad's-Dell」・「Wife's-NEC」などでよい。勿論、機種名でも構わない。

      title  .......... PC 名 ..........
      root

    < PCにWindowsが入っている場合の追加編集 >

  4. menu.lstには「title .......... Windows .......... 」の行があるので、その全てに対して、その行の直ぐ下に次の2行または3行を付け加えて、ファイルを保存する。

      (1). 内蔵HDDが1台ならば           (2). 内蔵HDDが2台ならば         
            map (hd0) (hd1)                    map (hd0) (hd1)           
            map (hd1) (hd0)                    map (hd1) (hd2)           
                                               map (hd2) (hd0)

grubのインストール

  1. USBメモリがアンマウントされていれば、一旦PCから取り外し、再接続すると、「grubパーティション」のmount-pointは/media/grubとなる。
  2. ホームディレクトリにスクリプトファイル boot-uf.sh を作成し、以下の9行を書き込んで保存する。
      $ gedit boot-uf.sh
    sudo mkdir -p /media/grub/boot/grub
    sudo chmod -R 777 /media/grub/boot/grub
    cp -f /boot/grub/* /media/grub/boot/grub
    rm -f /media/grub/boot/grub/menu.lst
    cp -f menu.lst /media/grub/boot/grub
    sudo chmod 666 /media/grub/boot/grub/menu.lst
    sudo sync
    sudo /usr/sbin/grub-install --root-directory=/media/grub /dev/$1
    sudo sync
  3. スクリプトファイル boot-uf.sh を実行する。 この時、USBメモリの接続デバイス sd* を、引数として半角空白の後に付け加える。
      $ sh ./boot-uf.sh sd*
  4. PCをUSBメモリから再起動すると、grubの選択画面が現れる。

複数のPCで使う、menu.lstの連結

「ブートUSBメモリ」を使いたいPCでは、その中の全てのOSを起動できる内容のmenu.lstが必要です。そのmenu.lstが含まれるOSは問いません。

  1. 連結したいmenu.lstが入っているOSを起動して、上の「menu.lstの編集」に従ってmenu.lstを編集する。続けて、「 title .......... PC 名 ..........」の行を見つけ、それより上の部分を全て削除し、なおファイルは開いておく。

  2. 「ブートUSBメモリ」をPCに接続し、ファイル/grub/boot/grub/menu.lstを開く。ファイルの最後尾に、 1.で編集し開いてあるファイルmenu.lstの内容を、1行空けて貼り付け、ファイルを保存する。
  3. これらの作業はGUIで行い、最後に次のコマンドを必ず実行しておく。
      $ sudo sync
  4. 同様に次々と、起動したいPCでmenu.lstを連結していけば、汎用「ブートUSBメモリ」ができ上がる。

UbuntuJapaneseWiki: UbuntuTips/Others/CreateBootUsbFlash (最終更新日時 2012-01-10 11:49:19 更新者 匿名)