DLACZEGO DYSTRYBUCJE NIE OBSŁUGUJĄ MOJEGO URZĄDZENIA? Marcin Juszkiewicz Software Engineer

Podobne dokumenty
Automatyczna instalacja oraz zmiana konfiguracji w ramach całego klastra.

Raspberry Pi tajemnice startu

WYKŁAD 3 Jądro systemu i procesy. Marcin Tomana Wyższa Szkoła Informatyki i Zarządzania

Uruchomienie Raspberry Pi

Tworzenie partycji i dysków logicznych

Narzędzie konfiguracji rozruchu

Spis treści. Wstęp... 10

Komputery bezdyskowe - wprowadzenie

SYSTEM OPERACYJNY. Monika Słomian

Embedded GNU/Linux. Krzysztof Mazur

Paweł Skrobanek. C-3, pok pawel.skrobanek.staff.iiar.pwr.wroc.pl

K. Konopko; Toolchain. Jądro Linuksa. dr inż. Krzysztof Konopko

GRUB (GRand Unified Bootloader) - jest bootloaderem instalowanym standardowo w Ubuntu, potrafiącym obsłużyć kilka systemów jednocześnie (Multiboot).

Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego

Programowanie Systemów Wbudowanych

Systemy operacyjne i sieci komputerowe Szymon Wilk System operacyjny 1

Instalacja Ubuntu 12.12

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

Strojenie systemu Linux pod k¹tem serwera bazy danych Oracle 9i

Sprawozdanie z zadania 2. Artur Angiel, śr. 12:15

Linux Elementy instalacji. 1 Podział dysku na partycje. 2 Konfiguracja sprzętu (automatycznie) 3 Założenie użytkowników

Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu

Instalacja Linuksa i podstawowa konfiguracja. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

Programowanie Systemów Wbudowanych

Prezentacja systemu RTLinux

Kernel Kompilacja jądra

Tomasz Greszata - Koszalin

IBM SPSS Statistics dla systemu Linux Instrukcje instalacji (licencja sieciowa)

Konfiguracja i kompilacja jądra Linux. Based on Free Electrons

EMBEDDED LINUX ON ARM9 CORE EMBEDDED LINUX NA PROCESORACH Z RODZINY ARM9

OpenEmbedded Marcin Juszkiewicz

Backup & Recovery 12 Home

DOS COMMAND.COM. Rys. 2. Główne moduły programowe systemu operacyjnego DOS. Interpreter poleceń. Rys. 3. Warstwowa struktura systemu DOS

X P.I.W.O. Portowanie Tizena na nowe architektury na przykładzie ARMv6. Maciej Wereski Samsung R&D Institute Poland. 17 Maj Poznań, Polska

Podstawy technologii informacyjnej. Beata Kuźmińska

INSTRUKCJA I WSKAZÓWKI

Q E M U.

Proces bootowania - wstęp

Proces instalacji systemu operacyjnego Linux Red Hat 7.3 (1)

Linux wykład 9. Paweł Rajba.

Optymalizacja programów Open Source. Profilery wysokiego poziomu część 2. Krzysztof Lichota

Paragon Camptune X. Podręcznik użytkownika

Systemy operacyjne II

ponad pracowników ponad pracowników ponad pracowników ponad pracowników

MANAGER 2010 PROFESSIONALP VS. VIRTUALIZATION WIRTUALIZACJA OBSŁUGIWANE ANAGER 2010 C MANAGER 2010 CORPORATE: Funkcja. Korzyści.

Programowanie Systemów Wbudowanych

26.X.2004 VNC. Dawid Materna

WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ. Pracownia specjalistyczna. Numer ćwiczenia: 5.

Certification Request Services

Administracja systemem Linux p. 1

QEMU działa na procesorach procesorach: emuluje procesory: dostępne dla s.o. hosta:

Tango-RedPitaya. Tango device server for RedPitaya multi-instrument board. Grzegorz Kowalski 31 sierpnia 2015

Architektura systemów informatycznych WPROWADZENIE DO SYSTEMU LINUX

System plików Linuksa

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika)

Zastosowania matematyki w systemie operacyjnym Linux

EAL4+ bezpieczeństwo z SUSE Linux Enterprise Server. Dariusz Leonarski Novell Polska dleonarski@novell.pl

Jeden Linux. na różnych platformach sprzętowych. Jacek Danecki, Kamil Danecki. 12 marca 2016

Jądro systemu operacyjnego

dr inż. Jarosław Forenc

Wirtualizacja: XEN. Marek Marczykowski 16 czerwca 2010

INSTRUKCJA INSTALACJI SLACKWARE LINUX + LMS

Laboratorium - Instalacja systemu Windows 7

Wprowadzenie do informatyki

INSTRUKCJA KONFIGURACJI KLIENTA POCZTOWEGO

