2017-02-09 18 views
5

Bootloader'ımın bir usb çubuğundan önyükleme yapmasını istiyorsanız, bir BPB eklemem gerekir. USB çubuğu disket emülasyon modunda çalışıyor. here görüldüğü gibi, birçok farklı BPB sürümü vardır. Bios, hangi tür BPB'nin bulunduğunu nasıl biliyor? GRUB 0.97 bir başka BPB biçimini kullanıyor?Bios hangi tür BPB'nin var olduğunu nasıl biliyor?

Önyükleyicimi 0xb'den biraz daha düşük bir düzeye sokabilirim ve sonra da çalışır. Kullanılacak standart/ortak boyut var mı? USB'mde herhangi bir dosya sistemi kullanmıyorum, sadece ham.

Bios, BP'lere ihtiyacım var çünkü bios, bazı kodların üzerine yazılan değerlerin bazılarını güncellemeye çalışır. Her BPB biraz farklı göründüğü için, bios hangi değeri hangi noktadan güncellemeyi bilir?

cevap

2

BPB'niz varsa, tüm BIOS uygulamaları bakım gerektirmez. MBR önyükleme sektörü başlangıcıyla BPB'deki için genel biçim aşağıdaki gibidir:

bits 16 
org 0     ; BIOS will load the MBR to this location. 

    bootStart: 
      jmp  _start 
      nop 
      osType  db 'MSDOS6.0' 
      bpb 
      bps   dw 512 
      spc   db 8 
      rs   dw 1 
      fats  db 2 
      re   dw 512 
      ss   dw 0 
      media  db 0xf8 
      spfat  dw 0xc900 
      spt   dw 0x3f00 
      heads  dw 0x1000 
      hidden  dw 0x3f00, 0 
      ls   dw 0x5142,0x0600 
      pdn   db 0x80 
      cheads   db 0 
      sig   db 0x29 
      serialno dw 0xce13, 0x4630 
      label  db 'NO NAME' 
      fattype  db "FAT32" 

    _start: 
           ; set up the registers 
      mov  ax, 0x07c0 
      mov  ds, ax 
      mov  fs, ax 
      mov  gs, ax 
      mov  ax, 0x0700 
      mov  es, ax 

alanlar bu BPB'deki umurunda eğer sistem, öyle doğrular .. aynı yerde hep yoludur sadece ayrıştırmak suretiyle.

+0

[GRUB] (https://github.com/jezze/grub-legacy/blob/master/stage1/stage1.S) 65'den 85'e kadar olan satırlarda farklı bir sipariş kullanılmıyor mu? İçindeki değerler de sıfır olarak ayarlanır, o zaman sadece bpb alanını sıfırlarla doldurmak yeterli değil mi? – user237948

+1

Eh, teorik olarak olurdu, ama bu özellikle makul olduğu sürece aksi halde geçerli bir MBR'yi önyüklemeyi reddeden sistemlere sahibim. –

+3

@ user237948: Alanı sıfırlarla doldurabilirsiniz (yine de başlamak için bu JMP'ye ihtiyacınız vardır). GRUB kodunda kendi değişkenleri için BPB alanını kullanırlar. BIOS'un ne yazabileceğini umursamıyorlar, yine de verilerin üzerine yazıyorlar (eğer bir disket kullanıyorlarsa, sürücü geometrisini BIOS'un kendisinden alırlar) .Bu sürücüyü temsil eden aklı başında değerlerin koyulması için bir sebep var. Disk görüntüleri kullandığınız olayı, gerçekten, başlığını okumak ve BPB girişlerinden disk görüntü yapılandırmasına karar vermek için montaj yazılımı alabilirsiniz. –

İlgili konular