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

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

Kompilacja jądra systemu Linux

Kernel Kompilacja jądra

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

Linux Kernel. Michał Kulling.

Działanie systemu operacyjnego

Działanie systemu operacyjnego

Paweł Skrobanek. C-3, pok

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

INSTALACJA LICENCJI SIECIOWEJ NET HASP Wersja 8.32

Działanie systemu operacyjnego

Działanie systemu operacyjnego

System operacyjny Linux

PROGRAM DO ARCHIWIZACJI NOŚNIKÓW KOPII ELEKTRONICZNEJ

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

PAMIĘĆ OPERACYJNA...107

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

Warstwy systemu Windows 2000

Instalacja Ubuntu 12.12

Tworzenie połączenia szerokopasmowego /PPPoE/ dla sieci SOLARNET w systemie Linux

Synchronizator plików (SSC) - dokumentacja

Instrukcja połączenia z programem Compas LAN i import konfiguracji

Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego

Instrukcja instalacji i konfiguracji bazy danych SQL SERVER 2008 EXPRESS R2. Instrukcja tworzenia bazy danych dla programu AUTOSAT 3. wersja 0.0.

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

Uruchomienie Raspberry Pi

Konfigurowanie sterownika CX9000 firmy Beckhoff wprowadzenie

Na chwilę obecną biblioteka ElzabObsluga.dll współpracuje tylko ze sprawdzarkami RSowymi.

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

System kontroli dostępu ACCO NET Instrukcja instalacji

Narzędzie konfiguracji rozruchu

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

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

Konfigurowanie sterownika CP6601 firmy Beckhoff wprowadzenie

Programowanie niskopoziomowe

MultiBoot Instrukcja obsługi

WYKONYWANIE ORAZ PRZYWRACANIE KOPII KONFIGURACJI ZA POMOCĄ INTERFEJSU 20-HIM-A6 / 20-HIM-C6S W PRZEMIENNIKACH SERII POWERFLEX 750

BIOS, tryb awaryjny, uśpienie, hibernacja

Instrukcja krok po kroku instalacji Windows Vista w nowym komputerze

Dziękujemy za zakup przenośnego obrazu systemu (Recovery).

System plików Linuksa

SPIS TREŚCI: KARTY GRAFICZNE... 15

Konfiguracja pakietu CrossStudio for MSP

Konfigurowanie sterownika CX1000 firmy Beckhoff wprowadzenie. 1. Konfiguracja pakietu TwinCAT do współpracy z sterownikiem CX1000

Opis dotyczy wykonania konfiguracji karty przy użyciu oprogramowania SimaticNet PC Software V6.2 oraz Simatic NCM PC.

MultiBoot Instrukcja obsługi

MultiBoot. Instrukcja obsługi

Komunikacja Master-Slave w protokole PROFIBUS DP pomiędzy S7-300/S7-400

Computer Setup Instrukcja obsługi

Diagnostyka pamięci RAM

Acronis Universal Restore

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

Usługi sieciowe systemu Linux

ASMAX ISDN-TA 128 internal Instalacja adaptera w środowisku Windows 98 / ME

Programowanie w języku C++ Grażyna Koba

Materiały dodatkowe. Raspberry Pi

Instalacja MUSB2232FKA w systemie Windows 7

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

Narzędzie Setup Instrukcja obsługi

FAQ: /PL Data: 16/11/2007 Programowanie przez Internet: Konfiguracja modułów SCALANCE S 612 V2 do komunikacji z komputerem przez VPN

Laboratorium - Zarządzanie systemem plików poprzez wbudowane oprogramowanie w systemie Windows Vista

MultiBoot Instrukcja obsługi

Systemy operacyjne II

Biuletyn techniczny. CDN OPT!MA 12.0 Drukarki fiskalne w usługach terminalowych. Copyright 2007 COMARCH SA

Włączanie/wyłączanie paska menu

Seria wielofunkcyjnych serwerów sieciowych USB

Instalacja protokołu PPPoE

1 Moduł Konfigurowanie Modułu

KATEGORIA OBSZAR WIEDZY NR ZADANIA Podstawowe informacje i czynności

Tutaj znajdziesz Odpowiedź na: Najczęściej Spotykane Problemy Najczęściej zadawane Pytania

Asix. Konfiguracja serwera MS SQL dla potrzeb systemu Asix. Pomoc techniczna NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.

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

