Kernel; Kompilacja jądra systemu



Podobne dokumenty
Kernel Kompilacja jądra

10. Poszukiwanie plików, archiwizacja, instalowanie w systemie Linux

System operacyjny Linux

Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego

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

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

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

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

Wstęp 5 Rozdział 1. SUSE od ręki 13

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

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

Wstęp 5 Rozdział 1. Instalowanie systemu 11

Quota mechanizm do przydzielania zasobów dyskowych dla użytkowników

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

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

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

Windows 10 - Jak uruchomić system w trybie

Qmail radość listonosza. Autorzy: Bartosz Krupowski, Marcin Landoch IVFDS

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

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

Najczęściej występujące problemy z instalacją i konfiguracją i ich rozwiązania.

SPOSOBY DYSTRYBUCJI OPROGRAMOWANIA PANDA

Synchronizator plików (SSC) - dokumentacja

Połączenia. Instalowanie drukarki lokalnie (Windows) Co to jest drukowanie lokalne?

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

Szybki start instalacji SUSE Linux Enterprise Server 11 SP1

UNIFON podręcznik użytkownika

Memeo Instant Backup Podręcznik Szybkiego Startu

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

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

Połączenia. Obsługiwane systemy operacyjne. Strona 1 z 5

Instalacja PPPoE w systemie Windows XP za pomocą kreatora nowego połączenia sieciowego

instrukcja instalacji w systemie Linux modemu USB ZXDSL 852

Szybki start instalacji SUSE Linux Enterprise Server 11


Instalacja oprogramowania KISSsoft 03/2017

Szybki start instalacji SUSE Linux Enterprise Desktop 11

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

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Acronis Universal Restore

System kontroli dostępu ACCO NET Instrukcja instalacji

Użycie pakietów instalacyjnych.msi w oprogramowaniu WYWIAD Plus

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu Linux

Instrukcja instalacji systemu. CardioScan 10, 11 i 12

Połączenia. Obsługiwane systemy operacyjne. Instalowanie drukarki przy użyciu dysku CD Oprogramowanie i dokumentacja

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

Instalacja protokołu PPPoE

Instrukcja użytkownika. Aplikacja dla Magento

Instrukcja krok po kroku instalacji Windows Vista w nowym komputerze

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

Materiały wprowadzające. dr inż. Arkadiusz Chrobot

Działanie komputera i sieci komputerowej.

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

Instrukcja użytkownika. Aplikacja dla WF-Mag

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

SystimPlus. Dokumentacja (FAQ) dla wersji: v

SYSTEM OPERACYJNY. Monika Słomian

Samsung Universal Print Driver Podręcznik użytkownika

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

System obsługi wag suwnicowych

oprogramowania F-Secure

Instalacja programu Warsztat 3 w sieci

INSTRUKCJA UŻYTKOWNIKA MPCC

INSTALACJA LICENCJI SIECIOWEJ NET HASP Wersja 8.32

Zespól Szkół Ponadgimnazjalnych Nr 17 im. Jana Nowaka - Jeziorańskiego Al. Politechniki 37 Windows Serwer 2003 Instalacja

Program dla praktyki lekarskiej. Instalacja programu dreryk

STATISTICA 8 WERSJA JEDNOSTANOWISKOWA INSTRUKCJA INSTALACJI

IBM SPSS Statistics Wersja 25. Windows Instrukcja instalacji (licencja autoryzowanego użytkownika) IBM

Kalipso wywiady środowiskowe

PODRĘCZNIK UŻYTKOWNIKA programu Pilot

Pracownia Technik Obliczeniowych

STATISTICA 8 WERSJA SIECIOWA CONCURRENT INSTRUKCJA INSTALACJI

LINUX. Instalacja oprogramowania

NetDrive czyli jak w prosty sposób zarządzać zawartością FTP

Spis Treści: Przygotowanie do instalacji lub trybu Live Testowanie systemu bez instalacji (Live) Instalacja Luwe OS Web

Oprogramowanie. DMS Lite. Podstawowa instrukcja obsługi

S P I S T R E Ś C I. Instrukcja obsługi

Wprowadzenie 5 Rozdział 1. Lokalna sieć komputerowa 7

Client Management Solutions i Mobile Printing Solutions

AKTYWNY SAMORZĄD. Instrukcja instalacji, aktualizacji i konfiguracji.

Wstęp. Skąd pobrać program do obsługi FTP? Logowanie

e-audytor v.3.x INSTRUKCJA INSTALACJI I URUCHOMIENIA SYSTEMU

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Windows

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

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

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

Linux Kernel. Michał Kulling.

