b.js.txt

(338 KB) Pobierz
Start komputera - wprowadzenie

Start komputera typu PC od lat osiemdziesi�tych wygl�da ca�y czas tak samo. Zmieni�o si� wprawdzie troszk� z nadej�ciem standardu ATX czy PCI, ale ca�y czas wszystko tak naprawd� zaczyna si� od pierwszego kroku procesora.

Krok ten kierowany jest zawsze w t� sam� stron�: pod adres FFFF:0000. Segmentowe adresowanie pami�ci dost�pne w trybie rzeczywistym procesor�w x86 sprawia, �e od adresu FFFF:0000 do ko�ca dost�pnej pami�ci RAM jest tylko 16 bajt�w. To niewiele, w zwi�zku z czym pod tym adresem znajduje si� zwykle tylko instrukcja JMP kieruj�ca procesor tam, gdzie naprawd� le�y jego BIOS (tradycyjnie to F000:E05B).

BIOS jest programem jak ka�dy inny i procesor go krok po kroku wykonuje. W ramach tego programu robiony jest POST (Power On Self Test) i procesor sprawdza, czy komputer jest w miar� kompletny i sprawny. Testy te zale�� od tego, w jaki spos�b komputer zosta� zresetowany, wi�c i tak� informacj� BIOS oczywi�cie ma.

Je�eli komputer wygl�da na kompletny � BIOS nakazuje procesorowi poszuka� kart zawieraj�cych w�asny BIOS i uruchomienie tych rozszerze�. W tym celu �przeczesuje� obszar pami�ci od C800:0000 do F000:000 i jak znajdzie sygnatur� 55AA � uruchamia to, co tam si� znajduje. W obszarze tym swoje programy inicjuj�ce maj� na przyk�ad karty rozszerze�. Dzi�ki temu BIOS wie, jak obs�u�y� dan� kart� graficzn�. Po prostu uruchamia jej kod i liczy, �e to ona go swojej obs�ugi nauczy.

Po tym wszystkim BIOS wczytuje (przy pomocy INT 19h) pierwszy sektor z urz�dzenia uznanego jako startowe do pami�ci pod adres 0000:7C00 i przekazuje tam sterowanie uznaj�c, �e jego rola si� sko�czy�a.

Je�eli urz�dzeniem startowym jest dysk twardy � r�wnie� wczytywany jest jego pierwszy sektor, czyli tak zwany MBR (Master Boot Record). Tak oto, jak tylko komputer sko�czy inicjowa� sprz�t, wykonuje program zapisany w MBR. Dlatego MBR jest tak wa�ny i dlatego m�wi�c o starcie systemu operacyjnego, w�a�nie MBR uznaje si� za pocz�tek.
Do pocz�tku stronyDo pocz�tku strony
Nowo�ci w starcie Windows Vista

Sektor jak to sektor - tradycyjnie ma 512 bajt�w, co wymaga od programist�w do�� zwi�z�ego podej�cia, zw�aszcza, �e ostatnie bajty zarezerwowane s� na tablic� partycji.

I tu zaczyna si� nowe. W najwi�kszym skr�cie mo�na napisa�, �e w starszych systemach wygl�da�o to dalej tak, �e MBR �adowa� boot sektor aktywnej partycji, ten z kolei �adowa� NTLDR, kt�ry w��cza� tryb chroniony procesora, odczytywa� boot.ini, uruchamia� ntdetect.com, kt�ry sprawdza� konfiguracj� sprz�tu, a na ko�cu NTLDR uruchamia� ntoskrnl.exe i jako� to dalej sz�o.

W starszych systemach MBR m�g� by� dowolny pod warunkiem, �e pozwala� na za�adowanie boot rekordu z partycji systemowej. Co po drodze wy�wietla�, gdzie si�ga�, co inicjowa�, rozszyfrowywa� lub uruchamia� � nie mia�o znaczenia. Je�eli tylko na ko�cu za�adowa� boot record i odda� mu sterowanie, to system pozwala� si� uruchomi�. MBR m�g� pyta� o wyb�r systemu (tak robi na przyk�ad LILO), m�g� aktywowa� ukryte partycje (na przyk�ad Partition Magic), rozszyfrowywa� fragment dysku (na przyk�ad SafeBoot), czy uruchamia� specjalne aplikacje do odzyskiwania danych (na przyk�ad ThinkVantage Rescue and Recovery).

