スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

USBブートCD自動作成スクリプト

前回USBメモリにUbuntu9.04をインストールする方法を紹介しました。

PCによってはBIOSの設定でUSBデバイスを指定出来る機種もありますが、うまく認識してくれなかったり、PC自体が古くてUSBブートが出来ない場合があります。

しかし、CD起動が出来ないPCはまずありませんので、USBブートが出来ない場合は起動CDからGRUBを起動し、USBデバイスを指定して起動します。



【1】HDDにインストールしたUbuntu上で実行する場合

筆者の場合、既にUbuntu9.04をインストールしたPCがあります。

そういう方は少なからずいらっしゃる事と思います。

HDD上のUbuntuで作業をする場合はこちらを参考にしてください。


(1) HDDでUbuntuを起動

Ubuntu9.04でしかテストしていません。


(2) USBメモリを接続し、デバイス名を確認します

まずUSBメモリを挿す前に、

cat /proc/partitions


を実行し、USBメモリ接続前の状態を確認します。

そしてUbuntuをインストールしたUSBメモリを挿し、正常にマウントされたら再度

cat /proc/partitions


を実行します。

先ほどの結果に、何行か追加されて表示されるはずです。

新たに追加された情報が、今挿したUSBメモリの情報です。

その中からUbuntuをインストールしたパーティションのデバイス名を見つけてください。

PC内臓HDDが1台で、当サイトでご紹介した方法でインストールした場合は、多分「/dev/sdb2」です。

2つ目のデバイス2つ目のパーティションという意味です。


分からなかったら、

df


blkid


などを実行してみてください。


(3) シェルスクリプトを用意

以下をbootcd.shという名前で保存します。

#!/bin/bash
if [ $# -ne 1 ]; then
echo "インストールデバイスを指定してください"
echo "(例:/dev/sdb2)"
exit 1
fi

device=$1
mountpoint="/$(df | grep $device | cut -f 4-5 -d '/')"
uuid=$(blkid | grep $device | cut -f 2 -d ' ' | cut -f 2 -d '"')
kernelver=$(ls $mountpoint/boot/ | grep vmlinuz | cut -f 2-4 -d '-')
mkdir -p usbcd/boot/grub
cp $mountpoint/boot/vmlinuz-$kernelver usbcd/boot
cp $mountpoint/boot/initrd.img-$kernelver usbcd/boot
cp $mountpoint/usr/lib/grub/i386-pc/stage2_eltorito usbcd/boot/grub

cat > usbcd/boot/grub/menu.lst << EOF
default 0
timeout 5
#hiddenmenu
title USB-memory ubuntu vmlinuz-$kernelver
kernel /boot/vmlinuz-$kernelver root=UUID=$uuid ro
initrd /boot/initrd.img-$kernelver
EOF

genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o usbbootcd-$kernelver.iso usbcd

#rm -rf usbcd


これに実行権限を与えます。

chmod u+x bootcd.sh


20行目28行目はコメントアウト(行頭に#)してありますが、#を削除すると有効になります。

それぞれ

hiddenmenu → OS選択画面が表示されず、一定時間後に自動で起動する

rm -rf usbcd → ISOファイル作成用に一時的に作成したディレクトリを削除

が有効になります。

title」の後の文字列は自由に書き換え可能です。


(4) 実行

作成したスクリプトを実行する際、引数として(2)で調べたデバイス名を与えて下さい。

デバイス名が「/dev/sdb2」の場合

./bootcd.sh /dev/sdb2


と入力して実行します。


正常に実行されれば、「usbbootcd-カーネルバージョン.iso」というCDイメージができるので、CDに焼けば起動CDの完成です。




【2】USBブートしたUbuntuで実行する場合

(1) 起動

USBブート可能なマシンを探してUSBメモリから起動します。


(2) スクリプトの用意

以下をbootcd.shという名前で保存します。

#!/bin/sh
mkdir -p usbcd/boot/grub
kernelver=$(uname -r)
cp /boot/vmlinuz-$kernelver usbcd/boot
cp /boot/initrd.img-$kernelver usbcd/boot
cp /usr/lib/grub/i386-pc/stage2_eltorito usbcd/boot/grub
device=$(df | head -n 2 | tail -n 1 | cut -f1 -d ' ')
uuid=$(blkid $device | cut -f 2 -d '"')

cat > usbcd/boot/grub/menu.lst << EOF
default 0
timeout 5
#hiddenmenu
title USB-memory ubuntu vmlinuz-$kernelver
kernel /boot/vmlinuz-$kernelver root=UUID= ro
initrd /boot/initrd.img-$kernelver
EOF

genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o usbbootcd-$kernelver.iso usbcd

#rm -rf usbcd


実行可能にします。

chmod u+x bootcd.sh



(3) 実行

USBメモリから起動して行う場合は引数は必要ありません。

./bootcd.sh


あとはHDDから起動した場合と同じです。

テーマ : UNIX/Linux
ジャンル : コンピュータ

コメントの投稿

非公開コメント

最新記事
カテゴリ別 記事一覧
最新コメント
月別アーカイブ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。