ZyXEL G-120. Bezprzewodowa karta sieciowa g CardBus. Skrócona instrukcja obsługi

AUTOMATYKA PRZEMYSŁOWA

Księgarnia PWN: Emmett Dulaney - Novell Certified Linux Professional (NCLP)

Na komputerach z systemem Windows XP zdarzenia są rejestrowane w trzech następujących dziennikach: Dziennik aplikacji

Linux is linux is linux?

1. Instalacja Programu

Włączanie/wyłączanie paska menu

NWD310N. Bezprzewodowa karta sieciowa PCI N. Skrócona instrukcja obsługi. Wersja 1.00 Październik 2007 Wydanie 1

Odczyt karty SD za pomocą aplikacji KK-01 podręcznik użytkownika

Instrukcja użytkownika. Aplikacja dla Comarch Optima

Computer Setup Instrukcja obsługi

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

Instrukcja obsługi urządzenia DS150E z systemem operacyjnym Windows 7. Dangerfield luty 2010 V1.0 Delphi PSS

Transkrypt:

1 Kernel; Kompilacja jądra systemu Plan zajęć: 1. Co to jest jądro systemu operacyjnego 2. Zadania (co robi co musi robić) i funkcje (co jeszcze może robić) 3. Różne kernele do różnych zastosowań 4. Po co kompilacja jądra systemu? 5. Kompilowanie jądra systemu 1. Co to jest jądro systemu operacyjnego Jądro systemu operacyjnego jest rozpowszechniane na licencji GNU General Public License (GPL) określonej przez konsorcjum Free Software Foundation (FSF) jako oprogramowanie w tw. wolnym obiegu (free software). Cechy: Zakaz prywatyzacji produktów powstałych z wykorzystaniem Linuksa lub pochodnych systemu (tzn. odmian zachowujących standardy Linuksa). Oprogramowanie nie może być redystrybuowane w formie czysto binarnej wraz z każdą dystrybucją binarną musi być udostępniony kod źródłowy. Dystrybucje Linuksa: Standardowe, prekompilowane zbiory pakietów, zwane dystrybucjami, zawierają podstawowy system Linux, narzędzia do instalowania systemu i zarządzania nim oraz gotowe do instalowania pakiety typowych narzędzi systemu UNIX. Pierwsze dystrybucje zarządzały pakietami jedynie przez dostarczanie środków do rozpakowywania wszystkich plików w odpowiednie miejsca; współczesne dystrybucje zawierają zawansowane zarządzanie pakietami. Większość obecnych dystrybucji stosuje lub przynajmniej rozpoznaje pakiety plików RPM ułatwiające instalację, rozbudowę i usuwanie oprogramowania. Wczesne dystrybucje: SLS, Slackware. Popularne dystrybucje: RedHat->Fedora, Debian, SuSE, Mandrake - >Mandriva, itd. 2. Linux budowa (w skrócie) Programy zarządzania systemem Procesy użytkowe Pomocnicze programu użytkowe Kompilatory Wspólne biblioteki systemu Jądro systemu Linux Ładowalne moduły jądra Składowe systemu Linux