W przypadku Windows Vista nie jest tak prosto. Cho�by dlatego, �e kod zapisany w MBR musi by� zgodny ze specyfikacj� TCG (Trustec Computing Group) aby bardzo �ci�le wsp�pracowa� z TPM.

Je�eli kto� koniecznie musi doda� w�asny kod i uruchamia� go przed startem systemu � powinien omija� MBR. Proces startu Windows Vista zapewnia wsparcie dla takiego kodu, jednak uruchamiany jest on inaczej. Zostanie to opisane w dalszej cz�ci artyku�u.

Dla potrzeb artyku�u za�o�y� nale�y, �e system uruchamiany jest z dysku twardego. Cho� inne przypadki s� obs�ugiwane(sie�, DVD, USB itp.), to jednak g��bsze wnikanie w nie jest na tyle rzadko potrzebne, �e dla jasno�ci opisu sytuacje te nie zostan� tu om�wione.
Do pocz�tku stronyDo pocz�tku strony
Master Boot Recorder

Wa�ne jest, aby zapami�ta�, �e MBR nie powinien by� zmieniany. Prawdopodobnie nied�ugo pojawi� si� inne MBR pozwalaj�ce uruchomi� Windows Vista, ale nale�y si� na nie decydowa� tylko tam, gdzie jest to niezb�dne i tam, gdzie tw�rca takiego MBR deklaruje, �e wie co to jest Windows Vista i co z nim zrobi�. W szczeg�lno�ci, niezgodne b�d� MBR pochodz�ce od poprzednich wersji system�w Windows. Niezale�nie od zgodno�ci z Windows Vista, nale�y mie� �wiadomo��, �e uruchomienie systemu to nie wszystko. Nawet, je�eli to si� uda z alternatywnym Master Boot Recordem to najprawdopodobniej olbrzymie k�opoty zaczn� si� przy szyfrowaniu (i rozszyfrowaniu) przy pomocy mechanizm�w BitLocker.

Pr�buj�c uruchomi� system, BIOS wczyta� MBR i odda� mu sterowanie. MBR taki, maj�c bardzo niewiele miejsca na kod wykonywalny mo�e wykona� tylko bardzo proste operacje. W przypadku Windows Vista, MBR identyfikuje partycj� startow� (boot) i wczytuje z niej NTFS boot code. NTFS boot code to takie niewielkie oszustwo. Teoretycznie, MBR powinien wczyta� tylko pierwszy sektor partycji. Sektor taki ma 512 bajt�w, a to mo�e by� za ma�o na wykonanie wszystkich operacji potrzebnych do uruchomienia systemu. Partycja zorganizowana jest jednak w taki spos�b, �e dane zapisywane s� na niej od pierwszego sektora w cylindrze. Oznacza to, �e nawet skoro boot record zajmuje zgodnie ze standardami tylko jeden sektor z cylindra, to pozosta�e na pewno nie zostan� wykorzystane na dane. Dlatego bardzo dobrze nadaj� si� one na zapisanie kodu, kt�ry mo�e zosta� wykonany w czasie startu systemu. Firma Microsoft oficjalnie informuje, �e mo�e tych sektor�w u�ywa� dla swoich potrzeb i dlatego mimo, �e istnia�y aplikacje �chowaj�ce� w nich jakie� dane, to od czas�w system�w DOS nie jest to praktykowane. W rzeczywisto�ci oznacza to rozszerzenie kodu �aduj�cego z 512 bajt�w do 8KB. A jak na kod w assemblerze to ca�kiem niema�o i w praktyce zaj�te jest tylko 9 sektor�w.

Rol� tego, co zapisane jest w NTFS boot code jest za�adowanie i uruchomienie bootmgr. Plik ten znajduje si� na partycji startowej (boot) i ma oko�o 500KB. To dopiero on tak naprawd� uruchamia system operacyjny, wykonuj�c wcze�niej par� wa�nych operacji. Poniewa� kod zapisany w NTFS boot code jest z konieczno�ci mocno ograniczony, to nie umie on na przyk�ad si�gn�� gdziekolwiek poza g��wny katalog dysku, nie umie nic zapisa� na partycji NTFS i co wa�ne � nie umie poradzi� sobie z kompresj� NTFS. Dlatego skompresowanie pliku bootmgr uniemo�liwi start systemu. Wbrew pozorom skompresowanie takie nie jest operacj� prost� i system do�� skutecznie broni si� przed uniemo�liwieniem mu pracy. Z powodu prostoty NTFS boot code nie jest r�wnie� obs�ugiwane �adne szyfrowanie pliku bootmgr. To w�a�nie z tego wynika potrzeba rozk�adania chronionych BitLockerem danych na dwie partycje. Bootmgr musi by� maksymalnie �atwy do odczytania, poniewa� u�ywany jest do tego bardzo uproszczony kod.

