fc2ブログ

USB-HDDのUbuntu起動用CDのISOファイル作成ツール(Grub使用)

Ubuntu9.04用のGTKツール(GUI版)です。他のバージョンでも正常に動作するかもしれません。

通常の内蔵HDDにインストールする方法でUSB-HDDにインストールしたUbuntuの起動用のCDのISOファイル作成用のスクリプトです。Grubを使用しています。

以下のファイルをダウンロード(右クリックして保存)してファイル名をmakeUSB-HDDbootCDgrubFromAnotherUbuntu3.shに変えてください。
makeUSB-HDDbootCDgrubFromAnotherUbuntu3.txt

そして、Ubuntuなどの端末でダウンロードしたファイルの存在するディレクトリに移動して、
$ bash ./makeUSB-HDDbootCDgrubFromAnotherUbuntu3.sh
で実行してください。
もしくはダウンロードしたファイルを右クリックして「プロパティ」ー「アクセス権」で
「プログラムとして実行できる」にチェックすれば、
ダブルクリックで「実行する」をクリックすることでも使えるようになります。

makeUSB-HDDbootCDgrubFromAnotherUbuntu3.txt
の内容は以下のとおりです。


#!/bin/bash
title="USB-HDD起動用CDのISOファイル作成ツール(Grub使用)"
a=""
while [ -z "$a" ]
do
a=$(zenity --list --title="${title}" --height=250 --text="このツールでは、内蔵HDDにインストールするのと同様の方法でUbuntuがインストールされたUSB-HDDについて、\nそれを起動するためのCDのISOファイルを作成します。\n今、そのUSB-HDDのUbuntuが起動していますか?以下のどれか1つにチェックしてください。" --radiolist --column="↓チェック" --column="No." --column="選択肢" FALSE "1" "起動用CDを作りたいUSB-HDDのパーティションのUbuntuが起動している" FALSE "2" "起動用CDを作りたいUSB-HDDのパーティションとは違うUbuntuが起動している。" TRUE "3" "わからない")
if [ $? = 1 ]
then
zenity --info --title="${title}" --text="キャンセルが押されましたので、ISOファイルの作成を中止して終了します。"
exit 0
fi
done
if [ "$a" = "3" ]
then
zenity --warning --title="${title}" --text="分からないのなら、このツールは使わない方が良いです。\n済みませんが、ISOファイルの作成を中止して終了します。"
exit 0
elif [ "$a" = "1" ]
then
kernelver=$(uname -r)
MOUNTPOINT=""
gksudo -m "ハードディスクの状況を調べるためにパスワードを入力してください。" sleep 0
rootdev=$(more /etc/mtab|grep " / "|cut -d" " -f1)
rootuuid=$(sudo blkid|grep ${rootdev}|cut -d\" -f2)
else
zenity --info --title="${title}" --text="デスクトップを見回して、\n起動用CDを作りたいUSB-HDDのハードディスクのようなアイコンがあったら、\n右クリックして「アンマウント」をクリックしてください。分からなければ、全部のハードディスクのアイコンを右クリックして「アンマウント」をクリックしてください。\nハードディスクのようなアイコンがなくなったら、「OK」をクリックしてください。"
zenity --info --title="${title}" --text="UbuntuをインストールしたUSBメディアをパソコンから取り外してください。\n取り外したら、「OK」をクリックしてください。"
sleep 2
gksudo -m "ハードディスクの状況を調べるためにパスワードを入力してください。" sleep 0
DEVICELIST=$(sudo fdisk -l|grep /dev/sd|grep -v ディスク|cut -d" " -f1)
zenity --info --title="${title}" --text="UbuntuをインストールしたUSBメディアをパソコンのUSBポートに接続してください。\n接続したら、認識されるまで待ってください。\n通常はUSBメディアの中のパーティションが自動的にマウントされるはずです。\nマウントされたら、「OK」をクリックしてください。"
zenity --info --title="${title}" --text="このまま何もせずにしばらくお待ちください。" &
sleep 7
DEVICELIST2=$(sudo fdisk -l|grep /dev/sd|grep -v ディスク|cut -d" " -f1)
for a in $DEVICELIST
do
DEVICELIST2=$(echo $DEVICELIST2|sed -e "s/\ /\n/g"|grep -v $a)
done
DEVICELIST=$DEVICELIST2
# これで、$DEVICELISTに、目的のUSB-HDDの中の全てのパーティションのデバイスファイル名が半角スペース区切りで入っている。
devlist=""
gksudo -m "ハードディスクの状況を調べるためにパスワードを入力してください。" sleep 0
for a in $DEVICELIST
do
IFSWAP=$(sudo fdisk -l|grep $a|tr -d \*|tr -s " "|cut -d" " -f5)
if [ $IFSWAP != 82 ] && [ $IFSWAP != 5 ]
then
FILESYSTEM=$(sudo vol_id --export $a|grep "ID_FS_TYPE"|cut -d= -f2)
MOUNTPOINT=$(more /etc/mtab|grep $a|tr -s " "|cut -d" " -f2)
if [ "${MOUNTPOINT}" ]
then
if [ "$(ls ${MOUNTPOINT}/boot/vmlinuz* 2>/dev/null)" ]
then
devlist=$(echo ${devlist})" "$a
fi
else
sudo mount -t $FILESYSTEM $a /mnt -o ro
if [ "$(ls /mnt/boot/vmlinuz* 2>/dev/null)" ]
then
devlist=$(echo ${devlist})" "$a
fi
sudo umount -l /mnt
sleep 1
fi
fi
done
zenity --info --title="${title}" --text="/boot/vmlinuz*のあるUSBメディア内のパーティションのデバイスファイル名は${devlist}です。\nUSBのUbuntuのインストールされたパーティションは上記のうちのどれかを次のウィンドウで入力してください。\n分からなければ、何も入力しないで「OK」をクリックしてください。" &
rootdev=$(zenity --title="${title}" --entry --entry-text="$(echo ${devlist}|cut -d" " -f2)")
if [ "${rootdev}" ]
then
MOUNTPOINT=`more /etc/mtab|grep ${rootdev}|tr -s " "|cut -d" " -f2`
if [ -z ${MOUNTPOINT} ]
then
MOUNTPOINT="/mnt"
FILESYSTEM=$(sudo vol_id --export ${rootdev}|grep "ID_FS_TYPE"|cut -d= -f2)
sudo mount -t $FILESYSTEM ${rootdev} /mnt -o ro
fi
kernelver=$(ls -1 ${MOUNTPOINT}/boot/vmlinuz*generic 2>/dev/null|tail -n 1|tr "/" '\n'|tail -n 1|cut -c9-)
if [ -z "${kernelver}" ]
then
zenity --warning --title="${title}" --text="入力されたデバイスファイル名の示すパーティションの中に/boot/vmlinuz・・・genericがありません。\nおかしいので、ISOファイルの作成を中止して終了します。"
exit 0
fi
rootuuid=$(sudo blkid|grep ${rootdev}|cut -f2 -d\")
else
zenity --warning --title="${title}" --text="空の文字が入力されました。意味が分からないなら、このツールは使わない方が良いです。\n済みませんが、ISOファイルの作成を中止して終了します。"
exit 0
fi
fi
zenity --info --title="${title}" --text="次のウィンドウでは、ISOファイルを作成するための作業用ディレクトリを選択してください。\n右上のボタンをクリックして、新しく作った方が安全でしょう。"
workdir=$(zenity --title="${title}" --file-selection --directory)
mkdir -p ${workdir}/boot/grub
until [ -e ${workdir}/boot/grub ]
do
zenity --warning --title="${workdir}/boot/grubを作成できませんでした。書き込み可能なディレクトリを作業用ディレクと"
zenity --info --title="${title}" --text="次のウィンドウでは、ISOファイルを作成するための作業用ディレクトリを選択してください。\n右上のボタンをクリックして、新しく作った方が安全でしょう。"
workdir=$(zenity --title="${title}" --file-selection --directory)
mkdir -p ${workdir}/boot/grub
done
cp ${MOUNTPOINT}/boot/vmlinuz-$kernelver ${workdir}/boot
cp ${MOUNTPOINT}/boot/initrd.img-$kernelver ${workdir}/boot
cp ${MOUNTPOINT}/usr/lib/grub/i386-pc/stage2_eltorito ${workdir}/boot/grub
cat > ${workdir}/boot/grub/menu.lst <default 0
timeout 5
title USB-HDD ubuntu UUID vmlinuz-$kernelver
kernel /boot/vmlinuz-$kernelver root=UUID=$rootuuid rootdelay=10 ro
initrd /boot/initrd.img-$kernelver

EOF
c=$(echo ${rootdev}|tr "/" '\n'|tail -n 1|cut -c4-)
b="a b c d e"
for a in $b
do
cat >> ${workdir}/boot/grub/menu.lst <title USB-HDD ubuntu /dev/sd$a$c vmlinuz-$kernelver
kernel /boot/vmlinuz-$kernelver root=/dev/sd$a$c rootdelay=10 ro
initrd /boot/initrd.img-$kernelver

OWARI
done
genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o usbbootcd-$kernelver.iso ${workdir} && zenity --info --title="${title}" --text="正常に起動用CDのイメージをusbbootcd-$kernelver.isoという名前で作成しました。CD-Rなどに焼いてください。"
zenity --info --title="${title}" --text="終了します。"
exit 0


関連記事

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

コメントの投稿

管理者にだけ表示を許可する

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: テスト送信

> パスワードがなくて 送れるかの
> テスト送信ですので、すみません 削除してください。

早速のコメント有難うございました。こちらのスクリプトでおかしいことがあったら、ご連絡ください。
ただし、書いてあるように、
Ubuntu9.04の通常版用のスクリプトですので、
remastersysとかLinuxMintとかについてのご質問にはご返事しないかもしれません。

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: USBーHDDからの起動について

1月10日に
http://kiyoandkei.blog68.fc2.com/
にコメントをいただいていながら、ご返事が遅くなり、申し訳ございません。
上記URLのコメントにはほとんど誰も書き込まれないので、チェックしていませんでした。
http://kiyoandkei.bbs.fc2.com/?act=reply&tid=3647215
が開ければ、そこに書いていただけると、もっと早くご返事できます。

USB-HDDにGrub2をインストールして、起動時に
grub rescue>
が表示されているのなら、かなり好調です。

https://forums.ubuntulinux.jp/viewtopic.php?pid=74004#p74004
はgitenさんでしょうか。
私は初心者サポートには書き込むことができません。
https://forums.ubuntulinux.jp/viewforum.php?id=3
にでも投稿し直してくだされば私も解答できます。
プロフィール

kiyoshi

Author:kiyoshi
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
since 2011/9/25
現在の閲覧者数: