Jak działa Linux. Podręcznik administratora. Wydanie III - ebook
Jak działa Linux. Podręcznik administratora. Wydanie III - ebook
System Linux umożliwia uzyskanie pełnej kontroli nad komputerem, pozwala bowiem na łatwy dostęp do jego ważnych elementów. Konfiguracja większości składników systemu jest zapisana w plikach tekstowych, które można bez trudu odczytać. Uzyskana w ten sposób wiedza przydaje się nie tylko programistom i administratorom, ale i użytkownikom, którzy chcą dobrze zrozumieć działanie swojego komputera, a także dowiedzieć się, jak pracują wewnętrzne mechanizmy systemu, jak funkcjonuje sieć i jakie zadania realizuje jądro systemu.
To trzecie wydanie bestsellerowego podręcznika dla administratorów systemów Linux. Zostało zaktualizowane i uzupełnione materiałem dotyczącym menedżera LVM, wirtualizacji i kontenerów. Znajdziesz tu informacje o sposobie pracy poszczególnych elementów systemu Linux i o sekwencji jego rozruchu. W książce omówiono też jądro i przybliżono kluczowe procesy przestrzeni użytkowników, w tym wywołania systemowe, operacje wejścia-wyjścia i utrzymywanie systemów plików. Nie zabrakło także dokładnych instrukcji dotyczących narzędzi używanych przez administratorów i programistów, praktycznych przykładów i ćwiczeń opatrzonych szczegółowymi objaśnieniami. W efekcie lektury zrozumiesz, w jaki sposób działa Twój komputer, i poznasz tajniki zaawansowanej konfiguracji systemu Linux!
Dzięki książce dowiesz się:
- jak przebiega proces uruchamiania Linuksa i jak działa demon systemd
- w jaki sposób jądro systemu zarządza urządzeniami, sterownikami urządzeń i procesami
- jak działają sieci, interfejsy, zapory sieciowe i serwery
- jak korzystać z narzędzi do projektowania
- jak tworzyć efektywne skrypty powłoki
- czym jest menedżer LVM, system rejestrowania demona journald i jak działa protokół IPv6
- na czym polega wirtualizacja z uwzględnieniem kontenerów i grup kontrolnych cgroup
Nigdy więcej walki z własnym komputerem!
Spis treści
Podziękowania
Wstęp
1. Informacje ogólne
- 1.1. Poziomy i warstwy abstrakcji w systemie Linux
- 1.2. Sprzęt: pamięć operacyjna
- 1.3. Jądro systemu
- 1.3.1. Zarządzanie procesami
- 1.3.2. Zarządzanie pamięcią
- 1.3.3. Sterowniki urządzeń i zarządzanie urządzeniami
- 1.3.4. Wywołania systemowe
- 1.4. Przestrzeń użytkownika
- 1.5. Użytkownicy
- 1.6. Spojrzenie w przyszłość
2. Podstawowe polecenia i hierarchia katalogów
- 2.1. Powłoka Bourne'a: /bin/sh
- 2.2. Korzystanie z powłoki
- 2.2.1. Okno powłoki
- 2.2.2. Polecenie cat
- 2.2.3. Standardowe wejście i wyjście
- 2.3. Podstawowe polecenia
- 2.3.1. Polecenie ls
- 2.3.2. Polecenie cp
- 2.3.3. Polecenie mv
- 2.3.4. Polecenie touch
- 2.3.5. Polecenie rm
- 2.3.6. Polecenie echo
- 2.4. Polecenia działające na katalogach
- 2.4.1. Polecenie cd
- 2.4.2. Polecenie mkdir
- 2.4.3. Polecenie rmdir
- 2.4.4. Rozwijanie nazw (nazwy wieloznaczne)
- 2.5. Polecenia pośredniczące
- 2.5.1. Polecenie grep
- 2.5.2. Polecenie less
- 2.5.3. Polecenie pwd
- 2.5.4. Polecenie diff
- 2.5.5. Polecenie file
- 2.5.6. Polecenia find i locate
- 2.5.7. Polecenia head i tail
- 2.5.8. Polecenie sort
- 2.6. Zmienianie hasła i powłoki
- 2.7. Pliki z kropką
- 2.8. Zmienne środowiskowe i powłoki
- 2.9. Ścieżka poleceń
- 2.10. Znaki specjalne
- 2.11. Edycja wiersza poleceń
- 2.12. Edytory tekstu
- 2.13. Uzyskiwanie pomocy
- 2.14. Wejście i wyjście powłoki
- 2.14.1. Standardowy strumień błędów
- 2.14.2. Przekierowywanie standardowego wejścia
- 2.15. Prawidłowe odczytywanie komunikatów o błędach
- 2.15.1. Anatomia uniksowych komunikatów o błędach
- 2.15.2. Typowe błędy
- 2.16. Przeglądanie procesów i manipulowanie nimi
- 2.16.1. Opcje polecenia ps
- 2.16.2. Kończenie działania procesów
- 2.16.3. Kontrola zadań
- 2.16.4. Procesy działające w tle
- 2.17. Tryby plików i uprawnienia
- 2.17.1. Modyfikowanie uprawnień
- 2.17.2. Dowiązania symboliczne
- 2.18. Archiwizowanie i kompresowanie plików
- 2.18.1. Program gzip
- 2.18.2. Program tar
- 2.18.3. Archiwa skompresowane (.tar.gz)
- 2.18.4. Program zcat
- 2.18.5. Inne narzędzia kompresujące
- 2.19. Hierarchia katalogów
- 2.19.1. Pozostałe katalogi główne
- 2.19.2. Katalog /usr
- 2.19.3. Umiejscowienie jądra systemu
- 2.20. Uruchamianie poleceń przez superużytkownika
- 2.20.1. Polecenie sudo
- 2.20.2. Plik /etc/sudoers
- 2.20.3. Dzienniki programu sudo
- 2.21. Podsumowanie
3. Urządzenia
- 3.1. Pliki urządzeń
- 3.2. Ścieżka urządzeń sysfs
- 3.3. Polecenie dd i urządzenia
- 3.4. Podsumowanie nazewnictwa urządzeń
- 3.4.1. Dyski twarde: /dev/sd*
- 3.4.2. Dyski wirtualne: /dev/xvd*, /dev/vd*
- 3.4.3. Urządzenia pamięci nieulotnej: /dev/nvme*
- 3.4.4. Mapowanie urządzeń: /dev/dm-*, /dev/mapper/*
- 3.4.5. Napędy CD i DVD: /dev/sr*
- 3.4.6. Dyski twarde PATA: /dev/hd*
- 3.4.7. Terminale: /dev/tty*, /dev/pts/* i /dev/tty
- 3.4.8. Porty szeregowe: /dev/ttyS*, /dev/ttyUSB*, /dev/ttyACM*
- 3.4.9. Porty równoległe: /dev/lp0 i /dev/lp1
- 3.4.10. Urządzenia audio: /dev/dsp, /dev/audio, /dev/snd/* i inne
- 3.4.11. Tworzenie plików urządzeń
- 3.5. System udev
- 3.5.1. System plików devtmpfs
- 3.5.2. Konfiguracja i działanie procesu udevd
- 3.5.3. Program udevadm
- 3.5.4. Monitorowanie urządzeń
- 3.6. Szczegóły: SCSI i jądro Linuksa
- 3.6.1. Pamięci masowe USB i protokół SCSI
- 3.6.2. SCSI i ATA
- 3.6.3. Ogólne urządzenia SCSI
- 3.6.4. Wiele metod dostępu do jednego urządzenia
4. Dyski i systemy plików
- 4.1. Partycjonowanie urządzeń dyskowych
- 4.1.1. Przeglądanie tablicy partycji
- 4.1.2. Modyfikowanie tablicy partycji
- 4.1.3. Tworzenie tablicy partycji
- 4.1.4. Geometria dysku i partycji
- 4.1.5. Odczyt z dysków SSD
- 4.2. Systemy plików
- 4.2.1. Typy systemów plików
- 4.2.2. Tworzenie systemu plików
- 4.2.3. Montowanie systemu plików
- 4.2.4. Identyfikator UUID systemu plików
- 4.2.5. Buforowanie dysku i systemu plików
- 4.2.6. Opcje montowania systemów plików
- 4.2.7. Ponowne montowanie systemu plików
- 4.2.8. Tabela systemów plików /etc/fstab
- 4.2.9. Rozwiązania konkurencyjne dla pliku /etc/fstab
- 4.2.10. Pojemność systemu plików
- 4.2.11. Sprawdzanie i naprawianie systemów plików
- 4.2.12. Systemy plików o specjalnym znaczeniu
- 4.3. Przestrzeń wymiany
- 4.3.1. Wykorzystywanie partycji jako przestrzeni wymiany
- 4.3.2. Wykorzystywanie pliku jako przestrzeni wymiany
- 4.3.3. Jak wielkiej przestrzeni wymiany potrzebuję?
- 4.4. Menedżer LVM
- 4.4.1. Obsługa menedżera LVM
- 4.4.2. Implementacja menedżera LVM
- 4.5. Spojrzenie w przyszłość: dyski i przestrzeń użytkownika
- 4.6. Tradycyjny system plików
- 4.6.1. Szczegóły węzłów inode i licznik dowiązań
- 4.6.2. Alokowanie bloków
- 4.6.3. Praca z systemami plików w przestrzeni użytkownika
5. Jak uruchamia się Linux?
- 5.1. Komunikaty rozruchowe
- 5.2. Inicjowanie jądra i opcje rozruchu
- 5.3. Parametry jądra
- 5.4. Programy rozruchowe
- 5.4.1. Zadania programu rozruchowego
- 5.4.2. Przegląd programów rozruchowych
- 5.5. Wprowadzenie do programu GRUB
- 5.5.1. Przeszukiwanie urządzeń i partycji za pomocą wiersza poleceń programu GRUB
- 5.5.2. Konfigurowanie programu GRUB
- 5.5.3. Instalowanie programu GRUB
- 5.6. Problemy z bezpiecznym rozruchem UEFI
- 5.7. Ładowanie innych systemów operacyjnych
- 5.8. Szczegóły programu rozruchowego
- 5.8.1. Rozruch MBR
- 5.8.2. Rozruch UEFI
- 5.8.3. Jak działa GRUB?
6. Uruchamianie przestrzeni użytkownika
- 6.1. Wprowadzenie do procesu init
- 6.2. Identyfikowanie rodzaju procesu init
- 6.3. systemd
- 6.3.1. Jednostki i typy jednostek
- 6.3.2. Rozruch i diagramy zależności jednostek
- 6.3.3. Konfiguracja demona systemd
- 6.3.4. Praca z systemd
- 6.3.5. Śledzenie i synchronizacja procesów systemd
- 6.3.6. Zależności demona systemd
- 6.3.7. Uruchamianie na żądanie i zrównoleglanie zasobów przez demon systemd
- 6.3.8. Składniki pomocnicze demona systemd
- 6.4. Poziomy uruchomienia System V
- 6.5. Proces init w stylu System V
- 6.5.1. Proces init w stylu System V: sekwencja poleceń rozruchowych
- 6.5.2. Farma dowiązań procesu init w stylu System V
- 6.5.3. run-parts
- 6.5.4. Sterowanie procesem init w stylu System V
- 6.5.5. Zgodność demona systemd z System V
- 6.6. Wyłączanie systemu
- 6.7. Początkowy system plików w pamięci RAM
- 6.8. Rozruch awaryjny i tryb pojedynczego użytkownika
- 6.9. Spojrzenie w przyszłość
7. Konfiguracja systemu: rejestrowanie, czas systemowy, zadania wsadowe i użytkownicy
- 7.1. Rejestrowanie dzienników systemowych
- 7.1.1. Sprawdzanie konfiguracji dzienników
- 7.1.2. Wyszukiwanie i monitorowanie dzienników
- 7.1.3. Rotacja pliku dziennika
- 7.1.4. Utrzymywanie dziennika
- 7.1.5. Proces rejestrowania w systemie
- 7.2. Struktura katalogu /etc
- 7.3. Pliki związane z zarządzaniem użytkownikami
- 7.3.1. Plik /etc/passwd
- 7.3.2. Użytkownicy specjalni
- 7.3.3. Plik /etc/shadow
- 7.3.4. Manipulowanie użytkownikami i hasłami
- 7.3.5. Praca z grupami
- 7.4. Programy getty i login
- 7.5. Ustawianie czasu
- 7.5.1. Reprezentacja czasu jądra i strefy czasowe
- 7.5.2. Czas sieciowy
- 7.6. Planowanie powtarzalnych zadań w programie cron
- 7.6.1. Instalowanie plików crontab
- 7.6.2. Systemowe pliki crontab
- 7.6.3. Jednostki licznika czasu
- 7.6.4. Narzędzie cron a jednostki licznika czasu
- 7.7. Planowanie jednorazowych zadań w programie at
- 7.7.1. Odpowiedniki jednostki licznika czasu
- 7.8. Jednostki licznika czasu działające z uprawnieniami zwykłych użytkowników
- 7.9. Zagadnienia dotyczące dostępu uzyskiwanego przez użytkowników
- 7.9.1. Identyfikatory użytkowników i przełączanie ich
- 7.9.2. Prawo właściciela procesu, efektywny identyfikator użytkownika, rzeczywisty identyfikator użytkownika i zapisany identyfikator użytkownika
- 7.9.3. Identyfikowanie, uwierzytelnianie i autoryzowanie użytkowników
- 7.9.4. Użycie bibliotek do uzyskiwania informacji o użytkownikach
- 7.10. System PAM
- 7.10.1. Konfiguracja systemu PAM
- 7.10.2. Wskazówki dotyczące składni konfiguracji systemu PAM
- 7.10.3. System PAM i hasła
- 7.11. Spojrzenie w przyszłość
8. Wykorzystanie procesów i zasobów
- 8.1. Śledzenie procesów
- 8.2. Wyszukiwanie otwartych plików programem lsof
- 8.2.1. Analizowanie danych wyjściowych polecenia lsof
- 8.2.2. Użycie polecenia lsof
- 8.3. Śledzenie działania programu i wywołań systemowych
- 8.3.1. Polecenie strace
- 8.3.2. Polecenie ltrace
- 8.4. Wątki
- 8.4.1. Procesy jednowątkowe i wielowątkowe
- 8.4.2. Wyświetlanie wątków
- 8.5. Wprowadzenie do monitorowania zasobów
- 8.5.1. Pomiar czasu procesora
- 8.5.2. Nadawanie procesom priorytetów
- 8.5.3. Pomiar wydajności procesora na podstawie średnich obciążeń
- 8.5.4. Monitorowanie statusu pamięci
- 8.5.5. Monitorowanie wydajności procesora i pamięci za pomocą polecenia vmstat
- 8.5.6. Monitorowanie operacji wejścia-wyjścia
- 8.5.7. Monitorowanie poszczególnych procesów za pomocą narzędzia pidstat
- 8.6. Grupy kontrolne (cgroup)
- 8.6.1. Rozróżnianie wersji grup kontrolnych
- 8.6.2. Wyświetlanie grup kontrolnych
- 8.6.3. Tworzenie i modyfikowanie grup kontrolnych
- 8.6.4. Wyświetlanie informacji o wykorzystaniu zasobów
- 8.7. Dodatkowe zagadnienia
9. Sieć i jej konfiguracja
- 9.1. Podstawy dotyczące sieci
- 9.2. Pakiety
- 9.3. Warstwy sieciowe
- 9.4. Warstwa internetowa
- 9.4.1. Wyświetlanie adresów IP
- 9.4.2. Podsieci
- 9.4.3. Typowe maski podsieci i notacja CIDR
- 9.5. Trasy i tabela routingu jądra
- 9.6. Brama domyślna
- 9.7. Adresy i sieci IPv6
- 9.7.1. Wyświetlanie w systemie konfiguracji protokołu IPv6
- 9.7.2. Konfigurowanie sieci z dwoma stosami
- 9.8. Podstawowe narzędzia protokołu ICMP i systemu DNS
- 9.8.1. ping
- 9.8.2. DNS i host
- 9.9. Warstwa fizyczna i Ethernet
- 9.10. Interfejsy sieciowe jądra
- 9.11. Wprowadzenie do konfiguracji interfejsów sieciowych
- 9.11.1. Ręczne konfigurowanie interfejsów
- 9.11.2. Ręczne dodawanie i usuwanie tras
- 9.12. Konfiguracja sieci aktywowana podczas rozruchu
- 9.13. Problemy z ręczną i aktywowaną podczas rozruchu konfiguracją sieci
- 9.14. Menedżery konfiguracji sieciowych
- 9.14.1. Działanie narzędzia NetworkManager
- 9.14.2. Interakcja z narzędziem NetworkManager
- 9.14.3. Konfiguracja narzędzia NetworkManager
- 9.15. Rozpoznawanie nazw hostów
- 9.15.1. Plik /etc/hosts
- 9.15.2. Plik resolv.conf
- 9.15.3. Buforowanie i system DNS bez konfiguracji
- 9.15.4. Plik /etc/nsswitch.conf
- 9.16. Host lokalny
- 9.17. Warstwa transportowa: protokoły TCP i UDP oraz usługi
- 9.17.1. Porty TCP i połączenia
- 9.17.2. Protokół UDP
- 9.18. Ponowna analiza prostej sieci lokalnej
- 9.19. Protokół DHCP
- 9.19.1. Klient DHCP w systemie Linux
- 9.19.2. Serwery DHCP w systemie Linux
- 9.20. Automatyczna konfiguracja sieci z protokołem IPv6
- 9.21. Konfigurowanie systemu Linux jako routera
- 9.22. Sieci prywatne (IPv4)
- 9.23. Translacja adresów sieciowych (maskarada IP)
- 9.24. Routery i system Linux
- 9.25. Zapory sieciowe
- 9.25.1. Podstawy dotyczące linuksowych zapór sieciowych
- 9.25.2. Konfigurowanie reguł zapory sieciowej
- 9.25.3. Strategie tworzenia zapór sieciowych
- 9.26. Ethernet, IP, ARP i NDP
- 9.27. Ethernet bezprzewodowy
- 9.27.1. iw
- 9.27.2. Zabezpieczenia sieci bezprzewodowych
- 9.28. Podsumowanie
10. Usługi i aplikacje sieciowe
- 10.1. Podstawy usług
- 10.2. Dokładniejsza analiza
- 10.3. Serwery sieciowe
- 10.3.1. Secure Shell (SSH)
- 10.3.2. Serwer SSHD
- 10.3.3. fail2ban
- 10.3.4. Klient SSH
- 10.4. Serwery połączeń sieciowych zastąpione przez demon systemd: inetd i xinetd
- 10.5. Narzędzia diagnostyczne
- 10.5.1. lsof
- 10.5.2. tcpdump
- 10.5.3. netcat
- 10.5.4. Skanowanie portów
- 10.6. Zdalne wywoływanie procedur (RPC)
- 10.7. Zabezpieczenie sieci
- 10.7.1. Typowe słabości
- 10.7.2. Źródła danych o zabezpieczeniach
- 10.8. Spojrzenie w przyszłość
- 10.9. Gniazda sieciowe
- 10.10. Gniazda domenowe systemu Unix
11. Wprowadzenie do skryptów powłoki
- 11.1. Podstawy skryptów powłoki
- 11.1.1. Ograniczenia skryptów powłoki
- 11.2. Cudzysłowy i literały
- 11.2.1. Literały
- 11.2.2. Pojedyncze cudzysłowy
- 11.2.3. Podwójne cudzysłowy
- 11.2.4. Literały w postaci znaku pojedynczego cudzysłowu
- 11.3. Zmienne specjalne
- 11.3.1. Pojedyncze argumenty: $1, $2.
- 11.3.2. Liczba argumentów: $#
- 11.3.3. Wszystkie argumenty: $@
- 11.3.4. Nazwa skryptu: $0
- 11.3.5. Identyfikator procesu: $$
- 11.3.6. Kod wyjścia: $?
- 11.4. Kody wyjścia
- 11.5. Wyrażenia warunkowe
- 11.5.1. Obsługa list pustych parametrów
- 11.5.2. Użycie innych poleceń do testów
- 11.5.3. Słowo kluczowe elif
- 11.5.4. Konstrukcje logiczne
- 11.5.5. Sprawdzanie warunków
- 11.5.6. Instrukcja case
- 11.6. Pętle
- 11.6.1. Pętle for
- 11.6.2. Pętle while
- 11.7. Podmiana poleceń
- 11.8. Zarządzanie plikami tymczasowymi
- 11.9. Dokumenty miejscowe
- 11.10. Ważne narzędzia skryptów powłoki
- 11.10.1. Polecenie basename
- 11.10.2. Polecenie awk
- 11.10.3. Polecenie sed
- 11.10.4. Polecenie xargs
- 11.10.5. Polecenie expr
- 11.10.6. Polecenie exec
- 11.11. Podpowłoki
- 11.12. Włączanie do skryptów innych plików
- 11.13. Pobieranie danych od użytkowników
- 11.14. Kiedy (nie)używać skryptów powłoki?
12. Udostępnianie i przesyłanie plików w sieci
- 12.1. Szybkie wykonywanie kopii
- 12.2. rsync
- 12.2.1. Podstawy dotyczące narzędzia rsync
- 12.2.2. Tworzenie dokładnych kopii struktury katalogów
- 12.2.3. Jak używać końcowego ukośnika?
- 12.2.4. Pomijanie plików i katalogów
- 12.2.5. Sprawdzanie transferów, dodawanie sum kontrolnych i użycie trybu informacyjnego
- 12.2.6. Kompresja danych
- 12.2.7. Ograniczanie przepustowości
- 12.2.8. Przesyłanie plików do naszego komputera
- 12.2.9. Więcej informacji o programie rsync
- 12.3. Wprowadzenie do współużytkowania plików
- 12.3.1. Współużytkowanie plików i jego wydajność
- 12.3.2. Bezpieczeństwo współużytkowanych plików
- 12.4. Współużytkowanie plików za pomocą pakietu Samba
- 12.4.1. Konfigurowanie serwera
- 12.4.2. Kontrola dostępu do serwera
- 12.4.3. Hasła
- 12.4.4. Ręczne uruchamianie serwera
- 12.4.5. Diagnostyka i pliki dziennika
- 12.4.6. Konfigurowanie udziału plikowego
- 12.4.7. Katalogi domowe
- 12.4.8. Współużytkowanie drukarek
- 12.4.9. Korzystanie z klientów Samby
- 12.5. SSHFS
- 12.6. NFS
- 12.7. Magazynowanie danych w chmurze
- 12.8. Stan rozwoju technologii współużytkowania plików w sieci
13. Środowiska użytkowników
- 13.1. Wytyczne dotyczące tworzenia plików uruchomieniowych
- 13.2. Kiedy należy modyfikować pliki uruchomieniowe?
- 13.3. Elementy plików uruchamiających powłokę
- 13.3.1. Ścieżka wyszukiwania poleceń
- 13.3.2. Ścieżka stron podręcznika man
- 13.3.3. Symbol zachęty
- 13.3.4. Aliasy
- 13.3.5. Maska uprawnień
- 13.4. Kolejność plików uruchomieniowych i przykłady
- 13.4.1. Powłoka bash
- 13.4.2. Powłoka tcsh
- 13.5. Domyślne ustawienia użytkownika
- 13.5.1. Domyślne ustawienia powłoki
- 13.5.2. Edytor
- 13.5.3. Program stronicujący
- 13.6. Pułapki w plikach uruchomieniowych
- 13.7. Dalsze informacje
14. Ogólny przegląd interfejsów użytkownika systemu Linux i obsługi drukowania
- 14.1. Komponenty interfejsów użytkownika
- 14.1.1. Bufory ramki
- 14.1.2. X Window System
- 14.1.3. Wayland
- 14.1.4. Menedżery okien
- 14.1.5. Pakiety narzędziowe
- 14.1.6. Środowiska interfejsów użytkownika
- 14.1.7. Aplikacje
- 14.2. Czy używasz systemu Wayland czy X?
- 14.3. Coś więcej o protokole Wayland
- 14.3.1. Menedżer kompozycji
- 14.3.2. libinput
- 14.3.3. Zgodność protokołu Wayland z systemem X
- 14.4. X Window System
- 14.4.1. Menedżery wyświetlaczy
- 14.4.2. Przezroczystość sieci
- 14.4.3. Eksplorowanie klientów serwera X
- 14.4.4. Zdarzenia serwera X
- 14.4.5. Ustawianie preferencji i dane wejściowe serwera X
- 14.5. Usługa D-Bus
- 14.5.1. Instancja sesji i instancja systemowa
- 14.5.2. Monitorowanie komunikatów usługi D-Bus
- 14.6. Drukowanie
- 14.6.1. CUPS
- 14.6.2. Konwersja formatów i filtry wydruku
- 14.7. Inne zagadnienia związane z interfejsami użytkownika
15. Narzędzia programistyczne
- 15.1. Kompilator języka C
- 15.1.1. Kompilowanie wielu plików źródłowych
- 15.1.2. Konsolidacja z bibliotekami
- 15.1.3. Biblioteki współużytkowane
- 15.1.4. Pliki i katalogi nagłówkowe
- 15.2. Narzędzie make
- 15.2.1. Przykładowy plik Makefile
- 15.2.2. Wbudowane reguły
- 15.2.3. Końcowe budowanie programu
- 15.2.4. Aktualizowanie zależności
- 15.2.5. Argumenty i opcje wiersza poleceń
- 15.2.6. Standardowe makra i zmienne
- 15.2.7. Typowe cele kompilacji
- 15.2.8. Organizowanie pliku Makefile
- 15.3. Lex i Yacc
- 15.4. Języki skryptowe
- 15.4.1. Python
- 15.4.2. Perl
- 15.4.3. Pozostałe języki skryptowe
- 15.5. Java
- 15.6. Spojrzenie w przyszłość: kompilowanie pakietów
16. Wprowadzenie do kompilowania oprogramowania z kodu źródłowego C
- 16.1. Systemy do tworzenia oprogramowania
- 16.2. Rozpakowywanie pakietów kodu źródłowego języka C
- 16.3. GNU autoconf
- 16.3.1. Przykład użycia systemu GNU autoconf
- 16.3.2. Instalacja za pomocą narzędzia do tworzenia pakietów
- 16.3.3. Opcje skryptu configure
- 16.3.4. Zmienne środowiskowe
- 16.3.5. Cele tworzone przez system autoconf
- 16.3.6. Pliki dziennika systemu autoconf
- 16.3.7. pkg-config
- 16.4. Praktyki instalacyjne
- 16.4.1. Gdzie instalować?
- 16.5. Stosowanie poprawek
- 16.6. Rozwiązywanie problemów z kompilowaniem i instalowaniem
- 16.6.1. Częste błędy
- 16.7. Spojrzenie w przyszłość
17. Wirtualizacja
- 17.1. Maszyny wirtualne
- 17.1.1. Hipernadzorcy
- 17.1.2. Sprzęt maszyny wirtualnej
- 17.1.3. Typowe zastosowania maszyn wirtualnych
- 17.1.4. Mankamenty maszyn wirtualnych
- 17.2. Kontenery
- 17.2.1. Docker, Podman i przywileje
- 17.2.2. Przykład użycia Dockera
- 17.2.3. LXC
- 17.2.4. Kubernetes
- 17.2.5. Pułapki związane z kontenerami
- 17.3. Wirtualizacja oparta na środowisku uruchomieniowym
Bibliografia
Kategoria: | Systemy operacyjne |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-8864-2 |
Rozmiar pliku: | 5,1 MB |