Ostatnio zabrałem się za pisanie skryptów do rzeczy które często muszę ponownie wykonywać na linuxie. Jedną z tych rzeczy jest przywracanie gruba.
Kod: Zaznacz cały
#!/bin/bash
while [ 1 ]
do
clear
echo "********************************************************"
echo "*********** Witam, co chcesz zrobić ? ***********"
echo "********************************************************"
echo "1) Wyświetl partycję znajdujące się na dysku"
echo "2) Zamontuj katalogi systemowe"
echo "3) Jeśli katalog /boot znajduję się na innej partycji, wskaż ją"
echo "4) Zainstaluj i odśwież grub"
echo "5) Odmontuj katalogi"
echo "6) Błędy podczas instalacji grub"
echo "7) Restart systemu"
echo "8) Wyjdź"
echo -n "numer: "
read numer
case "$numer" in
"1")
fdisk -l
echo "Aby kontynuować wciśnij dowolny klawisz"
read
continue;;
"2")
echo -n "Wskaż partycję na której znajduję się /(system).
Podaj tylko numer partycji np. sda1, sda2, sda3...
numer: "
read system
mount /dev/$system /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
if [ -a /mnt/dev && /mnt/proc && /mnt/sys ];
then
echo "Katalogi zostały zamontowane"
else
echo "Wystąpił błąd podczas montowania katalogów"
fi
read
continue;;
"3")
echo -n "Wskaż partycję na której znajduję się /boot: "
read boot
mount /dev/$boot /mnt/boot
if [ -a /mnt/boot ];
then
echo "Katalog /boot został zamontowany"
else
echo "Wystąpił błąd podczas montowania katalogu /boot"
fi
read
continue;;
"4")
chroot /mnt
grub-install /dev/sda
update-grub
echo "Aby kontynuować wciśnij dowolny klawisz"
read
continue;;
"5")
echo "exit"
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt/boot
echo "Aby kontynuować wciśnij dowolny klawisz"
read
continue;;
"6")
echo "Błędy podczas instalacji grub"
echo "a - użycie opcji --recheck w celu ponownego wyszukania urządzeń startowych 'zawierających system operacyjny'"
echo "b - aktualizacja numeru partycji UUID w celu uniknięcia ewentualnych problemów"
echo -n "numer: "
read podprogram
case "$podprogram" in
"a")
grub-install –-recheck /dev/sda
echo "Aby kontynuować wciśnij dowolny klawisz"
read
continue;;
"b")
update-grub
echo "Aby kontynuować wciśnij dowolny klawisz"
read
continue;;
*)
echo "Podałeś/łaś zły numer"
read
esac;;
"7")
reboot
echo "Restart systemu"
read
"8")
echo "Dowidzenia ;) "
exit;;
*)
echo "Podałeś/łaś zły numer"
read
esac
done
- W 34 linijce w sprawdzaniu if wyrzuca mi błąd ']' nie wiem dlaczego. Wyświetla się powiadomienie, że coś poszło nie tak z montowaniem katalogów, chociaż wszystkie są.
- Mam również problem z 5 punktem. Muszę wyjść z chroot gdy wpiszę polecenie exit skrypt się zamknie. Tymczasowo wpisałem echo "exit" ale nie sprawdzałem programu.