x86 od první instrukce s corebootem Ruik



Podobné dokumenty
BIOS (BASIC INPUT-OUTPUT SYSTEM)

Shrnutí Obecné Operační systém Microsoft Windows 7 Ultimate Centrální procesor

Vestavné systémy BI-VES Přednáška 10

Technické prostředky počítačové techniky

Metody připojování periferií BI-MPP Přednáška 2

BIOS EPOX, motherboard 4PCA HT

Instalace OS, nastavení systému

Základní deska (mainboard, motherboard)

) informace o stavu řízené veličiny (předávaná řídícímu systému) - nahrazování člověka při řízení Příklad řízení CNC obráběcího stroje

BIOS. Autor: Bc. Miroslav Světlík

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění

Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/

Identifikátor materiálu: ICT-1-08

Úvod do programování a práce s počítačem

Hardware ZÁKLADNÍ JEDNOTKA

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

ZÁKLADNÍ DESKA ZLÍNSKÝ KRAJ. Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště

Výstavba PC. Vývoj trhu osobních počítačů

Linux a 64 bitů. SUSE Labs. Michal Ludvig Vojtěch Pavlík

HW počítače co se nalézá uvnitř počítačové skříně

Základní programové vybavení počítače

DRUHY SESTAV. Rozlišujeme 4 základní druhy sestav. PC v provedení desktop. PC v provedení tower. Server. Notebook neboli laptop

CHARAKTERISTIKY MODELŮ PC

Pokročilé architektury počítačů

Vestavné průmyslové počítače. Martin Löw

HelenOS ARM port. Pavel Jančík Michal Kebrt Petr Štěpán

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

Hardware Základní pojmy. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1122_Hardware Základní pojmy_pwp

Operační systémy. Tomáš Vojnar IOS 2009/2010. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

Obsah. Kapitola 1 BIOS 9. Kapitola 2 Start počítače a POST testy 13. Kapitola 3 Setup 21. Úvod 7

Název školy: Základní škola a Mateřská škola Žalany

Obsah. Kapitola 1 Skříně počítačů 15. Kapitola 2 Základní deska (mainboard) 19. Kapitola 3 Napájecí zdroj 25. Úvod 11

Roman Výtisk, VYT027

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Bootkity v teorii a praxi. Martin Dráb martin.drab@ .cz

SOUV-VVC, o.p.s. Nasavrky. Informační a komunikační technologie

Dne: Intel Celeron G1620 2,70GHz (2MB) BOX LGA1155 Ivy Bridge - s integrovanou grafikou ,

Fanless VESA Mini PC

Architektura počítačů Úvod

Základní deska (1) Parametry procesoru (2) Parametry procesoru (1) Označována také jako mainboard, motherboard

MCP BIOS řídicí jednotky Kit386EXR

Technická specifikace ČÁST 1. Místo plnění: PČR Kriminalistický ústav Praha, Bartolomějská 10, Praha 1

Lekce 7 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ

Volitelný počet jader

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Linux na prapodivných deskách. LinuxDays 2017, Lenka Kosková Třísková Technická univerzita v Liberci

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Josef Vlach. Dostupné z a

x86 assembler and inline assembler in GCC

SÁM O SOBĚ DOKÁŽE POČÍTAČ DĚLAT JEN O MÁLO VÍC NEŽ TO, ŽE PO ZAPNUTÍ, PODOBNĚ JAKO KOJENEC PO PROBUZENÍ, CHCE JÍST.

Základní pojmy informačních technologií

Operační systémy. Přednáška 7: Správa paměti I

Stručný obsah KAPITOLA 1 KAPITOLA 2 KAPITOLA 3 KAPITOLA 4 KAPITOLA 5 KAPITOLA 6 KAPITOLA 7 KAPITOLA 8 KAPITOLA 9 KAPITOLA 10 KAPITOLA 11 KAPITOLA 12

Digitální učební materiál

Pohled do nitra mikroprocesoru Josef Horálek

Úvod do architektur personálních počítačů

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Obsah. Kapitola 1. Kapitola 2 KAPITOLA 3. Úvod 9

Hardware. Z čeho se skládá počítač

Paměti Flash. Paměti Flash. Základní charakteristiky

Přednáška. Správa paměti I. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Komunikace procesoru s okolím


Základy ICT, průřezová témata

Emulátory. Autor: Martin Fiala. Spouštění programů a her z jiných OS nebo jiných platforem. InstallFest

2.1 Obecné parametry Obecné parametry Rack serveru

TEMPO průmyslový panelový počítač

Čerstvě hacknuto: Bezpečnostní problémy současných procesorů. Rudolf Marek SYSGO s.r.o.

Sběrnicová struktura PC Interní počítačové paměti PC

Úvod do OpenWRT. Ondřej Caletka. 1. března Uvedené dílo podléhá licenci Creative Commons Uveďte autora 3.0 Česko.

Petr Krajča. 26. říjen, 2012

Paměťové prvky. ITP Technika personálních počítačů. Zdeněk Kotásek Marcela Šimková Pavel Bartoš

