Önyüklenebilir bir Windows 7 (veya Vista) bölümünü taşırken nelerin güncellenmesi gerekir?


9

Üzerinde Windows bulunan önyüklenebilir bir NTFS bölümünü farklı bir blok ofsetine taşıdığımda, yeniden önyüklenebilir hale getirmek için ne güncellenmesi gerekiyor?

Arka plan: Gerekli eylemleri gerçekleştiren bir program yazmayı planlıyorum , bu yüzden bir Windows DVD'sinden önyükleme yaparak Microsoft'un araçlarını nasıl kullanacağım konusunda rehber aramıyorum. Bunun yerine, Windows sistemini daha büyük bir sabit diske taşımak istediğinde ortalama bir PC kullanıcısı için daha kolay bir çözüm yazabilmek için bunları kendim nasıl değiştirmem gerekiyor.

Özellikle, burada denedim:

Biri üzerinde Windows ile NTFS bölümü olan birkaç bölümlü bir disk var ve disk bölüm düzeni (en fazla 4 bölüm) için düz eski MBR blok 0 kullanır.

Şimdi yeni, daha büyük bir diski biçimlendiriyorum ve bölümlere ayırıyorum. Orada NTFS bölümüne yer açıyorum ve eski diskin NTFS Windows bölümünden içeriği kopyalıyorum. Ve bölümü "aktif" hale getiriyorum.

Ancak, bu diskten önyükleme yapmaya çalıştığımda, hemen bir "okuma hatası" iletisi alıyorum ve önyükleme duruyor, tam metin:

  A disk read error occurred
  Press Ctrl+Alt+Del to restart

Her iki diskin de blok 0'da aynı önyükleme sektörü koduna sahip olduğunu doğruladım.

Bana öyle geliyor ki başka bir şeyin güncellenmesi gerekebilir. Bir yerde güncellemem gereken mutlak bir blok referansı olduğunu tahmin ediyorum, muhtemelen bir sonraki seviye yükleyiciye veya NT çekirdeğine işaret ediyor.

Güncelleme: Bulduğum bu ben bilmek istiyorum derinliği içine oldukça gidiş makaleye. Ancak, boot.ini değiştirmek için diyor, ama burada böyle şeyler değişmiş gibi görünüyor Windows 7 yüklü: Boot.ini yok ama GUID ile Sistem Birim Bilgileri adlı bir klasör ve benim sorunum ile ilgili sesler diğer veriler . Kazmaya devam edecek ...

Güncelleme 2: Starman'ın korkunç ama çok bilgilendirici web sitesi sayesinde ilk adımı anlayabildim: NTFS önyükleme sektörünün "gizli" sektörler için bir alanı var. Bu alan, önyükleme sektörünün sektör numarasını içermelidir. Bu, "okuma hatası" mesajını çözer. Ancak şimdi, bunun yerine "BOOTMGR eksik" hatası alıyorum. Bir blok numarasının ayarlanması gereken başka bir yer var gibi görünüyor, ancak bu konuda kod listesinde bir şey bulamıyorum.

Bu "BOOTMGR eksik" sorununu çözmek için Windows araçlarını öneren birçok yardım sitesi buluyorum, ancak hiçbiri perde arkasında neler olduğunu bilmiyor gibi görünüyor. Küçük bir sorun olduğunda Windows'u yeniden yüklemeyi önermek gibi. En azından, bu düzeltmelerin işe yaradığı görülüyor, çoğunlukla Bcdedit ve Bootrec araçlarını içeriyor. Şimdi, taşınan bir bölümle ilgili olarak, özellikle ikincisinin ne yaptığını kim bilebilir?

Güncelleştirme 3: Çok sayıda deneme yanılma girişiminden sonra, çözümün genellikle \ Windows \ System32 \ config içinde bulunan BCD-Template kayıt defteri dosyasında bulunduğuna inanıyorum . Bunu "bcdboot" komutunu kullanarak güncellersem, Windows ondan başlar. Şimdi bu kayıt defteri yukarıdaki soru ile ilgili hangi bilgileri içerdiğini anlamaya ortasındayım. Bu kayıt defterinin içeriğine işaret eden tüm öğeler kabul edilir.

Güncelleme 4: BCD-Template dosyası yeniden yazılırken ve öncekinden farklı ikili içeriğe sahipken, içindeki değerlerin değişmediği ortaya çıkıyor. Bu yüzden bcdboot.exe'nin yazdığı başka bir şey olmalı. Daha önce bölümün ilk 32 önyükleme bloğunu değiştirip değiştirmediğini zaten kontrol etmiştim, ancak değişmeden kalıyorlar. Parititon haritası da değişmiyor. Peki bcdboot BCD kayıt defteri dışında değiştirir? Bunu nasıl izleyebileceğime dair ipuçları var mı? Bana bir programın hangi dosyalara yazdığını gösteren düşük düzey araçlar var mı?

Güncelleme 5: Yanıt şu şekilde görünüyor: c: \ Boot \ BCD de değiştirildi ve bu önyükleme yöneticisinin işlemi için anahtar dosya gibi görünüyor. Bunu daha sonra araştıracağım ...

