Programowanie Systemów Wbudowanych Główny system plików Linux Iwona Kochańska Katedra Systemów Elektroniki Morskiej WETI PG March 22, 2017
Elementy wbudowanego OS Linux Toolchain kompilator i inne narzdzia do tworzenia kodu dla urzadzeń Bootloader inicjalizuje platform sprzętowa oraz ładuje jadro systemu Kernel serce systemu, zarzadza zasobami i komunikuje się ze sprzętem Root filesystem GUT Intel 2015/16 2/72 biblioteki i programy uruchamiane w systemie
Uruchamianie systemu Linux GUT Intel 2015/16 3/72
Initramfs Jadro szuka głównego systemu plików, którym może być: initramfs obraz systemu plików podany jako root= w linii poleceń jadra initramfs - skrót od "initial RAM file system", następca "initial ramdisk" poczatkowy system plików, który jest ładowany do pamięci podczas procesu uruchamiania systemu Linux. kompletny zestaw katalogów, które można znaleźć w głównym systemie plików. jedynym celem initramfs jest zamontowanie głównego systemu plików. W czasie rozruchu program ładujacy ładuje jadro i obraz initramfs do pamięci i uruchamia jadro. Jadro sprawdza obecność initramfs i, jeśli znaleziono, zamontuje ja jako / i uruchamia / init. Program init jest zazwyczaj skryptem powłoki. GUT Intel 2015/16 4/72
Initramfs kiedy tak naprawdę potrzebny jest initramfs? kiedy system plików ładowany jest z sieci ładowanie systemu plików z woluminu logicznego LVM szyfrowany główny system plików (wymagane jest podanie hasła) GUT Intel 2015/16 5/72
Po uruchomieniu jadra... Jadro wykonuje program, którym domyślnie jest: /init dla initramfs, /sbin/init dla zwykłego systemu plików Program init uruchamiany jest z uprawnieniami root-a. Jest to pierwszy proces w systemie operacyjnym, więc otrzymuje PID 1 Jeśli init nie może zostać uruchomiony, wystapi kernel panic Po procesie init dziedzicza wszystkie inne procesy w systemie GUT Intel 2015/16 6/72
Zadania programu-demona init Init zarzadza cyklem życia OS, od uruchomienia do zamknięcia: Podczas rozruchu systemu - uruchamia programy-demony i konfiguruje parametry systemu Adoptuje osierocone procesy (w wyniku nagłego zamknięcia procesu-rodzica i braku innych procesów w grupie watków) Odpowiada na nagłe zamknięcie procesów-dzieci poprzez przechwycenie sygnału SIGCHLD (zapobieganie tworzeniu procesów-zombie) Uruchamia ponownie programy-demony Obsługuje proces zamykania OS [opcjonalnie] uruchamia program-demon getty w terminalach, który umożliwia logowanie GUT Intel 2015/16 7/72
Pojęcia demon - program lub proces, wykonywany wewnatrz środowiska systemu operacyjnego, bez konieczności interakcji z użytkownikiem. proces-zombie - wpis w tablicy procesów opisujacy program, którego wykonanie w systemie operacyjnym zostało zakończone, ale którego zamknięcie nie zostało jeszcze obsłużone przez proces rodzica. Termin ten odnosi się zazwyczaj do systemów z rodziny Unix, gdzie pozostawienie wpisu zombie tymczasowo zajmujacego pozycję w tablicy procesów zapobiega ponownemu wykorzystaniu danego PID-a. Wpisy takie nie daja się wyeliminować poleceniem kill, czemu prawdopodobnie zawdzięczaja swoja nazwę. W przypadku zakończenia także procesu rodzica, w wielu architekturach pozostawione przez niego zombie sa obsługiwane automatycznie przez dziedziczacy po nim proces init lub przez system operacyjny. GUT Intel 2015/16 8/72
Główny system plików: root filesystem Jadro OS ma do dyspozycji główny system plików jako: ramdisk - obszar komputerowej pamięci RAM, który jest wykorzystywany w roli pamięci dyskowej. Przekazany przez bootloader jako wskaźnik. urzadzenie blokowe zamontowane w linii poleceń jadra poprzez parametr root= Po zamontowaniu głównego systemu plików jadro uruchamia pierwszy program: init Program init rozpoczyna przetwarzanie skryptów i uruchamia inne programy poprzez wywołania funckji biblioteki, które z kolei dokonuja wywołań systemowych GUT Intel 2015/16 10/72
Główny system plików - minimum init: uruchamia pierwsze skrypty i programy powłoka (shell): środowisko do wykonywania skryptów oraz linia poleceń użytkwonika demony (daemons): programy uruchamiane w tle biblioteki (libraries): statyczne i współdzielone pliki konfiguracyjne: jako pliki tekstowe ASCII, zwykle w /etc GUT Intel 2015/16 11/72
Główny system plików - minimum węzły urzadzeń (device nodes): pliki specjalne umożliwiajace dostęp do sterowników urzadzeń /proc i /sys: wirtualne systemy plików reprezentujace dane jadra OS moduły jadra (kernel modules): zwykle w /lib/modules/[kernel version].... oraz programy realizuj ace oczekiwane funkcjonalności systemu wbudowanego. GUT Intel 2015/16 12/72
Organizacja katalogów System operacyjny nie wymaga specjalnej organizacji plików i katalogów (poza nazwa programu init= i rdinit=) Takiej specjalnej organizacji moga jednak oczekiwać uruchamiane programy Filesystem Hierarchy Standard (FHS) - standard definiuj acy rozmieszczenie plików i katalogów w systemach operacyjnych z rodziny Linux i Unix. GUT Intel 2015/16 13/72
Organizacja katalogów /bin: podstawowe pliki wykonywalne (binaries) dostępne dla wszystkich użytkowników (np. cat, ls, cp). /dev: pliki urzadzeń /etc: pliki konfiguracji OS /lib: biblioteki dla programów z katalogów /bin/ i /sbin/. /proc: wirtualny system plików proc informuj acy o stanie systemu i poszczególnych procesów, w większości pliki tekstowe (np. network). GUT Intel 2015/16 14/72
Organizacja katalogów /sbin: Pliki wykonywalne do zarzadzania systemem (system binaries; np. init, route, ifup). /sys: wirtualny system plików sysfs /tmp: pliki tymczasowe, których stan nie jest gwarantowany po zamknięciu systemu. /usr: tzw. drugorzędowa hierarchia dla danych (Unix system resources), dane tylko do odczytu. Powinnien zawierać co najmniej katalogi: /usr/bin, /usr/lib i /usr/sbin. Może być zamontowany na innej partycji niż główny system plików. /var: pliki często ulegaj ace zmianom (variable files) podczas działania OS, takie jak: logi, bazy danych, tymczasowe pliki e-mail. GUT Intel 2015/16 15/72
Katalog podstawowy (staging directory) Utworzenie katalogu podstawowego na komputerze host-a GUT Intel 2015/16 16/72
Prawa dostępu do plików Każdy proces (uruchomiony program) należy do określonego użytkownika oraz grupy użytkowników Użytkownik 32-bitowy identyfikator user ID (lub UID) informacja o użytkownikach jest przechowywana w /etc/passwd Grupa to 32-bitowy identyfikator group ID (lub GID) informacja o grupach jest przechowywana w /etc/group GUT Intel 2015/16 17/72
Prawa dostępu do plików Użytkownik główny (root user): UID = 0 nazywany również super-użytkownikiem (super-user) ma wszelkie prawa do wszystkich zasobów OS Grupa główna (root group): GID = 0 Bezpieczeństwo w systemach Linux to zarz adzanie uprawnieniami użytkowników i ograniczanie dostępu do konta root-a GUT Intel 2015/16 18/72
Prawa dostępu do plików Każdy plik i katalog ma swojego właściciela i grupę Poziom dostępu różnych użytkowników do zasobów - zbiór flag (access permission flags, mode of the file): trzy grupy po trzy bity: wartości grupy bitów: read (r), write (w), execute (x) GUT Intel 2015/16 19/72
Prawa dostępu do plików Dodatkowa grupa 3 bitów: SUID (4): pozwala na uruchomienie pliku wykonywalnego z prawami właściciela tego pliku często ustawiana flaga daje użytkownikowi tymczasowe prawo używania praw root-a SGID (2): pozwala na uruchomienie pliku wykonywalnego z prawami grupy tego pliku Sticky (1): plik może być usunięty lub przemianowany tylko przez właściciela pliku lub katalogu, lub jeśli proces ma prawo ich modyfikacji. często stosowany w katalogach: /tmp i /var/tmp, do których dostęp moga mieć wszyscy użytkownicy systemu wyklucza usuwanie przez użytkowników plików do nich nienależacych GUT Intel 2015/16 20/72
Prawa dostępu do plików Polecenie chmod - ustawienie uprawnień Przykład: ustaw SUID dla /bin/ping GUT Intel 2015/16 21/72
Prawa dostępu do plików w ścieżce głównej Prawa dostępu do plików, które będa umieszczone na platformie docelowej: wrażliwe zasoby - tylko dostęp dla root-a programy uruchamiane z prawami zwykłego użytkownia - w razie ataku z zewnatrz umożliwia one dostęp do ograniczonych zasobów przykład: Plik urzadzenia /dev/mem umożliwia dostęp do pamięci. Powinien więc być własnościa root-a w trybie 600 (brak praw odczytu i zapisu dla wszystkich poza właścicielem) GUT Intel 2015/16 22/72
Programy głównego systemu plików: init Program init Pierwszy uruchamiany program ( PID 1 ). Uruchamiany jako własność root-a (potrzebny szeroki dostęp do zasobów platformy) Uruchamia skrypty powłoki, które uruchamiaja demony (programy działajace w tle, bez komunikacji z terminalem) GUT Intel 2015/16 23/72
Programy głównego systemu plików: powłoka (shell) Programy powłoki (shell): Uruchamia skrypty i obsługuje linię poleceń Przekazuja informacje między programami Przydatne w procesie rozwoju, debugowania, testowania Raczej nie przydatne w gotowym urzadzeniu GUT Intel 2015/16 24/72
Programy głównego systemu plików: powłoka (shell) Programy powłoki: bash (Bourne-Again Shell) - jedna z najpopularniejszych powłok systemów uniksowych. Domyślna w: większości dystrybucji systemu GNU/Linux systemie OS X od wersji 10.3 środowisku Cygwin dla systemów Win32. ash (The Almquist shell): systemy BSD. dużo mniejsza niż bash popularna w systemach wbudowanych obecna w BusyBox hush: bardzo mała powłoka (dla programów rozruchowych). przydatna w systemach o bardzo małej pamięci obecna w BusyBox Zawsze testów skrypty powłoki na maszynie docelowej! GUT Intel 2015/16 25/72
Programy głównego systemu plików: narzędzia (utlilities) Programy narzędziowe: sprawiaja, że powłoka jest użyteczna w minimalnej, podstawowej wersji systemu plików jest co najmniej 50 programów narzędziowych problem z kompilacja każdego z nich problem z rozmiarem plików wykonywalnych GUT Intel 2015/16 26/72
BusyBox BusyBox - projekt zrealizowany w 1996 roku przez Bruce Perens, który zbudował instalacje Debiana mieszczac a się na dyskietce 1.44 MB korzysta z zasady 80:20 (80% najbardziej potrzebnej funkcjonalności implementowane jest jako 20% kodu) łaczy funkcje podstawowych narzędzi Uniksa w jednym pliku wykonywalnym. używany w zastępstwie pakietu GNU Coreutils w małych, jednodyskietkowych lub wbudowanych dystrybucjach Linuksa. działanie programu jest zależne od tego pod jaka nazwa zostanie wywołany. "uniwersalny scyzoryk dla wbudowanego Linuksa". GUT Intel 2015/16 27/72
BusyBox zbiór apletów, każdy z nich udostępnia swoja funkcjonalność jako: [applet]_main. Przykład: polecenie: cat Składnia: implementacja: coreutils/cat.c $ busybox cat m y _ f i l e. t x t aplet: cat-main Polecenie busybox bez parametrów - lista dostępnych apletów GUT Intel 2015/16 28/72
BusyBox BusyBox ma ponad 300 apletów, w tym: program init kilka programów powłoki narzędzia do większości zadań administracyjnych prosty edytor vi Typowa instalacja BusyBox: pojedynczy program z linkami symbolicznymi dla każdego apletu. GUT Intel 2015/16 30/72
Budowanie BusyBox Budowanie BusyBox te same narzędzia Kconfig i Kbuild co dla jadra systemu Źródła: Domyślna konfiguracja: Uruchomienie make menuconfig - dopasowanie konfiguracji Ustawienie ścieżki instalacji (głównego katalogu) - Busybox Settings Installation Options (CONFIG_PREFIX) GUT Intel 2015/16 31/72
Building BusyBox Kompilacja skrośna: wynik - plik wykonywalny busybox. np. przy domyślnej konfiguracji dla ARM v7 - rozmiar 900 kb Instalacja: : Plik wykonywalny zostanie skopiowany do ścieżki określonej przez CONFIG_PREFIX i utworzone zostana linki symboliczne (odpowiadajace narzędziom powłoki) GUT Intel 2015/16 32/72
Główny system plików - biblioteki Jeśli programy używaja bibliotek współdzielonych, ich kopie musza się znaleźć w katalogu głównym dla platformy docelowej Skad wiadomo które? Można skopiować wszystkie, ale: pełna glibc jest duża (dziesiatki MB) można wykorzystać uclibc lub Musel libc Sprawdzenie, które biblioteki sa potrzebne - odczytanie nagłówka ELF, opisujacego sposób organizacji pliku. Narzędzie readelf: GUT Intel 2015/16 33/72
Główny system plików - biblioteki Sprawdzenie katalogu głównego: Można go zapamiętać w zmiennej SYSROOT: Sprawdzenie powiazań dla /lib/ld-linux-armhf.so.3: Itd... Wszystkie linki symboliczne oraz pliki powinny być skopiowane do katalogów platformy docelowej GUT Intel 2015/16 34/72
Główny system plików - biblioteki Jak ograniczyć rozmiar bibliotek? Biblioteki i programy sa często kompilowane z tablica symboli dla debugera (opcja -g) Wyczyszczenie plików z tablic symboli pozwala zaoszczędzić miejsce: Czyszczenie modułów jadra - z opcja strip-unneeded GUT Intel 2015/16 35/72
Pliki urzadzeń (device nodes) W systemach Unix wszystko jest plikiem - poza interfejsami sieciowymi, które sa gniazdami (sockets) Większość urzadzeń reprezentowanych jest w systemie jako pliki (device nodes) Plik device node może dotyczyć: urzadzenia blokowego (block device) - urzadzenia pamięci masowej typu karty SD, dyski twarde urzadzenia znakowego (character device) - wszystkie pozostałe urzadzenia (poza interfejsami sieciowymi) Lokalizacja plików urz adzeń: /dev Przykład: port szeregowy - plik /dev/ttys0 GUT Intel 2015/16 36/72
Pliki urzadzeń (device nodes) Pliki urzadzeń tworzone sa za pomoca programu mknod (skrót od make node): name - nazwa pliku type - typ urzadzenia: c - znakowe, b - blokowe major number i minor number - używane przez jadro do łaczenia pliku urzadzenia z plikiem sterownika lista numerów: Documentation/devices.txt. Pliki urzadzeń moga być tworzone: ręcznie za pomoca polecenia mknod automatycznie (podczas działania systemu) za pomoca jednego z programów typu device managers GUT Intel 2015/16 37/72
Pliki urzadzeń Do uruchomienia BusyBox potrzebne sa tylko 2 pliki urzadzeń: console - dostępna dla root-a (właściciela pliku urzadzenia) - uprawnienia ustawione na 600. null - odczyt i zapis dla wszystkich - uprawnienia ustawione na 666 Ustawienie trybu pliku podczas jego tworzenia: opcja -m dla polecenia mknod Usunięcie pliku urzadzenia - standardowe polecenie rm GUT Intel 2015/16 38/72
Wirtualny system plików proc i sysfs proc i sysfs - wirtualne systemy plików umożliwiajace kontrolę pracy jadra dane jadra usystematyzowane sa jako hierarchiczne pliki odczyt pliku formatowanego w locie przez funkcje jadra możliwy jest zapis do niektorych plików -> wołanie funkcji jadra z nowymi danymi montowane w katalogach /proc i /sys: GUT Intel 2015/16 39/72
Wirtualny system plików proc proc - część systemu Linux od zawsze pierwotne przeznaczenie - przekazywanie informacji o procesach do przestrzeni użytkownika dla każdego procesu - katalog /proc/<pid> z informacja o jego stanie ps - szybka informacja o działajacych procesach /proc/cpuinfo - informacja o CPU /proc/interrupts - informacja o przerwaniach /proc/sys - pliki do obserwacji i zarzadzania stanem procesór jadra, pamięcia i siecia man page proc - pomoc (dokumentacja) GUT Intel 2015/16 40/72
Wirtualny system plików sysfs sysfs - od wersji Linux 2.6 informacje o systemie w bardziej zorganizowanej formie wiele plików zorganizowanych w drzewo katalogów GUT Intel 2015/16 41/72
Montowanie systemu plików Polecenie mount - umożliwia dołaczenie systemu plików do już istniejacej ścieżki Przykład: Główny system plików (root filesystem) - system plików na szczycie drzewa, montowany przez jadro OS podczas uruchamiania Montowanie systemu plików proc polecenie mount wymaga podania pliku urzadzenia, a taki nie istnieje dla proc można podać dowolna nazwę pliku urzadzenia. Przykład - dwa polecenia daja ten sam skutek: GUT Intel 2015/16 42/72
Moduły jadra Moduły jadra - instalowane w głównym systemie plików za pomoca polecenia make modules_install Moduły (wraz z plikami konfiguracyjnymi dla polecenia modprobe) kopiowane sa do katalogu /lib/modules/<kernel version> W ten sposób tworzone jest powiazanie między jadrem a głównym systemem plików Aktualizacji j adra zawsze powinna towarzyszyć aktualizacja systemu plików! GUT Intel 2015/16 43/72
Przenoszenie systemu plików na platformę docelowa Przeniesienie głównego systemu plików do katalogu głównego na platformie docelowej ramdisk: obraz systemu plików ładowany do RAM przez program rozruchowy łatwy do utworzenia, bez powiazań (np. do bibliotek współdzielonych) używany podczas aktualizacji głównego systemu plików (lub jego awarii) wczesna przestrzeń użytkownika w dystrybucjach Linux w małych systemach wbudowanych może być głównym systemem plików skompresowany ramdisk zajmuje bardzo mała ilość pamięci RAM zawartość ramdisk jest ulotna - dane stałe (np. konfiguracja) powinny być przechowywane w inny sposób GUT Intel 2015/16 44/72
Przenoszenie systemu plików na platformę docelowa Przeniesienie głównego systemu plików do katalogu głównego na platformie docelowej obraz dyskowy (disk image): kopia głównego systemu plików przykłady obraz w formacie ext4 kopiowany z karty SD obraz w formacie jffs2 ładowany do pamięci flash przez bootloader jest to najbardziej popularny sposób przenoszenia systemu plików GUT Intel 2015/16 45/72
Tworzenie rozruchowego ramdisk Podczas rozruchu systemu Linux uruchamiany jest ramdisk rozruchowy (initial RAM filesystem, initramfs) Format cpio - stary format archiwum Unix, podobny do TAR i ZIP, ale łatwiejszy w dekodowaniu Do obsługi initramfs potrzebne jest ustawienie CONFIG_BLK_DEV_INITRD w jadrze Sposoby tworzenia rozruchowego ramdisk: samodzielne archiwum cpio - najbardziej elastyczny sposob, ale nie wszystkie programy rozruchowe umożliwiaja załadowanie niezależnego ramdisk, archiwum cpio wbudowane w jadro jako tabela urzadzeń przetwarzana przez jadro GUT Intel 2015/16 46/72
Samodzielny ramdisk Utworzenie kopii systemu plików, skompresowanie i dodanie nagłówka U-Boot: Oszacowanie rozmiaru: uramdisk file - 2.9 MiB (bez plików jadra) zimage file - 4.4 MiB U-Boot - 440 KiB = potrzeba 7.7 MiB by uruchomić platformę GUT Intel 2015/16 47/72
Samodzielny ramdisk Jeśli rozmiar jest problemem: Zmniejsz jadro (przez usunięcie niepotrzebnych sterowników i funkcji) Zmniejsz BusyBox (przez usunięcie niepotrzbnych narzędzi) Skompiluj BusyBox statycznie Użyj uclibc lub musl libc zamiast glibc GUT Intel 2015/16 48/72
Uruchamianie ramdisk Uruchomienie powłoki (interakcji z urzadzeniem): dodanie r d i n i t =/ bin / sh do linii poleceń jadra i rozruch Przykład: Montowanie proc - poprzez skrypt (przekazany jako parametr do rdinit=) GUT Intel 2015/16 49/72
Wbudownie archiwum cpio w jadro systemu Jeśli program rozruchowy nie potrafi załadować samodzielnego ramdisk Konfiguracja jadra: ustawienie opcji CONFIG_INITRAMFS_SOURCE na ścieżkę do archiwum cpio Menuconfig - General setup Initramfs source file. Archiwum musi mieć czysty format.cpio (nie wersja gzip) Budowa jadra (będzie miało większy rozmiar) GUT Intel 2015/16 50/72
Wbudownie archiwum cpio w jadro systemu Uruchomienie na platformie docelowej: Zawsze gdy zmienia się ramdisk trzeba przebudować jadro! GUT Intel 2015/16 51/72
Program Init w głównym systemie plików Istnieje wiele programów init, jeden z nich zawarty jest w BusyBox init rozpoczyna działanie od przeczytania pliku konfiguracyjnego /etc/inittab pierwsza linia inittab - uruchomienie skryptu powłoki rcs druga linia inittab - wyświetlenie komunikatu Please press Enter to activate this console w konsoli i rozpoczęcie działania powłoki po Enter - przed /bin/ash - powłoka logowania (czyta /etc/profile i $HOME/.profile) GUT Intel 2015/16 52/72
Konfiguracja kont użytkowników Zła praktyka: uruchamianie wszystkich programów jako root Dobra praktyka: używanie kont użytkowników o ograniczonych przywilejach, kiedy tylko to możliwe Konfiguracja kont użytkowników: /etc/passwd Jeden użytkownik = jedna linia w pliku: nazwa (login) hasło (lub x jeśli hasło jest w /etc/shadow) UID GID komentarz (może być pusty) ścieżka domowa GUT Intel 2015/16 53/72
Konfiguracja kont użytkowników Przykład: pierwsza linia - root (UID 0), druga linia - daemon (UID 1): ustawienie /bin/false dla użytkownika daemon - brak możliwości logowania w powłoce Programy czytaja plik /etc/passwd - problem z bezpieczeństwem haseł! Hasła mog a być przechowywane w /etc/shadow (dostępnym tylko dla root-a) GUT Intel 2015/16 54/72
Konfiguracja grup użytkwoników Grupy użytkowników - plik /etc/group. Format: Przykład: nazwa grupy hasło (x jeśli grupa nie ma hasła) GID opcjonalnie - lista użytkowników należacych do grupy GUT Intel 2015/16 55/72
Dodanie użytkowników do głównego systemu plików Dodanie etc/passwd, etc/shadow (permission 600) i etc/group do głównego katalogu program init czyta plik /etc/inittab inittab restartuje getty po zakończeniu terminala powłoki getty - program do obsługi procedury logowania (część BusyBox) GUT Intel 2015/16 56/72
Uruchomienie procesu demona Przykład: syslogd (zbiera logi od innych programów, głównie demonów) Uruchomienie demona - dodanie linii do etc/inittab: respawn - jeśli program zakończy działanie, automatycznie uruchom go ponownie -n - uruchom jako proces w tle Log zapisywany jest w /var/log/messages. GUT Intel 2015/16 57/72
Konfiguracja sieci Podstawowa konfiguracja sieci - dla interfejsu Ethernet (eth0) i prostej konfiguracji IP v4 BusyBox ifup/ifdown - wystarczajace do najprostszych przypadków Główna konfiguracja sieci jest przechowywana w /etc/network/interfaces. Niezbędne lokalizacje w głównym katalogu: GUT Intel 2015/16 58/72
Konfiguracja sieci etc/network/interfaces dla statycznego IP : etc/network/interfaces dla dynamicznego IP otrzymanego od DHCP: udchpcd - klient DHCP (BusyBox). Potrzebuje skryptu /usr/share/udhcpc/default.script Domyślna konfiguracja: examples//udhcp/simple.script. GUT Intel 2015/16 59/72
Sieciowe składniki dla glibc glibc używa name service switch (NSS) do kontrolowania sposobu tlumaczenia nazw w numery identyfikowane w sieci: nazwy użytkowników -> UID przez plik /etc/passwd; usługi sieciowe ->numery portów przez plik /etc/services Konfiguracja - /etc/nsswitch.conf Wszystkie tłumaczenia odbywaja się przez odpowiednie pliki w /etc (nazwy hostów - dodatkowo z DNS) /etc/hosts powinien zawierać co najmniej adres localhost: GUT Intel 2015/16 60/72
Sieciowe składniki dla glibc Biblioteki, które obsługuja tłumaczenie nazw: pluginy ładowane na podstawie zawartości nsswitch.conf, nie pokazuja się w zależnościach po wywołaniu readelf Dla platformy docelowej - skopiuj je z katalogu głównego: GUT Intel 2015/16 61/72
Umieszczenie głównego systemu plików na karcie SD Montowanie systemu plików z urzadzenia blokowego (karta SD) na pierwszej partycji SD znajduja się pliki do rozruchu (np. MLO i u-boot.img) Po umieszczeniu karty w slocie urzadzenia, ustaw linię poleceń jadra na root=/dev/mmcblk0p2 Sekwencja rozruchowa: GUT Intel 2015/16 65/72
Montowanie głównego systemu plików z NFS Montowanie systemu plików z sieci (podczas rozwoju oprogramowania): daje dostęp do praktycznie nieskończonych zasobów aktualizacje wykonywane na maszynie hosta sa od razu dostępne na urzadzeniu docelowym Konfiguracja jadra: ustawiona opcja CONFIG_ROOT_NFS. Linia polecen jadra: r o o t =/ dev / nfs Sczegóły NFS: n f s r o o t =<host ip >: < root d i r > Konfiguracja interfejsu sieciowego, aby był dostępny podczas rozruchu (przed uruchomieniem programu init): i p =< t a r g e t ip > GUT Intel 2015/16 66/72
Montowanie głównego systemu plików z NFS Instalacja i konfiguracja serwera NFS na maszynie hosta: $ sudo apt get i n s t a l l nfs kernel server Restart serwera: $ sudo / etc / i n i t. d / nfs kernel server r e s t a r t Documentation/filesystems/nfs/nfsroot.txt. GUT Intel 2015/16 67/72
Montowanie głównego systemu plików z NFS Testowanie na maszynie docelowej: Komendy w linii polecen U-Boot: setenv s e r v e r i p 192.168.1.1 setenv ipaddr 192.168.1.101 setenv npath [ path to staging d i r e c t o r y ] setenv bootargs console=ttyo0,115200 r o o t =/ dev / nfs rw n f s r o o t =$ { s e r v e r Załadowanie jadra i drzewa urzadzeń z karty SD: f a t l o a d mmc 0:1 0x80200000 zimage f a t l o a d mmc 0:1 0x80f00000 am335x boneblack. dtb bootz 0x80200000 0x80f00000 GUT Intel 2015/16 68/72
Porównanie systemów plików Procesor: Intel Pentium 4 3,2 GHz HT, Pamięć: 256 MB + 512 MB DDR 333 MHz, System operacyjny: Linux Ubuntu 9.10 LTS GUT Intel 2015/16 69/72 źródło: www.benchmark.pl
Porównanie systemów plików Procesor: Intel Pentium 4 3,2 GHz HT, Pamięć: 256 MB + 512 MB DDR 333 MHz, System operacyjny: Linux Ubuntu 9.10 LTS GUT Intel 2015/16 70/72 źródło: www.benchmark.pl
Porównanie systemów plików Procesor: Intel Pentium 4 3,2 GHz HT, Pamięć: 256 MB + 512 MB DDR 333 MHz, System operacyjny: Linux Ubuntu 9.10 LTS GUT Intel 2015/16 71/72 źródło: www.benchmark.pl
Porównanie systemów plików Procesor: Intel Pentium 4 3,2 GHz HT, Pamięć: 256 MB + 512 MB DDR 333 MHz, System operacyjny: Linux Ubuntu 9.10 LTS GUT Intel 2015/16 72/72 źródło: www.benchmark.pl