# DualBoot-Grub-Repair
Merhabalar,
Grub Güncellemesinden Sonra Oluşan DualBoot Sorunu İçin Bir Shell Script Yazdım. (Github)
Bazı Linux dağıtımlarında, Çekirdek güncellemesinden sonra Grub güncellenir ve bazen Windows BootLoader Grub’dan silinir. Çekirdek Güncellemesinden sonra sistemi yeniden başlatmadan Bu Shell Script Dosyasını çalıştırın ve DualBoot Hatasını önleyin, Her Kernel & Grub Güncellemesinden Sonra Bu Scripti Çalıştırın.
Bu Script, GRUB (Linux boot loader) ile ilgili çeşitli işlemleri otomatikleştiren bir dizi fonksiyonu içeriyor. Temel olarak, aşağıdaki işlemleri gerçekleştirmeye yönelik bir araçtır. Not: Bu Script Hiçbir Garanti Vermez.
Script’in Yaptığı İşlemler:
- GRUB güncelleme (
update_grub
):
- Bu fonksiyon,
sudo update-grub
komutunu çalıştırarak GRUB yapılandırmasını günceller. GRUB menüsünde yapılan değişiklikleri uygular.
- GRUB’ı yeniden yükleme (
reinstall_grub
):
- Bu fonksiyon,
sudo grub-install
komutunu kullanarak GRUB’ı yeniden yükler. Bu işlem, GRUB’ın doğru şekilde kurulmaması durumunda uygulanır. update-grub
fonksiyonu da çağrılarak, yapılandırma güncellenir.
- Windows’u GRUB’a ekleme (
add_windows_to_grub
):
- Bu fonksiyon, GRUB’a Windows’u eklemek için
os-prober
kullanır.os-prober
, sistemdeki işletim sistemlerini tarar ve tespit edilen işletim sistemlerini GRUB yapılandırmasına ekler.
- Windows’un varlığını kontrol etme (
check_windows
):
- Bu fonksiyon, sistemdeki NTFS bölümlerini (Windows işletim sistemi genellikle NTFS dosya sistemini kullanır) kontrol eder.
- Eğer Windows bölümü varsa,
add_windows_to_grub
fonksiyonunu çağırarak Windows’u GRUB menüsüne ekler.
- GRUB’ın varlığını kontrol etme (
check_grub
):
- Bu fonksiyon, GRUB’ın sistemde yüklü olup olmadığını kontrol eder.
- Eğer GRUB bulunamazsa,
reinstall_grub
fonksiyonu ile yeniden yüklenmesini sağlar.
- Kullanıcıdan yeniden başlatma onayı alma (
ask_for_reboot
):
- Kullanıcıya yapılan değişikliklerin ardından sistemi yeniden başlatmak isteyip istemediği sorulur.
- Eğer kullanıcı “Evet” derse, sistem yeniden başlatılır.
- Ana fonksiyon (
main
):
- Bu fonksiyon, yukarıdaki işlemleri sırasıyla çağırarak GRUB yapılandırmasını kontrol eder, Windows’u ekler ve sonrasında kullanıcıya sistemi yeniden başlatıp başlatmak istemediğini sorar.
Scriptin Çalıştırılması
Github Paketi Kurulmalıdır.
sudo apt install git -y
Script’in İndirilip Çalıştırılması
sudo bash -c "git clone https://github.com/cektor/DualBoot-Grub-Repair.git && cd DualBoot-Grub-Repair && chmod +x gdboot-r.sh && ./gdboot-r.sh -y"
Merak edenler için Script’in içeriği
#!/bin/bash
#https://github.com/cektor/DualBoot-Grub-Repair/ | Fatih ÖNDER (CekToR)
# GRUB güncelleme fonksiyonu
update_grub() {
echo "GRUB güncelleniyor..."
sudo update-grub
}
# GRUB'ı yeniden yükleme fonksiyonu
reinstall_grub() {
echo "GRUB sıfırlanıyor ve yeniden yükleniyor..."
sudo grub-install /dev/sda # /dev/sda, sabit diskiniz olmalı. Eğer farklıysa, uygun diski belirtin.
update_grub
}
# GRUB'a Windows'u ekleme fonksiyonu
add_windows_to_grub() {
echo "Windows tespit ediliyor ve GRUB'a ekleniyor..."
# Windows'ı GRUB'a eklemek için os-prober'ı kullanacağız
sudo os-prober
update_grub
}
# Windows'un varlığını kontrol etme fonksiyonu
check_windows() {
# Eğer Windows sistemine ait bir bölüm bulunuyorsa, GRUB'da bu Windows'u eklemeyi başarmalıyız
if sudo blkid | grep -i "ntfs" > /dev/null; then
echo "Windows bölümü bulundu. GRUB'a ekleniyor..."
add_windows_to_grub
else
echo "Windows bölümü bulunamadı. Lütfen kontrol edin."
exit 1
fi
}
# GRUB'un kaybolduğunu kontrol etme fonksiyonu
check_grub() {
# Eğer GRUB yoksa, yeniden yükle
if ! sudo grub-install --version > /dev/null 2>&1; then
echo "GRUB tespit edilemedi. GRUB sıfırlanıyor..."
reinstall_grub
else
echo "GRUB mevcut."
fi
}
# Kullanıcıdan yeniden başlatma onayı alma fonksiyonu
ask_for_reboot() {
read -p "Değişiklikler tamamlandı. Sistemi yeniden başlatmak ister misiniz? (Evet/Hayır): " answer
case "$answer" in
[Ee][Vv][Ee][Tt] | [Ee])
echo "Sistem yeniden başlatılıyor..."
sudo reboot
;;
[Hh][Aa][Yy][Ii][Rr] | [Hh])
echo "Yeniden başlatma iptal edildi."
;;
*)
echo "Geçersiz giriş. Yeniden başlatma iptal edildi."
;;
esac
}
# Ana fonksiyon
main() {
# GRUB'u kontrol et ve gerekirse yeniden yükle
check_grub
# Windows tespiti yapılıyor
echo "Windows tespiti yapılıyor..."
if ! sudo os-prober | grep -i "Windows" > /dev/null; then
check_windows
else
echo "Windows zaten GRUB menüsünde mevcut."
update_grub
fi
# Kullanıcıdan yeniden başlatma onayı al
ask_for_reboot
}
# Script çalıştırma
main