2017-02-09 13 views
5

अगर मैं अपने बूटलोडर को यूएसबी स्टिक से बूट करना चाहता हूं, तो मुझे बीपीबी शामिल करना होगा। यूएसबी स्टिक फ्लॉपी इम्यूलेशन मोड में चल रहा है। जैसा कि here देखा गया है, कई अलग-अलग बीपीबी संस्करण हैं। बायोस कैसे जानता है कि किस प्रकार का बीपीबी मौजूद है? GRUB 0.97 अभी तक एक और BPB प्रारूप का उपयोग कर रहा प्रतीत होता है?बायोस कैसे जानता है कि बीपीबी किस प्रकार का है?

मैं अपने बूटलोडर को 0xb ऑफसेट से थोड़ा पैड कर सकता हूं, और फिर यह भी काम करेगा। क्या उपयोग करने के लिए मानक/सामान्य आकार है? मैं अपने यूएसबी पर किसी भी फाइल सिस्टम का उपयोग नहीं कर रहा हूं, सिर्फ कच्चा।

मुझे लगता है कि मुझे बीपीबी की आवश्यकता है क्योंकि बायोस कुछ मूल्यों को अद्यतन करने का प्रयास करता है, जो कुछ कोड को ओवरराइट करता है। चूंकि प्रत्येक बीपीबी थोड़ा अलग लगता है, बायोस कैसे जान सकता है कि किस मूल्य को अपडेट करना है?

उत्तर

2

यदि आपके पास बीपीबी है तो सभी BIOS कार्यान्वयन की देखभाल नहीं है। एक एमबीआर बूट क्षेत्र की शुरुआत के साथ BPB का सामान्य स्वरूप के नीचे है:

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 

क्षेत्रों एक ही स्थान पर हमेशा से रहे हैं .. जिस तरह से प्रणाली है, अगर यह BPB के बारे में परवाह करता है, पुष्टि करता है कि यह है बस इसे पार्स करके।

+0

[GRUB] (https://github.com/jezze/grub-legacy/blob/master/stage1/stage1.S) पंक्ति 65 से 85 एक अलग क्रम का उपयोग नहीं करता है? इसमें मान शून्य पर भी सेट है, क्या यह शून्य के साथ बस बीपीबी स्पेस को पैड करना ठीक नहीं है? – user237948

+1

खैर, सैद्धांतिक रूप से यह होगा, लेकिन मेरे पास ऐसे सिस्टम हैं जो अन्यथा मान्य एमबीआर बूट करने से इनकार करते हैं जब तक कि इनमें से कुछ उचित नहीं है, खासकर सिर के माध्यम से। –

+3

@ user237948: आप शून्य के साथ अंतरिक्ष पैड कर सकते हैं (हालांकि आपको जेएमपी शुरू करने की आवश्यकता है)। GRUB कोड में वे अपने स्वयं के चर के लिए बीपीबी स्पेस का उपयोग करते हैं। उन्हें कोई परवाह नहीं है कि BIOS क्या रख सकता है, वे डेटा को ओवरराइट करना समाप्त कर देते हैं (यदि फ्लॉपी का उपयोग करते हुए वे BIOS से ड्राइव ज्यामिति पुनर्प्राप्त करते हैं)। ड्राइव का प्रतिनिधित्व करने वाले वहां सेन मानों को रखने का कोई कारण है घटना है कि आप डिस्क छवियों का उपयोग कर रहे हैं, आप वास्तव में हेडर पढ़ने के लिए माउंट सॉफ़्टवेयर प्राप्त कर सकते हैं और बीपीबी प्रविष्टियों से डिस्क छवि कॉन्फ़िगरेशन का निर्णय ले सकते हैं। –

संबंधित मुद्दे