Pardus & Windows DualBoot Sorunu Çözümü

# 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:

  1. 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.
  1. 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.
  1. 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.
  1. 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.
  1. 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.
  1. 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.
  1. 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

5 Beğeni

Ben iki farklı SSD kullanıyorum. Bunlar bana biraz karışık geldi.

1 Beğeni

Eğer güncellemelerle ya da bizzat kendi yaptığın işlemler sonucunda windows grub menü’den kayboluyorsa, linkteki betik dosyasını indirip çalıştırıyorsun, windowsu tekrar gruba dahil ediyor. Dual boot yapıyor yani. İki ayrı SSD kullanman farketmiyor. Sistemdeki OS’leri tesbit edip gruba ve grub menüye dahil ediyor. Birlikte bir sorun üzerine çalışırken tesadüfen bu uygulamayı ortaya çıkardı @cektor :smiley:

2 Beğeni

yil olmus 2025 insanlar hala grub’la bogusuyor. grub 80’ lerin teknolojisidir antika olmustur artik, birakin artik grubu surubu.

maselef debian ve tabanlari hala gruba kafayi takmis. debian ve tabanlarida antika zaten.

2010’dan sonra satilan tum pc/laptoplar zaten uefiyle geliyor. uefi grub antikasini
emekliye ayiriyor. her(?) uefi de dahili(firmware’ye dahil) boot secme menusu var. boot ederken F2/ESC falan basinca geliyor. Insanlar bunu sadace USB/SSD’yi secmek icin zannediyor. Hayir! Ayni SSD’ dede kurulu 10 tane dagitimida secelibiyon.win/linux farketmez.

Farkli/yeni bisey denemek isteyenler icin:

efi-shell’i (internette veya dagitimlarda paket olarak mevcut) diskteki “EFI partition” icine “efi/boot/bootx64.efi” konumunda olarak kopyalayin.

Ama once zaten bu konumda olan dosyayi EFI partition kok dizinine “/grub.efi” olarak tasiyin! Isler ters giderse -sevmesseniz- bunu eski konumuna tasiyacaksiniz! Hersey eski hale donecek!

Boylece boot ederken efi-shell’ e duseceksiniz.Sonra yine EFI partitionda kok konumunda “startup.nsh” isimli bir dosya olusturun. Bu “varsayilan/default” dagitimi boot edecek. Bunun icin startup.nsh’ in icine soyle bisey yazmalisiniz:

kernelin_adi initrd=initrdnin_adi root=/dev/sda1

acemi iseniz grup config dosyasina veya EFI partitionun icerigine bakip gerekli parametreleri anlamaya calisin.

NOT: yukarda kerneliniz kernelin_adi ve initrdniz initrdnin_adi dosyalari startup.nsh ile ayni dizinde olmali.(EFI partitionun kok dizininde yani / ) degilse oraya kopyalayin.

efi-shell boot ederken 3-5 saniye icinde bir tusa(ESC’ye) basmazsaniz otomatik olarak bu startup.nsh dosyasini yurutecek. Eger ESC’ ye basarsaniz yurutmeyecek ve efi-shell’ e duseceksiniz.

efi-shell bizim linux shell’in (komut satirinin) efi versiyonudur. efinin komut satiridir. 30-40 tane builtin komutu vardir. “help” yazdigin zaman sana komutlari ve ne ise yaradigini soyler. “edit” komutu builtin text editordur. falan fistan

en onemli komut “bcfg” dir. “varsayilan/default” olmayan dagitimlari windowsu hatta eski grubu bu komutla “boot secme” menusune ekleriz.“help bcfg” yazinca “detayli usage” yi basar. Yeterince uzadi simdi kesiyom. eksik kalan/soran olursa sonra soylerim.

edit: startup.nsh dosyasi “ucs-2” encoding olmali yoksa calismaz. builtin “edit” editoru zaten default olarak bu encoding ile kaydeder. “ascii” encoding dosyayi “ucs-2” ye cevirme ozelligide var.

1 Beğeni

Aslında çok yararlı bir konu ve kodları ben eski bir dizüstü bilgisayarda denedim, grub zarar görmüştü yine çoklu disk yüzünden ve kodlardan tekrar düzeltebildim , teşekkürler :slight_smile:

2 Beğeni

Herkes senin tercih ettiklerini tercih etmek zorunda değil.
Beğenmiyorsan kullanma!
Kimseye akıl vermek senin haddine de değil
Kim ne isterse onu kullanır

2 Beğeni