Po za�adowaniu bootmgr, do niego w�a�nie przekazywane jest wykonanie i od tej pory to bootmgr odpowiada za to, co si� dzieje dalej.
Do pocz�tku stronyDo pocz�tku strony
Plik bootmgr

Bootmgr potrafi ju� wykona� do�� du�o operacji. Jest on z za�o�enia niezale�ny od systemu operacyjnego i r�wnie ch�tnie uruchomi Windows Vista, jak i Windows 2000 czy system Linux. Jedyne, co bootmgr musi wiedzie�, to informacje na temat tego, co ma do dyspozycji. W starszych systemach, w roli repozytorium informacji o dost�pnych opcjach, wyst�powa� plik boot.ini. Plik ten zawiera� proste informacje tekstowe i by� r�wnie �atwy do �wiadomej edycji jak i nierozwa�nego popsucia. W przypadku Windows Vista zrezygnowano z prostego pliku tekstowego, zast�puj�c go struktur� BCD. W �rodku BCD zorganizowane jest w hierarchiczn�, drzewiast� struktur� i zapisywane w formie nie odbiegaj�cej znacz�co od danych przechowywanych w rejestrze systemu. BCD jest �r�d�em danych dla bootmgr i w�a�nie z niego odczytywane s� informacje na temat tego jak ma si� zachowa� komputer w czasie uruchamiania systemu. Poniewa� (w przeciwie�stwie do MBR czy NTFS boot code) to, jak ma si� zachowa� bootmgr, mo�e mie� znaczenie dla ko�cowego u�ytkownika, struktury BCD daj� si� w miar� prosto edytowa� i przegl�da�. Zostanie to om�wione w dalszej cz�ci artyku�u.

Analizuj�c szczeg�owo zachowanie bootmgr, stwierdzi� mo�na, �e inicjuje on kolejno: GDT (Global Descriptor Table), IDT (Interrupt Dispatch Table), pami��, firmware, TPM, systemy plik�w, magistral� PCI, debugger, kart� graficzn�, uzyskuje dost�p do w�asnej sekcji .rsrc i w ko�cu inicjuje sie�.

Wszystko to po to, �eby m�c odczyta� BCD. Je�eli w BCD znajduje si� wi�cej ni� jedna pozycja, to bootmgr wy�wietli u�ytkownikowi menu pozwalaj�ce na wybranie systemu do uruchomienia. Je�eli pozycja jest tylko jedna � wyb�r dokonywany jest automatycznie.

Po dokonaniu wyboru bootmgr wczytuje wszystkie parametry wybranej pozycji z BCD, w�r�d kt�rych znajduje si� mi�dzy innymi po�o�enie i nazwa programu, kt�ry odpowiada� b�dzie od tej pory za uruchomienie systemu. W przypadku Windows Vista jest to \Windows\system32\Winload.exe z partycji systemowej. O ile bootmgr mo�na uzna� za niezale�ny od systemu operacyjnego i zdolny do uruchomienia ka�dego systemu, o tyle Winload.exe jest ju� zdecydowanie fragmentem Windows Vista.

Warto zwr�ci� uwag�, �e bootmgr potrafi zrozumie� i rozszyfrowa� dysk systemowy chroniony mechanizmami BitLocker. Jest to konieczne, poniewa� w standardowym scenariuszu plik Winload.exe jest zaszyfrowany. Aby przekaza� do niego wykonanie dalszej cz�ci kodu, wszystkie operacje zwi�zane z pozyskaniem �key protectors� i otrzymaniem klucza VEK musz� by� wykonane wcze�niej. W efekcie to na bootmgr spoczywa obowi�zek poproszenia u�ytkownika o klucz, pin, pami�� flash itp. Bootmgr potrafi porozumie� si� z TPM, sprawdzi� czy podany klucz jest prawid�owy i wykona� wszystkie operacje zwi�zane z rozszyfrowaniem dysk�w. Do pami�ci �adowany jest plik w jawnej postaci i przez funkcj� OslpMain przej...
Zgłoś jeśli naruszono regulamin