Abdulaziz Akyol

Windows önyükleme onarımı: bootrec, bcdboot ve BCD (UEFI/GPT ve BIOS/MBR)

Sistem yönetimi
3 Aralık 2018 · 6 dk okuma · Abdulaziz Akyol

Windows önyükleme onarımı, bilgisayarı açılışta Windows’a ulaştıran önyükleme kodunu, Windows Önyükleme Yöneticisi’ni (Boot Manager) ve önyükleme yapılandırma verisini (Boot Configuration Data, BCD) Windows Kurtarma Ortamı’ndaki (WinRE) komutlarla yeniden oluşturmaktır. Temel araçlar üç tane: bootrec, bcdboot ve bcdedit. Hangisini kullanacağınızı ise diskin UEFI/GPT mi yoksa BIOS/MBR mi olduğu belirler.

2018’deki notum tek satırdı: bootrec /rebuildbcd. Windows 7 ve Server 2008 döneminde çoğu zaman yetiyordu. Bugün sahadaki bilgisayarların neredeyse tamamı UEFI ile açıldığı için aynı komut ya hata veriyor ya da işe yaramıyor. Bu rehber iki düzeni de adım adım ele alıyor.

Önce teşhis: sorun hangi aşamada?

Microsoft’un sorun giderme belgesi açılışı dört aşamaya ayırıyor ve her aşamada farklı dosyalar devrede:

Aşama BIOS/MBR UEFI/GPT
1. Ön önyükleme MBR ve bölüm önyükleme kodu UEFI bellenimi (firmware)
2. Önyükleme Yöneticisi %SystemDrive%\bootmgr \EFI\Microsoft\Boot\bootmgfw.efi
3. İşletim sistemi yükleyicisi winload.exe winload.efi
4. Çekirdek ntoskrnl.exe ntoskrnl.exe

“BOOTMGR is missing”, “Boot Configuration Data missing or corrupted”, “Operating system missing” ya da yanıp sönen imleçli siyah ekran, sorunun 1–3. aşamada olduğunu gösterir; bu yazıdaki komutlar tam bu durum için. INACCESSIBLE_BOOT_DEVICE (0x7B) gibi mavi ekranlar ise çekirdek aşamasındadır: genellikle depolama sürücüsü, BIOS’ta değiştirilen disk modu ya da yarım kalmış güncellemeyle ilgilidir ve BCD’yi yeniden oluşturmak onları çözmez.

WinRE’ye nasıl girilir?

Microsoft’un WinRE belgesine göre ortam, art arda iki başarısız açılıştan, açılıştan sonraki iki dakika içinde yaşanan art arda iki beklenmedik kapanmadan ya da bir Secure Boot hatasından sonra kendiliğinden başlar. Elle girmenin yolları:

  1. Windows açılıyorsa Shift tuşunu basılı tutup Yeniden Başlat’ı seçin ya da Ayarlar > Sistem > Kurtarma > Gelişmiş başlangıç > Şimdi yeniden başlat yolunu izleyin. Komut satırından aynı iş: shutdown /r /o /t 0.
  2. Windows hiç açılmıyorsa aynı sürümün kurulum USB’siyle başlatın, İleri > Bilgisayarınızı onarın adımından geçin. Kurulum ekranında Shift+F10 doğrudan komut istemini açar.
  3. Menüde Sorun giderme > Gelişmiş seçenekler altında önce Başlangıç Onarımı’nı deneyin; birçok sorunu kendisi düzeltir ve günlüğünü %windir%\System32\LogFiles\Srt\SrtTrail.txt dosyasına yazar. Sonuç alamazsanız Komut İstemi’ne geçin.

Kurulum USB’sini diskin düzeniyle aynı modda başlatın: UEFI kurulum için USB’yi de UEFI modunda açın. Sahada en çok zaman kaybettiren hatalardan biri, USB’nin eski (Legacy/CSM) modda açılıp UEFI kurulumu onarmaya çalışmaktır.

