Klonlanmış bir Windows 7 BCD neden eksik veri içeriyor (ve bu nedenle önyüklemeyi önlüyor)?


9

Sabit sürücüsünü daha küçük olanla değiştirmek için çift önyüklemeli bir Windows XP / 7 kutusunu klonlamak için talihsizlik yaşadım. Önyükleme konusunda büyük sorun yaşadım ve neler olduğunu ve daha iyi bir şey yapıp yapamayacağımı anlamak istiyorum.

Arka plan: Makinenin üzerinde 3 bölüm bulunan 750 Gb'lik bir sürücü var:

  • Windows XP
  • Windows 7
  • Veri

Orijinal yükleme, ayrı bir Windows 7 kurtarma bölümü olmayacak şekilde yapıldı. Umarım bu gerçek bazı şeyleri basitleştirir.

Bir 80Gb sürücü ile değiştiriyorum. Bölümler zaten daha küçük diske sığacak şekilde Windows 7 içinden küçültülmüştür.

Kullandığım GParted(a dan PartedMagickarşısında bölümleri kopyalamak için Linux LiveCD). Windows XP bölümünü etkin bölüm olarak işaretliyorum (orijinal diskteki ile aynı).

Daha büyük olandan CloneZilladaha küçük bir diske geçiş nedeniyle tüm disk kopyasını kullanamadım veya yapamadım.

Bölümleri kopyaladıktan sonra, önyükleme yükleyicisini manuel olarak kopyaladım (bölüm tablosunu kopyalamamaya dikkat ederek):

$ dd if=/dev/sda of=/dev/sdb bs=446 count=1

Orijinal diski çıkardım, yenisini fiziksel olarak orijinal (IDE kanal 1 master) ile aynı şekilde bağlanacak şekilde ayarladım ve önyüklemeyi denedim. Bu, önyükleme menüsünü başarıyla sundu ancak iki seçenekten birini seçtikten sonra başarısız oldu (biri XP için biri diğeri Win7 için).

Windows 7 önyükleme yapılandırma verilerinin olması gereken her şeyi içermediğini fark etmeme izin veren adil bir araştırma yaptım. Orijinal ve yeni disklerden gelen BCD çıkışını karşılaştırdım ve ikincisinde cihaz girişlerinin olduğunu belirttim unknown. Bu yüzden onları orijinal ile eşleşecek şekilde manuel olarak değiştirdim - şöyle:

$ bcdedit /set {ntldr} device partition=C:
$ bcdedit /set {default} device partition=D:
$ bcdedit /set {default} osdevice partition=D:

ve yeniden başlatıldı. Bu sefer hem XP hem de Win7'yi önyükleyebilirim. Daha fazla test yapmam gerekiyor çünkü iki BCD arasında başka farklılıklar var gibi görünüyor, ancak yukarıdaki değişiklikleri en azından önyüklemenin gerçekleşmesine izin veriyor.

Yani sorum gerçekten klonlanmış bir bölümdeki BCD'nin orijinalinden farklı görünmesini ve önyüklemeyi önlemek için yeterince neden görüneceğini sormak.

Bunu takip etmek, bunu başka bir şekilde yapmam gerekip gerekmediğini sormak olacaktır.

Yanıtlar:


13

Windows işletim sistemlerini içeren bölümleri klonladıktan sonra, klonlanmış bölümler klonlanmış diskte orijinalindekilerle tam olarak aynı konumda değilse, önyükleme yapılandırma verilerini düzeltmek gerekir.

Windows önyükleme mekanizması, Windows Vista'dan beri yapılandırmasını "Önyükleme Yapılandırma Verileri" (BCD) olarak saklar ve bu, bölüm numaralarına değil, bir disk imzasına ve sektör ofsetine göre bölümleri ifade eder. Disk imzası, Ana Önyükleme Kaydına katıştırılmış 32 bitlik bir değerdir. Sektör 0'ın ilk 446 baytını kopyalamak disk imzasını kopyalar.

Klonlama faaliyetleri, klonlanmış disk bölümlerinin farklı başlangıç ​​sektörü adreslerine sahip olmasıyla sonuçlanırsa, orijinal olanlar (bir tam disk klonu kullanılmadıkça büyük olasılıkla), bu klonlar bu çözümler uygulanana kadar büyük olasılıkla önyükleme yapamaz.

