Operační systémy Start OS © Milan Keršláger Obsah: start počítače (BIOS, start z FDD, HDD, CD/DVD, USB, BootROM), oddíly, aktivace jádra, MBR.
Start počítače ● specifický postup pro různé typy počítačů ● dvě snadno rozlišitelné části: ● inicializace hardware – pomocí firmware (BIOS) ● zavedení operačního systému – první krok provede firmware (BIOS) – další postup čistě softwarový ● tovární nastavení ● „zapni (zresetuj) a ono to (nejspíš) bude fungovat“ ● někdy nemožné – pracovní stanice, servery
Zapnutí PC ● reset (signál propojující všechny obvody) ● po zapnutí nebo zmáčknutí tlačítka ● CPU do 16bitového režimu (jako Intel 8086) ● interpretace kódu od adresy 0xFFFF0 ● zde je umístěn BIOS ● vlastní BIOS i doplňující karty – grafická karta, řadiče pro disky (SATA, SCSI) atd. – BIOS je najde a spustí jejich inicializační kód – mohou rozšířit schopnosti BIOSu ● zavedení OS, jednoduchý grafický režim (boot logo, animace) ● BIOS plně kontroluje první fázi startu PC
BIOS ● Basic Input-Output systém ● v paměti ROM (dnes Flash) ● na základní desce od jejího výrobce ● vyrábí několik firem, modulární ● závislý na HW (přímo jej ovládá) ● poskytuje jednoduché API – služby BIOSu ● čti sektor z disku, vytiskni znak, pošli na port,... ● plně na něj spoléhal pouze DOS ● 16bitový z původního IBM PC XT (1983) ● 32bitová rozšíření se neujala
SETUP ● aplikace pro volitelná nastavení BIOSu ● při startu stiskem DEL, F2 a podobně ● nastavení uloženo v paměti CMOS ● zálohováno baterií (spolu s RTC) ● snaha o maximální automatizaci ● některé BIOSy schválně mnoho voleb – pro experty, přetaktování ● nastavení chipsetu (frekvence, napájení, režimy...) ● pořadí zařízení pro zavedení OS ● dříve pevně stanoveno → boot viry z disket
Činnost BIOSu při startu ● detekce a inicializace hardware ● uvedení HW do výchozího stavu ● lze (částečně) přeskočit u teplého startu ● ACPI (standard, vytvořil Intel 1996) ● info o konfiguraci do speciálních tabulek v paměti ● jen nové počítače (Windows 2000+) ● tabulky často chybně vytvořené – tvůrce BIOSu potřebuje funkční start pro Windows ● POST testy (Power On Self Test) ● cílem BIOSu je aktivace operačního systému
Zavedení OS ● IBM PC: BIOS ● disketa – nejjednodušší, jako emulace u ostatních ● pevný disk – jako disketa, ale navíc MBR ● CD/DVD – emulace diskety nebo přímo ● BootROM – emulace diskety nebo přímo ● USB mass storage (flash disk, externí HDD apod.) ● Apple: EFI (Intel) ● náhrada BIOSu ● binární „ovladače“ HW ● problém možnosti tajit ovládání a nastavování HW
IBM PC: start z diskety ● BIOS umí disketovou mechaniku plně ovládat ● HW FDD mechaniky je ovládán jednotně ● potřebujeme načtení požadovaného sektoru ● nalezení a inicializace disketové mechaniky ● BIOS zavede boot sektor do RAM ● první sektor na disketě (CHS = 0,0,0) → 512 bajtů ● využívá služby BIOSu → HW nezávislý kód ● skočí se na začátek ● obsahuje kód zavaděče jádra OS ● specifický pro různé OS (DOS, Windows NT, Linux)
Aktivace jádra OS ● jádro převezme plnou kontrolu nad počítačem ● procesor do 32bitového režimu + ring0 ● detekuje a inicializuje I/O zařízení (nově dle ACPI tabulek) ● jádro připojí souborový systém ● root filesystem → unixové OS ● disk C: → Microsoft Windows (ale i jiné písmeno) ● spuštění prvního programu – unixové → init, Windows → (???) ● spuštění startovací sekvence (boot sequence) ● unixové OS → startovací skripty ● MS Windows → dle záznamů v registrech ● ukončením startovací sekvence je systém funkční
IBM PC: start z disku – I. ● přidává další vrstvu – MBR + oddíly ● dnes typický postup ● BIOS musí umět z pevného disku číst ● jinak se nenačte zavaděč (taky ho potřebuje) ● IDE/PATA – standardní ovládání HW ● problémy s výkonem → několik standardů ● dopředně nekompatibilní (nový disk do starého PC) ● SCSI – rozšíření BIOSu na řadiči ● SATA – rozšíření BIOSu na řadiči nebo AHCI
Oddíly (partitions) ● oddíl je logické rozčlenění pevného disku ● protože pevný disk je velký nebo více FS, OS ● dělení bez podpory v HW → SW musí respektovat ● popis rozdělení uložen do tabulky uvnitř MBR ● Master Boot Record (CHS = 0,0,0) → 512 bajtů ● obsahuje zavaděč a tabulku dělení disku na oddíly ● zpětná kompatibilita ● oddíl má strukturu jako disketa ● MBR může být nezávislý na OS → DOS MBR
DOS MBR ● prvních 512 bajtů na začátku disku ● zavaděč boot sektoru ● pro čtení z disku služby BIOSu → nezávislý na HW ● primitivní → alternativní zavaděče (Grub, LILO,...) ● tabulka rozdělení disku ● limit velikosti disku (oddílu) 2TiB ● max. 4 oddíly: primary, extended – extended se může dál dělit na logické oddíly ● každý oddíl ID → slouží k identifikaci vnitřku oddílu – extended: 0x5, Linux (ext3): 0x83, Linux swap: 0x82 – NTFS: 0x7, FAT16: 0x4, FAT32: 0xC
IBM PC: start z disku – II. ● BIOS načte do paměti MBR ● tj. prvních 512 bajtů na HDD ● pokud je neplatný, zahlásí BIOS chybu – MBR not found ● skočí se na začátek MBR (zavaděč + tabulka) ● vybere se aktivní oddíl ● k němu se přistupuje dále jako k disketě ● MBR zavede z aktivního oddílu boot sektor ● není-li platný, zahlásí MBR chybu (OS not found) ● dále se pokračuje jako při startu z diskety
IBM PC: start z CD/DVD ● dvě možnosti: emulace diskety nebo přímo ● emulace diskety ● na CD/DVD je obraz diskety (soubor) ● BIOS ho zavede do paměti (nakopíruje) ● jsou přesměrovány funkce BIOSu tak, aby čtení z diskety ve skutečnosti bylo z paměti, kde je obraz ● dále start jako z diskety ● přímý přístup k CD/DVD ● BIOS musí rozumět formátu CD/DVD → ISO9660 ● pak podobně jako z diskety (sektor je 2048 bajtů) – „boot sektor“ pro CD/DVD závislý na cílovém OS
IBM PC: BootROM ● rozšíření BIOSu na síťové kartě, tzv. PXE ● kombinace DHCP, TFTP a speciálního zavaděče ● BootROM zjistí pomocí DHCP: – IP adresu, masku + IP adresu serveru TFTP ● BootROM stáhne z TFTP zavaděč a aktivuje ho – zavaděč zobrazí menu – zavaděč pomocí TFTP stahuje další soubory ● typicky již jádro OS, dále viz aktivace jádra OS ● dříve NCP protokol + IPX/SPX (Novell Netware) ● pomocí NCP funkcí zaveden do RAM obraz diskety, který byl umístěn na serveru ● místo z diskety čte dále BIOS z paměti s obrazem
IBM PC: USB ● USB mass storage → UMS (též MSC) ● standard pro přístup k USB zařízení jako k HDD ● umí čtení/zápis sektoru → bez konkrétního FS ● bez různých rozšíření (NCQ) → lepší je eSATA ● v OS je standardní UMS driver – Windows 2000, Linux od roku 2000 ● UMS obslouží flash disk, HDD, CD/DVD, SSD... ● BIOS rozpozná UMS jako další běžný disk ● start podobně jako z disku (též MBR) ● v nastavení BIOSu je nutné zapnout ● USB legacy → emulace HDD nad UMS