Adım 1: Disk düzenini ve sürücü harflerini belirleyin

WinRE’de sürücü harfleri Windows’takiyle aynı değildir: WinRE’nin kendisi X:’tir, Windows bölümü çoğu zaman D: olur. Komut vermeden önce haritayı çıkarın:

diskpart
list disk
list vol
exit

list disk çıktısında Gpt sütununda yıldız (*) olan disk GPT’dir; bu neredeyse her zaman UEFI demektir. list vol çıktısında 100–300 MB civarında, FAT32 biçimli ve bilgi sütununda “System” yazan birim EFI sistem bölümüdür (ESP). Microsoft’un bölümleme belgesine göre bu bölüm en az 200 MB (4K yerel sektörlü disklerde 300 MB) olmalı ve FAT32 ile biçimlenmelidir. Windows’un hangi harfte olduğunu dir D:\Windows ile doğrulayın.

Windows bölümü BitLocker ile şifreliyse önce kilidi açın; aksi hâlde hiçbir araç Windows’u göremez:

manage-bde -status
manage-bde -unlock D: -RecoveryPassword <48-HANELI-KURTARMA-ANAHTARI>

Adım 2: BCD’nin yedeğini alın

Herhangi bir değişiklikten önce mevcut BCD’yi dışa aktarın. bcdedit /export sistem deposunu bir dosyaya yazar; bcdedit /import bu dosyayı geri yükler, ama belgelere göre bunu yapmadan önce sistem deposundaki tüm mevcut girişleri siler:

mkdir D:\Yedek
bcdedit /export D:\Yedek\bcd-yedek
bcdedit /enum all /v

Geri dönmek gerekirse: bcdedit /import D:\Yedek\bcd-yedek.

Adım 3a: UEFI/GPT onarımı (bcdboot)

UEFI sistemlerde önyükleme dosyaları ve BCD, EFI sistem bölümündeki \EFI\Microsoft\Boot klasöründe durur. bcdboot, bu dosyaları Windows klasöründeki temiz kopyalardan yeniden oluşturur. EFI bölümünün normalde harfi olmadığı için önce geçici bir harf atıyoruz. Aşağıdaki örnekte list vol çıktısında EFI bölümünün 2 numaralı birim olduğunu varsayıyorum; kendi çıktınızdaki numarayı kullanın:

diskpart
list vol
select volume 2
assign letter=S
exit

bcdboot D:\Windows /s S: /f UEFI

Komut “Boot files successfully created” mesajıyla biterse bilgisayarı yeniden başlatın. Microsoft’un BCDBoot belgesindeki ayrıntılar:

  • /f UEFI, \EFI\Microsoft\Boot klasörünü oluşturup gerekli dosyaları kopyalar. /f kullanıyorsanız /s de zorunludur.
  • /s verildiğinde bcdboot bellenimin NVRAM’ına “Windows Boot Manager” girdisi eklemez ve bellenimin varsayılan \EFI\Boot\bootx64.efi yoluna güvenir. Önyükleme menüsünde Windows girdisi görünmüyorsa, WinRE’yi yerel diskten açtığınız durumda bcdboot D:\Windows komutunu /s olmadan çalıştırmak NVRAM girdisini de oluşturur.
  • Bu Windows için zaten bir önyükleme girdisi varsa bcdboot onu siler ve yeniden yazar; eski ayarları korumak için /m seçeneği vardır.

EFI bölümü bozulmuşsa belgeler, bcdboot’tan önce bölümü format S: /fs:fat32 /q ile hızlı biçimlendirmeyi de bir seçenek olarak gösteriyor. Bunu yalnızca doğru birimi seçtiğinizden emin olduğunuzda yapın.

Windows açıkken EFI bölümüne erişmeniz gerekirse mountvol S: /s komutu bölümü geçici olarak S: harfine bağlar; işiniz bitince mountvol S: /d ile kaldırın.

Adım 3b: BIOS/MBR onarımı (bootrec)