Jądro systemu operacyjnego

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji BSEND/BRCV

Tomasz Greszata - Koszalin

Kalipso wywiady środowiskowe

Projektowanie z użyciem procesora programowego Nios II

Instalacja i konfiguracja SAS PC Files Server

Konfiguracja podglądu obrazu z kamery IP / rejestratora BCS przez sieć LAN.

Seria wielofunkcyjnych serwerów sieciowych USB

Narzędzie Setup Instrukcja obsługi

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

ABA-X3 PXES v Podręczna instrukcja administratora. FUNKCJE SIECIOWE Licencja FDL (bez prawa wprowadzania zmian)

instrukcja instalacji w systemie Linux modemu USB ZXDSL 852

Rys. 1. Widok uruchomienia polecenia apt-get install build-essential. Rys. 2. Widok uruchomienia polecenia apt-get install apache2

Instrukcja obsługi programu CMS Dla rejestratorów HANBANG

Instrukcja podłączenia bramki IP 1R+L oraz IP 2R+L w trybie serwisowym za pomocą usługi telnet.

Przygotowanie środowiska Java do prawidłowej obsługi podpisu elektronicznego w epuap

Proces instalacji systemu operacyjnego Linux Red Hat 7.3 (1)

SKRÓCONY PODRĘCZNIK UŻYTKOWNIKA

INSTRUKCJA UŻYTKOWNIKA MPCC

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

Laboratorium - Zarządzanie systemem plików poprzez wbudowane oprogramowanie w systemie Windows XP

Ćwiczenie Zmiana sposobu uruchamiania usług

UNIFON podręcznik użytkownika

Konfiguracja współpracy urządzeń mobilnych (bonowników).

MultiBoot Instrukcja obsługi

Skrócony przewodnik OPROGRAMOWANIE PC. MultiCon Emulator

Moduł 2 Użytkowanie komputerów i zarządzanie plikami wymaga od kandydata znajomości obsługi komputera osobistego.

Transkrypt:

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

Jądro systemu linux Sercem Linuxa jest jego jądro. W jądrze Linuks sterowniki do urządzeń mogą zarówno być wbudowane w samo jądro (wkompilowane moduły), albo też w osobnym pliku, i wtedy są one ładowane do pamięci komputera i uruchamiane w razie potrzeby, lub przy starcie systemu. Rys. 3.1. Schemat ogólny budowy jądra Linuxa

Zalety modułowej budowy Kernel Linuks jest makrokernelem, tzn. zajmuje się nie tylko komunikacją pomiędzy poszczególnymi procesami, ale także zarządzaniem pamięcią, obsługą urządzeń czy obsługą systemów plików. Dla porównania, w architekturze mikrokernela, sam kernel zajmuje się tylko zapewnieniem komunikacji pomiędzy procesami, natomiast do obsługi poszczególnych urządzeń, czy systemów plików, zajmują się osobne wykonywalne programy. Jednak Linuks ma modułową budowę, co oznacza że części kodu odpowiadające za obsługę poszczególnych urządzeń, systemów plików czy protokołów, mogą zostać od niego oddzielone - i dzięki temu zyskuje największe zalety mikrokerneli, czyli: obsługę poszczególnych urządzeń czy protokołów można rozwijać niezależnie od samego kernela (nie wymaga to zmian w innych częściach kernela) podział prac nad jądrem na grupy zajmujące się poszczególnymi częściami znacznie ułatwia i przyspiesza rozwój możliwość zmniejszenia wielkości kernela, poprzez wykasowanie z pamięci operacyjnej nieużywanych modułów możliwość tworzenia zamkniętych, binarnych sterowników

...Zalety modułowej budowy Przy tym budowa jako makrokernel, i możliwość wbudowania modułów w strukturę samego kernela, przyspiesza działanie, ponieważ nie ma konieczności wielokrotnego powtarzania przełączania procesów, przy komunikacji pomiędzy poszczególnymi modułami. W jądrze można wyróżnić dwa główne składniki: podsystem plików podsystem sterujący procesami. Podsystem plików zarządza plikami, a podsystem sterujący procesami odpowiedzialny jest za synchronizację procesów, komunikację miedzy nimi, zarządzanie pamięcią i szeregowanie procesów.