Güncelleştirme 6: Windows 7'yi yüklediğimde başlangıçta iki bölüm oluşturduğum önemli bir ayrıntı gibi görünüyor: Bir önyükleme bölümü gibi görünen 204800 sektörden oluşan küçük bir bölüm, ardından Windows sistemini içeren gerçek, büyük, bölüm ( C sürücüsü :). Bu yüklemeyi yeni, daha büyük bir diske aktarmaya çalıştığımda, aynı iki bölümü yeni sürücüde sağlam tuttum, ancak farklı bir ofsetle sonuçlandılar. Bu tek başına "BOOTMGR eksik" mesajına yol açtı. O zamandan beri, yalnızca Windows bölümü, üzerinde bcdboot.exe kullandım eklendio bölümdeki \ Boot \ BCD dosyası. Bu dosya (ve klasör) başlangıçta yalnızca daha küçük bölümde mevcuttu. Bu nedenle, bu sorun benim durumumda başka bir bölüme (işletim sistemini içeren bölüme) atıfta bulunan bir bölüm (önyükleme askısı) olarak daha karmaşık olabilir, oysa diğer insanlar her ikisini de içeren bir bölümle ve belki de çözümle uğraşmak zorunda kalabilirler. daha basit.

Güncelleştirme 7: Bir ayrıntı daha bulundu: \ Boot \ BCD dosyası MBR'nin seri numarasını kaydeder. Bu sayı eşleşmezse sistem önyükleme yapmaz. Sonra orada saklı mutlak bir blok referans olup olmadığını test edeceğim.


Sadece merak ediyorum, gizli sistem bölümünün doğru şekilde taşındığından emin oldunuz mu?
Sütun

Hangi gizli bölümü kastediyorsun? Ekstra önyükleme bölümü hakkında konuşan 6 numaralı güncellemeyi ekledim ve evet, ben de taşıdım. MBR ile Windows bölüm (ler) inin başlangıcı arasında başka bir "gizli" alan daha vardı, ancak bu herhangi bir anlam ifade etmemeli - bu sadece bir veri bloğu (benim durumumda: Hareket ederken HFS + bölümü) burada bir Boot Camp kurulumu). İlgili olan tek şey şu olmalıdır: Bölüm haritası (bundan sonra MBR artı GUID şemalı bölüm haritası) ve iki Windows bölümü (küçük önyükleyici ve C: bölümü) içermelidir. Tabii ki hepsini düzgün bir şekilde güncelledim. :)
SuperTempel

Kesinlikle önemli şeyler depolanır \BCD\Bootve normalde bunu ile düzenlersiniz bcdedit.exe, değil bcdboot. Ve evet, önyükleme için ayrı bölüm (yalnızca tam disk şifreleme özelliğini kullandığınızda gereklidir, çünkü şifre çözme kodunun ana pencere bölümünün dışında saklanması gerekir), varsa önyükleme işlemini kontrol eder.
Ben Voigt

@Ben: evet, bcdedit'i biliyorum - ama bölümleri yeni bir diske taşımadan önce seçeneklerinden herhangi birini değiştirmek istemediğim kadarıyla hiçbir şeyi düzenlemek istemiyorum . Güncellemek istediğim, mümkünse herhangi bir Windows yürütülebilir dosyası kullanmadan sabit blok numarası ve disk kimliği referansları.
SuperTempel

1
Programlama sorusu değil. Bu, Windows önyükleyici hakkındaki etki alanı bilgisidir.
kimse

Yanıtlar:


1

Daha kolay yol?

Windows Vista veya Windows 7 kurulum diskini disk sürücüsüne yerleştirin ve bilgisayarı başlatın.
İstendiğinde bir tuşa basın.
Bir dil, zaman, para birimi, klavye veya giriş yöntemi seçip İleri'yi tıklatın.
Bilgisayarınızı onarın'ı tıklayın.
Onarmak istediğiniz işletim sistemini tıklatın ve sonra İleri'yi tıklatın.
Sistem Kurtarma Seçenekleri iletişim kutusunda Komut İstemi'ni tıklatın.
Bootrec.exe yazın ve ENTER tuşuna basın.

Bootrec.exe seçenekleri
Bootrec.exe aracı aşağıdaki seçenekleri destekler. Durumunuza uygun seçeneği kullanın.

Not BCD'yi yeniden oluşturmak başlangıç ​​sorununu çözmezse, BCD'yi dışa aktarabilir ve silebilir ve ardından bu seçeneği tekrar çalıştırabilirsiniz. Bunu yaparak, BCD'nin tamamen yeniden oluşturulduğundan emin olursunuz.

Bunu yapmak için, Windows RE komut istemine aşağıdaki komutları yazın:
bcdedit / export C: \ BCD_Backup
c:
cd önyükleme özniteliği bcd
-s -h -r
ren c: \ boot \ bcd
bcd.old bootrec / RebuildBcd

veya duruma bağlı olarak / FixMbr veya / FixBoot veya / ScanOs veya / RebuildBcd.

Daha fazla bilgi için bkz. Support.Microsoft.com .


1
Yardım etmeye çalıştığınız için teşekkür ederiz, ancak belirttiğiniz gibi standart bilgidir. Özellikle önemsiz bir kullanıcı için hala zor olan Microsoft'un yazılımını kullanarak değil, kendi yazılı programımda bunu başarmak için "neler oluyor" bilgisine ihtiyacım var. Bunu başka bir diske taşıması gerektiğinde, Boot Camp yüklemesi olan bir Mac kullanıcısına bir çözüm sağlayabilmek istiyorum. Bunun bir yan etkisi olarak, görevler aynı olacağı için diğer Windows kullanıcılarına da yardımcı olacaktır.
SuperTempel

Bunu yapmaya çalışsaydım ... Diski önce ve sonra dd eder ve ikisi arasında ikili bir karşılaştırma yapardım. İyi şanslar.
Essobi

Yine önünüzdeyim. Bakın, ben iBored'un yazarıyım, bu yüzden böyle şeyler yapmayı biliyorum ve inan bana, denedim. Yeni biçim benim için çok şifreli ve bu yüzden bu soruyu burada soruyorum.
SuperTempel
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.