System Linux składa się z trzech głównych fragmentów kodu: Jądro: jest odpowiedzialne za realizację wszystkich istotnych abstrakcji systemu operacyjnego (pamięć wirtualna, procesy itd.). Kod jądra jest wykonywany w trybie jądra (kernel mode) z pełnym dostępem do wszystkich fizycznych zasobów komputera. Cały kod jądra ze wszystkimi strukturami danych przebywa w tej samej pojedynczej przestrzeni adresowej Biblioteki systemowe: Definiują standardowy zbiór funkcji, za pomocą których aplikacje mogą współpracować z jądrem i które realizują wiele właściwości systemu operacyjnego nie wymagających pełnych przywilejów kodu jądra. Pomoce systemowe: wykonują osobne, specjalizowane zadania administracyjne. Moduły jądra Moduły jądra są to części kodu jądra, które mogą być kompilowane, ładowane i usuwane niezależnie od reszty jądra. Moduł jądra zazwyczaj steruje pracą urządzenia, systemem plików lub protokołem sieciowym. Moduły jądra są przydatne z następujących powodów: W celu dodania nowych właściwości do jądra wystarczy napisać nowy moduł jądra i korzystać z niego bez przebudowy całego jądra. Interfejs modułów jądra umożliwia osobom postronnym pisanie i rozpowszechnianie na własnych zasadach modułów sterujących urządzeń lub systemów plików, których nie można rozpowszechniać na zasadach licencji GPL. Moduły jądra pozwalają na zestawianie systemu Linux z minimalnym, standardowym jądrem bez wbudowywania w nie jakichkolwiek dodatkowych modułów sterujących urządzeń. Moduły jądra są wspomagane przez trzy następujące składowe: Zarządzanie modułami (module management); Rejestracja modułów sterujących (driver registration); Mechanizm rozwiązywania konfliktów (conflict resolution). Zarządzanie modułami Umożliwia wprowadzenie modułów do pamięci i ich kontakt z resztą jądra. Zadanie ładowania modułu jądra podzielone jest na dwie sekcje: Zarządzanie częściami kodu modułu w pamięci jądra; Manipulowanie symbolami, do których modułom wolno się odwoływać. Ładowanie modułu przebiega w dwu etapach: Ładowacz modułu (module loader) zgłasza zapotrzebowanie na ciągły obszar pamięci wirtualnej jądra potrzebny dla modułu, a jądro zwraca adres przydzielonej pamięci. Specjalne wywołanie systemowe przekazuje moduł do jądra wraz niezbędną tablicą symboli, które chce on eksportować (moduł jest słowo po słowie kopiowany do zarezerwowanego obszaru, a tablica symboli jądra jest aktualizowana za pomocą nowych symboli). Ostatnią składową zarządzania modułem jest procedura zamawiania modułu (module requestor). Zarządza ładowaniem zamawianych modułów, których aktualnie nie ma w pamięci. Regularnie odpytuje jądro, sprawdzając, czy dynamicznie 2

załadowany moduł jest ciągle w użyciu, a gdy nie jest już potrzebny, usuwa go z pamięci. 3 Rejestrowanie modułu sterującego Umożliwia modułowi poinformowanie reszty jądra o udostępnieniu nowego modułu sterującego. Jądro utrzymuje dynamiczne tablice wszystkich znanych modułów sterujących (programów obsługi urządzeń, ang. device drivers) i dostarcza zestawu procedur umożliwiających dodawanie do tych tablic lub usuwanie z nich modułów sterujących w dowolnej chwili. Tablice rejestracyjne zwierają następujące elementy: Moduły sterujące urządzeń: znakowych (terminale, myszki drukarki itp.), blokowych (programy obsługi dysków) oraz interfejsów sieciowych. Systemy plików: oprogramowanie realizujące procedury wywołań wirtualnego systemu plików Linuksa, zarówno lokalnego, jak i sieciowego. Protokoły sieciowe: cały protokół sieciowy, np. IPX, lub nowy zbiór reguł filtrowania pakietów przez zaporę ogniową. Format binarny: określa zasady rozpoznawania i ładowania pliku wykonywalnego nowego typu. Ponadto moduł może zarejestrować nowy zbiór wpisów w tablicach sysctl i /proc, aby umożliwić jego konfigurowanie dynamiczne. Rozwiązywanie konfliktów System Linux pracuje na sprzęcie występującym w różnych i zmieniających się konfiguracjach, mogą się więc pojawiać problemy konfliktów między modułami sterującymi urządzeń przy dostępie do tych samych zasobów. Linux posiada centralny mechanizm rozwiązywania konfliktów, który pozwala rozstrzygać o dostępie do zasobów sprzętowych. Do głównych celów tego mechanizmu należą: Ochrona modułów przed kolizjami przy dostępie do zasobów sprzętowych; Zapobieganie zaburzaniu działania istniejących modułów sterujących przez autosondy (autoprobes), tj. testy inicjowane przez moduły sterujące w celu automatycznego wykrycia konfiguracji sprzętu; Rozwiązywanie konfliktów między wieloma modułami sterującymi usiłującymi skorzystać z tego samego sprzętu (np. portu). Aby osiągnąć te cele, jądro utrzymuje wykazy przydzielonych zasobów sprzętowych jeżeli jakiś moduł sterujący urządzenia chce sięgnąć po zasób, musi go najpierw zarezerwować w bazie danych jądra (w przypadku niepowodzenia rezerwacji moduł może zażądać swego usunięcia lub skorzystać z zasobów zastępczych) Planowanie Planowanie (scheduling) przydzielanie czasu procesora różnym zadaniom systemu operacyjnego. Oprócz normalnego uruchamiania i przerywania procesów, planowanie w systemie Linux obejmuje także wykonywanie różnych zadań jądra, zarówno zlecanych przez działający proces, jak też wykonywanych wewnętrznie na zlecenia modułu sterującego jakiegoś urządzenia.

