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

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

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

K. Konopko; Toolchain. Toolchain. dr inż. Krzysztof Konopko

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

Linux Kernel. Michał Kulling.

Q E M U.

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

Uruchomienie Intel Galileo

Prezentacja emulatora QEMU Zajęcia SO

Programowanie Systemów Wbudowanych

Programowanie Systemów Wbudowanych

Programowanie Systemów Wbudowanych

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

Pracownia Technik Obliczeniowych

Embedded GNU/Linux. Krzysztof Mazur

Przegląd dostępnych hypervisorów. Jakub Wojtasz IT Solutions Architect

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

Programowanie Systemów Wbudowanych

Linux Kernel. Wprowadzenie

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

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

Kernel Kompilacja jądra

WIRTUALIZACJA teoria i praktyka. Oskar Skibski, Piotr Sikora, Mateusz Kruszyński

Gdy dystrybucja Linuksa staje się niepotrzebna

Programowanie mikrokontrolerów AVR

Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat

Kompilacja jądra systemu Linux

FreeBSD do zabudowy. Czyli nie tylko pecety. Rafał Jaworowski meetbsd 2007, Warszawa

Rozproszony system kontroli wersji GIT. Piotr Macuk

1. Instalacja centrali Asterisk w systemie Ubuntu 12.04

Systemy operacyjne II

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

WIRTUALIZACJA. Kamil Frydel, Julia Romanowska, Maciej Sokołowski. 12 listopada 2007 WIRTUALIZACJA. Kamil Frydel, Julia Romanowska, Maciej Sokołowski

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

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

Programowanie Systemów Wbudowanych

Instalacja cross-compilatora Inne elementy. Gentoo. Krzysztof Mazur. June 25, 2014

Instalacja serwera baz danych PostgreSQL ze źródeł i pierwsze uruchomienie

Programowanie Systemów Wbudowanych. GNU Toolchain i kompilacja skrośna. GNU Toolchain. Cross-compilation KSEM WETI PG.

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

2 Tworzenie oprogramowania dla systemu wbudowanego

"Budowa jądra 2.6/3.x" Krzysztof Chomski Krystian Hanek

1 Zapoznanie się ze środowiskiem Xenomai.

Fragment wykładu z języka C ( )

Warstwy systemu Windows 2000

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

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

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

Git rozproszony system kontroli wersji

Linux -- u mnie działa!

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

Tworzenie oprogramowania

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

Rozdział 1. Informacje ogólne

Zastosowanie emulatorów w rozbudowie systemów wbudowanych

Prezentacja systemu RTLinux

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

PRE/94/2011. Instalacja i uruchomienie systemu TinyOS. Instalacja i uruchomienie systemu TinyOS. Tomasz Surmacz

Środowisko Keil. Spis treści. Krzysztof Świentek. Systemy wbudowane. 1 Trochę teorii. 2 Keil

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Wirtualizacje. Opracowali: Piotr Dąbrowiecki Jakub Gołębiowski Winicjusz Szyszka

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

Tworzenie i obsługa wirtualnego laboratorium komputerowego

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

Kontenery w Linux. Jakub Pieńkowski 10 maja, Jakub Pieńkowski Kontenery w Linux 10 maja, / 26

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

Dystrybucje Linuksa c.d.

GIT. System Kontroli wersji GIT. Rafał Kalinowski

Uruchomienie Raspberry Pi

Programowanie procesora Microblaze w środowisku SDK

Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Instytut Fizyki

SYSTEMY CZASU RZECZYWISTEGO (SCR)

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Zastosowania matematyki w systemie operacyjnym Linux

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

1.Wstęp. 2.Generowanie systemu w EDK

Uruchomienie Raspberry Pi

Programowanie systemów wbudowanych

1.1 Co to jest USBasp? Parametry techniczne Obsługiwane procesory Zawartość zestawu... 4

Zarządzanie pakietami Linuks.

Informatyka I : Tworzenie projektu

Platforma GitHub. 1 Cel laboratoriów. 2 GitHub. 2.1 Git. źródeł.

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Emulacja maszyny. Program udaje zupełnie inną architekturę. Musi przetłumaczyć instrukcje emulowane na instrukcje platformy, na której działa

Linux is linux is linux?

Podstawowe zagadnienia

INSTRUKCJA U YTKOWNIKA. Karty synchroniczne V.35 TAHOE 931/932 WOLNOή KOMUNIKACJI

Czym jest jądro systemu? Rodzaje wersji jądra. Co to s ą moduły?

Aplikacje Systemów Wbudowanych

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Wprowadzenie do systemu Minix

"Klasyczna" struktura systemu operacyjnego:

Symulacja systemu z procesorem MicroBlaze w środowisku ActiveHDL

AE/ZP-27-16/14. Oprogramowanie do wykonywania kopii zapasowych oraz zarządzania maszynami wirtualnymi

Wprowadzenie do biblioteki klas C++

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

Laboratorium 1: Moduły jądra systemu Linux (jedne zajęcia) dr inż. Arkadiusz Chrobot

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

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

Wirtualizacja. Piotr Sikora Tomasz Ziółkowski

Transkrypt:

Konfiguracja i kompilacja jądra Linux Based on Free Electrons

Obsługiwane platformy Rodzaje obsługiwanych architektury katalog arch/ Minimum: 32 bit, opcjonalnie MMU, gcc Architektura 32 bit: arm, avr32, blackfin, c6x, m68k, microblaze, mips, score, sparc, um Architektura 64 bit: alpha, arm64, ia64, tile Architektura 32/64 bit: powerpc, x86, sh, sparc