Základní deska (1) Označována také jako mainboard, motherboard. Deska plošného spoje tvořící základ celého počítače Zpravidla obsahuje:

Operační systémy. Správa paměti (SP) Požadavky na SP. Spojování a zavedení programu. Spojování programu (linking) Zavádění programu (loading)

Chipsety AMD a jejich vlastnosti

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Informatika teorie. Vladimír Hradecký

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Komunikační port (COM1) Komunikační port (COM2) Axesstel Diagnostic Port (COM4) Port ECP tiskárny (LPT1)

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

OPS Paralelní systémy, seznam pojmů, klasifikace

Paměti Josef Horálek

Příloha č.2 - Technická specifikace předmětu veřejné zakázky

Metody připojování periferií

Forenzní analytická jednotka - technická specifikace (9 ks)

Metody připojování periferií BI-MPP Přednáška 1

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Fakulta informačních technologií VUT v Brně Ústav počítačových systémů Technika personálních počítačů, cvičení ITP Služby ROM BIOS a BootRom

Program. BIOS SETUP BIOS význam volby

Linux (nejen) v Low End routerech

HP Compaq Pro 6300 SFF

Zpracování signálu z obrazového senzoru s využitím OS Linux pro embedded zařízení

Logická organizace paměti Josef Horálek

Přednáška 1. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

IUJCE 07/08 Přednáška č. 1

HP EliteBook 8440p. Záruka: 12 měsíců Cena: 5 690,- kč s DPH

Paměti operační paměti

IUJCE 07/08 Přednáška č. 6

Transkript:

1 x86 od první instrukce s corebootem Ruik r.marek@assembler.cz ruik on #coreboot (irc.freenode.net)

Osnova přednášky 2 Kdo jsme? Architektura corebootu Jak vypadá PC po zapnutí Co vše se musí udělat Systemové tabulky Boot Blobs Komentovaná prohlídka zdrojáků

Kdo jsme? coreboot 3 coreboot svobodný software Náhrada za tradiční BIOS Startujeme opravdu rychle 500-1500ms Projekt začal v roce 1999 jako odpověd: Q: Keyboard error press F1 to continue

Kdo jsme? coreboot 4 coreboot svobodný software Náhrada za tradiční BIOS Startujeme opravdu rychle 500-1500ms Projekt začal v roce 1999 jako odpověd: Q: Keyboard error press F1 to continue A: krát 1024 stiskutí F1 u clusteru...

Kde jsme k zastižení 5 Google Summer of Code FOSDEM Šance pro studenty si slušně vydělat přes léto s corebootem Velká konference v Bruselu Setkání opensource vývojářů z celého světa Coreboot hackaton Poslední byl v říjnu na ČVUT FIT

Hackton na FIT 6 wtf?

Kde je coreboot? 7 V chromebook od googlu Ve speciálních laptopech Různé embedded systémy FSF notebooky Nemají rádi binarní bloby (až moc) Vlastní distribuce libreboot

Podporované systémy 8 X86 a ARM Viz http://www.coreboot.org/supported_motherboards AMD Momentálně FM2+ Trinity/Richland/Kaveri Plus nové embedded SoC Intel Sandy bridge/ivy bridge/haswell Pozor některé časti closed source! Intel FSP (Firmware support Package)

Architektura corebootu 9 Uložen v paměti flash na motherboardu (CBFS) Inicializace probíhá pomocí stages Bootblock najde romstage Romstage základní inicializace Ramstage další inicializace (a další CPU) Řízení se předá něčemu dalšímu (payload) Linux kernel Nebo emulace legacy BIOSu SeaBIOS UEFI TianoCore GRUB2

Modelový organismus 10

PC po zapnutí 11 Power sequencing Reší jižní můstek Případně z resetu je x86 procesor vyjmut nějakým pomocným procesorem (v laptopu např. EC) Někdy se základní nastavení chipsetu bere z flash paměti, někdy ze strap resistors. Procesor začne zpracovávat instrukce z reset vectoru, kód běží přímo z fllash paměti

Bylo nebylo... 12 CPU staruje v real mode ano kompatibilní s 8086 (1978) CPU nahraje první instrukci z reset vektoru 000fffd0 000fffe0 000ffff0 00100000 00 00 41 53 52 4f 43 4b 47 4d 48 00 2e 00 00 00 e9 11 fc ff ff 00 00 00 E911FC jmp word 0xfc04 00 39 33 39 41 37 38 35 27 00 00 00 00 00 10 00 e9 5f fc ff de fb ff ff..asrock.939a785 GMH...'......_... objdump -d bootblock.elf (coreboot/src/cpu/x86/16bit/entry16.inc) fffffc04 <_start>: fffffc04: fa cli fffffc05: 66 89 c5 mov %ax,%bp

Protected mode 13 Realný režim má jen 1MB operační paměti coreboot napsán v C Chceme spustit 32-bit kód Přepnutí v src/cpu/x86/32bit/entry32.inc Honem do C... Ale ne! Kdepak mám zásobník? (esp) data32 lgdt %cs:(%bx) movl %cr0, %eax andl $0x7FFAFFD1, %eax orl $0x60000001, %eax movl %eax, %cr0

