Boot Configuration Data: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Taliiv (talk | contribs)
No edit summary
Taliiv (talk | contribs)
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Mis on ''Boot Configuration Data'' (BCD)?=
=Mis on ''Boot Configuration Data'' (BCD)?=
BCD pakub püsivara sõltumatut mehhanismide kogumit manipuleerimaks alglaadimise keskkonna andmestikku igal Windowsil põhineval arvutil ehk BCD sisaldab detailset loetelu sellest, et mida laetakse pärast arvuti käivitamist või restarti. See on Windowsis kasutusel alates Vistast. Windows kasutab BCD selle jaoks et laadida üles operatsioonisüsteem või jooksutab erinevaid alglaadimise programme nagu näiteks mälu diagnostika.
BCD pakub püsivara sõltumatut mehhanismide kogumit manipuleerimaks alglaadimise keskkonna andmestikku igal Windowsil põhineval arvutil ehk BCD sisaldab detailset loetelu sellest, et mida ja kuidas laetakse pärast arvuti käivitamist või restarti. See on Windowsis kasutusel alates Vistast. Windows kasutab BCD selle jaoks et laadida üles operatsioonisüsteem ja jooksutab erinevaid alglaadimise programme nagu näiteks mälu diagnostika.


BCD loomisega kadus ära ''Windows NT boot loader - ntldr'' ning see asendati kolme erineva komponendiga:
BCD loomisega kadus ära ''Windows NT boot loader - ntldr'' ning see asendati kolme erineva komponendiga:
Line 8: Line 8:
Samuti asendas BCD traditsionaalse ''boot.ini'' tekstifaili BIOS'il baseeruvates süsteemides.  
Samuti asendas BCD traditsionaalse ''boot.ini'' tekstifaili BIOS'il baseeruvates süsteemides.  
==BCD ülesehitus==
==BCD ülesehitus==
BCD ülesehitus on hierarhiline. See koosneb kolmest baaskomponendist: ''store'''ist, objektidest ja elementidest.
BCD ülesehitus on hierarhiline. See koosneb kolmest baaskomponendist: hoidlast, objektidest ja elementidest.


BCD ''Store'' on kõrgeima taseme komponent. Selle funktsioon on olla nimeruumi konteineriks ülejäänud objektidele ja elementidele.
[[File:BCDjoonis.png]]


BCD Objekt on BCD elementide konteiner. Kõige tavalisemat tüüpi BCD objekt kirjeldab alglaadimise keskkonna aplikatsiooni, nagu näiteks Windowsi ''bootloader'''it, aga neid objekte kasutatakse ka muudel eesmärkidel.
===BCD hoidla===
BCD hoidla (''store'') on kõrgeima taseme komponent. Selle funktsioon on olla nimeruumi konteineriks ülejäänud objektidele ja elementidele. Füüsiliselt asub BCD hoidla kettal binaarse failina ja on vastava ''.wim'' failiga sama nimega ning samas kaustas buudi süsteemikujutisega (''boot image''). BCD hoidla kirjeldab ära kõik erinevad installeeritud Windowsid ja nendega kaasnevad alglaadimise rakendused.
<br />
<br />
Tüüpilise BCD hoidla näide:
<br />
<br />
[[File:BCDjoonis2.png]]
===BCD objekt===
BCD objekt (''object'') on BCD elementide konteiner. Kõige tavalisemat tüüpi BCD objekt kirjeldab alglaadimise keskkonna aplikatsiooni, nagu näiteks Windowsi buudilaadurit (''boot loader''), aga neid objekte kasutatakse ka muudel eesmärkidel.  
<br />
<br />
Objektid jaotuvad kolme põhikategooriasse: rakenduste objektid (''application objects''), päritavad objektid (''inheritable objects'') ja seadmete objektid (''device objetcs''). Kõige tavalisem BCD objekt on rakenduse objekt, mis kirjeldab buutimiskeskkonna rakendust nagu näiteks Windowsi buutimishaldur (''boot manager'') või Windowsi buutimislaadur. Igat objekti tähistab unikaalne 128 bitine GUID mis sisaldab 32 bitist kirjeldust, määrates ära selle objekti tüübi.
<br />
<br />
Joonisel on kujutatud üldine BCD objekti vorming. Olenevalt objekti kategooriast erineb andmepaigutus vahemikus 0-27 bitti.
<br />
<br />
[[File:BCDjoonis5.png]]