Synchronizacja jądra Zamówienie na działanie w trybie jądra można wykonać na dwa sposoby: 1. Wykonywany program może zamówić usługę systemu operacyjnego jawnie (za pomocą wywołania systemowego) albo niejawnie, np. przez brak strony. 2. Moduł sterujący urządzenia może wysłać przerwanie, które spowoduje, że procesor zacznie wykonywać kod jądrowej procedury obsługi przerwania. Synchronizacja jądra wymaga regulacji pozwalających na wykonywanie sekcji krytycznych jądra w sposób wzajemnie nie kolidujący aby nie uszkodzić lub nie doprowadzić do niespójności 4 Linux używa dwóch technik do ochrony sekcji krytycznych jądra: 1. Zwykły kod jądra jest niewywłaszczalny gdy przerwanie czasomierza zostanie odebrane w czasie kiedy proces wykonuje jądrową, systemową procedurę obsługi, ustawiany jest jądrowy znacznik need_resched, który informuje jądro o zapotrzebowaniu na pracę planisty po zakończeniu wywołania systemowego. 2. Technika do ochrony sekcji krytycznych występujących w procedurach obsługi przerwań przez użycie sprzętu nadzorującego przerwania procesora w celu zakazu przerwań w trakcie wykonywania sekcji krytycznej; jądro gwarantuje, że jej wykonanie przebiegnie bez ryzyka współbieżnego dostępu do dzielonych struktur danych. Aby uniknąć pogorszenia wydajności systemu na skutek wyłączania przerwań, w jądrze zastosowano architekturę synchronizacji umożliwiającą wykonywanie długich sekcji krytycznych bez wyłączania przerwań na czas trwania całej sekcji. W procedurach obsługi przerwań wyodrębnione są dwie części: 1. Górna połowa (top half) zwykła procedura obsługi przerwań; przebiega z wyłączonymi rekurencyjnymi przerwaniami (może być przerwana tylko przez przerwania o wyższym priorytecie, a przerwania o priorytecie są zablokowane). 2. Dolna połowa (bottom half) procedura przebiega z włączonymi wszystkimi przerwaniami i jest nadzorowana przez miniaturowego planistę, który zapewnia, że dolne połowy nigdy nie przerywają się wzajemnie. Ta architektura jest uzupełniana przez mechanizm wyłączania wybranych dolnych połów podczas wykonywania zwykłego, pierwszoplanowego kodu jądra. Poziomy ochrony przed przerwaniami

5 Górne połowy procedur obsługi przerwań Dolne połowy procedur obsługi przerwań Systemowe procedury jądra (niewywłaszczalne) Programy trybu uzytkownika (wywłaszczalne) Każdy poziom może być przerwany przez kod wykowywany na wyższym poziomie, ale nigdy nie będzie przerwany przez kod wykonywany na tym samym lub niższym poziomie. Procesy trybu użytkownika mogą być zawsze wywłaszczane przez inne procesy w chwilach określonych przerwaniami zegarowymi służącymi do realizacji podziału czasu. 3. Różne kernele do różnych zastosowań Dfvb 4. Po co kompilacja jądra systemu? Wbrew pozorom to jedna z częściej wykonywanych czynności administracyjnych. Niektóre z powodów: nowsza wersja jądra = większe bezpieczeństwo (nowsza wersja zawiera poprawki i jest bardziej bezpieczna) nowsza wersja = większa stabilność systemu (bo ma poprawione i bardziej optymalne wersje sterowników urządzeń) bieżąca wersja jądra nie obsługuje jakiegoś potrzebnego mechanizmu a nowsza obsługuje (np. mechanizmy kolejkowania, obliczania udziałów w dysku itp.) bieżąca wersja nie jest przystosowana do zmian wprowadzonych do systemu (np. zmiana karty sieciowej) bieżąca wersja nie przewiduje obsługi jakiegoś urządzenia -> bo urządzenia nie było w momencie powstawania tej wersji jądra standardowa wersja jądra nie jest zoptymalizowana -> zbyt wiele sterowników do urządzeń (jeżeli któryś z punktów => zastanowić się nad rekompilacją jądra w wersji takiej samej lub nowszej) 5. Kompilowanie jądra systemu Źródła jądra systemu By przeprowadzić kompilację potrzebne są:

- źródła jądra systemu - kompilator języka C w odpowiedniej wersji (gcc 2.95.3 lub wyższa) + zestaw bibliotek 6 Zopatrzeć się w źródła jądra systemu można z: 1) płyty instalacyjnej WADA: mamy jądro systemu, ale w takiej wersji, jaką mieliśmy (nie najnowsza) 2) z Internetu WADA: często bardzo długo ciągniemy źródła poprzez sieć (dużo ważą!) Czym są pakiety? Najprościej tłumacząc, pakiety to skompilowane źródła, których instalacja to chwila. Właśnie w takiej formie znajduje się oprogramowanie w naszej dystrybucji. Pakiety mogą mieć różną postać, w zależności od naszej dystrybucji i sposobu zarządzania nimi. Trzy główne typy: RPM - Red Hat Package - jak sama nazwa wskazuje, występują w rodzinie Red Hata. DEB - Pakiety występujące w Debianie; nazwa pochodzi od trzech pierwszych liter nazwy dystrybucji TGZ - archiwa tara; pakiety obecne w Slackware Pomimo, że pakiety znacząco różnią się sposobem zarządzania nimi, łączy je wspólna cecha - pakiety są kompresowane, a podczas instalacji rozpakowywane. KOMPILOWANIE JĄDRA OD PELCA Najlepiej źródła instalacji zamontować w momencie instalacji samego systemu każda dystrybucja Linux a posiada wydzieloną kategorię instalacyjną zawierającą: źródła systemu operacyjnego oraz zestaw narzędzi do kompilacji. Przykłady: Fedora w dystrybucji Fedora Core 3 ma kategorię Departament Tools (kompilatory i biblioteki) a źródła można zamontowac po zainstalowaniu systemu ze źródłowego pakietu.rpm (*.src.rpm) Slackware to kategorie: Linux Kernel Source (źródła jądra systemu) oraz Program Development (narzędzia umożliwiające kompilację jądra systemu). Ale gdy źródla nie zostaną zainstalowane z systemem, a trzeba rekompilować jądro systemu to najłatwiej pobrać jądro systemu z płyty instalacyjnej. By je zainstalować na komputerze zamontować płytę CD zawierającą źródła, a potem je zainstalować. Źródła jądra systemu dostępne na płycie instalacyjnej są w wersji: 1. *.rpm (gotowy pakiet instalacyjny), 2. albo skompresowane archiwum *.tar.gz, *.tgz, *.tar.bz2

Ad. 1. Jeśli źródła są w pakiecie instalujemy je za pomocą polecenia rpm instalacja pakietu 7 Wywołanie: rpm [opcja] plik_rpm Opcje: -i instalacja pakietu -e odinstalowanie pakietu (modyfikator - - nodeps wykorzystywany z opcją -e: pozwala na odinstalowanie pakietu bez względu na to, czy będą odkryte jego powiązania w innymi pakietami) -U aktualizacja (ang. Upgrade) pakietu. Ad. 2. Jeśli źródła są w skompresowanym archiwum: Wywołanie: tar [opcja] [nazwa archiwum] plik/katalog Tar to program rozpakowujący. Zawarte w nim opcje to kolejno: -c utworzenie archiwum, -x wydobywanie z archiwum, -r dodanie plików na koniec archiwum, -u aktualizacja plików w archiwum (będą dodane tylko nowsze wersje) -z - kompresja/dekompresja przez gzip (końcówka ".gz") -x - rozpakowanie plików z archiwum -v - wyświetla szczegóły związane z przetwarzanym plikiem tzw. tryb pracy jawnej (ang. verbose) -f - określa, który plik ma użyć -t wypisanie zawartości archiwum Aby rozpakować pliki tar.bz2, opcję -z zastępujemy opcją -j. Możemy także rozpakowywać źródła tylko do tara. W tym celu dla plików *.gz wpisujemy: # gunzip plik.tar.gz W wyniku otrzymamy czyste archiwum tar. Jest to także przydatne, kiedy mamy plik skompresowany samym gzipem. Aby w ten sam sposób rozpakować pliki *.bz2 wykonujemy: # bunzip2 plik.tar.bz2 Instalacja z płyty dystrybucji 1. Szukamy dodatkowych źródeł na płytach dystrybucji: pliki kernel-2.6.x-xxx.src.rmp 2. Plik znajduje się w katalogu, gdzie go zamontujemy 3. Instalujemy źródła pakietu: # pwd gdzie jesteśmy w katalogu # ls -l listing katalogów # rpm ivh kernel-2.6.x-xxx.src.rmp rozpakowywanie paczki będzie z