Funkcje systemowe Funkcje systemowe tworzą interfejs miedzy wykonywanym programem, a systemem operacyjnym. Funkcje systemowe można z grubsza podzielić na pięć podstawowych kategorii: nadzorowanie procesów, operacje na plikach, operacje na urządzeniach, komunikacja, utrzymywania informacji.

Rodzaj funkcji systemowych 1.Nadzorowanie procesów zakończenie(exit),zaniechanie, załadowanie, wykonanie(exec), utworzenia(fork), zakończenie procesu(exit), pobranie atrybutów procesu(getegid,getgid,getpid..)określenie atrybutów procesu (setgid,setuid), czekanie czasowo(wait), oczekiwanie na zdarzenie(wait),sygnalizacja zdarzenia(signal), przydział i zwolnienie pamięci. 2.Operacje na plikach utworzenie pliku(create);,usuwanie, otwarcie(open),zamkniecie(close), czytanie(read),pisanie(write),zmiana położenia, pobranie atrybutów pliku, określenie atrybutów pliku.

...Rodzaj funkcji systemowych 3.Operacje na urządzeniach zamówienie urządzenia, zwolnienia urządzenia, czytanie urządzenia, pisanie do urządzenia, pobranie atrybutów urządzenia, określenie atrybutów urządzenia, logiczne przyłączanie lub odłączenie urządzeń. 4.Utrzymywania informacji pobranie czasu(time,stime), określenie czasu(time), pobranie danych systemowych, określenie danych systemowych, pobranie lub określenie atrybutów procesu.

...Rodzaj funkcji systemowych 5.Komunikacja utworzenie, usunięcie połączenia komunikacyjnego, nadawanie, odbieranie komunikatów, przekazanie informacja o stanie, przyłączenie lub odłączenie urządzeń wymiennych.

Podsystem plików Podsystem plików zarządza plikami: przydziela na nie pamięć, administruje pamięcią wolna, steruje dostępem do plików, udostępnia użytkownikom dane. Podsystem sterujący procesami odpowiedzialny jest za: synchronizację procesów, komunikację miedzy nimi, zarządzanie pamięcią, szeregowanie procesów.

Podsystem sterujący procesami Podsystem sterowania procesami współpracuje z podsystemem plików podczas ładowania pliku do pamięci w celu wykonania. Podsystem sterowania procesami czyta pliki wykonywalne do pamięci przed rozpoczęciem ich wykonywania. Wtedy współpracuje z podsystemem plików. Proces jest wykonaniem programu i składa się ze zbiorowości bajtów, które CPU interpretuje jako instrukcje maszynowe, dane i stos. Jądro steruje wykonaniem procesów. Kilka procesów może być wcieleniem jednego programu. Jądro identyfikuje każdy proces za pomocą jego numeru, zwanego identyfikatorem procesu(pid).proces 0 jest procesem specjalnym, tworzonym "ręcznie".

POBIERANIE JĄDRA Sprawdzenie wersji aktualnego jądra: # uname -r Ze strony http://www.kernel.org pobrać odpowiednie archiwum. W naszym przypadku będzie to wersja 3.9.4: # wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.9.4.tar.xz Po pobraniu kopiujemy/przenosimy archiwum do /usr/src i rozpakowujemy: # cp linux-3.9.4.tar.xz /usr/src/ # tar -xjf linux-3.9.4.tar.xz Następnie tworzymy dowiązanie symboliczne: # ln -s linux-3.9.4 linux Potrzebne pakiety do dalszej części: # apt-get install libncurses5-dev make gcc bin86 libc6-dev kernel-package glibc-devel egcs Zamiast pakietu libncurses5-dev możemy zainstalować tk9.5 dzięki czemu będziemy mogli skorzystać z XWindowsowego okna przy konfiguracji jądra.