Život bez zásobníku 14 nemáme RAM, běžíme z ROM (XIP) Jak udělat call push pop ret Jak použít proměnné a nebo C funkce? Použít romcc (specialní C compiler který nepoužívá stack) Použít Cache jako RAM (zapneme cache a používáme ji jako 64KB RAM, jen pár instruckcí) Teď už můžeme do C!

coreboot ROM stage 15 první C kód spuštěn z romstage.c Inicializace chipsetu a superio aby fungovala sériová linka První fáze inicializace: Chipset/CPU/paměť

romstage.c 16 void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx) { static const u16 spd_addr[] = { DIMM0, DIMM2, 0, 0, DIMM1, DIMM3, 0, 0, }; int needs_reset = 0; u32 bsp_apicid = 0; msr_t msr; struct cpuid_result cpuid1; struct sys_info *sysinfo = (struct sys_info *)(CONFIG_DCACHE_RAM_BASE + CONFIG_DCACHE_RAM_SIZE - CONFIG_DCACHE_RAM_GLOBAL_VAR_SIZE); if (!cpu_init_detectedx && boot_cpu()) { /* Nothing special needs to be done to find bus 0 */ /* Allow the HT devices to be found */ enumerate_ht_chain(); /* sb700_lpc_port80(); */ sb700_pci_port80(); } if (bist == 0) bsp_apicid = init_cpus(cpu_init_detectedx, sysinfo); enable_rs780_dev8(); sb700_lpc_init(); w83627dhg_enable_serial(serial_dev, CONFIG_TTYS0_BASE); uart_init(); #if CONFIG_USBDEBUG sb700_enable_usbdebug(config_usbdebug_default_port); early_usbdebug_init(); #endif console_init(); sio_init(); /* Halt if there was a built in self test failure */ report_bist_failure(bist); printk(bios_debug, "bsp_apicid=0x%x\n", bsp_apicid);

RAM inicializace I 17 Našíst časovací data pro DIMM přes I2C bus (SMBus controller) Naprogramovat chipset (or CPU) registry Poslat JEDEC příkazy RAM Hotovo Nikolivěk...

RAM inicializace II 18 Velmi složité pro DDR2/3 I když napsáno v C, SLOCcount (circa) DDR (AMD) 1710 řádek DDR2 (AMD) 3587 řádek DDR3 (AMD) 8432 řádek DDR2 (Intel) 2276 řádek Pamět se trénuje, některé parametry se hledají experimentálně - DQS timing!

RAM stage 19 Jakmile je romstage u konce a pamět beží nahrahajeme ramstage coreboot má něco jako linux kernel drivery a sofistikovaný IO/mem resource management system Musíme: natrénovat PCIe linky Alokovat BARy pro PCI/PCIe a všechny jiné MMIO Inicializovat chipset (hlavně jižní můstek) Připravit tabulky pro OS

Tabulky pro OS 20 Memory map (e820) Mapa RAM pro OS Další tabulky pro OS PIR pro IRQ routing MPtable pro IRQ routing, SMP aware ACPI (pro power management, IRQ routing a... vůbec všechno...)

Předání řízení paylodu 21 Payload je ve stejné flash paměti Může být víc než jeden SeaBIOS legacy BIOS compatible layer Nebo cokoli jiného spuští legacy option ROMs A pak boot sektor z bootovacího zařízení Grub/Windows apod... Tint Tetris ROMbasic IBM ( z roku 1981) Jiný OS...

Ukázka a bootlog 22 Asus F2A85-M FM2 socket AMD Trinity CPU

23 Komentovaná prohlídka zdrojáků

Chvilka pro free software 24 Coreboot je pod GPL v2 SeaBIOS je pod LGPL v3 Payload může být pod jakoukoli licencí Existují coreboot platformy, kde je všechen x86 kód ve formě zdrojáků Problematický VGA BIOS Obsahuje bytekod definovaný výrobcem desky Problémy se současným hardwarem co už není moc hardware...

Binární bloby 25 Data/kód dodaný výrobcem hardwaru Nemusí být nutně pro hlavní processor Mikrokód pro procesor Firmware pro jiné procesory: Intel ME AMD SMU USB3 Nebo v jižním můstku i nějaká 8051... AMD IMC Keyboard controller EC v notebooku

Binární bloby II 26 Stírá se hranice mezi hardware a software Moderní x86 má okolo 5 jiných procesorů Intel si chrání svoje knowhow Nezveřejňuje potřebnou dokumentaci Nabízí místo toho FSP Firmware Support Package Pro sandybridge existuje už implementace bez FSP AMD Až dosud statisíce řádků inicializace pod BSD licencí Pomalu se vydává stejným směrem jako Intel Binarní x86 blob který zinicializuje tajné části

Binární bloby III 27 Nejenom hlavní procesor může být nakažen škodlivým kódem BadUSB https://srlabs.de/badusb/ Škodlivý firmware pro USB controller (POC) Phison 2251-03 (2303) Custom Firmware & Existing Firmware Patches https://github.com/adamcaudill/psychson

28 Otázky?