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

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

Tworzenie oprogramowania

Kernel Kompilacja jądra

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

Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu

BF20 JTAG dla ARM ów z interfejsem USB Instrukcja obsługi

Linux - System Wbudowany

Linux Kernel. Michał Kulling.

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

Systemy operacyjne. Informatyka Stosowana, I rok. Krzysztof Wilk. Katedra Informatyki Stosowanej i Modelowania

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

Uruchomienie Raspberry Pi

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

Uruchomienie Raspberry Pi

Embedded GNU/Linux. Krzysztof Mazur

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

VMware, QEMU, UML. oraz inne wirtualne maszyny. Piotr Findeisen Filip Grządkowski Piotr Kuśka Krzysztof Mroczek

Automatyczna instalacja oprogramowania.

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Fragment wykładu z języka C ( )

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

BF30 OCDLINK/USBASP ARM-JTAG/AVR-ISP Programmer-debugger Instrukcja obsługi

Produkty. ESET Produkty

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu Linux

Programowanie Systemów Wbudowanych

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Rejestr HKEY_LOCAL_MACHINE

Instrukcja instalacji oprogramowania dla środowiska Linux

Ćwiczenie Zmiana sposobu uruchamiania usług

ĆWICZENIE NR 4 KONFIGURACJA JĄDRA, USŁUGI SIECIOWE. KATEDRA ELEKTRONIKI POLITECHNIKA LUBELSKA

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

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Programowanie w C++ Wykład 10. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 10) Programowanie w C++ 1 / 21

Procedura aktualizacji systemu TelkomBud. dla serwera DBfC w wersji 4.x

Q E M U.

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja wielokrotna)

Wykaz zmian w programie WinAdmin Replikator

ICD Wprowadzenie. Wprowadzenie. Czym jest In-Circuit Debugger? 2. O poradniku 3. Gdzie szukać dodatkowych informacji? 4

Struktury systemów operacyjnych

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

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Uruchomienie Intel Galileo

Instalacja programu dreryk

Archiwum DG 2016 PL-SOFT

Dokumentacja fillup - MS SQL

Pracownia Technik Obliczeniowych

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

Linux Kernel II. Hello kernel - jak napisać pierwszy moduł

KATEDRA SYSTEMÓW MULTIMEDIALNYCH SEMINARIUM MULTIMEDIALNE SYSTEMY MEDYCZNE

Poziomy wymagań Konieczny K Podstawowy- P Rozszerzający- R Dopełniający- D Uczeń: z zakresu systemów

Dział Dopuszczający Dostateczny Dobry Bardzo dobry Celujący

Instrukcje dotyczące systemu Windows w przypadku drukarki podłączonej lokalnie

IBM SPSS Modeler Social Network Analysis 16 podręcznik instalowania i konfigurowania

Win Admin Replikator Instrukcja Obsługi

Skanowanie podsieci oraz wykrywanie terminali ABA-X3

Instalacja i opis podstawowych funkcji programu Dev-C++

System komputerowy. System komputerowy

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

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

IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla Linux

Skrócony przewodnik OPROGRAMOWANIE PC. MultiCon Emulator

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2018 CZĘŚĆ PRAKTYCZNA

Graficzny terminal sieciowy ABA-X3. część druga. Podstawowa konfiguracja terminala

SystimPlus. Dokumentacja (FAQ) dla wersji: v

National Instruments Warsztaty NI LabVIEW. instrukcja instalacji oprogramowania

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Instrukcja korzystania z Virtual Box-a i SQLPLUS-a

System operacyjny MS-DOS

Instrukcja obsługi programu CMS Dla rejestratorów HANBANG

Usługi sieciowe systemu Linux

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

Programowanie mikrokontrolerów AVR

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2017 CZĘŚĆ PRAKTYCZNA

Poziomy wymagań Konieczny K Podstawowy- P Rozszerzający- R Dopełniający- D Uczeń: - zna rodzaje sieci - zna topologie sieciowe sieci

MentorGraphics ModelSim

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

Acronis Universal Restore

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