Konfiguracja Do kompilacji jądra systemu konieczne są zainstalowane powyższe pakiety. Przed kompilacją należy to sprawdzić. Mamy do wyboru trzy sposoby ustawienia opcji konfiguracyjnych: program konfiguracyjny uruchamiany poleceniem make config. Wybór opcji kompilacyjnych polega na żmudnym odpowiadaniu na zadawane przez komputer pytania. Niezbyt wygodny w użyciu, nie zalecane. program konfiguracyjny uruchamiany poleceniem make menuconfig. Dostajemy narzędzie a`la mc [Midnight Commander]. Cały proces przygotowania pliku konfiguracyjnego opiera się na używaniu dwóch klawiszy: entera i spacji. Bardzo prosty w obsłudze, za pomocą znaku "?" dostajemy dość obszerną pomoc dla każdego z komponentów. program konfiguracyjny uruchamiany poleceniem make xconfig. Jak nazwa wskazuje odpalamy go w środowisku XWindow, ma przyjemny interfejs, bardzo łatwo i fajnie się go obsługuje. Wszelkie wybory dokonujemy za pomocą myszki.

...Konfiguracja Sterowniki mogą być wkompilowane w jądro, mogą być skompilowane jako moduł lub nie kompilowane wcale. My użyjemy do konfiguracji jądra programu menuconfig. Sterowniki kompilowane na stale w jądro oznaczone będą *, jako moduł M, lub nie kompilowane wcale - okienko puste. Wybór poszczególnych rodzajów odbywa się poprzez wielokrotne naciśniecie spacji. Konfigurację jądra zaczynamy od wydania polecenia: # make menuconfig Czynimy to z poziomu /usr/src/linux. Uważam, iż narzucony przez nas sposób jest lepszy od wspomnianych powyżej. Dysponuje on bardzo wygodnym i przejrzystym interfejsem. Wymaga jednak zainstalowanych bibliotek ncurses. Przedstawiamy krótki opis większości parametrów konfiguracyjnych, zwracając większą uwagę na te najbardziej istotne. Opcje możliwe do zaznaczenia: < M > - sterownik będzie skompilowany do postaci modułu < * > - sterownik będzie wkompilowany w jądro na stałe, choć może być modułem [ * ] - sterownik będzie wkompilowany w jądro, nie może być modułem [ ], < > - sterownik nie będzie zainstalowany

Opcje konfiguracyjne jądra ze względu na ilość opcji przedstawimy tylko parę Code maturity level options [ ] Prompt for developmnet and/or incomlete code/drivers Włącza niektóre narzędzia obsługiwane przez linuksa, np. dyski sieciowe, systemy plików czy protokoły sieciowe, znajdujące się w fazie rozwojowej. Nie zaznaczajmy tej, jeśli nie jest to konieczne. Może to bowiem pogorszyć stabilność systemu. Loadable module support [ * ] Enable loadable module support [ * ] Set version information on all module symbols [ * ] Kernel module loader Załączmy te opcje, w przeciwnym razie nie załadujemy żadnych modułów! Processor type and features (Athlon/Duron/K7) Processor family W tym polu wybieramy typ naszego procesora

...Opcje konfiguracyjne jądra (Off) High Memory Support Wybieramy Off, jeśli mamy mniej niż 1GB całkowitej pamięci fizycznej [ ] Symetric multi-processing support Jeżeli mamy co najmniej dwa procesory, to zaznaczamy tą opcję. Jeśli mamy tylko jeden procesor, to nie zaznaczajmy jej, gdyż spowolni ona start jądra. General setup [ ] Support for hot-plugabble devices Możemy załączyć nowe urządzenia na uruchomionym systemie. Warto zaznaczyć tę opcję [ * ] Power Management Support Ważne w laptopach, gdyż pozwala na oszczędzanie energii. Gdy jakieś urządzenie nie jest zajęte, to system je tymczasowo wyłącza lub "usypia". < * > Paraller port support Zaznaczmy tę opcję, gdyż pozwala ona na obsługę portu równoległego (np. może go wykorzystywać drukarka)

...Opcje konfiguracyjne jądra < > RAID support Ten sterownik pozwala łączyć kilka partycji dyskowych w jedno logiczne urządzenie blokowe. Dostępne są poniższe sposoby: < > Linear (append) mode < > RAID - 0 (striping) mode < > RAID - 1 (mirroring) mode < > RAID-4/RAID-5 mode Jeżeli więc wiemy, jakie macierze dyskowe chcemy utworzyć, to możemy zaznaczyć odpowiednie opcje powyżej Cała lista opracowana: https://www.dropbox.com/s/37dgnood6igtqhl/opcje_kernel.pdf

KOMPILACJA Teraz przyszła pora, aby skompilować nowe jądro: make dep zrobi wszystkie powiązania, musi być podane z głównego katalogu źródeł jądra /usrc/src/linux, make clean wyczyści niepotrzebne śmieci ze źródeł, ponieważ stare pliki pośrednie mogą wciąż istnieć po zmodyfikowaniu konfiguracji, make zimage skompiluje nam obraz naszego jądra, make bzimage należy użyć tego polecenia w przypadku wystąpienia błędu o zbyt dużym rozmiarze jądra, make modules skompiluje moduły jądra, make modules_install zainstaluje skompilowane moduły.

...KOMPILACJA Żeby skompilować używamy kolejno: # make # make modules # make modules_install # make install Operacja kompilacji trwa zależnie od szybkości naszego procesora oraz od ilości zainstalowanej pamięci RAM.

...KOMPILACJA Mamy już skompilowane jądro, które leży sobie w pliku /usr/src/linux/arch/i386/boot/zimage lub jeśli użyliśmy polecenia bzimage w pliku /usr/src/linux/arch/i386/boot/bzimag. Ważne, aby przed wydaniem polecenia make modules_install usunąć z katalogu /lib/modules/numer-wersji poprzednio skompilowane moduły. Czynność tą musimy wykonać tylko w wypadku, gdy kompilujemy jądro o numerze wersji takim samym jak skompilowane wcześniej. Przykładowo jeśli mamy już jądro 2.2.13 i kompilujemy jądro o takiej samej wersji usuwamy katalog /lib/modules/2.2.13. Uchroni nas to przed nadpisywaniem modułów oraz komunikatem Unresolved symbol...

Instalacja jądra Jądro w Linuxie powinno zostać umieszczone w katalogu /boot i nie powinniśmy nadpisywać starego jądra, gdyż może się zdarzyć, że nowe jądro wcale nie będzie chciało z nami współpracować i wtedy zostalibyśmy na lodzie. Przekopiujemy plik jądra do katalogu /boot, nadając mu nazwę nowe-jadro. Jądro skompresowane jest generowane domyślnie z dołączoną do niego procedurą rozpakowującą je podczas uruchamiania systemu. Ta cecha Linuxa umożliwia umieszczenie minimalnego, lecz kompletnego, systemu obsługującego cały sprzęt na jednej dyskietce. Czas tracony na dekompresję jest znikomy.

KONFIGURACJA GRUB 1. Otwieramy plik menu.lst zawierający listę dostępnych systemów operacyjnych: # cd /boot/grub/ # nano menu.lst 2. Dodajemy na końcu pliku nową sekcje: 3. Zapisujemy plik Gdzie (hdx,x) podajemy wartości z poprzednich wpisów. Tak samo postępujemy z root=/dev/hdax.

Błędy "Kernel Panic" Błędy "Kernel Panic", występują w czasie ładowania się systemu, są one wynikiem błędnej kompilacji lub konfiguracji jądra. VFS: Cannot open root device (0:0): Numer może być przypadkowy, jest to nazwa urządzenia. Błąd ten występuje, jeśli zapomnimy podać w jądrze sterowników do IDE. Może też to się zdarzyć, jeśli w menadżerze uruchamiania podaliśmy nieprawidłowy parametr root=. Kernel panic: VFS: Unable to mount root fs on (0:0): Jeśli wystąpił poprzedni komunikat ten też się pojawi. Jeśli jednak wystąpi sam oznacza to, że system nie mógł sobie poradzić z systemem plików, czyli nie wkompilowaliśmy w jądro obsługi systemu plików, jakich używamy, np. Ext2/3, ewentualnie wkompilowaliśmy go jako moduł i stąd problemy. Kernel panic: No init found. Try passing init= option to kernel: Przyczyna tego komunikatu zazwyczaj jest taka sama jak poprzednio. System plików nie został zamontowany prawidłowo i system nie mógł odnaleźć komendy init....fatal: Module sd_mod not found... Komunikat ten nie jest szczególnie groźny, jeśli nie zapomnieliśmy wybrać niezbędnych opcji z jądra. Oznacza on, iż taki moduł nie został znaleziony i nie może zostać uruchomiony. Przyczyną teko może być to, iż wkompilowaliśmy moduł na stałe a jego wpis pozostał w pliku /etc/modprobe.conf lub też nie wkompilowaliśmy w ogóle. W takim wypadku (o ile nie będziemy wykorzystywać już tego modułu), możemy skasować odnoszący się do niego wpis.

Dziękujemy za uwagę!