Źródła jądra Linux Oficjalne wersje tylko opublikowane przez Linusa Torvalds a na http://www.kernel.org Wielu producentów chips etów sami rozwijają swoje wersje jądra (często ich zmiany są dołączane do mainline z dużym opóźnieniem) Źródła ściągamy z: http://kernel.org/pub/linux/kernel Częściej jednak korzystamy z git s

Zadanie laboratoryjne nr 2 Pobrać źródła jądra Linux z repozytorium (clone) git://git.kernel.org/pub/scm/linux/kernel/git/ torvalds/linux.git Stworzyć lokalnie nową gałąź w repozytorium o nazwie <nazwisko-kernel> dla wersji 3.XX

Struktura katalogów jądra Linux arch/<arch> Źródła specyficzne dla platformy arch/<arch>/mach-<machine>, kod specyficzny dla danej maszyny arch/<arch>/include/asm, header y związane z architekturą arch/<arch>/boot/dts, źródła Drzewa Urządzeń (Device Tree) związane z architekturą Block/ - Block layer core COPYING warunki licencji (GNU GPL) CREDITS główni twórcy crypto/ biblioteki kryptograficzne

Struktura katalogów jądra Linux cd. Documentation/ - dokumentacja jądra (ważne!!!) drivers/ - wszystkie sterowniki poza dźwiękiem (usb, pci...) firmware/ - obrazy starych sterowników urządzeń (legacy) fs/ - systemy plików (fs/ext3/, itd.) include/ - headery include/linux/ - nagłówki związane z samym jądrem include/uapi/ - nagłówki user API (do wywołania z przestrzeni użytkownika init/ pliki inicjalizacji Linuxa (main.c) ipc/ komunikacja międzyprocesorowa (potoki, sygnały, itd.)

Struktura katalogów jądra Linux cd. Kbuild pliki niezbędne przy kompilacji i linkowaniu jądra Kconfig Ogólny plik konfiguracyjny (parametry kompilacji jądra) kernel/ źródła właściwego jądra Lib/ Misc funkcje bibliotek wykorzystywanych w jądrze (zlib, crc32...) MAINTAINERS Programiści odpowiedzialni za poszczególne części jądra Makefile plik do budowy jądra mm/ zarządzanie pamięcią net/ źródła obsługi sieci (NIE STEROWNIKI)

Struktura katalogów jądra Linux cd. README Instrukcje kompilacji REPORTING-BUGS Instrukcje zgłaszania błędów samples/ przykłady dla nowych deweloperów (make, kprobes, kobjects...) scripts/ skrypty pomocnicze security/ implementacja modelu bezpieczeństwa (SELinux...) sound/ obsługa w jądrze oraz sterowniki dzwięku tools/ kod funkcji pomocniczych dla użytkownika (większość C) usr/ źródła do generowania archiwum initramfs cpio virt/ wsparcie dla wirtualizacji (KVM)

Zadanie laboratoryjne nr 3 Zapisz czterobajtowy Int = 0x02010702 1) jako Big endian: bajt 1 bajt 2 bajt 3 bajt 4 2) jako Little endian: bajt 1 bajt 2 bajt 3 bajt 4

Przenoszalność jądra na różne platformy Wszystkie źródła poza arch/ są przenoszalne na wszystkie obsługiwane platformy!!! Źródła jądra wykorzystują makra i funkcje do obłsugi specyficznych platform: cpu_to_be23(), cpu_to_le32(), be32_to_cpu(), le32_to_cpu() Jądro może korzystać tylko ze swoich własnych bibliotek pomocniczych (printf(), malloc(), memset() nie działa) I/O, DMA API, zarządzanie pamięcią NIE UŻYWAMY float (niektóre architektury mogą nie mieć obsługi operacji zmiennoprzecinkowych Możemy emulować float lub soft-float w przestrzeni użytkownika

Narzędzia niezbędne do kompilacji jądra (dla Ubuntu) libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev linux-source libncurses5 libncurses5-dev fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge kernelpackage Zadanie: proszę o instalacje modułów przy użyciu apt-get

Narzędzia do konfiguracji jądra menuconfig, nconfic (tryb tekstowo-okienkowy) xconfig (tryb graficzny, konieczny moduł libqt4- dev g++) gconfig (tryb graficzny, moduł libglade2-dev) konfiguracja jest zapisywana do pliku /boot/.config w formie: key=value Sugeruje przed zapisaniem konfiguracji backup ować stary plik konfiguracyjny Zaciągnięcie konfiguracji z poprzedniej wersji jądra: make oldconfig.

Kompilacja make (bez parametrów wtedy make przyjmuje architekturę hosta, nie musi być root) make j5 (pięć wątków kompilacji np. dla czterokorowego procesora + 1) Wynik: vmlinux plik w formacie ELF, nieskompresowane jądro arch/<arch>boot/*image skompresowane, boot owalne jądro bzimage dla x86 zimage dla ARM vmimage.gz dla Blackfin arch/<arch>/boot/*.dtb skompilowane drzewo sterowników (dla tej samej architektury) w odpowiednich katalogach źródłowych wszystkie moduły z rozszerzeniem.ko

Zadanie laboratoryjne nr 4 Proszę skompilować jądro na architekturę hosta, tak aby skompresowany plik nie był większy, niż 2MB