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

    • 9.10, 10.04

USB-HDD・USBメモリに通常インストールしたUbuntuを、100%確実に起動する極めて簡単な方法です。USBデバイスからの起動に対応していないPCでは特に有効です。 (以下、「USB-HDD・USBメモリ」のことを「USBデバイス」と記載します。)

USBデバイスにGRUB2などのブートローダをインストールする必要はありません。

この設定はGRUB2がインストールされた内蔵HDD上のUbuntuで行いますが、どの作業も数分程度で済みます。

また、「USB スタートアップ・ディスクの作成」 でインストールしたUbuntuも、少し改変すれば問題なく起動できます。

基本設定とエントリーの追加

  1. 次のコマンドを実行して 「gedit」 を開き、1番下のスクリプト 「entry.sh」 70行を貼り付け、保存して、閉じる。
            $ gedit entry.sh
  2. 次のコマンドを実行し、「端末」上の指示に従ってUSBデバイスをPCに接続し、エントリーの諸設定を内臓HDDに書き込む。
            $ sudo chmod +x entry.sh && sudo ./entry.sh
  3. ファイル 「entry.sh」 を保存しておき、新たなエントリーを追加する時も上の 「2.」 を実行する。

kernel-update ・ OS-upgrade の後の設定

「古いversionのエントリー」 を削除し、新たなエントリーとして追加します。内蔵HDD上のUbuntuで作業します。

  1. 次のコマンドを実行してファイル 「/usb/grub/grub.cfg」 を開き、「古いversionのエントリー」 を削除し、ファイルを保存して閉じる。 ( 対応する「kernel」・「initrd」を削除してもよい。 )
            $ sudo gedit /usb/grub/grub.cfg
  2. 「基本設定とエントリーの追加」 の 「3.」 を実行し、新たなエントリーとして追加する。

使い方と注意

  1. PC起動時のGRUB2のメニューでタイトル 「Ubuntu on USB Storage Devices」 を選択すると、USBデバイス上の各エントリーのタイトルが並ぶGRUB2のメニューが現れる。 これはファイル 「/usb/grub/grub.cfg」 に書かれており、編集できる。 defaultでは、「 Ubuntu 2.6.31-14-generic  ( Maxtor 9 )  P-3 」 のように、「version」 ・ 「vendor名」 ・ 「partition番号」 の順に記載されている。
  2. USBデバイス上のUbuntu以外のOSも追加できるが、エントリーのタイトルを含めて、ファイル 「/usb/grub/grub.cfg」 を編集する必要がある。
  3. 最近のUbuntuではルート「/」 にリンク 「vmlinuz」 ・ 「initrd.img」 が自動的に作成されるが、これらを使っても起動できない。
  4. 初心者向けにGUIによる方法も可能だが、当面CUIだけとする。

スクリプト 「entry.sh」

  • スクリプト 「entry.sh」

#

echo "\n\tUSB-HDDまたはUSBメモリをPCに接続して下さい。!\n"
echo "\tそれがマウントされるまで待ち、新たにファイル・ブラウザ\n"
echo "\tが開かれたら全て閉じ、「Enter」を押します。\n" 
read -p "                                " ent
echo "\t----------------------------------------------------\n"

DEV=`sfdisk -s | grep '/dev/' | tail -n 1 | cut -f1 -d":"`
DEV_INFO=`cat /proc/scsi/scsi | grep 'Vendor' | tail -n 1`
VENDOR=`echo $DEV_INFO | cut -f2 -d":" | sed 's/Model//'`
NAME=`echo $DEV_INFO | cut -f3 -d":" | sed 's/Rev//'`

echo "\t● その情報を確認して下さい。\n"
echo "\t\tデバイスファイル: $DEV\n\t\tベンダ: $VENDOR\n\t\tモデル: $NAME\n"
echo "\n\t● パーティション情報です。\n"

fdisk -l $DEV | grep '^/dev/' 
echo "\n\t----------------------------------------------------\n"
echo "\tUbuntuが入っているパーティションの番号を入力して、"
echo "\t「Enter」を押します。\n"   
read -p "               パーティションの番号   " pn

DEVP="$DEV$pn"
uuid=`blkid -o value $DEVP | tail -n 2 | head -n 1` 

echo "\n\t----------------------------------------------------\n"

if [ ! -d /usb ]; then
        mkdir -p /usb/grub
        chmod -R 755 /usb
        cp /boot/grub/* /usb/grub/
cat > grub.cfg <<EOF
set timeout=10
EOF
        mv -f grub.cfg /usb/grub/
        cp /etc/grub.d/40_custom ./
cat >> 40_custom <<EOF

menuentry "Ubuntu on USB Storage Devices" {
        configfile /usb/grub/grub.cfg
}

EOF
        mv -f 40_custom /etc/grub.d/
        update-grub
fi

VML=`ls /media/${uuid}/boot/ | grep vmlinuz | tail -n 1`
INT=`ls /media/${uuid}/boot/ | grep initrd | tail -n 1`
UVN=`echo ${VML} | cut -c9-`
cp -f /media/${uuid}/boot/$VML /usb/
cp -f /media/${uuid}/boot/$INT /usb/

cp /usb/grub/grub.cfg ./
cat >> grub.cfg <<EOF

menuentry "Ubuntu $UVN  ($VENDOR)  P-$pn" {
        linux   /usb/$VML root=UUID=$uuid ro quiet splash
        initrd  /usb/$INT
}
EOF
mv -f grub.cfg /usb/grub/

echo "\n\t作業は完全に終了しました。\n"
echo "\tこの端末を閉じて下さい。\n"

sleep 20
exit 0

UbuntuJapaneseWiki: UbuntuTips/UsbInstall/UsbBoot (最終更新日時 2012-01-10 11:49:09 更新者 匿名)