SlideShare a Scribd company logo
1 of 32
Download to read offline
Software Meets Hardware in Wrocław
“Świat komputera przed systemem operacyjnym”
Jan Dąbroś
Copyright © 2019 Semihalf. All rights reserved.
Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. W tle systemu operacyjnego
4. “Ciemna strona mocy”
5. Po co właściwie nam firmware?
Copyright © 2019 Semihalf. All rights reserved.
Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. W tle systemu operacyjnego
4. “Ciemna strona mocy”
5. Po co właściwie nam firmware?
Copyright © 2019 Semihalf. All rights reserved.
Proces uruchamiania
Copyright © 2019 Semihalf. All rights reserved.
Proces uruchamiania
Copyright © 2019 Semihalf. All rights reserved.
Copyright © 2019 Semihalf. All rights reserved.
Typowa ścieżka Intela
Copyright © 2019 Semihalf. All rights reserved.
Typowy układ firmware w pamięci ROM
● Firmware IME oraz UEFI znajdują się w tym samym flash’u
● PEI jest wykonywany bezpośrednio z pamięci ROM (cache)
● Kod UEFI jest kopiowany do pamięci RAM
● UEFI nie ma dostępu do regionu IME
Copyright © 2019 Semihalf. All rights reserved.
Przykładowa ścieżka dla serwera ARMv8
Copyright © 2019 Semihalf. All rights reserved.
Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. W tle systemu operacyjnego
4. “Ciemna strona mocy”
5. Po co właściwie nam firmware?
Copyright © 2019 Semihalf. All rights reserved.
Rodzaje firmware
Copyright © 2019 Semihalf. All rights reserved.
Słownik angielsko-polski
BOOTLOADER - Program Rozruchowy
FIRMWARE - Oprogramowanie układowe
Copyright © 2019 Semihalf. All rights reserved.
Zadania firmware
1. Autotest podzespołów elektronicznych - Power-On Self-Test
2. Konfiguracja ustawień sprzętowych
3. Udostępnienie interfejsu dla użytkownika
4. Przygotowanie struktur opisu sprzętu
5. Funkcjonalności bezpieczeństwa (opcjonalnie)
--- Bootloader ---
1. Przygotowanie środowiska
2. Inicjacja startu systemu operacyjnego
Copyright © 2019 Semihalf. All rights reserved.
Power-on self-test
Sprawdzane są w kolejności:
1. Poprawność parametrów zasilania
2. Poprawność pracy procesora
3. Poprawność pracy kontrolera pamięci
4. Poprawność pracy mostka północnego i południowego
5. Poprawność pracy karty graficznej (opcjonalnie)
6. Pozostałe kontrolery IO (opcjonalnie)
Copyright © 2019 Semihalf. All rights reserved.
Konfiguracja ustawień sprzętowych
● Ustawianie konfigurowalnych parametrów
procesora - np. częstotliwości taktowania;
realne “podkręcanie” zachodzi na tym
etapie
● Wykrywanie ilości i parametrów
zainstalowanych kości pamięci
● Porównanie możliwości sprzętowych z
parametrami zadanymi przez użytkownika
Copyright © 2019 Semihalf. All rights reserved.
Interfejs użytkownika
Copyright © 2019 Semihalf. All rights reserved.
Oldschool
Copyright © 2019 Semihalf. All rights reserved.
Device tree & ACPI
● Struktura danych opisująca sprzęt
● Kompilowana z kodu źródłowego, ale może być
modyfikowana w run-time
● Urządzeniom odpowiadają węzły (node)
● Każde urządzenie ma zestaw właściwości
● Jeden obraz jądra - wiele maszyn
Copyright © 2019 Semihalf. All rights reserved.
Device tree & ACPI
● Tablice opisujące sprzęt, są tworzone przez firmware
● Tablice są wykorzystywane przez sterowniki wewnątrz
systemu operacyjnego
● Tablice zawierają zarówno opis sprzętu jak i częściowo
kod, który jest warstwą pomiędzy systemem
operacyjnym a hardware
Copyright © 2019 Semihalf. All rights reserved.
Załadowanie i uruchomienie systemu operacyjnego
● Sterowniki do kontrolerów IO, pozwalające na załadowanie obrazu z różnych
lokalizacji - napęd CD/DVD, dyski twarde, karty SD, sieć
● Zazwyczaj uruchamiany będzie “dedykowany” bootloader np. GRUB, LILO,
BOOTMGR
● W przypadku UEFI, możliwe jest uruchomienie jądra linuxa bezpośrednio z
firmware, ponieważ jądro (skompilowane z odpowiednią opcją) samo w sobie
zawiera minimalny loader
● Obraz jądra zostaje załadowany do pamięci RAM,
opcjonalnie również initramfs
● Ponadto przekazujemy również “command-line arguments”
Copyright © 2019 Semihalf. All rights reserved.
Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. W tle systemu operacyjnego
4. “Ciemna strona mocy”
5. Po co właściwie nam firmware?
Copyright © 2019 Semihalf. All rights reserved.
W tle systemu operacyjnego
● Generyczny interfejs firmware - OS
poprzez dodatkową warstwę abstrakcji na
sprzęcie
● Przykładem są Runtime Services
oferowane przez UEFI - korzysta z nich
zarówno Windows jak i Linux
● Zarządzanie energią w systemach
opartych o procesory ARMv8
● Systemy heterogeniczne
Copyright © 2019 Semihalf. All rights reserved.
“Ukryte” funkcje firmware
● Ukryte funkcje w oprogramowaniu
koprocesorów
● Bezpieczne systemy operacyjne
wykorzystujące technologię ARM TrustZone
● System Management Mode
● Intel Management Engine
● AMD Platform Security Processor
Copyright © 2019 Semihalf. All rights reserved.
Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. W tle systemu operacyjnego
4. “Ciemna strona mocy”
5. Po co właściwie nam firmware?
Copyright © 2019 Semihalf. All rights reserved.
Ciemna strona firmware
● Podczas uruchamiania systemu, firmware wykonywany jest jako pierwszy i to
on zawiera kod ładujący system operacyjny
● W trakcie pracy systemu operacyjnego, firmware jest wykonywany przez
procesor działający na wyższym poziomie uprzywilejowania
● Można ukryć pewne działania przed systemem operacyjnym, wywłaszczenie
może nastąpić w każdym momencie
Copyright © 2019 Semihalf. All rights reserved.
Ciemna strona firmware
● Secure Boot (w pewnych konfiguracjach)
● Data Rights Management (Digital Restrictions Management)
● Sposób na problemy z upstream’em - “worek na śmieci”
● Zazwyczaj zamknięte oprogramowanie
● Idealna płaszczyzna do ataku
Copyright © 2019 Semihalf. All rights reserved.
Projekt NERF i open-source firmware
UEFI - Unified Extensible Firmware Interface
NERF - Non-Extensible Reference Firmware
https://www.youtube.com/watch?v=iffTJ1vPCSo
Coreboot, Libreboot
Copyright © 2019 Semihalf. All rights reserved.
Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. W tle systemu operacyjnego
4. “Ciemna strona mocy”
5. Po co właściwie nam firmware?
Copyright © 2019 Semihalf. All rights reserved.
Po co nam firmware?
● Duplikacja kodu między firmware a systemem operacyjnym
● Wydłużenie czasu uruchamiania
● Większe zużycie miejsca w pamięci
● Wyższy poziom uprzywilejowania - możliwe groźniejsze ataki
Czy nie prosimy się sami o kłopoty?
Copyright © 2019 Semihalf. All rights reserved.
Po co nam firmware?
● Ograniczenie ilości dostępnej pamięci ROM
● Sekrety producenta sprzętu w procedurach inicjalizacji
● DUAL-BOOT
● Jeden obraz jądra działający na różnych maszynach
● Dynamiczny opis sprzętu
● Opcje Recovery
Copyright © 2019 Semihalf. All rights reserved.
Referencje
https://www.slideshare.net/hafizhanif86/5-post-bios-cmos
https://libreboot.org/faq.html
https://www.coreboot.org/
https://www.youtube.com/watch?v=4kCICUPc9_8 - IME
http://opensecuritytraining.info/IntroBIOS.html
Copyright © 2019 Semihalf. All rights reserved.
PYTANIA?
KONTAKT:
jsd@semihalf.com
Copyright © 2019 Semihalf. All rights reserved.