BIOS/MBR düzeninde bootrec hâlâ ana araçtır. Microsoft’un belgelerindeki sırayla:

bootrec /fixmbr
bootrec /fixboot
bootrec /scanos
bootrec /rebuildbcd
  • /fixmbr, sistem bölümüne Windows uyumlu bir ana önyükleme kaydı (MBR) yazar; bölüm tablosunun üzerine yazmaz. Bu yüzden bozulma bölüm tablosunu da etkilemişse tek başına yetmez.
  • /fixboot, sistem bölümüne yeni bir önyükleme kesimi yazar.
  • /scanos, tüm disklerde BCD’de henüz kayıtlı olmayan Windows kurulumlarını arar.
  • /rebuildbcd, bulduğu kurulumları listeler ve onayınızla BCD’ye ekler.

/rebuildbcd sonuç vermezse Microsoft’un önerdiği yöntem, mevcut BCD’yi saklayıp yenisini oluşturmaktır. Aşağıdaki C:, WinRE’de “Sistem Ayrılmış” (System Reserved) bölümüne ya da \Boot\BCD dosyasını barındıran bölüme karşılık gelir; harfi list vol ile kontrol edin:

bcdedit /export C:\bcdbackup
attrib C:\boot\bcd -r -s -h
ren C:\boot\bcd bcd.old
bootrec /rebuildbcd

MBR diskte bcdboot D:\Windows /s C: /f BIOS komutu da önyükleme dosyalarını yeniden oluşturabilir. BIOS yalnızca etkin (active) işaretli bölümden açılır; list partition çıktısında sistem bölümünü bulun ve gerekirse diskpart’ta select disk 0, select partition 1 (kendi numaranız) ve active komutlarıyla işaretleyin.

Sık karşılaşılan hatalar

  • bootrec /fixboot “Erişim engellendi” diyor. Bu hatayı çoğunlukla UEFI/GPT sistemlerde görüyorum. /fixboot bir önyükleme kesimi yazar ve MBR dünyasına aittir; UEFI’de doğru araç Adım 3a’daki bcdboot komutudur. Bu hataya takılıp kalmayın.
  • /scanos ya da /rebuildbcd sıfır kurulum buluyor. Kurulum BCD’de zaten kayıtlı olabilir, Windows bölümü BitLocker ile kilitli olabilir ya da USB yanlış modda açılmış olabilir.
  • bcdboot dosya kopyalayamıyor. Genellikle yanlış harf verilmiştir ya da hedef birim FAT32 biçimli EFI bölümü değildir. list vol çıktısını yeniden kontrol edin.
  • Bilgisayar sürekli kurtarma ekranına dönüyor. Microsoft’un belgesindeki komut döngüyü kırar: bcdedit /set {default} recoveryenabled no. F8 menüsünü geri getirmek için bcdedit /set {default} bootmenupolicy legacy.
  • BCD sağlam ama sistem dosyaları bozuk. Çevrimdışı dosya denetimi ve disk taraması: sfc /scannow /offbootdir=D:\ /offwindir=D:\Windows ve chkdsk D: /f /r.

PowerShell ile önleyici kontroller

Arıza anında değil, bugün yapılacak üç kontrol var. Windows açıkken yönetici PowerShell’inde:

$env:firmware_type                                   # UEFI ya da Legacy
Get-Disk | Select-Object Number, FriendlyName, PartitionStyle
Get-Partition | Where-Object Type -eq 'System' |
    Select-Object DiskNumber, PartitionNumber, @{ n = 'BoyutMB'; e = { [int]($_.Size / 1MB) } }

$hedef = "C:\Yedek\bcd-$(Get-Date -Format yyyyMMdd).bak"
New-Item -ItemType Directory -Path (Split-Path $hedef) -Force | Out-Null
bcdedit /export $hedef
bcdedit /enum '{default}'                            # süslü parantezi tırnak içine alın