Tomasz Greszata - Koszalin

CVS system kontroli wersji

Java jako język programowania

ISBN Copyright by Wydawnictwo BTC Legionowo 2008

UMOWY CYWILNOPRAWNE Instalacja, rejestracja i konfiguracja programu

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

Wprowadzenie do biblioteki klas C++

Programowanie w C. dr inż. Stanisław Wszelak

Instalacja

etrader Pekao Podręcznik użytkownika Jak zacząć pracę z etrader Pekao?

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

PRZEWODNIK PO ETRADER PEKAO ROZDZIAŁ I. JAK ZACZĄĆ PRACĘ Z ETRADER PEKAO? SPIS TREŚCI

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Podstawowe zagadnienia

Dokumentacja aplikacji Szachy online

SPOSOBY DYSTRYBUCJI OPROGRAMOWANIA PANDA

Instrukcja instalacji usługi Sygnity SmsService

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Instrukcja użytkownika ARSoft-WZ1

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Linux

Transkrypt:

Jądro Linuksa dr inż. Krzysztof Konopko e-mail: k.konopko@pb.edu.pl 1

Jądro Linuksa Program wykładu: Właściwości jądra Linuksa. Pliki źródłowe jądra. Konfiguracja jądra. Kompilacja i kompilacja skrośna jądra. Moduły jądra. 2

Właściwości jądra Linuksa Podstawowe funkcje jądra Linuksa: zarządza wszystkimi zasobami sprzętowymi: CPU, pamięć, I / O, dostarcza przenośnych, niezależnych od architektury sprzętowej interfejsów (API), które umożliwiają aplikacjom i bibliotekom korzystanie z zasobów sprzętowych. jednoczesny dostęp i wykorzystywanie zasobów sprzętowych przez różne aplikacje. 3

Właściwości jądra Linuksa Podstawowe cechy jądra Linuksa: przenośność i wsparcie sprzętowe - działa na większości architektur, skalowalność - można uruchomić na superkomputerów, jak i na urządzeniach wbudowanych (wystarcza 4 MB pamięci RAM), bezpieczeństwo otwartość kodu umożliwia wyszukiwanie wszystkich dziur (kod jest weryfikowana przez wielu użytkowników i specjalistów), stabilność i niezawodność, modułowość (uruchamiamy tylko to z czego korzystamy i to nawet w czasie wykonywania), bardzo dobra obsługa sieci, łatwy do programowania łatwy dostęp do już istniejącego kodu, wiele przydatnych zasobów w sieci. 4

Wersje i rozwój jądra Linuksa Do wersji 2.6 istniały dwie gałęzie rozwoju jądra w których przyjęto następujący sposób numeracji pierwsza cyfra oznacza serię produkcyjną, druga określa serię jądra - parzysty numer serii jądra oznacza, że mamy do czynienia z jego wersją stabilną, a numer nieparzysty z wersją rozwojową, trzecia oznacza numer kolejnej wersji tej serii (im wyższy jest ten numer, tym nowsze jądro). 5

Pliki źródłowe jądra Oficjalne wersje jądra Linux, są dostępne przez stronę: http://www.kernel.org Lista rozwojowych gałęzi jądra, utrzymywanych przez różnych developerów znajduje się pod adresem http://git.kernel.org Oprócz nich dostępne są wersje w postaci repozytoriów dostosowanych do poszczególnych urządzeń lub rozwijanych przez poszczególne firmy. Np. wersje jądra przygotowane przez producentów raspberry pi znajdują się pod adresem : https://github.com/raspberrypi/linux 6

Wielkość plików źródłowych jądra Jądro Linux 4.9.56 pobrane z https://github.com/raspberrypi/linux to: wielkość 629 MB, (56775 plików, 3859 katalogów) wielkość archiwum tar.gz 138,2 MB ale minimalna wielkość jądra (wersja 3.17) przygotowanego pod platformę ARM (dysk twardy przez PCI, system plików ext2, obsługa konsoli i urządzeń wejściowych) to w wersji skompresowanej około 900 kb i w wersji nieskompresowanej około 2,3 MB. Skąd tak wielka różnica? 7

