MBR: BIOS, bir sürücünün önyüklenebilir olup olmadığına nasıl karar veriyor?


12

Askubuntu ile ilgili bu soruya cevap vermeye çalışırken: GRUB'u nasıl kaldırabilirim MBR'deki Wikipedia makalesini ve burada Superuser ile ilgili biraz ilgili bir sorunun mükemmel cevabını okudum , ancak bir şey hala net değil:

BIOS'u bir sürücünün önyüklenebilir olup olmadığına tam olarak karar veren nedir? Sistemde birden fazla sürücü takılıysa, önyükleme sırası sürücü 1'den nasıl atlanır ve sürücü 2'den önyükleme yapmaya devam eder?

Anladığım kadarıyla, BIOS'un normalde bir MBR'de kontrol ettiği tek şey, 512 bayt sektörünün sonundaki imzasıdır ve daha sonra kontrolü, önyükleme sektörünün ilk 446 baytında bulunan ilk önyükleyiciye aktarır.

Önyükleme sektörünün ilk 446 baytının, disk önyüklenebilir olmasa bile bazı anlamlı önyükleyici kodu içermesi ZORUNLU mu?

BIOS, kontrolü "önyüklenebilir" bölümleri olmayan 1. sürücüdeki bootloader'a aktardıktan sonra - ikinci sürücüdeki bootloader tam olarak nasıl çağrılır?

Bu çok teknikse özür dilerim :) Kısa soru: "BIOS bir sürücüyü tam olarak nasıl atlar ve bir sonrakinden önyükleme yapmaya çalışır?"

Yanıtlar:


16

BIOS'u bir sürücünün önyüklenebilir olup olmadığına tam olarak karar veren nedir?

Bir sürücü mevcut 16 bayt bölüm kaydına bağlı önyüklenebilir ise BIOS karar sonrasında (446 başlayan bir tabloda düzenlenen MBR kodu alanına inci bayt). Her bölüm kaydındaki ilk bayt, sürücünün önyüklenebilir durumunu temsil eder (ve 0x80önyüklenebilirse veya 0x00değilse) olarak ayarlanır . Bazı BIOS'lar MBR'nin diğer bölümlerini (ör. Bölüm türleri, sağlama toplamları) kontrol edebilir, ancak temel gereksinim önyüklenebilir bayraktır.

Sistemde birden fazla sürücü takılıysa, önyükleme sırası sürücü 1'den nasıl atlanır ve sürücü 2'den önyükleme yapmaya devam eder?

Bu, uygulamaya bağlıdır ve bu nedenle bir önyükleme sırasını düzgün seçmeniz gerekir. Çoğu durumda, BIOS her depolama ortamına ayarladığınız sırayla bakar ve bu aygıttan önyükleme yapıp yapamayacağını belirler (MBR verileri aracılığıyla). Mümkünse, yapar - eğer değilse, diğer cihazlar arasında döngü yapmaya devam eder (yine, seçtiğiniz sırayla).

BIOS, kontrolü "önyüklenebilir" bölümleri olmayan 1. sürücüdeki bootloader'a aktardıktan sonra - ikinci sürücüdeki bootloader tam olarak nasıl çağrılır?

Geçerli bir önyükleme aygıtı bulunduğunda (yani önyüklenebilir bayrak ayarlanır ve diğer ek denetimler geçer), BIOS MBR sektörünü RAM'e kopyalar. BIOS daha sonra yönerge işaretçisini JUMPMBR kod bölümünün bulunduğu bu konumun başlangıcına (bir yönerge kullanarak ) yeniden konumlandırır ve bilgisayar daha sonra başlar.

BIOS, BIOS Önyükleme Spesifikasyonunu destekliyorsa , MBR kodu belirli bir talimatla kontrolü BIOS'a geri döndürebilir, önyükleme arızasını bildirebilir ve bir sonraki aygıtı denemesini isteyebilir. Eski BIOS'lar sadece bir hata mesajı yazdırıyor. BIOS'un bunu destekleyip desteklemediğini söylemek iyi bir şey, USB'den önyükleme yapıp yapamayacağınızdır.