Organizacja i struktura projektu FreeBSD. Wojciech A. Koszek wkoszek@freebsd.org Częstochowa,

Laboratorium Instalacja systemu Windows XP

Serwer główny bazodanowy. Maksymalnie 1U RACK 19 cali (wraz ze wszystkimi elementami niezbędnymi do zamontowania serwera w oferowanej szafie)

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

Zespół Szkół Technicznych w Suwałkach. Pracownia Systemów Komputerowych. Ćwiczenie Nr 25 ARCHITEKTURA SYSTEMU LINUX. Opracował Sławomir Zieliński

Skrócony sposób działania przy użyciu po

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu Linux

Partition Wizard Home Edition Aplikacja przeznaczona do partycjonowania dysków twardych, obsługująca również macierze RAID oraz dyski o pojemności

Rejestr HKEY_LOCAL_MACHINE

Linux Kernel. Michał Kulling.

Testowanie mutacyjne

Podstawowe zagadnienia

WOJEWÓDZKI KONKURS INFORMATYCZNY DLA UCZNIÓW DOTYCHCZASOWYCH GIMNAZJÓW ETAP SZKOLNY BIAŁYSTOK, 22 LISTOPADA 2017 R.

Przegląd rozwiązań z oferty firmy 4D Systems

Tworzenie bezpiecznego środowiska kont shellowych

Windows 10 - Jak przygotować bootowalny nośnik instalacyjny USB?

System Zarządzania Dystrybucją

Cykl życia paczki na przykładzie dystrybucji Fedora

Monitor maszyn wirtualnych

Programowanie mikroprocesorów jednoukładowych

Dystrybucje Linuksa c.d.

Rys historyczny Systemy Wbudowane Raspberry Pi Raspberry Pi - systemy Raspberry Pi - zastosowania Uruchamianie i system NIE

Systemy kontroli wersji git od wewnatrz Użycie gita Koniec. git. Rozproszony system kontroli wersji. sphere.pl. Koło Naukowe Sfera

dr inż. Jarosław Forenc

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Systemy operacyjne - rozkład godzin dla technikum informatycznego

GIT. Rozproszony system kontroli wersji

Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa

KARTA KURSU. Systemy operacyjne

Acronis Backup & Recovery 10 Server for Linux. Instrukcja szybkiego rozpoczęcia pracy

Część zadań będzie już zrobiona, np. część programów zainstalowana, ale proszę przeczytać instrukcje i ew. np. zainstalować w domu.

Linux Kernel. Wprowadzenie

AKADEMIA GÓRNICZO-HUTNICZA. Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki KATEDRA INFORMATYKI. SyncFile

Transkrypt:

DLACZEGO DYSTRYBUCJE NIE OBSŁUGUJĄ MOJEGO URZĄDZENIA? Marcin Juszkiewicz Software Engineer 2016.03.12

CO TO JEST MOJE URZĄDZENIE? Ograniczmy się do architektury ARM Co użytkownik/developer może mieć: Developer board Elektronika użytkowa Chromebook Serwer Telefon/tablet z Androidem 2

CZEGO DYSTRYBUCJE NIE LUBIĄ? Mam na myśli Debiana, Fedorę itp. Jest kilka rzeczy: Niestandardowy bootloader Wymagania co do układu partycji Dziwne wersje kernela Dziwne wersje bootloadera Binarne bloby 3

DLACZEGO BOOTLOADER? Standardowy bootloader == mniej roboty Przebieg startu na urządzeniu ARM: 1 st stage bootloader startuje z ROM w procesorze 2 nd stage bootloader wczytywany jest z karty SD (U-Boot SPL) 3 rd stage bootloader wczytywany jest z karty SD (U-Boot) U-Boot ładuje konfigurację z SD U-Boot ładuje kernel, initramfs, dtb z SD U-Boot uruchamia kernel 4

U-BOOT Jeden bootloader na prawie każde urządzenie ARM Korzyści dla dystrybucji: Stały, aktywny rozwój Programiści otwarci na propozycje Łatwo zbudować zestaw dla wszystkich wspieranych urządzeń Jeden plik konfiguracyjny dla wszystkich urządzeń Konsola dostępna jak coś idzie źle przy uruchamianiu Wiele metod uruchamiania systemu GPL 5

UKŁAD PARTYCJI MA ZNACZENIE? Jeden obraz dla wszystkich urządzeń Standardowy obraz instalacyjny dla architektury ARM: Partycje w układzie MBR Pierwsza to ext4 montowany jako /boot/ (zaczyna się na 4MB od początku karty) Potem jest swap (różny rozmiar) Partycja ext4 montowana jako / (często rozszerzana na całą kartę przy pierwszym starcie) U-Boot SPL jest albo w /boot/ albo zapisany sektorami w pierwszych 4MB U-Boot i jego konfiguracja jest w /boot/ Kernel, initramfs i devicetree są w /boot 6