ostrzeżeniem # mv /usr/src/redhat/surces/ linux- kopiujemy w odpowiednie miejsce 2.6.18.2-34.tar.bz2 /usr/src # cd /usr/src Idziemy do tego katalogu # tar xjf linux-2.6.18.2-34.tar.bz2 Rozpakowujemy archiwum # ls -l Wyświetlamy zawartosć # cd linux-2.6.18.2-34 Idziemy do podkatalogu # ls # 8 Bardzo często są błędy kompilacji wynikające z tego, że wiele mechanizmów systemowych (wymagających wsparcia ze strony jądra, np. filtrowanie pakietów, kolejkowanie zadań) zakłada, że bieżące źródła jądra znajdują się w katalog /urs/src/linux a np. mogą być gdzie indziej w innym podkatalogu. ROZWIĄZANIE: tworzymi linka (dowiązanie symboliczne) o nazwie /usr/src/linux do katalogu /usr/src/linux-2.6.18.2-34 # ln s linux-2.6.18.2-34 linux gdzie opcja -s oznacza dowiązanie symboliczne (link miękki) i potem można traktować już jak katalog, czyli: #cd /usr/src/linux PROCES KOMPILACJI JĄDRA Powinien odbywać się z katalogu ze źródłami, czyli: /usr/src/ linux-2.6.18.2-34 i składa się z kilku etapów. Kolejne etapy to polecenie make z odpowiednim parametrem: 1 #make help Wyświetla pomoc zestaw parametrów make potrzebnych do kompilacji 2 #make mrproper Usuwa niepotrzebne pozostałości po poprzedniej kompilacji (np. obiekty) 3 #make menuconfig/ make xconfig Etap konfiguracji jądra w trybie tekstowym/graficznym 4 #make Właściwa kompilacja jądra 5 #make modules Etap kompilacji modułów 6 #make modules_install Etap instalacji modułów 7 #make install Etap instalacji skompilowanego jądra Ad 2. #make mrproper

9 Ad 3. #make menuconfig / make xconfig albo YaST graficzny najprościej (albo ręczne dłubanie w plikach dla maniaków)

10 Konfiguracja jądra jest podzielona na kategorie konfiguracyjne. Najczęściej używane: Code maturity Level options - opcje związane z elementami źródeł kodu jądra systemu operacyjnego, nad którymi trwają prace General setup - opcje związane z konfiguracją ogólną systemu, m.in. obsługa partycji SWAP, wsparcie dla komunikacji międzyprocesowe itp., Loadable module suport - opcje dotyczące wsparcia dla obsługi urządzeń w modułach Procesor type and features - opcje związane z konfiguracją procesora, m.in. rodzaj procesora, wieloprocesorowość itp. Power menagement options - opcje związane z zarządzaniem energią Bus options - opcje związane ze wsparciem różnych typów magistral systemowych Executable file formats - opcje związane ze wsparciem dla uruchamialnych plików binarnych Device drivers - zestaw opcji związanych z konfiguracją urządzeń I sterowników: kart sieciowych, urządzeń SCSI, RAID itp b. rozbudowane! File systems - opcje związane ze wsparciem dla róznych systemów plików Profiling suport - opcje dot. wsparcia tzw. Mechanizmu profilowania (analiza wydajnościowa i diagnostyka) jądra Kernel hacking - opcje związane z jądrem systemu m.in. dotyczące sposobu jego kompilacji Security options - opcje związane z bezpieczeństwem systemy, m.in. można ustawić zabezpieczenia na poziomie gniazd Cryptographic options - opcje dotyczące wsparcia API dla algorytmów szyfrowania (np. MD4, MD5) Library routines - zaawansowane mechanizmu dotyczące zgodności modułów mechanism CRC (Cycling Redundancy Check)