Temel olarak, sektör ofsetlerinin güncellenmesi gerekir ve bunun için bir kurtarma konsolu kullanmanız gerekir (bu bir Windows 7 kurulum DVD'sinde mevcuttur). Yalnızca klonlanmış sürücünün takılı olduğundan ve Windows 7 kurulum DVD'sinden önyüklendiğinden emin olun. İlk ekranda dil seçimleri yapın ve "sonraki" ye basın. Bir sonraki ekranda ("şimdi yükle" görüntülendiğinde) bir komut istemi almak için ÜSTKRKT + F10 tuşlarına basın.

İlk olarak, yerinde olan sürücü harflerini ve ilişkili oldukları bölümleri onaylayın:

diskpart
list volume
exit

Ayrıca, gerekiyorsa, etkin bölümü yeniden onaylayın:

diskpart
select disk 0
select part 1
detail part
select part 2
detail part
... and so-on
exit

Bir BIOS sisteminde, BCD, etkin bölümün sürücü harfinin X:\Boot\BCDbulunduğu bir dosyada saklanır X(UEFI için EFI Sistem Bölümündedir). Normalde gizli, ile görülebilir

dir /AH X:\Boot

Bu şekilde yedeklenebilir:

bcdedit /export X:\path\to\bcd\backup

ve restore edildi

bcdedit /import X:\path\to\bcd\backup

Bir diskte birden fazla işletim sistemi varsa, birden fazla BCD olabilir. Aktif BCD, aktif \Boot\BCDolarak işaretlenen bölümdeki - etkin bölümdür . İçeriğini listelemek için (artan ayrıntı sırasına göre :)

bcdedit
bcdedit /enum
bcdedit /enum ALL
bcdedit /enum ALL /v

Etkin BCD'yi düzeltmek için doğru bölümler için sürücü harflerini oluşturun ve şunları yapın:

bcdedit /set {default} osdevice partition=X:
bcdedit /set {default} device partition=X:
bcdedit /set {bootmgr} device partition=X:
bcdedit /set {memdiag} device partition=X:
bcdedit /set {ntldr} device partition=X:

veya başka bir BCD'yi düzeltmek için (bu örneklerde "X: \ boot \ bcd" adresinde):

bcdedit /store X:\boot\bcd /set {default} osdevice partition=X:
bcdedit /store X:\boot\bcd /set {default} device partition=X:
bcdedit /store X:\boot\bcd /set {bootmgr} device partition=X:
bcdedit /store X:\boot\bcd /set {memdiag} device partition=X:
bcdedit /store X:\boot\bcd /set {ntldr} device partition=X:

Örneğin, XP ve 7'ye sahip olan ve XP'yi açık C:, 7 açık D:ve etkin bölüm olarak gösteren sistemim C:. etkin BCD saatinde olacaktır c:\boot\BCD. Önyükleme yöneticisi adresinde C:\bootmgrve bellek tanılama saatinde bulunacak C:\boot\memtest.exe, Gerekli komutlar:

bcdedit /set {ntldr} device partition=C:
bcdedit /set {memdiag} device partition=C:
bcdedit /set {bootmgr} device partition=C:
bcdedit /set {default} device partition=D:
bcdedit /set {default} osdevice partition=D:

Bu değişikliklerle bilgisayarı yeniden başlatmak (Alt-F4 tuşuna basmak bunu başaracaktır) ve DVD'yi çıkarmak sistemin başarılı bir şekilde önyükleme yapmasına izin verdi.

Daha fazla okuma:

(tüm disk klonu bu sorunlardan muzdarip olmamalıdır, çünkü kopyadaki bölüm düzeni orijinal ile tam olarak aynı olmalıdır)


Not bcdbootönyükleme girdisi yeniden daha kolay bir yol sağlar, ama emin bir XP / W7 çift önyükleme senaryoda uygun olacaktır değilim.
Harry Johnston

Cevabını seviyorum, ama lütfen biraz temizleyebilir misin? Bence çok fazla yabancı bilgi var (örnek komutlar, hemen sonra gerçek komutunuz olduğunda, vb.).
Bigbio2002

Anser'ı sevmene sevindim ama orada pek çok yabancı bilgi olduğunu sanmıyorum. Genel bir açıklama artı aslında değiştirilmesi gereken her giriş için bölümleri belirlemek nasıl gösteren bir gerçek örnek var. Klonlanmış sistemimi düzeltmek için yukarıdaki tüm bilgilere ihtiyacım vardı ve bu yüzden başkalarına çok fazla bilgi sağlamak için tam olarak bir cevap olarak sundum.
starfry

8

BCD dahili ile ilgili bu gayri resmi belgelere göre , BCD deposundaki bölümler aslında disk imzası ve bölüm ofseti ile tanımlanır. Disk imzasını kopyaladınız (MBR bayt 440-443), ancak büyük olasılıkla bölümleri daha küçük bir diske yerleştirirken bölüm ötelemelerini değiştirdiniz, bu nedenle BOOTMGR artık bu bölümleri bulamadı.


Bu ilginç ve kesinlikle neden işe yaramayacağını açıklıyor - bölme ofsetleri kesinlikle farklı olacaktır. Neden-oh-neden bu daha resmi olarak belgelenmemiş, kimsenin tahminidir! Bunu klonlanmış bir diskte "onarmanın" kabul edilmiş (resmi veya resmi olmayan) bir yolu var mı?
starfry

Resmi yolun “önceden hazırlanmış bir sistem onarım diskinden (veya DOEM kurtarma ortamına sahip değilseniz gerçek bir kurulum ortamından) önyükleme olduğunu ve Başlangıç Onarımı'nı çalıştırdığını düşünüyorum ; bu başarısız olursa, işletim sistemini yeniden yükleyin ”. Başlangıç ​​Onarımı'nın da sizin durumunuzda XP'yi kurtarıp kurtarmayacağından emin değilsiniz.
Sergey Vlasov

@starfry Yerleşik komut satırı one ( bcdedit) dahil olmak üzere birçok BCD düzenleyicisi var . Visual BCD Editor'ü kendim tercih ederim. Windows ortamına girebiliyorsanız, Visual BCD önyükleme aygıtını ayarlamayı oldukça kolaylaştırır. Komut istemini (sanırım F11 falan olduğunu düşünüyorum) açarak ve bcdeditorada kullanarak önyükleme DVD'sinden de yapabilirsiniz . Sistem Onarımı'nı daha önce diskte kurtarma ortamını kaldırdığım için manuel olarak düzeltmeyi düşünüyorsanız, Sistem Onarımına karşı öneriyorum.
Bob

Teşekkürler sergey ve @bob. Bu yanıtı kabul ettim, çünkü neler olup bittiğini tam olarak anladım. Şimdi bildiklerimi ayrı bir cevapta belgeledim.
starfry

cehaletimi özür dilerim, ama starfry bayt kopyasını sda üzerinden kopyalamak için bayt ise (bölüm sda1 değil), ancak tüm sürücüyü sda, o zaman bölüm ofsetleri neden farklı olur?
barlop
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.