#!/bin/bash title="GRUBをPBRへインストール" gksudo -m "Grubで情報を得るためにパスワードを入力してください。" sleep 1 kernelver=$(uname -r) while [ "$(ps auwx|grep gksudo|grep -v "grep gksudo")" ] do sleep 1 done a=$(sudo grub --batch </\n/g"|grep vmlinuz-${kernelver}|sed -e "s/find \/boot\/vmlinuz-${kernelver}//") grubid="" dev=$(more /etc/mtab|grep " / "|cut -d" " -f1) d=$(echo $dev|cut -c9-) if [ -z "$d" ] then zenity --title="$title" --warning --text="/パーティションのデバイスファイル名を正しく取得できませんでした。終了します。" exit 0 fi d=$(expr $(echo $d) - 1) for a in $b do if [ "$(echo $a|sed -e "s/(hd[0-9]\,//"|sed -e "s/)//")" = "$d" ] then grubid=$(echo "${grubid} $a") fi done # zenity --info --width=400 --text="現在起動しているUbuntuの/ディレクトリを含むパーティションのデバイスファイル名は\n${dev}\nです。\n現在使用しているカーネルのバージョンは\n${kernelver}\nです。\nこのカーネルを含むパーティションのGRUB上での認識記号は\n${grubid}\nです。" grubidslc="" for a in $grubid do d="/dev/sd$(echo "abcdefghijklmn"|cut -c$(expr $(echo $a|sed -e "s/\,/\n/"|head -n1|tr -d "(hd") + 1))$(expr $(echo $a|sed -e "s/\,/\n/"|tail -n1|tr -d ")") + 1)" grubidslc="${grubidslc} FALSE ${a} ${d} $(sudo fdisk -l ${d}|grep "ディスク"|grep "バイト"|tr -d " "|cut -d: -f2)" done a=$(zenity --title="${title}" --width=600 --list --radiolist --text="GRUBをインストールするデバイスにチェックを入れてください。" --column="↓チェック" --column="GRUB認識記号" --column="デバイスファイル名" --column="容量" ${grubidslc}) if [ $? = 1 ] then zenity --title="${title}" --warning --text="キャンセルが押されました。GRUBをインストールせずに終了します。" exit 0 fi if [ -z "$a" ] then zenity --title="${title}" --warning --text="何もチェックされませんでした。GRUBをインストールせずに終了します。" exit 0 fi d="/dev/sd$(echo "abcdefghijklmn"|cut -c$(expr $(echo $a|sed -e "s/\,/\n/"|head -n1|tr -d "(hd") + 1))$(expr $(echo $a|sed -e "s/\,/\n/"|tail -n1|tr -d ")") + 1)" # echo $a = $d backup="$(echo ${d}|cut -c6-)pbr$(date --rfc-3339=second|tr " " "_")" sudo dd if=${d} of=${backup} bs=512 count=63 && zenity --title="${title}" --info --text="現在の${d}のPBRからの63セクタを${backup}に保存しました。これからファイルマネージャで保存したディレクトリを開きます。" && nautilus "$PWD" sudo grub --batch <