11 Load an Alternate Configuration File Save Configuration to an Alternate File - odczyt konfiguracji jądra z innego pliku niż domyślny (.config) - zapis konfiguracji jądra do innego pliku niż domyślny (.config) Zalecenia: - zmieniamy to, co konieczne! (najlepiej w obrębie kategorii konfiguracyjnej) - pewne oczywistości: nie ma Bluetooth a to można nie instalować - przykład: właczenie sterowników karty sieciowej: w Device Drivers sprawdzamy, jaki moduł jest odpowiedzialny za obsługę kart w systemie: polecenia lsmod np. pcnet32, szukamy go w nowej konfiguracji i ew. włączany opcję Opcje oznaczone są: Przy głównych opcjach konfiguracyjnych (np. obsługa kart ISA czy PCI): [ ] - brak obsługi [*] - obsługa mechanizmu/urządzenia włączona w jądro Opcje szczegółowe (konkretna karta ISA lub PCI): < > - obsługa opcji wbudowana w jądro systemu < > - brak obsługi <M> - obsługa opcji w module jądra ładowalnym ręcznie lub dynamicznie przez jądro jeśli jest taka potrzeba mechanizm działa tylko wtedy, gdy odpowiedni moduł znajduje się w pamięci. Włączenie opcji w jądro => zwiększenie jego rozmiaru => mniej wydajna praca! czyli ile się da ładować poprzez moduły Domyślne ustawienia opisane w pliku: /boot/config_2.6.18 -default My sobie możemy BlueTooth a i IRDĘ wyłączyć O ładowaniu modułów: urządzenie obsługiwane przez moduły działa tylko wtedy, gdy moduł znajduje się w pamięci, Załadowanie modułu do pamięci możliwe jest na 3 sposoby: 1. poleceniem ismod to bezwzględne ładowanie modułu podanego jako argument i nie zawsze uruchomi obsługę urządzenia bo często moduły ze sobą współpracują i do obsługi jednego potrzebne są inne 2. polecenie modprobe POLECANY! Bo modprobe sprawdzi, czy do poprawnej pracy urządzenia obsługiwanego przez ładowalny moduł nie jest konieczne uruchomienie dodatkowych modułów, jeśli tak: to zostaną one automatycznie uruchomione wraz z żądanym modułem 3. najlepiej -> gdy moduł jest ładowany do pamięci dopiero wtedy, gdy urządzenie jest faktycznie wykorzystywane: można to zrealizować poleceniem /etc/modules.conf, w którym można zapisać, jaki moduł powinien być uruchamiany przy wykorzystaniu danego urządzenia zgodnie ze składnią: alias nazwa_urządzenia nazwa_modułu np. alias eth0 pcnet32

Ad 4. #make Kompilacja jądra 12 Po wybraniu składników zachować konfigurację i przejść do etapu właściwej kompilacji i instalacji jądra i modułów (kompilacja dłuuuugo trwa ). Ad 5. #make modules #make modules_install Utworzone jądro nie będzie pracowało poprawnie zacznie gdy zostaną utworzone moduły do obsługi urządzeń przewidzianych do obsługi w modułach. Potrzebne jest: make modules (spowoduje skompilowanie modułów) i make module_install (spowoduje instalację modułów). Ad 6. #make install Instalacja jądra Proces instalacji składa się z 2 etapów: a) utworzenia obrazu jądra (pliku: vmlinuz w /boot) b) aktualizacji konfiguracji programu ładującego system (GRUB ew. LILO kiedyś LInux LOad) Ad a) polecenie #make install w katalogu /boot tworzy obraz jądra o nazwie vmlinuz-2.6.18. i do tego katalogu zostanie przeniesiony plik /usr/src/linux-2.6.18../system.map Potem można sobie pooglądać, co jest w /boot polecenie ls l Ad b) teraz już po wykonaniu make install, można zmodyfikować plik konfiguracyjny GRUB tak, by mógł uruchomić system z wykorzystaniem nowego jądra. automatycznie modyfikowany jest plik /etc/grub.conf standardową zawartość można zmodyfikować zgodnie w wytycznymi wykomentowane na początku pliku xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Instalacja ze źródeł: configure i makefile Aby zrozumieć i zapamiętać instalację ze źródeł, musisz najpierw poznać istotę dwóch plików: configure i makefile. Ten pierwszy sprawdza, czy w systemie zainstalowane są wymagane biblioteki lub programy, co ustrzeże Cię przed błędami kompilacji. Innym ważnym plikiem jest wspomniany makefile. To on przeprowadza cały proces kompilacji programu. Dzieli się przeważnie na trzy części: make - sekcja kompilująca źródła install - sekcja instalująca skompilowane pliki uninstall - sekcja odinstalowująca pliki zainstalowane