Pliki nagłówkowe jądra Jądro Linux 4.9.56 pobrane z https://github.com/raspberrypi/linux to: drivers 53,60% scripts 0,45% arch 18,13% mm 0,43% fs 4,87% crypto 0,41% include 4,67% security 0,31% Documentation 4,63% block 0,15% sound 4,27% samples 0,12% net 3,61% virt 0,06% tools 1,90% ipc 0,03% kernel 0,97% init 0,02% firmware 0,78% usr 0,00% lib 0,48% certs 0,00% 8

Konfiguracja jądra Obraz jądra to pojedynczy plik, wynikający z łączenia wszystkich plików obiektowych, które odpowiadają funkcjom włączanym podczas konfiguracji (jest to plik, który jest ładowany do pamięci przez bootloader), Niektóre funkcje (sterowniki urządzeń, systemy plików, itp.) mogą być jednak kompilowane jako tzw. moduły są wtyczki, które mogą być ładowane/usuwane dynamicznie uzupełniając funkcje jądra każdy moduł jest zapisany w oddzielnym pliku w systemie plików, a więc dostęp do modułów możliwy jest wyłącznie poprzez systemu plików (brak możliwości ładowania modułów we wczesnej fazie uruchamiania systemu). 9

Konfiguracja jądra Jądro zawiera tysiące sterowników urządzeń, różnych systemu plików, protokołów sieciowych i innych elementów. Dostępne są tysiące opcji, które są wykorzystywane do selektywnej kompilacji części kodu źródłowego jądra. Konfiguracja jądra polega na określaniu wartości szeregu parametrów, za pomocą których określane są właściwości kompilowanego jądra. Opcje można podzielić na: sprzętowe np. sterowniki urządzeń, funkcjonalne związane z realizacją określonych zadań przez kompilowane jądro np. funkcje sieciowe, rodzaje systemów plików, praca w czasie rzeczywistym itp.. 10

Konfiguracja jądra Konfiguracja i kompilacja jądra polega na wykonaniu wielu skryptów Makefiles. Użytkownik bezpośrednio uruchamia tylko jeden skrypt Makefile umieszczony w głównym katalogu. Konfiguracja i kompilacja realizowana jest za pomocą narzędzia make z parametrami oznaczającymi kompilację, konfigurację, instalację itd. (wyświetlenie możliwych parametrów można zrealizować przez make help) 11

Konfiguracja jądra Wynikowy plik z konfiguracją.config znajduje się w głównym katalogu. Plik ten zazwyczaj nie jest konfigurowany ręcznie ale przez jeden z dostępnych interfejsów graficznych bądź tekstowych: make xconfig, make gconfig (graficznie), make menuconfig, make nconfig (tekstowo). Można korzystać z różnych interfejsów wszystkie korzystają z tego samego pliku.config i dysponują tym samym zestawem opcji. 12

Konfiguracja jądra Istnieją różne typy opcji: dwuwartościowe opcje typu prawda, fałsz włączające bądź wyłączające daną funkcję z jądra, trójwartościowe opcje umożliwiające realizację funkcji wkompilowanej w jądro, realizowanej przez moduł, bądź rezygnacji z danej opcji, numeryczne związane z określeniem wartości danego parametru, opcje tekstowe związane z wprowadzeniem ciągu znaków. 13

Konfiguracja jądra Pomiędzy poszczególnymi opcjami mogą występować zależności: zależność od zależności (w tym przypadku opcja A, która zależy od opcji B nie jest widoczna do momentu włączenia opcji B), wybór zależności (w tym przypadku gdy opcja A jest włączona, zależna opcja B jest również automatycznie włączana). 14