BCD element on singulaarne andmeühik nagu näiteks ''debug'''imise seadistus, alglaadimise aplikatsiooni nimi või OS'i süsteemiseade.
===BCD element===
 
BCD element (''element'') on singulaarne andmeühik nagu näiteks siluri (''debugger'') seadistus, alglaadimise aplikatsiooni nimi või OS'i süsteemiseade. Elemendid sisalduvad kindlas objektis. Buutimiskeskkonna rakendusel on oma BCD rakenduse objekt ning seal sisalduvad erinevad elemendid mis omakorda sisaldavad rakenduse konfiguratsiooni.
[[File:BCDjoonis2.png]]
<br />
<br />
Mõned elemendid võivad olla seotud ainult kindlate objektidega, aga teised võivad kehtida kõikide buutimiskeskkonna rakenduste kohta. Elementide haldamise lihtsustamiseks on elemendi nimeruum jaotatud kolme erinevasse klassi.
<br />
<br />
[[File:BCDjoonis6.png]]
<br />
<br />
BCD elemendid koosnevad struktureeritud andmetest. Järgnev tabel näitab neid erinevaid vorminguid ja nendele omistatud koodi:
<br />
<br />
[[File:BCDjoonis7.png]]


==BCD asukoht arvutis==
==BCD asukoht arvutis==
Line 22: Line 51:
* EFI'l baseeruvatel operatsioonisüsteemides asub BCD EFI süsteemi partitsiooni peal.
* EFI'l baseeruvatel operatsioonisüsteemides asub BCD EFI süsteemi partitsiooni peal.


==Kuidas redigeerida BCD'd==


==Kuidas redigeerida BCD'd==
* ''Startup and Recovery'' hüpikaken võimaldab kasutajal valida vaikimisi OS'i juhul kui on installeeritud mitu erinevat operatsioonisüsteemi. Samuti on võimalik valida kas üldse kuvada OS'i ja süsteemitaaste valikud (''recovery options'') ning kaua neid näidata kuni vaikimisi seatud OS'i buuditakse. Nendele seadistustele pääseb ligi (juhul kui kasutajal on administraatori õigused):
**Ava ''Start'' menüü
**Parem klikk ''Computer''
**Ava ''Properties'' 
**Vasakult akna äärest ava ''Advanced system settings''
**Liigu ''Advanced'' kaardile
**Sealt kliki ''Startup and Recovery'' kastis olevale ''Settings'' nupule
<br />
[[File:BCDjoonis8.png]]
<br />
<br />


* ''Startup and Recovery'' hüpikaken võimaldab kasutajal valida vaikimisi OS'i juhul kui on installeeritud mitu erinevat operatsioonisüsteemi. Samuti on võimalik muuta taimeri algväärtust. Nendele seadistustele pääseb ligi ''System properties'' dialoogiakna ''Advanced'' ''tab'''ile klikates.
* Kasutades ''[[System Configuration Tool]]'''i.
* Kasutades ''[[System Configuration Tool]]'''i.
* Kasutades ''[http://http://msdn.microsoft.com/en-us/library/bb986746 Boot Configuration Data WMI Provider'i]''.
* Kasutades ''[http://http://msdn.microsoft.com/en-us/library/bb986746 Boot Configuration Data WMI Provider'i]''.
* Kasutades ''[[BCDedit]]'''it.
* Kasutades ''[[BCDedit]]'''it.


 
=Kuidas BCD holidlat luuakse?=
=Kuidas BCD ''store'' luuakse?=
[[WDS]] loob iga kettatõmmise jaoks eraldi BCD hoidla. See juhtub automaatselt kui WDS'i server on käivitatud ja [http://support.microsoft.com/kb/235979 BINLSVC] on initsialiseeritud. BINLSVC loetleb üles iga [[Windows Imaging File Format (WIM)|WIM]]'is oleva ''\Boot\<arch>\Images'' kataloogi mis on märgitud alglaadimisvõimeliseks. Kui ta leiab sobiva kettatõmmise siis loob server igale WIM'is olevale OS'ile oma BCD hoidla, aga seda ainult siis kui:
[[WDS]] loob iga kettatõmmise jaoks eraldi BCD ''store'''i. See juhtub automaatselt kui WDS'i server on käivitatud ja [http://support.microsoft.com/kb/235979 BINLSVC] on initsialiseeritud. BINLSVC loetleb üles iga [[Windows Imaging File Format (WIM)|WIM]]'is oleva ''\Boot\<arch>\Images'' kataloogi mis on märgitud alglaadimisvõimeliseks. Kui ta leiab sobiva kettatõmmise siis loob server WIM'i vastavale OS'ile oma BCD ''store'', aga seda ainult siis kui:
* Samasugust BCD'd juba ei ekisteeri selles kettatõmmises.
* Samasugust BCD'd juba ei ekisteeri selles kettatõmmises.
* Selle WIM faili ''timestamp'' ei ole uuem vastloodud BCD'st.
* Selle WIM faili ajatempel (''timestamp'') ei ole uuem vastloodud BCD'st.
** See võib juhtuda, siis kui kettatõmmise metaandmeid uuendati (näiteks kui muuteti WIM'i nime).
** See võib juhtuda, siis kui kettatõmmise metaandmeid uuendati (näiteks kui muuteti WIM'i nime).


Kui lisatakse või muudetakse alglaadimise süsteemikujutist sellel ajal kui WDS töötab, siis peab serverile teada andma et midagi on muutetud enne kui hakatakse genereerima BCD ''store''. Kui kasutada WDS'i enda tööriistu siis avastatakse kõik muutused õigeaegselt, aga kui fail kopeeritakse käsitsi, siis ei avastata muutusi automaatselt.
Kui lisatakse või muudetakse alglaadimise süsteemikujutist sellel ajal kui WDS töötab, siis peab serverile teada andma et midagi on muutetud enne kui hakatakse genereerima BCD hoidlat. Kui kasutada WDS'i enda tööriistu siis avastatakse kõik muutused õigeaegselt, aga kui fail kopeeritakse käsitsi, siis ei avastata muutusi automaatselt.


Järgmine samm BCD genereermise protsessis on konkreetse BCD ''store'' loomine mida kliendi arvuti hakkab kasutama. Lõppkasutaja BCD ''store'' koosneb ''Default.bcd'''st mis on siduratud iga erineva süsteemikujutise BCD ''store''<nowiki>'</nowiki>ga.
Järgmine samm BCD genereermise protsessis on konkreetse BCD hoidla loomine mida kliendi arvuti hakkab kasutama. Lõppkasutaja BCD hoidla koosneb ''Default.bcd'''st mis on siduratud konkreetse süsteemikujutise BCD hoidla<nowiki>'</nowiki>ga.


Järgnev kirjeldab seda protsessi samm-sammult:
Järgnev kirjeldab seda protsessi samm-sammult:
* BINLSVC saab signaali alustada BCD ''store'' loomist. See initsialiseerib iga erineva arhitektuuri jaoks BCD ''store'' genereerimise.
* BINLSVC saab signaali alustada BCD hoidla loomist. See initsialiseerib iga erineva arhitektuuri jaoks BCD hoidla genereerimise.
* ''Default.bcd'' fail kopeeritakse ''RemoteInstall\Boot\<arch>'' kataloogist ''\RemoteInstall\Tmp'' kataloogi.
* ''Default.bcd'' fail kopeeritakse ''RemoteInstall\Boot\<arch>'' kataloogist ''\RemoteInstall\Tmp'' kataloogi.
* Buudilaaduri suvandid iga erineva süsteemikujutise BCD ''store'' kopeeritakse ''\Boot\<arch>\Images'' kaustast ''\Tmp'' kataloogi.
* Buudilaaduri suvandid iga erineva süsteemikujutise BCD hoidla jaoks kopeeritakse ''\Boot\<arch>\Images'' kaustast ''\Tmp'' kataloogi.
* Üks süsteemikujutis on vaikimisi määratud esimeseks. Vaikimisi süsteemikujutiseks saab tähestikuliselt eespool olev (juhul kui pole seatud teistmoodi).
* Üks süsteemikujutis on vaikimisi määratud esimeseks. Vaikimisi süsteemikujutiseks saab tähestikuliselt eespool olev (juhul kui pole seatud teistmoodi).


=Kuidas WDS määrab ära BCD hoidla?=
Kui ''netbootMachineFilePath'' on määratud siis NBP (''Name Binding Protocol'') otsib BCD hoidlat samast kaustast kuhu ''netbootMachineFilePath'' suunab. Kui see hoidla on seal olemas, siis võetakse see kasutusse.
*Näiteks ''netbootMachineFilePath'' osutab ''\RemoteInstall\Boot\x86\test\pxeboot.com'' failile ning kui samas kataloogis on ka BCD hoidla, siis võetakse see kasutusele.
Sellised võimalused lubavad iga eraldi süsteemikujutise jaoks oma BCD hoidla määrata. Selleks tuleb lihtsalt oma kohandatud BCD hoidla kopeerida vastavasse asukohta (sinna kuhu osutab ''netbootMachineFilePath'').
<br />
Kui BCD hoidlat ei ole seal kuhu osutab ''netbootMachineFilePath'', siis võtab WDS ''/Tmp'' kaustast arhitektuurile omase BCD hoidla kasutusele.


=BCD võimalikud parandamise viisid=
=BCD võimalikud parandamise viisid=
Line 54: Line 98:
** /ScanOs parameeter skaneerib kõiki kettaid selleks et tuvastada kõiki Windows Vista ja Windows 7 installatsioone, mis ei ole momendil lülitatud Boot Configuration Data (BCD) tabelisse. Juhul kui bootrec /scanos käsk kuvab umbes sellise alltoodud tulemuse, siis on kõik korras (tuvastati vähemalt üks operatsioonisüsteem) ja Sa võid jätkata oma buutimisprobleemide lahendamist ning parandamist:  
** /ScanOs parameeter skaneerib kõiki kettaid selleks et tuvastada kõiki Windows Vista ja Windows 7 installatsioone, mis ei ole momendil lülitatud Boot Configuration Data (BCD) tabelisse. Juhul kui bootrec /scanos käsk kuvab umbes sellise alltoodud tulemuse, siis on kõik korras (tuvastati vähemalt üks operatsioonisüsteem) ja Sa võid jätkata oma buutimisprobleemide lahendamist ning parandamist:  
[[File:BCDjoonis4.png]]
[[File:BCDjoonis4.png]]


=Kasutatud allikad=
=Kasutatud allikad=
* http://technet.microsoft.com/en-us/library/cc721886(WS.10).aspx
* http://technet.microsoft.com/en-us/library/cc721886(WS.10).aspx
* http://technet.microsoft.com/en-us/library/cc770770(WS.10).aspx
* http://msdn.microsoft.com/en-us/library/bb986746
* http://msdn.microsoft.com/en-us/library/bb986746
* http://landfield.pri.ee/Windows_7/Win7_boot.html
* http://landfield.pri.ee/Windows_7/Win7_boot.html
Line 65: Line 107:
* http://windocuments.net/Bcd.html
* http://windocuments.net/Bcd.html


=Autor=


=Autor=


'''Alles kijrutamisel''' <br />
Tambet Liiv <br />
Tambet Liiv <br />
A22
A22

Latest revision as of 17:57, 10 October 2011

Mis on Boot Configuration Data (BCD)?

BCD pakub püsivara sõltumatut mehhanismide kogumit manipuleerimaks alglaadimise keskkonna andmestikku igal Windowsil põhineval arvutil ehk BCD sisaldab detailset loetelu sellest, et mida ja kuidas laetakse pärast arvuti käivitamist või restarti. See on Windowsis kasutusel alates Vistast. Windows kasutab BCD selle jaoks et laadida üles operatsioonisüsteem ja jooksutab erinevaid alglaadimise programme nagu näiteks mälu diagnostika.

BCD loomisega kadus ära Windows NT boot loader - ntldr ning see asendati kolme erineva komponendiga:

  • Windows Boot Manager (Bootmgr.exe)
  • Windows operating system loader (Winload.exe)
  • Windows resume loader (Winresume.exe)

Samuti asendas BCD traditsionaalse boot.ini tekstifaili BIOS'il baseeruvates süsteemides.

BCD ülesehitus

BCD ülesehitus on hierarhiline. See koosneb kolmest baaskomponendist: hoidlast, objektidest ja elementidest.

BCD hoidla

BCD hoidla (store) on kõrgeima taseme komponent. Selle funktsioon on olla nimeruumi konteineriks ülejäänud objektidele ja elementidele. Füüsiliselt asub BCD hoidla kettal binaarse failina ja on vastava .wim failiga sama nimega ning samas kaustas buudi süsteemikujutisega (boot image). BCD hoidla kirjeldab ära kõik erinevad installeeritud Windowsid ja nendega kaasnevad alglaadimise rakendused.

Tüüpilise BCD hoidla näide:

BCD objekt

BCD objekt (object) on BCD elementide konteiner. Kõige tavalisemat tüüpi BCD objekt kirjeldab alglaadimise keskkonna aplikatsiooni, nagu näiteks Windowsi buudilaadurit (boot loader), aga neid objekte kasutatakse ka muudel eesmärkidel.

Objektid jaotuvad kolme põhikategooriasse: rakenduste objektid (application objects), päritavad objektid (inheritable objects) ja seadmete objektid (device objetcs). Kõige tavalisem BCD objekt on rakenduse objekt, mis kirjeldab buutimiskeskkonna rakendust nagu näiteks Windowsi buutimishaldur (boot manager) või Windowsi buutimislaadur. Igat objekti tähistab unikaalne 128 bitine GUID mis sisaldab 32 bitist kirjeldust, määrates ära selle objekti tüübi.

Joonisel on kujutatud üldine BCD objekti vorming. Olenevalt objekti kategooriast erineb andmepaigutus vahemikus 0-27 bitti.

BCD element

BCD element (element) on singulaarne andmeühik nagu näiteks siluri (debugger) seadistus, alglaadimise aplikatsiooni nimi või OS'i süsteemiseade. Elemendid sisalduvad kindlas objektis. Buutimiskeskkonna rakendusel on oma BCD rakenduse objekt ning seal sisalduvad erinevad elemendid mis omakorda sisaldavad rakenduse konfiguratsiooni.

Mõned elemendid võivad olla seotud ainult kindlate objektidega, aga teised võivad kehtida kõikide buutimiskeskkonna rakenduste kohta. Elementide haldamise lihtsustamiseks on elemendi nimeruum jaotatud kolme erinevasse klassi.



BCD elemendid koosnevad struktureeritud andmetest. Järgnev tabel näitab neid erinevaid vorminguid ja nendele omistatud koodi:

BCD asukoht arvutis

  • BIOS'il baseeruvatel operatsioonisüsteemidel asub BCD registri fail aktiivse partitsiooni \Boot\Bcd kasutas.
  • EFI'l baseeruvatel operatsioonisüsteemides asub BCD EFI süsteemi partitsiooni peal.

Kuidas redigeerida BCD'd

  • Startup and Recovery hüpikaken võimaldab kasutajal valida vaikimisi OS'i juhul kui on installeeritud mitu erinevat operatsioonisüsteemi. Samuti on võimalik valida kas üldse kuvada OS'i ja süsteemitaaste valikud (recovery options) ning kaua neid näidata kuni vaikimisi seatud OS'i buuditakse. Nendele seadistustele pääseb ligi (juhul kui kasutajal on administraatori õigused):
    • Ava Start menüü
    • Parem klikk Computer
    • Ava Properties
    • Vasakult akna äärest ava Advanced system settings
    • Liigu Advanced kaardile
    • Sealt kliki Startup and Recovery kastis olevale Settings nupule




Kuidas BCD holidlat luuakse?

WDS loob iga kettatõmmise jaoks eraldi BCD hoidla. See juhtub automaatselt kui WDS'i server on käivitatud ja BINLSVC on initsialiseeritud. BINLSVC loetleb üles iga WIM'is oleva \Boot\<arch>\Images kataloogi mis on märgitud alglaadimisvõimeliseks. Kui ta leiab sobiva kettatõmmise siis loob server igale WIM'is olevale OS'ile oma BCD hoidla, aga seda ainult siis kui:

  • Samasugust BCD'd juba ei ekisteeri selles kettatõmmises.
  • Selle WIM faili ajatempel (timestamp) ei ole uuem vastloodud BCD'st.
    • See võib juhtuda, siis kui kettatõmmise metaandmeid uuendati (näiteks kui muuteti WIM'i nime).

Kui lisatakse või muudetakse alglaadimise süsteemikujutist sellel ajal kui WDS töötab, siis peab serverile teada andma et midagi on muutetud enne kui hakatakse genereerima BCD hoidlat. Kui kasutada WDS'i enda tööriistu siis avastatakse kõik muutused õigeaegselt, aga kui fail kopeeritakse käsitsi, siis ei avastata muutusi automaatselt.

Järgmine samm BCD genereermise protsessis on konkreetse BCD hoidla loomine mida kliendi arvuti hakkab kasutama. Lõppkasutaja BCD hoidla koosneb Default.bcd'st mis on siduratud konkreetse süsteemikujutise BCD hoidla'ga.

Järgnev kirjeldab seda protsessi samm-sammult:

  • BINLSVC saab signaali alustada BCD hoidla loomist. See initsialiseerib iga erineva arhitektuuri jaoks BCD hoidla genereerimise.
  • Default.bcd fail kopeeritakse RemoteInstall\Boot\<arch> kataloogist \RemoteInstall\Tmp kataloogi.
  • Buudilaaduri suvandid iga erineva süsteemikujutise BCD hoidla jaoks kopeeritakse \Boot\<arch>\Images kaustast \Tmp kataloogi.
  • Üks süsteemikujutis on vaikimisi määratud esimeseks. Vaikimisi süsteemikujutiseks saab tähestikuliselt eespool olev (juhul kui pole seatud teistmoodi).

Kuidas WDS määrab ära BCD hoidla?

Kui netbootMachineFilePath on määratud siis NBP (Name Binding Protocol) otsib BCD hoidlat samast kaustast kuhu netbootMachineFilePath suunab. Kui see hoidla on seal olemas, siis võetakse see kasutusse.

  • Näiteks netbootMachineFilePath osutab \RemoteInstall\Boot\x86\test\pxeboot.com failile ning kui samas kataloogis on ka BCD hoidla, siis võetakse see kasutusele.

Sellised võimalused lubavad iga eraldi süsteemikujutise jaoks oma BCD hoidla määrata. Selleks tuleb lihtsalt oma kohandatud BCD hoidla kopeerida vastavasse asukohta (sinna kuhu osutab netbootMachineFilePath).
Kui BCD hoidlat ei ole seal kuhu osutab netbootMachineFilePath, siis võtab WDS /Tmp kaustast arhitektuurile omase BCD hoidla kasutusele.

BCD võimalikud parandamise viisid

  • Trükkida CMD akna käsureale bootrec /rebuildbcd ja vajuta Enter.
    • Buutimise vea võib põhjustada see, et BCD mingit failid on rikutud. /rebuildbcd parameeter parandab enamus taolisi vigasid ja ta loob täiesti uue BCD.
  • Trükkida CMD akna käsureale bootrec /scanos ja vajuta Enter.
    • /ScanOs parameeter skaneerib kõiki kettaid selleks et tuvastada kõiki Windows Vista ja Windows 7 installatsioone, mis ei ole momendil lülitatud Boot Configuration Data (BCD) tabelisse. Juhul kui bootrec /scanos käsk kuvab umbes sellise alltoodud tulemuse, siis on kõik korras (tuvastati vähemalt üks operatsioonisüsteem) ja Sa võid jätkata oma buutimisprobleemide lahendamist ning parandamist:

Kasutatud allikad

Autor

Tambet Liiv
A22