Tak więc, jeśli w katalogu znajduje się plik configure, to od niego powinniśmy zacząć proces instalacji. Dostępne jego opcje, widoczne są po uruchomieniu go z argumentem -h lub help. Przed instalacją możemy więc określić interesujące nas opcje. Po pomyślnym wykonaniu się skryptu configure, możemy przejść do etapu kompilacji, wydajemy więc polecenie make. Gdy i to wykona się pomyślnie, możemy zainstalować skompilowany już program poleceniem make install. Po chwili mamy go na dysku. Abyś w przyszłości mógł odinstalować oprogramowanie, musisz zachować jego źródła Make bowiem zapisuje informacje co zostało przekompilowane i gdzie skopiowane. Katalog możesz spokojnie jednak spakować i wrzucić na płytę, a gdy stwierdzisz, że program nie jest Ci już potrzebny, wystarczy, że rozpakujesz zachowane źródła i wpiszesz: make uninstall Gdy brakuje pliku configure, tzn. nie zamieszczono go, bardzo prawdopodobne jest, że ściągnięte archiwum, to nie źródła, lecz plik binarne. Jeżeli jest makefile, wystarczy, że wpiszemy make lub make install, a pliki skopiują się do odpowiednich katalogów. Inną sytuacją jest całkowity brak configure i makefile. Jest to typowe dla dużych programów zajmujących po kilkadziesiąt, kilkaset MB. Przykładem może być tu świetny pakiet biurowy OpenOffice.org. Nieopłacalne byłoby jego kompilowanie, więc autorzy stwierdzili, że lepiej będzie rozprowadzanie go domyślnie w formie binarnej (oczywiście kod źródłowy dostępny jest na oficjalnej stronie projektu). Dołączają jednak plik instalacyjny setup, który po prostu uruchamiamy, tak jak już wcześniej to omawiałem. Często do tego typu programów dołączany jest także skrypt Basha, będący zazwyczaj pod nazwą install.sh. Sposób instalacji jest identyczny jak w wyżej wymienionym OpenOffice.org. Instalacje pakietów dla poszczególnych dystrybucji jest wiele prostsza, niż instalacja programów ze źródeł. Ja jednak nie będę opisywał dokładnie tego procesu. Wszystkie dostępne opcje możemy uzyskać uruchamiając program zarządzający pakietami z argumentem -h lub -help. RPM: rpm -i nazwa_pakietu.rpm - instalacja rpm -q nazwa_pakietu.rpm- wyświetla informacje o pakiecie rpm -r nazwa_pakiety.rpm - usunięcie DEB: dpkg -i nazwa_pakietu.deb - instalacja apt-get remove nazwa_pakietu.deb - usunięcie dpkg info nazwa_pakietu.deb - wyświetla informacje o pakiecie dpkg reconfigure nazwa_pakietu.deb - ponowna konfiguracja pakietu dpkg list nazwa_pakietu.deb - wyświatlenie listy pakietów o podanym wzorcu nazwy dpkg unpack nazwa_pakietu - rozpakowanie pakietu 13

TGZ: installpkg nazwa_pakietu.tgz - instalacja removepkg nazwa_pakietu.tgz - usunięcie 14 Jak wcześniej wspomniałem - aby uzyskać wszystkie dostępne opcje, uruchom program zarządzający z argumentem -h lub -help. Alternatywnym rozwiązaniem jest zajrzenie do podręcznika systemowego, gdzie znajdziemy szczegółowy opis każdej funkcji (czytaj na końcu dokumentu). Nie każdy jednak na początku chce instalować programy przy pomocy powłoki. Dlatego też istnieją graficzne programy, które ułatwią nam to zadanie. Chyba najlepszym wyborem na początek będzie kpackage. Kpackage to narzędzie dostępne wraz ze środowiskiem KDE. Służy do instalowana pakietów RPM, DEB TGZ Slackwara, a nawet pakiety rodziny BSD. Zaraz po starcie programu ujrzymy dwa okna - listę pakietów oraz okno informacji o danym pakiecie. Na bocznym pasku znajdziemy takie przyciski, jak Znajdź pakiet, Znajdź plik, Rozwiń drzewo i Zwiń drzewo. Dodatkowo okno z listą podzielone jest na zakładki, dzięki czemu szybko sprawdzimy, jakie pakiety są zainstalowane, jakie nowe, a jakie aktualizowane. By zainstalować pakiet należy po prostu na niego kliknąć. W oknie obok pokaże się informacja o pakiecie a niżej podświetli się przycisk instalacji. Po jego wciśnięciu zostaniemy oczywiście zapytani o hasło roota. Kpackage daje nam możliwość instalowania także wielu pakietów na raz. W tym cely należy klikać na pola obok pakietów. Na ich miejscu ujrzymy "V", co oznacza, że pakiet jest zaznaczony. Teraz wystarczy nacisnąć Zainstaluj zaznaczone, pod listą pakietów. Kpackage to wygodne narzędzie, które idealnie nadaje się dla osób początkujących. Istnieją także inne programy, które są pisane wraz z systemem pakietów, i tak w Debianie mamy APT oraz Dsececta, a w Slackware PKGTool. http://newbie.linux.pl/?id=article&show=108 Wykonywanie (Executable Protections) Randomized PIDs (CONFIG_GRKERNSEC_RANDPID) Ta opcja powoduje, że nowe procesy otrzymują pseudo-losowe identyfikatory (normalnie, po prostu kolejne). Zapobiega to przed "odgadnięciem" PIDa określonej aplikacji (np demona), przez włamywacza. Polecane jest używanie tej opcji razem z Proc restrictions.