350 likes | 620 Views
Systemy. Operacyjne. Piotr Arłukowicz. piotao@math.univ.gda.pl. Rozruch systemu na przykładzie Windows 2000. Uruchamianie systemu Tryb awaryjny Zamykanie systemu. Uruchamianie systemu. Składniki procesu uruchamiania: Program ładujący
E N D
Systemy Operacyjne Piotr Arłukowicz piotao@math.univ.gda.pl
Rozruch systemu na przykładzie Windows 2000 • Uruchamianie systemu • Tryb awaryjny • Zamykanie systemu
Uruchamianie systemu Składniki procesu uruchamiania: • Program ładujący • Tryb 16-bitowy, czyta i ładuje sektory startowe partycji • Sektor startowy • 16-bitowy, czyta główny katalog żeby załadować Ntldr • Ntldr • 16-bitowy tryb rzeczywisty, 32-bitowy tryb chroniony, uruchamia stronicowanie, czyta boot.ini, wyświetla menu startowe i ładuje ntoskrnl.exe, bootvid.dll, hal.dll oraz sterowniki urządzeń potrzebne do startu • Ntoskrnl.exe • 32-bitowy tryb chroniony ze stronicowaniem – inicjalizuje podsystem wykonawczy i uruchamia sterowniki urządzeń, przygotowuje system do uruchamiania programów i uruchania smss.exe • Smss • Aplikacja 32-bitowa, ładuje podsystem win32 (który zawiera win32k.sys oraz csrss.exe), uruchamia proces winlogon
Uruchamianie systemu c.d. • Winlogon • Aplikacja 32-bitowa, uruchamia zarządcę kontroli usług (SCM) i podsystem zabezpieczeń lokalnych, następnie wyświetla okno logowania • Service control manager (SCM) • Aplikacja 32-bitowa, ładuje i inicjalizuje sterowniki urządzeń uruchamianych automatycznie oraz usługi win32
Dysk twardy • Partycje: logiczne, wydzielone obszary dysku twardego,sformatowane w określonym systemie plików • Cele partycjonowania: • Pokonanie ograniczeń technicznych (stare wersje FAT, ograniczenia BIOSu – problem 1023 cylindra w adresowaniu, itp.) • Izolacja danych – blokada propagacji uszkodzeń • Zabezpieczenie przed przepełnieniem – osobne partycje na ‘zbiorniki’ • Dopasowanie do wymagań: każda partycja może spełniać inne zadania • Historia: • FAT – 1980 dla QDOS (pochodzi od systemu CP/M), pojemność do 2MB • FAT16 – 1983, pojemność dysków do 32MB • FAT32 – 1997, pojemność teoretycznie do 8TB, praktycznie do 127GB (od Win95osr2) • http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q184006& • VFAT – V od Virtual – długie nazwy plików w windows 95
Dysk twardy - partycje • Primary partition – partycje podstawowe • Extended partition – partycje rozszerzone • Programy do tworzenia partycji • fdisk (DOS, Linux, BSD i inne) • cfdisk • sfdisk • Windows: wymagana jedna partycja • Linux: wymagana jedna partycja, wskazane 2 lub więcej
Dysk twardy - fdisk MS DOS (Windows 98):
Dysk twardy – fdisk MS DOS (Windows 98):
Dysk twardy - fdisk FreeBSD:
Dysk twardy - fdisk GNU/Linux:
Dysk twardy - fdisk GNU/Linux:
Dysk twardy – „fdisk” Windows XP:
Postać typowej partycji • Podział dysku na partycje zależy od przeznaczenia dysku • Uwzględnić należy system operacyjny oraz jego zadania Podział dysku typowego „Kowalskiego” – oczywiście dla windows Windows Linux /boot / /usr /home /var MBR 1 2 3 4
Uruchamianie systemu - dokładniej Program ładujący • Jest wczytywany przez BIOS z Master Boot Record • Jest zależny od systemu plików (FAT32/NTFS) • Dostęp do plików na dysku w trybie tylko do odczytu • Zadanie1 – udostępnienie informacji o dyskach logicznych • Zadanie2 – załadowanie do pamięci programu Ntldr • Zadanie3 – przekazanie sterowania do programu Ntldr
Uruchamianie systemu - dokładniej Program Ntldr • Rozpoczyna działanie w trybie rzeczywistym • Widzi tylko podstawową pamięć – poniżej 1MB • Przełącza procesor w tryb chroniony (adresowanie 32 bitowe) • Uruchamia stronicowanie pamięci do 16MB • Dostęp do dysków odbywa się w trybie rzeczywistym (BIOS) • Możliwy jest dostęp do podkatalogów i partycji • Odczytanie pliku boot.ini • Jeżeli w boot.ini jest parę opcji startowych, pojawia się menu • Jeżeli w boot.ini zadeklarowano ładowanie systemu MSDOS to odbywa się ładowanie bootsect.dos, przełączenie do trybu 16-bitowego i wywołanie ponownie programu ładującego z MBR dla bootsect.dos
Uruchamianie systemu - dokładniej Program Ntldr – c.d. • Uruchomienie programu ntdetect.comJest to 16-bitowy program do pobierania informacji z BIOSU. Pobiera on następujące informacje: • Informację o dacie i czasie • Dane o rodzajach magistral (ISA, PCI, EISA, MCA, itp.) • Dane o liczbie, rozmiarze i typie napędów dyskowych • Informacje o rodzaju urządzeń wskazujących (mysz, itp.) • Informacje o liczbie i typie portów równoległych Program zapisuje te informacje w rejestrze w kluczu: HKLM\HARDWARE\DESCRIPTION • Czyszczenie ekranu i wyświetlenie informacji o ładowaniu • Naciśnięcie F8 uruchamia zaawansowane menu startowe
Uruchamianie systemu - dokładniej Program Ntldr – c.d. • Rozpoczęcie ładowania systemu z partycji startowej: • Pliki binarne jądra i warstwy HAL (ntoskrnl.exe, hal.dll) • Odczytuje rejestr aby dowiedzieć się jakie sterowniki załadować • Lokalizuje sterowniki wg. ich opisu • Ładuje sterownik obsługi danego typu partycji (tej ze sterownikami) • Ładuje sterowniki startowe (tylko ładuje) • Przygotowuje rejestry procesora do uruchomienia ntoskrnl.exe
Uruchamianie systemu - dokładniej Program Ntldr – opcje pliku boot.ini [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn • /BASEVIDEO • Wyświetlanie GUI odbywa się w trybie karty standardowego VGA • /BOOTLOG • Rejestracja przebiegu uruchomienia w pliku %SystemRoot%\ntbtlog.txt
Uruchamianie systemu - dokładniej Program Ntldr – opcje pliku boot.ini • /BREAK • Zatrzymanie uruchomienia w momencie załadowania warstwy HAL i oczekiwanie na połączenie z programem uruchomieniowym jądra. Uruchomienie bez opcji /DEBUG powoduje pojawienie się niebieskiego ekranu z kodem zatrzymania 0x00000078 (PHASE0_EXCEPTION) • /BURNMEMORY= • Określenie ilości pamięci, której system nie wykorzysta – NIE jest to określenie ilości pamięci, którą system MOŻE wykorzystać • /DEBUG • Włącza tryb umiejscawiania błędów jądra systemu
Uruchamianie systemu - dokładniej Program Ntldr – opcje pliku boot.ini • /FASTDETECT • Opcja domyślna – pominięcie wyszukiwania urządzeń szeregowych i równoległych (bez tego działa jakby podano /NTDETECT i będzie wyszukiwać urządzenia • KERNEL= /HAL= • Pozwala podać nazwę binarnego pliku jądra (domyślnie ntoskrnl.exe) oraz warstwy HAL (domyślnie hal.dll). Dzięki temu można wybrać pomiędzy wersją testową a handlową • /MAXMEM= • Praca w trybie ograniczenia pamięci, np. do 128 MB. System nie użyje więcej pamięci, niż zostanie podane w tej opcji
Uruchamianie systemu - dokładniej Program Ntldr – opcje pliku boot.ini • /NODEBUG • Wyłączenie wszystkich opcji dotyczących lokalizacji błędów (/DEBUG, /DEBUGPORT i /BAUDRATE) • /NOGUIBOOT • Wyłącza wyświetlanie i pracę sterownika graficznego działającego podczas uruchamiania systemu • /NUMPROC= • Określa maksymalną liczbę procesorów, które mogą zostać użyte w systemie wieloprocesorowym • /ONECPU • Korzystanie tylko z jednego procesora na maszynie wieloprocesorowej
Uruchamianie systemu - dokładniej Program Ntldr – opcje pliku boot.ini • /PCILOCK • Wyłączenie dynamicznego przydzielania przerwań i zasobów IO dla urządzeń PCI i korzystanie tylko z tego, co ustalił BIOS • /SAFEBOOT: • Opcja bezpiecznego rozruchu systemu: do wyboru są opcje MINIMAL, NETWORK i DSREPAIR. Opcje te są zdefiniowane w kluczu rejestru HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot
Uruchamianie systemu - dokładniej Program Ntldr – opcje pliku boot.ini • /SOS • Włączenie wyświetlania nazw sterowników urządzeń, wersji systemu, wersję kompilacji, liczbę dostępnej pamięci i liczbę procesorów • /TIMERS= • Ustawia rozdzielczość zegara systemowego dla Hal w wersji wieloprocesorowej (domyślna: 7.8ms). Rozdzielczości ustawia się wg. tabeli:
Uruchamianie systemu - dokładniej Program Ntldr – opcje pliku boot.ini • /USE8254 • Nakazanie warstwie HAL użycia układu czasowego 8254 w systemach ze starszym BIOSEM • /YEAR= • Ustawienie arbitralne roku (rok z zegara jest ignorowany)
Uruchamianie systemu - dokładniej Uruchomienie kernela ntoskrnl.exe Faza 0: • Uruchomienie i inicjalizacja menedżera pamięci • Inicjalizacja zarządcy obiektów • Uruchomienie monitora bezpieczeństwa odwołań • Uruchomienie menedżera procesów • Uruchomienie „procesu”, który nazywa się „Idle” – proces „bezczynności” • Inicjalizacja menedżera Plug and Play Faza 1: • przygotowanie systemu do obsługi przerwań zgłaszanych przez urządzenia • Wywołanie startowego sterownika karty graficznej (..\system32\bootvid.dll) • Inicjalizacja modułu menedżera energii
Uruchamianie systemu - dokładniej Uruchomienie kernela ntoskrnl.exe – c.d., faza 1 • Inicjalizacja czasu systemowego (zapisywanego jako czas rozruchu systemu) • Inicjalizacja i rozpoczęcie pracy pozostałych procesorów w systemach wieloprocesorowych • Pasek postępu ustawiany jest na 5% • …. • Wczytanie obsługi języków narodowych • … • Uruchamia się zarządca pamięci podręcznej (schowek) • Inicjalizacja rejestru • Inicjalizacja urządzeń typu Plug and Play przez PnP BIOSu
Uruchamianie systemu - dokładniej Uruchomienie kernela ntoskrnl.exe – c.d., faza 1 • Uruchomienie podsystemu Lokalnego Wywoływania Procedur (LPC) • Utworzenie pliku z logiem (jeżeli było to wymagane) – bootlog.txt • … • Pasek postępu ustawiany jest na 25% • Inicjalizacja menedżera podsystemów IO – zajmuje kolejne 50%, uruchomienie wszystkich sterowników oraz systemu Windows Media Instrumentation (WMI) poprzez Windows Driver Model (WDM) • … • 85% • Wywołanie monitora bezpieczeństwa odwołań (lsass.exe) • Wywołanie podsystemu menedżera sesji – smss.exe • 100%
Uruchamianie systemu - dokładniej Uruchomienie smss • Pierwszy proces pracujący w trybie użytkownika • Odpowiedzialny za tworzenie środowiska • Jest to proces ‘zaufany’, mogący wywoływać bezpośrednio funkcje API jądra (zamiast funkcji API win32 – który jeszcze nie działa) • Uruchomienie podsystemu win32 • Uruchomienie podsystemu Centrum Wykonawczego • Finalizowanie inicjalizacji rejestru, dopisywanie brakujących kluczy itp.
Uruchamianie systemu - dokładniej Uruchomienie smss – szczegóły działania głównego wątku • Utworzenie obiektu portu LPC i wątków oczekujących na zlecenia użytkownika (np. załadowanie podsystemu lub utworzenie sesji) • Zdefiniowanie symbolicznych odnośników dla urządzeń MSDOS (takich jak LPT1 lub COM1) • Uruchomienie wszystkich programów przeznaczonych do wykonania w czasie startu systemu • Wykonuje opóźnione zmiany nazw plików i ich usuwanie • Otwiera znane biblioteki DLL • Tworzy dodatkowe pliki stronicowania (swap także) • Inicjalizuje rejestr a menedżer konfiguracji dopisuje brakujące klucze • Tworzy systemowe zmienne środowiskowe
Uruchamianie systemu - dokładniej Uruchomienie smss – szczegóły działania głównego wątku • Ładuje część podsystemu Win32 trybu jądra (win32k.sys) • Określa położenie tego pliku na podstawie danych z rejestru • Kod win32k korzysta ze sterownika karty graficznej w celu przełączenia się na rozdzielczość zdefiniowaną w profilu domyślnym. • W tym momencie następuje przełączenie się z trybu VGA uruchomieniowego do trybu określonego dla systemu • Uruchomienie podsystemu procesów, włącznie z csrss.exe (podsystemy POSIX oraz OS/2 uruchamiane są na żądanie i nie następuje to w tym momencie) • Uruchomienie procesu logowania użytkownika (winlogon) • Wejście w nieskończoną pętlę na uchwytach procesów csrss oraz winlogon. Zakończenie jednego z tych procesów powoduje załamanie systemu i wymuszone zakończenie pracy
Uruchamianie systemu - dokładniej Uruchomienie winlogon • Utworzenie początkowego okna i elementów pulpitu • Załadowanie bibliotek DLL • Utworzenie procesu menedżera kontroli usług (\system32\services.exe) • Services ładuje wszystkie usługi i sterowniki urządzeń, zaznaczone jako uruchamiane automatycznie • Ładuje także podsystem lokalnego bezpieczeństwa i uwierzytelniania (\system32\lsass.exe) • Aktualizuje rejestr, zapisując w nim „ostatnią znaną dobrą konfigurację”
Tryb awaryjny • Co to jest tryb awaryjny? • jest to minimalistyczna konfiguracja sterowników i usług, umożliwiająca prawidłowe załadowanie systemu • Tryb zapożyczony z windows 98/me • Wejście do menu wyboru tego trybu – po wciśnięciu F8 • Tryby awaryjne do wyboru: • Tryb awaryjny • Tryb awaryjny z obsługą sieci • Tryb awaryjny z wierszem poleceń • (tutaj zamiast Eksploratora ładowany jest program cmd.exe) • Sterowniki ładowane z listy „SafeBoot” • Pierwszy program użytkownika: smss.exe • Uruchamia on następnie chkdsk sprawdzający dyski
Konsola odzyskiwania • Co to jest? • Jest to narzędzie pozwalające uratować system w przypadkach, gdy nastąpiło jego uszkodzenie nieusuwalne z poziomu trybu awaryjnego • Kiedy może się przydać? • Gdy przestanie działać jakiś sterownik startowy (który ładuje się zawsze niezależnie od trybu) • Gdy uszkodzony zostanie jakiś krytyczny komponent systemu • Gdy uszkodzony zostanie twardy dysk uniemożliwiając załadowanie systemu • Gdy zamazany zostanie rekord ładujący MBR • Wejście do konsoli: poprzez płytę instalacyjną i wybór naprawy systemu • Określenie systemu przeznaczonego do naprawy (w przypadku gdy jest ich więcej)
Konsola odzyskiwania – c.d. • Należy podać hasło administratora (mimo to dostępne będą jedynie katalogi zawierające kluczowe komponenty systemu) • Uruchomione jest jądro systemu, które zawiera wszystkie możliwe sterowniki i obsługę systemów plików FAT32, NTFS, dysków SCSI itp. • Przebieg uruchamiania jest określony w pliku txtsetup.sif w katalogu i386 • Jako pierwszy uruchamia się menedżer sesji (i386\system32\smss.exe) • Menedżer ten wyświetla menu z opcjami naprawy lub instalacji • W trakcie instalacji to on odpowiada za obsługę wyboru partycji instalacyjnej raz za kopiowanie plików • Konsola ratownicza działa dzięki dwóm sterownikom załadowanym przez smss: spcmdcon.sys oraz setupdd.sys.
Zamykanie systemu • Zamykanie systemu jest wykonywane przez podsystem win32 • Za obsługę zamknięcia odpowiada proces csrss • Csrss przekazuje żądanie do ukrytego okna procesu winlogon • Winlogon woła jeszcze funkcję zamykającą system ze specjalnymi znacznikami • Csrss przechwytuje to wywołanie i wysyła żądanie zakończenia do wszystkich procesów użytkownika interaktywnego (5 sekund czekania max na zakończenie każdego z nich lub okno dialogowe) • Zakończone zostają wszystkie procesy konsolowe • Zakończona zostaje praca usług systemowych • Przekazane jest wszystkim podsystemom sterowników, IO oraz pamięci i rejestru, że system jest zamykany, aby mogły one opróżnić bufory IO, i zapisać wszelkie zmiany na dysk (zmiany w rejestrze, stany pamięci, itp.) • Wyłączane są usługi PnP, centrum wykonawczego, menedżera IO, konfiguracji, pamięci, a na końcu menedżera energii, który ostatecznie wyłącza system, zależnie od ustawień.