Son satırdaki tırnak önemli: PowerShell {default} ifadesini tırnaksız görürse betik bloğu sanar ve bcdedit’e yanlış argüman gider. PowerShell’in bu tür ayrıntıları için PowerShell’e giriş rehberine bakabilirsiniz.

Kontrol listesi

  • Hata mesajını not edin; 0x7B gibi çekirdek aşaması hatalarında BCD ile uğraşmayın.
  • diskpart ile disk düzenini (GPT/MBR), EFI bölümünü ve Windows’un harfini belirleyin.
  • BitLocker açıksa kurtarma anahtarıyla kilidi açın.
  • bcdedit /export ile BCD yedeği alın.
  • UEFI’de EFI bölümüne harf atayıp bcdboot D:\Windows /s S: /f UEFI; BIOS/MBR’de bootrec dizisi ya da bcdboot /f BIOS.
  • Onarımdan sonra BitLocker kurtarma anahtarlarının ve yerel yönetici parolalarının merkezi olarak saklandığını doğrulayın; yerel yönetici parolası için Windows LAPS’i anlattığım rehbere bakabilirsiniz.

Fiziksel erişim ve USB’den önyükleme riskleri için de USB depolama aygıtlarını engelleme rehberi tamamlayıcı bir okuma.

Sık sorulan sorular

bootrec /fixboot 'Erişim engellendi' (Access is denied) hatası verirse ne yapmalıyım?

Bu hata en çok UEFI/GPT sistemlerde görülür. /fixboot bir önyükleme kesimi (boot sector) yazar ve BIOS/MBR mantığına aittir; UEFI'de önyükleme dosyaları EFI sistem bölümünde durur. Çözüm, EFI bölümüne diskpart ile harf atayıp bcdboot D:\Windows /s S: /f UEFI komutuyla önyükleme dosyalarını ve BCD'yi yeniden oluşturmaktır.

bootrec /rebuildbcd 'tanımlanan Windows yüklemesi: 0' diyorsa ne anlama gelir?

bootrec yalnızca BCD'de henüz kayıtlı olmayan Windows kurulumlarını listeler; kurulum zaten kayıtlıysa sıfır görünebilir. Windows bölümü BitLocker ile kilitliyse de bulunamaz. BIOS/MBR'de Microsoft'un önerdiği yol BCD'yi yedekleyip yeniden adlandırarak /rebuildbcd'yi tekrar çalıştırmak, UEFI'de ise bcdboot kullanmaktır.

Windows Kurtarma Ortamı'na (WinRE) nasıl girilir?

Windows açılabiliyorsa Shift tuşuna basılı tutarak Yeniden Başlat'ı seçin ya da Ayarlar > Kurtarma > Gelişmiş başlangıç > Şimdi yeniden başlat yolunu kullanın. Windows hiç açılmıyorsa art arda iki başarısız açılıştan sonra WinRE kendiliğinden gelir; gelmezse Windows kurulum USB'siyle açıp 'Bilgisayarınızı onarın' seçeneğine girin.

BitLocker açık diskte önyükleme onarımı yapılabilir mi?

Evet, ama önce Windows bölümünün kilidini açmanız gerekir. WinRE komut isteminde manage-bde -status ile durumu görün, manage-bde -unlock D: -RecoveryPassword komutuyla 48 haneli kurtarma anahtarını girin. Anahtar genellikle Microsoft hesabında, Active Directory'de ya da Microsoft Entra ID'de saklıdır.

Kaynaklar

  1. Windows startup issues troubleshooting (Microsoft Learn) learn.microsoft.com
  2. BCDBoot Command-Line Options (Microsoft Learn) learn.microsoft.com
  3. BCDEdit Command-Line Options (Microsoft Learn) learn.microsoft.com
  4. Windows Recovery Environment (Windows RE) (Microsoft Learn) learn.microsoft.com
  5. UEFI/GPT-based hard drive partitions (Microsoft Learn) learn.microsoft.com

bootrecbcdbootbcdeditWinREUEFIdiskpartMarkdown sürümü

İletişim

Konuşalım.