# 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-grubkomutunu ç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-installkomutunu kullanarak GRUB’ı yeniden yükler. Bu işlem, GRUB’ın doğru şekilde kurulmaması durumunda uygulanır.
- update-grubfonksiyonu 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-proberkullanı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_grubfonksiyonunu ç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_grubfonksiyonu 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