Anladığım kadarıyla, BIOS'un normalde bir MBR'de kontrol ettiği tek şey, 512 bayt sektörünün sonundaki imzasıdır ve daha sonra kontrolü, önyükleme sektörünün ilk 446 baytında bulunan ilk önyükleyiciye aktarır.

Çoğu modern BIOS'un bir GUID Bölümleme Tablosu ile eski MBR tarzı tabloyu da arayacağına dikkat edilmelidir.

Önyükleme sektörünün ilk 446 baytının, disk önyüklenebilir olmasa bile bazı anlamlı önyükleyici kodu içermesi ZORUNLU mu?

Hayır , ama sürücü gerekir geçerli bir MBR veya GUID bölümleme tablosu var - aksi takdirde bilgisayar tarafından algılanmaz. MBR'nin kod kısmı gerçekten boş olsa da, sürücünün ilk sektörü iyi biçimlendirilmiş bir MBR / GPT'ye sahip olmalıdır.


Çok detaylı cevap için teşekkürler. Geçerli bir önyüklenebilir aygıt için ölçütler, bölüm tablosunda önyüklenebilir bir bölümün varlığı ve bazı "diğer ek denetimler" dir? Sadece biraz kafam karıştı çünkü AskUbuntu'daki orijinal soruda yazar, sürücüdeki tüm bölümlerin önyüklenebilir olmadığını gösteriyor ve hala kırık GRUB'un neden olduğu hatayı görüyor - BIOS tarafından hiç çağrılmamış olmalı çünkü sürücü "önyüklenebilir" kriterlerini karşılamıyor, bu yüzden BIOS sadece sürücüyü atlamalı ve bir sonrakine gitmelidir
Sergey

@Sergey Bu soruya baktım ve emin değilim. Bu MBR bozuk olması mümkün veya önyüklenebilir bayrağı (emin değilim nasıl geçersiz değere ayarlanır fdiskrağmen, bu davaları idare edecek orijinal versiyon yaptım bayrak geçersiz MBR başlıklarını). OP'ye ham MBR üstbilgisini göndermesini tavsiye ettim, ama aynı zamanda önyüklenebilir bayrağı açıp kapatabilir (bayrağı manuel olarak ayarlamak / sıfırlamak için).
Atılım

BIOS kodunun genel olmadığını unutmayın. Her anakart için oldukça spesifiktir, bu nedenle hangi bağlantı noktalarına ne tür sürücüler takılabileceğini bilir.
LatinSuD

Bu cevap tamamen doğru değil. FWIU, etkin bir bölüm olup olmadığını kontrol etme ve BIOS'un değil “varsayılan” MBR önyükleme kodunun yaptığı bir şeydir. NeoSmart daha makul bir açıklama sunuyor: “IBM uyumlu PC'lerde (temelde her şey) 512 bayt MBR'nin son iki baytına önyükleme imzası denir ve BIOS tarafından seçilen önyükleme sürücüsünün gerçekten önyüklenebilir olup olmadığını belirlemek için kullanılır veya değil." Son kısım yanlış. Eski BIOS, GPT'den (uygun BIOS önyükleme koduyla) önyükleme yapabilir, çünkü aslında “serbest stil” önyükleme.
Daniel B

@DanielB bunların her ikisi de doğrudan cevap olarak ele alınmaktadır: "BIOS normalde bir MBR'yi kontrol eder, 512 bayt sektörünün sonundaki imzasıdır ve daha sonra kontrolü ilk 446 bayttaki ilk önyükleyiciye aktarır. önyükleme sektörünün " ve " en modern BIOS'ların yanı sıra bir GUID Bölümleme Tablosu ile daha eski, geleneksel MBR stili bir tablo arayacaktır " .
Atılım
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.