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

全てのパーティションの全ての/boot/grub/menu.lstの最初の起動設定を連結するツール

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

全てのパーティションに存在する/boot/grub/menu.lstの最初の起動設定を連結して、menu.lst.connectedという名前のファイルに保存します。

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

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

Connect1stBootMethodInMenuLst.txt
の内容は以下のとおりです。


#!/bin/bash
gksudo -m "ハードディスクの状況を調べてマウントするためにパスワードを入力してください。" sleep 0
# sudo cp -f /boot/grub/menu.lst /boot/grub/menu.lst.bakkuappu && zenity --title="全パーティションの/boot/grub/menu.lstの最初の項目を連結" --info --text="現在の/boot/grub/menu.lstを/boot/grub/menu.lst.bakkuappuとして保存しました。"
DEVICELIST="$(sudo fdisk -l|grep /dev/sd|grep -v ディスク|cut -d" " -f1)" # && echo "存在するパーティションは\n${DEVICELIST}\nです。\n"
SWAPDEVICELIST="$(swapon -s|grep /dev/sd|cut -d" " -f1)"
log="スワップとして使われているパーティションは${SWAPDEVICELIST}\nです。"
GRUBDEVICE=""
for a in $DEVICELIST
do
IFSWAP=$(echo ${SWAPDEVICELIST}|grep $a)
if [ "$IFSWAP" ]
then
log="$log\n$a はスワップ領域です。今、スワップとして使われています。"
else
IFEXTENDED="$(sudo fdisk -l|grep $a|tr -s " "|cut -d" " -f5)"
if [ "$IFEXTENDED" = "5" ]
then
log="$log\n$a は拡張パーティションです。"
else
MOUNTPOINT="$(more /etc/mtab|grep $a|tr -s " "|cut -d" " -f2)"
if [ "${MOUNTPOINT}" ]
then
FILESYSTEM="$(more /etc/mtab|grep $a|tr -s " "|cut -d" " -f3)"
log="$log\n$a は $MOUNTPOINT にマウントされています。ファイルシステムは $FILESYSTEM です。"
if [ -e $MOUNTPOINT/boot/grub/menu.lst ]
then
log="$log この中に/boot/grub/menu.lstが存在します。"
GRUBDEVICE="${GRUBDEVICE} $a"
fi
else
IFSWAP="$(sudo blkid|grep $a|tr -s " "|cut -d" " -f2|cut -d\" -f2)"
if [ "$IFSWAP" = "swap" ]
then
log="$log\n$a はスワップ領域です。今はスワップとして使われていません。"
else
FILESYSTEM="$(sudo blkid|grep $a|tr " " '\n'|grep -G ^TYPE=|cut -d\" -f2)"
log="$log\n$a はマウントされていません。ファイルシステムは $FILESYSTEM です。"
sudo umount -l /mnt 2>/dev/null
sync
sudo mount -t $FILESYSTEM $a /mnt -o ro
if [ -e /mnt/boot/grub/menu.lst ]
then
log="$log この中に/boot/grub/menu.lstが存在します。"
GRUBDEVICE="${GRUBDEVICE} $a"
fi
sudo umount -l /mnt
fi
fi
fi
fi
done
zenity --info --title="全パーティションの/boot/grub/menu.lstの最初の項目を連結" --text="$log\n結局、/boot/grub/menu.lstを持っているのは、$GRUBDEVICEです。"
zenity --title="全パーティションの/boot/grub/menu.lstの最初の項目を連結" --info --text="次のウィンドウでは、作業用のファイルを一時的に保存するディレクトリを選択してください。右上のボタンを押して、新しく作成した方が安全です。"
workdir=$(zenity --title="全パーティションの/boot/grub/menu.lstの最初の項目を連結" --file-selection --directory)
if [ $? = 1 ]
then
zenity --warning --title="全パーティションの/boot/grub/menu.lstの最初の項目を連結" --text="キャンセルが押されました。終了します。"
exit 0
fi
if [ -x "$workdir" -a -d "$workdir" ]
then
sleep 0
else
zenity --warning --title="全パーティションの/boot/grub/menu.lstの最初の項目を連結" --text="$workdirが無いか、書き込みできません。終了します。"
exit 0
fi
cd "$workdir"
rm menuall.txt title.txt menu1.txt menu.lst.connected
for a in $GRUBDEVICE
do
MOUNTPOINT=$(more /etc/mtab|grep $a|tr -s " "|cut -d" " -f2)
if [ "${MOUNTPOINT}" ]
then
bb="1"
else
bb="0"
FILESYSTEM=$(sudo blkid|grep $a|tr " " '\n'|grep -G ^TYPE=|cut -d\" -f2)
sudo umount -l /mnt 2>/dev/null
sync
sudo mount -t $FILESYSTEM $a /mnt -o ro
MOUNTPOINT="/mnt"
fi
grep -A 7 -G ^title ${MOUNTPOINT}/boot/grub/menu.lst > menuall.txt
cat menuall.txt|head -n 1 > title.txt
a=`wc -l menuall.txt|cut -d" " -f1`
b=`expr $a - 1`
cat menuall.txt|tail -n $b > menu1.txt
a=`cat menu1.txt|tr -d " "|grep -n -G ^title|head -n 1|cut -d: -f1`
if [ $a ]
then
b=`expr $a - 1`
cat menu1.txt|head -n $b >> title.txt
else
cat menu1.txt >> title.txt
fi
a=`cat title.txt|tr -d " "|grep -n -G ^\#|head -n 1|cut -d: -f1`
if [ $a ]
then
b=`expr $a - 1`
cat title.txt|head -n $b > menuall.txt
else
cat title.txt > menuall.txt
fi
a=`cat menuall.txt|tr -d " "|grep -n -G ^$|head -n 1|cut -d: -f1`
if [ $a ]
then
b=`expr $a - 1`
cat menuall.txt|head -n $b > title.txt
else
cat menuall.txt > title.txt
fi
cat title.txt >> menu.lst.connected
echo >> menu.lst.connected
if [ $bb = "0" ]
then
sudo umount -l /mnt
fi
done
rm menuall.txt title.txt menu1.txt
zenity --info --title="全パーティションの/boot/grub/menu.lstの最初の項目を連結" --info --text="各パーティションの/boot/grub/menu.lstの最初の起動項目だけを連結したものがmenu.lst.connectedに保存されました。"
nautilus $PWD
exit 0

関連記事

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

コメントの投稿

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

プロフィール

kiyoshi

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

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

この人とブロともになる

QRコード
QRコード
since 2011/9/25
現在の閲覧者数:
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。