More Related Content

Similar to Meetup #1 - Świat Komputera Przed Systemem Operacyjnym

Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Semihalf
 
PLNOG14: Network Automation - Sławomir Janukowicz
PLNOG14: Network Automation - Sławomir JanukowiczPLNOG14: Network Automation - Sławomir Janukowicz
PLNOG14: Network Automation - Sławomir JanukowiczPROIDEA
 
PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...
PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...
PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...PROIDEA
 
Instalowanie systemów operacyjnych i oprogramowania użytkowego
Instalowanie systemów operacyjnych i oprogramowania użytkowegoInstalowanie systemów operacyjnych i oprogramowania użytkowego
Instalowanie systemów operacyjnych i oprogramowania użytkowegoSzymon Konkol - Publikacje Cyfrowe
 
Firebird in 2 minutes (polish)
Firebird in 2 minutes (polish)Firebird in 2 minutes (polish)
Firebird in 2 minutes (polish)Mind The Firebird
 
Raport z-ekspertyzy-urzadzenia-typu-pendrive
Raport z-ekspertyzy-urzadzenia-typu-pendriveRaport z-ekspertyzy-urzadzenia-typu-pendrive
Raport z-ekspertyzy-urzadzenia-typu-pendriveRafal P.
 
Rozszerzalność Symfony - PHPCon 2023
Rozszerzalność Symfony - PHPCon 2023Rozszerzalność Symfony - PHPCon 2023
Rozszerzalność Symfony - PHPCon 2023Michał Kurzeja
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
Pomoc Techniczna
Pomoc TechnicznaPomoc Techniczna
Pomoc TechnicznaAMP
 