Raspberry/Pi

UKŁAD PARTYCJI DLA RASPBERRY/PI Czyli dlaczego jeden obraz dla wszystkich urządzeń nie pasuje GPU z Raspberry/Pi narzuca swoje wymagania: Partycje w układzie MBR Pierwsza to vfat montowana w Raspbianie jako /boot/ Partycja ext4 montowana jako / Bootloadery i ich konfiguracja są w /boot/ Kernel jest w /boot/ 8

ODPALAMY RASPBERRY/PI Czyli jak GPU uruchamia urządzenie i dlaczego partycja vfat jest wymagana Przebieg startu na urządzeniu Raspberry/Pi: 1 st stage bootloader startuje z ROM w GPU 2 nd stage bootloader wczytywany jest z partycji vfat karty SD (bootcode.bin) bootcode.bin wczytuje start.elf start.elf wczytuje config.txt, cmdline.txt i kernel.img start.elf uruchamia CPU start.elf uruchamia kernel 9

JAK POMÓC Z RASPBERRY/PI Bootowanie jest dziwne ale można coś zmienić Możemy zbliżyć bootowanie do normalnego: Zamiast jądra Linux podkładamy U-Boota jako kernel.img U-Boot wie jak odczytać z ext4 U-Boot ładuje konfigurację z SD U-Boot ładuje kernel, initramfs, dtb z SD U-Boot uruchamia kernel 10

ALE CO Z TYM VFAT DLA R/PI? Standardowy obraz ma tylko ext4 Trzeba wprowadzić zmiany: Dodać partycję vfat jako pierwszą Ext4 na /boot/ będzie drugi więc musimy zmienić konfigurację U-Boota Swap i rootfs się przesuną ale odwołujemy się po UUID więc nic się nie zmienia Vfat montujemy jako /boot/rpi/ 11

Chromebook

UKŁAD PARTYCJI DLA CHROMEBOOKA Jesteśmy inni i co nam zrobicie? Tu jest całkiem inaczej Partycje w układzie GPT Jądro ma własny typ partycji (7f00) Są flagi określające priorytet partycji Są flagi określające czy używać danego jądra 13

PODPALAMY CHROMEBOOKA Podpisane jądra, extra flagi i inne pomysły Przebieg startu na chromebooku: 1 st stage bootloader startuje z ROM w CPU 2 nd stage bootloader wczytywany jest z pamięci SPI flash Odczytywana jest tablica partycji (GPT) w poszukiwaniu partycji z jądrem Odczytywane jest jądro z partycji z najwyższym priorytetem i odpowiednimi flagami Sprawdzany jest podpis Uruchamiany jest kernel 14

JAK POMÓC Z CHROMEBOOKIEM? Bootowanie jest dziwne ale można coś zmienić Możemy zbliżyć bootowanie do normalnego: Zamiast jądra Linux podkładamy U-Boota U-Boot wie jak odczytać z ext4 U-Boot ładuje konfigurację z SD U-Boot ładuje kernel, initramfs, dtb z SD U-Boot uruchamia kernel 15

Roseapple/Pi

TOTALNA PORAŻKA Czyli jak można zepsuć ciekawy produkt Co zrobiono źle: Jądro w wersji 3.10 U-Boot też dość leciwy Zero łatek wysłanych do mainline Repozytorium z kodem jądra w stylu one big commit Zwyczajowe runs Debian na stronie a obraz własny 17

Co można zrobić?

KERNEL Czego nie ma w mainline to nie istnieje Czego unikać: Kernel starszy niż dwa ostatnie wydania (czyli poniżej 4.3 4.5-rc) Setki łatek dodających obsługę urządzenia Własne rozwiązania istniejących podsystemów Zmiany dotykające kodu innych urządzeń 19

ZMIENIAMY KERNEL DYSTRYBUCJI Czyli jak uzyskać wsparcie Kilka sugestii: Wysyłamy swoje łatki na listy kernelowe Poprawiamy, przepisujemy wedlug uzyskanych sugestii Publikujemy swoje repozytorium w miejscu publicznym Rozwijamy jądro na bazie repozytorium Torvaldsa Budujemy własne jądra z konfiguracją z dystrybucji Opiekunom paczki z jądrem prezentujemy zestaw gotowych łatek Integrujemy generowanie swoich plików konfiguracyjnych z narzędziami z dystrybucji 20

BINARNE BLOBY Bleh Jak tu pomóc: Uporządkować licencję (musi być prawo do dowolnego dystrybuowania) Przesłać do włączenia do linux-firmware (wszystkie dystrybucje to paczkują) Zasugerować twórcom otwarcie źródeł oraz narzędzi do zbudowania 21

DZIĘKUJĘ plus.google.com/+marcinjuszkiewicz facebook.com/marcin.juszkiewicz linkedin.com/in/marcinjuszkiewicz