Kompilacja i kompilacja skrośna jądra Czy warto kompilować jądro: w przypadku gdy instaluje się dystrybucję Linuksa, jądro zostaje przygotowane przez twórców tej dystrybucji. Zawiera ono zazwyczaj wszystko co jest potrzebne, dlatego w praktyce bardzo rzadko użytkownik musi kompilować jądro. w przypadku systemów wbudowanych w związku z koniecznością wydobycia jak największej funkcjonalności z dostępnego sprzętu jest to wręcz konieczne. Jądro dla systemów wbudowanych najczęściej ze względu na: zbyt małe zasoby (procesor, pamięć, urządzenia IO), małą wydajność (moc obliczeniową) w porównaniu do stacji roboczej, brak możliwość (potrzeba) instalacji całego środowiska deweloperskiego na komputerze docelowym. buduje się z zastosowaniem kompilacji skrośnej. 15

Kompilacja i kompilacja skrośna jądra Architektura docelowego procesora i jego parametry definiowane są przez dwie zmienne: ARCH = oznacza architekturę procesora, dla której budujemy jądro (pisana małymi literkami oznacza odpowiedni podkatalog w katalogu arch/ należy ją podać zarówno przy konfiguracji, kompilacji jak i instalacji np.: ARCH=arm), CROSS_COMPILE = oznacza przedrostek kompilatora i pozostałych narzędzi używanych przy konfiguracji, kompilacji jak i instalacji np.: CROSS_COMPILE=arm-unknown-linux-gnueabihf-gcc- 16

Kompilacja i kompilacja skrośna jądra W niektórych architektach (np. ARM) wymagana jest specyficzna konfiguracja uwzględniająca wszystkie funkcje danego urządzenia. Twórcy danego urządzenia mogą dostarczyć gotowe pliki konfiguracyjne, które można załadować podczas konfiguracji komendą make ARCH=arm xx_defconfig Listę wszystkich plików konfiguracyjnych można wyświetlić po wykonaniu make ARCH=arm help 17

Kompilacja i kompilacja skrośna jądra Wiele systemów wbudowanych posiada specyficzne peryferia. W zależności od architektury, sterowniki dla takiego sprzętu są albo bezpośrednio kompilowane w jądro, lub są obsługiwane za pomocą specjalnego języka opisu sprzętu tworząc tzw. Device Tree W Linuksie Device Tree, (ARM), znajduje się w arch/arm/boot/dts. Są tam:.dts pliki dla konkretnych urządzeń,.dtsi biblioteki dla konkretnych SoC-ów. Kompilator (scripts/dtc) tworzy z nich wersję binarną (Blob).dtb. Ten właśnie plik musi być załadowany przez Bootloader. 18

Kompilacja skrośna jądra dla Raspberry Pi 2 Instalacja i konfiguracja toolchaina (np. dostępnego w Ubuntu) sudo apt-get install gcc-arm-linux-gnueabihf Pobranie plików źródłowych jądra: git clone https://github.com/raspberrypi/linux Skopiowanie pliku z konfiguracją jądra dla raspberry pi 2 (skorzystamy z toolchaina dostarczonego przez Ubuntu) make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- \ bcm2709_defconfig kompilacja jądra i systemu Device Tree make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zimage \ dtbs 19

Moduły Modułami można operować za pomocą następujących programów: insmod - polecenie to pozwala na załadowanie modułu do pamięci, rmmod - usuwa moduł, lsmod - wyświetla listę załadowanych modułów, depmod - tworzy bazę danych z informacjami o dostępnych w systemie modułach które mogą zostać umieszczone w jądrze, modinfo - pobiera informacje o module: opis, parametry i zależności, modprobe - próbuje załadować wszystkie zależne, a następnie wskazany moduł. 20

Moduły Gdy nowy moduł jest ładowany informacje o nim można podejrzeć w logach jądra za pomocą komendy dmesg (diagnostic message) Aktualne wartości parametrów załadowanych modułów można zobaczyć w: /sys/module/<name>/parameters 21

Kompilacja skrośna modułów dla Raspberry Pi 2 kompilacja modułów make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules instalacja modułów sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=path modules_install INSTALL_MOD_PATH to ścieżka, do której zostaną zainstalowane moduły 22

Dziękuję za uwagę Zapraszam za tydzień :) 23