Similar to Meetup #1 - Świat Komputera Przed Systemem Operacyjnym (17)

Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?
 
PLNOG14: Network Automation - Sławomir Janukowicz
PLNOG14: Network Automation - Sławomir JanukowiczPLNOG14: Network Automation - Sławomir Janukowicz
PLNOG14: Network Automation - Sławomir Janukowicz
 
3
33
3
 
Instalacja sterowników urządzeń peryferyjnych
 Instalacja sterowników urządzeń peryferyjnych Instalacja sterowników urządzeń peryferyjnych
Instalacja sterowników urządzeń peryferyjnych
 
PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...
PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...
PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...
 
Instalowanie systemów operacyjnych i oprogramowania użytkowego
Instalowanie systemów operacyjnych i oprogramowania użytkowegoInstalowanie systemów operacyjnych i oprogramowania użytkowego
Instalowanie systemów operacyjnych i oprogramowania użytkowego
 
Praca Dyplomowa
Praca DyplomowaPraca Dyplomowa
Praca Dyplomowa
 
8
88
8
 
Poznaj Firebird w dwie minuty
Poznaj Firebird w dwie minutyPoznaj Firebird w dwie minuty
Poznaj Firebird w dwie minuty
 
Firebird in 2 minutes (polish)
Firebird in 2 minutes (polish)Firebird in 2 minutes (polish)
Firebird in 2 minutes (polish)
 
Raport z-ekspertyzy-urzadzenia-typu-pendrive
Raport z-ekspertyzy-urzadzenia-typu-pendriveRaport z-ekspertyzy-urzadzenia-typu-pendrive
Raport z-ekspertyzy-urzadzenia-typu-pendrive
 
Rozszerzalność Symfony - PHPCon 2023
Rozszerzalność Symfony - PHPCon 2023Rozszerzalność Symfony - PHPCon 2023
Rozszerzalność Symfony - PHPCon 2023
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
Webinar symfony
Webinar symfonyWebinar symfony
Webinar symfony
 
2
22
2
 
Pomoc Techniczna
Pomoc TechnicznaPomoc Techniczna
Pomoc Techniczna
 
Od Zera do Farmera
Od Zera do FarmeraOd Zera do Farmera
Od Zera do Farmera
 

More from Semihalf

Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01Semihalf
 
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Semihalf
 
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Semihalf
 
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Semihalf
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. Semihalf
 
Złam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKZłam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKSemihalf
 
Wirtualizacja urządzeń PCI (SR-IOV).
Wirtualizacja urządzeń PCI (SR-IOV).Wirtualizacja urządzeń PCI (SR-IOV).
Wirtualizacja urządzeń PCI (SR-IOV).Semihalf
 
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Semihalf
 
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Semihalf
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Semihalf
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Semihalf
 
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Semihalf
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Semihalf
 
Jak napisać własny RTOS!
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!Semihalf
 
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Semihalf
 
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Semihalf
 
Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Semihalf
 
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.Semihalf
 
Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Semihalf
 
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Semihalf
 

More from Semihalf (20)

Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
 
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
 
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
 
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special.
 
Złam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKZłam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDK
 
Wirtualizacja urządzeń PCI (SR-IOV).
Wirtualizacja urządzeń PCI (SR-IOV).Wirtualizacja urządzeń PCI (SR-IOV).
Wirtualizacja urządzeń PCI (SR-IOV).
 
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
 
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.
 
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.
 
