対象とするUbuntuのバージョン
- 9.10, 10.04
USB-HDD・USBメモリに通常インストールしたUbuntuを、100%確実に起動する極めて簡単な方法です。USBデバイスからの起動に対応していないPCでは特に有効です。 (以下、「USB-HDD・USBメモリ」のことを「USBデバイス」と記載します。)
USBデバイスにGRUB2などのブートローダをインストールする必要はありません。
この設定はGRUB2がインストールされた内蔵HDD上のUbuntuで行いますが、どの作業も数分程度で済みます。
また、「USB スタートアップ・ディスクの作成」 でインストールしたUbuntuも、少し改変すれば問題なく起動できます。
基本設定とエントリーの追加
- 次のコマンドを実行して 「gedit」 を開き、1番下のスクリプト 「entry.sh」 70行を貼り付け、保存して、閉じる。
$ gedit entry.sh
- 次のコマンドを実行し、「端末」上の指示に従ってUSBデバイスをPCに接続し、エントリーの諸設定を内臓HDDに書き込む。
$ sudo chmod +x entry.sh && sudo ./entry.sh
- ファイル 「entry.sh」 を保存しておき、新たなエントリーを追加する時も上の 「2.」 を実行する。
kernel-update ・ OS-upgrade の後の設定
「古いversionのエントリー」 を削除し、新たなエントリーとして追加します。内蔵HDD上のUbuntuで作業します。
- 次のコマンドを実行してファイル 「/usb/grub/grub.cfg」 を開き、「古いversionのエントリー」 を削除し、ファイルを保存して閉じる。 ( 対応する「kernel」・「initrd」を削除してもよい。 )
$ sudo gedit /usb/grub/grub.cfg
- 「基本設定とエントリーの追加」 の 「3.」 を実行し、新たなエントリーとして追加する。
使い方と注意
- 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番号」 の順に記載されている。
- USBデバイス上のUbuntu以外のOSも追加できるが、エントリーのタイトルを含めて、ファイル 「/usb/grub/grub.cfg」 を編集する必要がある。
- 最近のUbuntuではルート「/」 にリンク 「vmlinuz」 ・ 「initrd.img」 が自動的に作成されるが、これらを使っても起動できない。
- 初心者向けに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