Jak napisać własny RTOS!
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!
 
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
 
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
 
Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?
 
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
 
Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.
 
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
 

Meetup #1 - Świat Komputera Przed Systemem Operacyjnym

  • 1. Software Meets Hardware in Wrocław “Świat komputera przed systemem operacyjnym” Jan Dąbroś Copyright © 2019 Semihalf. All rights reserved.
  • 2. Plan prezentacji 1. Proces uruchamiania komputera krok po kroku 2. Co to jest firmware - podstawowe zadania 3. W tle systemu operacyjnego 4. “Ciemna strona mocy” 5. Po co właściwie nam firmware? Copyright © 2019 Semihalf. All rights reserved.
  • 3. Plan prezentacji 1. Proces uruchamiania komputera krok po kroku 2. Co to jest firmware - podstawowe zadania 3. W tle systemu operacyjnego 4. “Ciemna strona mocy” 5. Po co właściwie nam firmware? Copyright © 2019 Semihalf. All rights reserved.
  • 4. Proces uruchamiania Copyright © 2019 Semihalf. All rights reserved.
  • 5. Proces uruchamiania Copyright © 2019 Semihalf. All rights reserved.
  • 6. Copyright © 2019 Semihalf. All rights reserved.
  • 7. Typowa ścieżka Intela Copyright © 2019 Semihalf. All rights reserved.
  • 8. Typowy układ firmware w pamięci ROM ● Firmware IME oraz UEFI znajdują się w tym samym flash’u ● PEI jest wykonywany bezpośrednio z pamięci ROM (cache) ● Kod UEFI jest kopiowany do pamięci RAM ● UEFI nie ma dostępu do regionu IME Copyright © 2019 Semihalf. All rights reserved.
  • 9. Przykładowa ścieżka dla serwera ARMv8 Copyright © 2019 Semihalf. All rights reserved.
  • 10. Plan prezentacji 1. Proces uruchamiania komputera krok po kroku 2. Co to jest firmware - podstawowe zadania 3. W tle systemu operacyjnego 4. “Ciemna strona mocy” 5. Po co właściwie nam firmware? Copyright © 2019 Semihalf. All rights reserved.
  • 11. Rodzaje firmware Copyright © 2019 Semihalf. All rights reserved.
  • 12. Słownik angielsko-polski BOOTLOADER - Program Rozruchowy FIRMWARE - Oprogramowanie układowe Copyright © 2019 Semihalf. All rights reserved.
  • 13. Zadania firmware 1. Autotest podzespołów elektronicznych - Power-On Self-Test 2. Konfiguracja ustawień sprzętowych 3. Udostępnienie interfejsu dla użytkownika 4. Przygotowanie struktur opisu sprzętu 5. Funkcjonalności bezpieczeństwa (opcjonalnie) --- Bootloader --- 1. Przygotowanie środowiska 2. Inicjacja startu systemu operacyjnego Copyright © 2019 Semihalf. All rights reserved.
  • 14. Power-on self-test Sprawdzane są w kolejności: 1. Poprawność parametrów zasilania 2. Poprawność pracy procesora 3. Poprawność pracy kontrolera pamięci 4. Poprawność pracy mostka północnego i południowego 5. Poprawność pracy karty graficznej (opcjonalnie) 6. Pozostałe kontrolery IO (opcjonalnie) Copyright © 2019 Semihalf. All rights reserved.
  • 15. Konfiguracja ustawień sprzętowych ● Ustawianie konfigurowalnych parametrów procesora - np. częstotliwości taktowania; realne “podkręcanie” zachodzi na tym etapie ● Wykrywanie ilości i parametrów zainstalowanych kości pamięci ● Porównanie możliwości sprzętowych z parametrami zadanymi przez użytkownika Copyright © 2019 Semihalf. All rights reserved.
  • 16. Interfejs użytkownika Copyright © 2019 Semihalf. All rights reserved.
  • 17. Oldschool Copyright © 2019 Semihalf. All rights reserved.
  • 18. Device tree & ACPI ● Struktura danych opisująca sprzęt ● Kompilowana z kodu źródłowego, ale może być modyfikowana w run-time ● Urządzeniom odpowiadają węzły (node) ● Każde urządzenie ma zestaw właściwości ● Jeden obraz jądra - wiele maszyn Copyright © 2019 Semihalf. All rights reserved.
  • 19. Device tree & ACPI ● Tablice opisujące sprzęt, są tworzone przez firmware ● Tablice są wykorzystywane przez sterowniki wewnątrz systemu operacyjnego ● Tablice zawierają zarówno opis sprzętu jak i częściowo kod, który jest warstwą pomiędzy systemem operacyjnym a hardware Copyright © 2019 Semihalf. All rights reserved.
  • 20. Załadowanie i uruchomienie systemu operacyjnego ● Sterowniki do kontrolerów IO, pozwalające na załadowanie obrazu z różnych lokalizacji - napęd CD/DVD, dyski twarde, karty SD, sieć ● Zazwyczaj uruchamiany będzie “dedykowany” bootloader np. GRUB, LILO, BOOTMGR ● W przypadku UEFI, możliwe jest uruchomienie jądra linuxa bezpośrednio z firmware, ponieważ jądro (skompilowane z odpowiednią opcją) samo w sobie zawiera minimalny loader ● Obraz jądra zostaje załadowany do pamięci RAM, opcjonalnie również initramfs ● Ponadto przekazujemy również “command-line arguments” Copyright © 2019 Semihalf. All rights reserved.
  • 21. Plan prezentacji 1. Proces uruchamiania komputera krok po kroku 2. Co to jest firmware - podstawowe zadania 3. W tle systemu operacyjnego 4. “Ciemna strona mocy” 5. Po co właściwie nam firmware? Copyright © 2019 Semihalf. All rights reserved.
  • 22. W tle systemu operacyjnego ● Generyczny interfejs firmware - OS poprzez dodatkową warstwę abstrakcji na sprzęcie ● Przykładem są Runtime Services oferowane przez UEFI - korzysta z nich zarówno Windows jak i Linux ● Zarządzanie energią w systemach opartych o procesory ARMv8 ● Systemy heterogeniczne Copyright © 2019 Semihalf. All rights reserved.
  • 23. “Ukryte” funkcje firmware ● Ukryte funkcje w oprogramowaniu koprocesorów ● Bezpieczne systemy operacyjne wykorzystujące technologię ARM TrustZone ● System Management Mode ● Intel Management Engine ● AMD Platform Security Processor Copyright © 2019 Semihalf. All rights reserved.
  • 24. Plan prezentacji 1. Proces uruchamiania komputera krok po kroku 2. Co to jest firmware - podstawowe zadania 3. W tle systemu operacyjnego 4. “Ciemna strona mocy” 5. Po co właściwie nam firmware? Copyright © 2019 Semihalf. All rights reserved.
  • 25. Ciemna strona firmware ● Podczas uruchamiania systemu, firmware wykonywany jest jako pierwszy i to on zawiera kod ładujący system operacyjny ● W trakcie pracy systemu operacyjnego, firmware jest wykonywany przez procesor działający na wyższym poziomie uprzywilejowania ● Można ukryć pewne działania przed systemem operacyjnym, wywłaszczenie może nastąpić w każdym momencie Copyright © 2019 Semihalf. All rights reserved.
  • 26. Ciemna strona firmware ● Secure Boot (w pewnych konfiguracjach) ● Data Rights Management (Digital Restrictions Management) ● Sposób na problemy z upstream’em - “worek na śmieci” ● Zazwyczaj zamknięte oprogramowanie ● Idealna płaszczyzna do ataku Copyright © 2019 Semihalf. All rights reserved.
  • 27. Projekt NERF i open-source firmware UEFI - Unified Extensible Firmware Interface NERF - Non-Extensible Reference Firmware https://www.youtube.com/watch?v=iffTJ1vPCSo Coreboot, Libreboot Copyright © 2019 Semihalf. All rights reserved.
  • 28. Plan prezentacji 1. Proces uruchamiania komputera krok po kroku 2. Co to jest firmware - podstawowe zadania 3. W tle systemu operacyjnego 4. “Ciemna strona mocy” 5. Po co właściwie nam firmware? Copyright © 2019 Semihalf. All rights reserved.
  • 29. Po co nam firmware? ● Duplikacja kodu między firmware a systemem operacyjnym ● Wydłużenie czasu uruchamiania ● Większe zużycie miejsca w pamięci ● Wyższy poziom uprzywilejowania - możliwe groźniejsze ataki Czy nie prosimy się sami o kłopoty? Copyright © 2019 Semihalf. All rights reserved.
  • 30. Po co nam firmware? ● Ograniczenie ilości dostępnej pamięci ROM ● Sekrety producenta sprzętu w procedurach inicjalizacji ● DUAL-BOOT ● Jeden obraz jądra działający na różnych maszynach ● Dynamiczny opis sprzętu ● Opcje Recovery Copyright © 2019 Semihalf. All rights reserved.