
Lista nazwisk autorów wydrukowanych na okładce książki jest błędna. Autorem książki, pierwotnie wydanej w wydawnictwie "No Starch Press", jest Brian Ward. Za pomyłkę przepraszamy naszych klientów, wydawnictwo No Starch Press i Pana Briana Warda.
Jeśli chcesz poznać Linuksa "od środka" -- sięgnij po tę książkę
- Poznaj mechanizmy uruchamiania i pracy systemu
- Zobacz, jak realizowane są usługi systemowe i sieciowe
- Naucz się administrować Linuksem
Jeśli korzystasz z Linuksa, to na pewno nie trzeba opisywać Ci jego zalet. Bez wątpienia doceniasz jego stabilność i szybkość działania. Dzięki stale zwiększającej się liczbie aplikacji, komputer z zainstalowanym Linuksem można wykorzystać do pełnienia wielu funkcji - od domowej stacji roboczej, aż do serwera sieciowego. Aby jednak w pełni wykorzystać jego możliwości, musisz poznać jego wewnętrzne mechanizmy rządzące uruchamianiem systemu oraz obsługą sieci i urządzeń peryferyjnych, a także zasady administrowania jego zasobami.
Książka "Jak działa Linux" zawiera wszystkie informacje dotyczące wnętrza systemu Linux oraz zasad korzystania z niego. Przedstawia zarówno zagadnienia podstawowe -- przebieg procesu uruchamiania systemu i mechanizmy obsługi sieci, jak i tematy zaawansowane, związane z administracją systemem, jego współpracą z urządzeniami zewnętrznymi oraz programowaniem.
- Podstawy korzystania z Linuksa - polecenia, struktura plików i katalogów oraz dyski logiczne
- Przebieg procesu uruchamiania Linuksa
- Konfigurowanie i uruchamianie sieci i usług sieciowych
- Pisanie własnych programów w języku powłoki oraz w C++
- Kompilowanie programów
- Konserwacja jądra systemu
- Obsługa urządzeń peryferyjnych
- Tworzenie kopii bezpieczeństwa
Przedmowa (11)Rozdział 1. Podstawy (13)
- 1.1. Słowo o /bin/sh (14)
- 1.2. Korzystanie z powłoki (14)
- 1.3. Polecenia podstawowe (16)
- 1.3.1. ls (16)
- 1.3.2. cp (16)
- 1.3.3. mv (16)
- 1.3.4. touch (17)
- 1.3.5. rm (17)
- 1.3.6. echo (17)
- 1.4. Polecenia działające na katalogach (17)
- 1.4.1. cd (18)
- 1.4.2. mkdir (18)
- 1.4.3. rmdir (18)
- 1.4.4. Nazwy wieloznaczne (18)
- 1.5. Polecenia pośredniczące (19)
- 1.5.1. grep (19)
- 1.5.2. more i less (20)
- 1.5.3. pwd (21)
- 1.5.4. diff (21)
- 1.5.5. file (21)
- 1.5.6. find (21)
- 1.5.7. head i tail (22)
- 1.5.8. sort (22)
- 1.6. Zmienianie hasła i powłoki (22)
- 1.6.1. chsh (22)
- 1.7. Pliki z kropką (22)
- 1.8. Zmienne środowiskowe i powłoki (23)
- 1.9. Ścieżka poleceń (24)
- 1.10. Znaki specjalne (24)
- 1.11. Edycja wiersza poleceń (25)
- 1.12. Edytory tekstu (26)
- 1.13. Uzyskiwanie pomocy (27)
- 1.14. Wejście i wyjście powłoki (28)
- 1.14.1. Standardowy strumień błędów (29)
- 1.14.2. Przekierowywanie standardowego wejścia (30)
- 1.15. Prawidłowe odczytywanie komunikatów o błędach (30)
- 1.15.1. Typowe błędy (31)
- 1.16. Procesy (32)
- 1.16.1. Przerywanie działania procesów (33)
- 1.16.2. Kontrola zadań (34)
- 1.16.3. Procesy działające w tle (34)
- 1.17. Tryby plików i uprawnienia (35)
- 1.17.1. Modyfikowanie uprawnień (36)
- 1.17.2. Dowiązania symboliczne (38)
- 1.18. Archiwizowanie i kompresowanie plików (39)
- 1.18.1. Archiwa skompresowane (.tar.gz) (41)
- 1.18.2. Inne narzędzia kompresujące (42)
- 2.1. Hierarchia katalogów (43)
- 2.1.1. Najważniejsze katalogi (44)
- 2.1.2. Pozostałe katalogi główne (45)
- 2.1.3. Katalog /usr (45)
- 2.2. Jądro systemu (46)
- 2.3. Urządzenia (47)
- 2.3.1. Polecenie dd i urządzenia (48)
- 2.3.2. Podsumowanie nazewnictwa urządzeń (49)
- 2.3.3. Tworzenie plików urządzeń (52)
- 2.3.4. Partycjonowanie urządzeń dyskowych (53)
- 2.4. Systemy plików (56)
- 2.4.1. Typy systemów plików (56)
- 2.4.2. Tworzenie systemu plików (57)
- 2.4.3. Montowanie systemu plików (57)
- 2.4.4. Buforowanie systemów plików (59)
- 2.4.5. Opcje montowania systemów plików (59)
- 2.4.6. Tabela systemów plików /etc/fstab (61)
- 2.4.7. Pojemność systemu plików (63)
- 2.4.8. Sprawdzanie i naprawianie systemów plików (64)
- 2.4.9. Systemy plików o specjalnym znaczeniu (67)
- 2.5. Przestrzeń wymiany i pamięć wirtualna (67)
- 2.5.1. Wykorzystywanie partycji jako przestrzeni wymiany (68)
- 2.5.2. Wykorzystywanie pliku jako przestrzeni wymiany (68)
- 2.5.3. Jak wielkiej przestrzeni wymiany potrzebuję? (69)
- 3.1. Program init (72)
- 3.1.1. Poziomy uruchomienia (runlevels) (72)
- 3.1.2. Jak uruchamiane są procesy na różnych poziomach uruchomienia? (74)
- 3.1.3. Dodawanie i usuwanie usług (75)
- 3.1.4. Kontrolowanie programu init (76)
- 3.1.5. Wyłączanie systemu (77)
- 3.2. Programy rozruchowe (78)
- 3.2.1. LILO (79)
- 3.2.2. GRUB (79)
- 3.2.3. Inne programy rozruchowe (81)
- 3.2.4. Tryb pojedynczego użytkownika i uruchomienie awaryjne (81)
- 3.3. Konsole wirtualne (82)
- 4.1. Dzienniki systemowe (84)
- 4.2. Pierwsze spojrzenie na katalog /etc (85)
- 4.3. Pliki zarządzania użytkownikami (86)
- 4.3.1. Manipulowanie użytkownikami i hasłami (88)
- 4.3.2. Praca z grupami (88)
- 4.4. Programy getty i login (89)
- 4.5. Ustawianie czasu (90)
- 4.5.1. Strefy czasowe (91)
- 4.5.2. Czas sieciowy (91)
- 4.6. Planowanie powtarzalnych zadań w programie cron (92)
- 4.6.1. Instalowanie plików crontab (93)
- 4.6.2. Systemowe pliki crontab (93)
- 4.7. Planowanie jednorazowych zadań w programie at (94)
- 4.8. Śledzenie procesów (94)
- 4.8.1. Wyszukiwanie otwartych plików programem lsof (95)
- 4.8.2. Śledzenie działania programu poleceniami strace i ltrace (97)
- 4.9. Nadawanie procesom priorytetów (99)
- 4.10. Monitorowanie wydajności systemu (100)
- 4.11. Uruchamianie poleceń przez superużytkownika (102)
- 4.11.1. Rzeczywisty UID i efektywny UID (104)
- 5.1. Warstwy sieciowe (105)
- 5.2. Warstwa internetowa (106)
- 5.2.1. Więcej o podsieciach (107)
- 5.3. Proste narzędzia protokołu ICMP (108)
- 5.4. Konfigurowanie interfejsów i warstwy komputer-sieć (109)
- 5.5. Konfigurowanie bramy domyślnej (111)
- 5.6. Rozwiązywanie nazw komputerów (112)
- 5.7. Korzystanie z klientów DHCP (114)
- 5.8. Połączenia PPP (115)
- 5.8.1. Testowanie portu szeregowego i modemu (116)
- 5.8.2. Uruchamianie demona pppd z plikami opcji (117)
- 5.8.3. Skrypty chat (119)
- 5.8.4. Protokoły PAP i CHAP (120)
- 5.8.5. Pliki opcji (121)
- 5.8.6. Uprawnienia katalogu PPP (123)
- 5.9. Połączenia szerokopasmowe (123)
- 5.9.1. Routery (124)
- 5.9.2. PPP over Ethernet (PPPoE) (125)
- 5.10. Sieci Ethernet (126)
- 5.10.1. Ethernet i protokół IP (127)
- 5.10.2. Sieci prywatne (128)
- 5.11. Konfigurowanie tras (129)
- 5.12. Warstwa transportowa - TCP, UDP i usługi (131)
- 5.13. Zapory sieciowe (132)
- 5.13.1. Strategie tworzenia zapór sieciowych (135)
- 5.13.2. Opcje programu iptables (136)
- 5.14. Translacja adresów sieciowych (maskarada IP) (137)
- 5.15. Ethernet bezprzewodowy (139)
- 5.15.1. Wykład o bezpieczeństwie sieci bezprzewodowych (142)
- 6.1. Podstawy usług (143)
- 6.2. Serwery autonomiczne (144)
- 6.3. Demon inetd (145)
- 6.3.1. Wrapper TCP: tcpd, /etc/hosts.allow, /etc/hosts.deny (146)
- 6.3.2. xinetd (147)
- 6.4. SSH (148)
- 6.4.1. Instalowanie biblioteki OpenSSH (148)
- 6.4.2. Serwer SSHD (149)
- 6.4.3. Klient SSH (150)
- 6.5. Narzędzia diagnostyczne (152)
- 6.5.1. lsof (152)
- 6.5.2. tcpdump (153)
- 6.5.3. Netcat (155)
- 6.6. Zdalne wywoływanie procedur (RPC) (156)
- 6.7. Zabezpieczenie sieci (156)
- 6.7.1. Bezpieczeństwo dystrybucji Linuksa (158)
- 6.7.2. Typowe słabości (158)
- 6.7.3. Skanowanie portów (159)
- 6.7.4. Źródła danych o zabezpieczeniach (160)
- 7.1. Podstawy skryptów powłoki (161)
- 7.1.1. Ograniczenia skryptów powłoki (162)
- 7.2. Cudzysłowy (162)
- 7.3. Zmienne specjalne (163)
- 7.3.1. Zmienne $1, $2... (163)
- 7.3.2. Zmienna $# (164)
- 7.3.3. Zmienna $@ (164)
- 7.3.4. Zmienna $0 (165)
- 7.3.5. Zmienna $$ (165)
- 7.3.6. Zmienna $? (165)
- 7.4. Kody wyjścia (165)
- 7.5. Wyrażenia warunkowe (166)
- 7.5.1. Konstrukcje logiczne && i || (168)
- 7.5.2. Sprawdzanie warunków (169)
- 7.5.3. Porównywanie ciągów znaków instrukcją case (171)
- 7.6. Pętle (172)
- 7.7. Podmiana poleceń (173)
- 7.8. Zarządzanie plikami tymczasowymi (174)
- 7.9. Dokumenty miejscowe (175)
- 7.10. Ważne narzędzia skryptów powłoki (176)
- 7.10.1. Polecenie basename (176)
- 7.10.2. Polecenie awk (177)
- 7.10.3. Polecenie sed (177)
- 7.10.4. Polecenie xargs (178)
- 7.10.5. Polecenie expr (179)
- 7.10.6. Polecenie exec (179)
- 7.11. Podpowłoki (179)
- 7.12. Włączanie do skryptów innych plików (180)
- 7.13. Pobieranie danych od użytkowników (180)
- 7.14. Za dużo? (180)
- 8.1. Kompilator języka C (183)
- 8.1.1. Wiele plików źródłowych (184)
- 8.1.2. Pliki i katalogi nagłówkowe (185)
- 8.1.3. Konsolidacja z bibliotekami (187)
- 8.1.4. Biblioteki współdzielone (188)
- 8.1.5. Make (191)
- 8.2. Debugery (197)
- 8.3. Lex i Yacc (198)
- 8.4. Języki skryptowe (198)
- 8.4.1. Perl (200)
- 8.4.2. Python (200)
- 8.4.3. Pozostałe języki skryptowe (201)
- 8.5. Java (201)
- 8.6. Kod asemblerowy i zasada działania kompilatorów (202)
- 9.1. Rozpakowywanie pakietów źródłowych (206)
- 9.1.1. Od czego zacząć? (206)
- 9.2. GNU Autoconf (207)
- 9.2.1. Opcje skryptu configure (208)
- 9.2.2. Zmienne środowiskowe (209)
- 9.2.3. Cele tworzone przez system Autoconf (210)
- 9.2.4. Pliki dziennika systemu Autoconf (211)
- 9.3. Inne systemy (211)
- 9.3.1. Ręcznie konfigurowane pliki Makefile (212)
- 9.3.2. Imake (212)
- 9.3.3. pkg-config (214)
- 9.4. Praktyki instalacyjne (215)
- 9.4.1. Gdzie instalować? (216)
- 9.5. Stosowanie poprawek (219)
- 9.6. Rozwiązywanie problemów z kompilowaniem i instalowaniem (220)
- 9.6.1. Częste błędy (221)
- 10.1. Czy muszę kompilować jądro własnego systemu? (224)
- 10.2. Czego potrzeba do kompilacji jądra systemu? (224)
- 10.3. Pobieranie kodu źródłowego (225)
- 10.3.1. Rozpakowywanie archiwum z kodem źródłowym (225)
- 10.3.2. Przegląd kodu źródłowego jądra (226)
- 10.3.3. Jądra w różnych dystrybucjach (226)
- 10.4. Konfigurowanie i kompilowanie jądra (227)
- 10.4.1. Opcje konfiguracyjne (229)
- 10.4.2. Kompilowanie jądra i modułów (237)
- 10.4.3. Instalowanie modułów (239)
- 10.4.4. Parametry jądra (239)
- 10.5. Instalowanie jądra za pomocą programu rozruchowego (240)
- 10.5.1. Który program rozruchowy wybrać? (241)
- 10.5.2. GRUB (241)
- 10.5.3. LILO (243)
- 10.5.4. Początkowe RAM-dyski (245)
- 10.6. Testowanie jądra (246)
- 10.7. Dyskietki startowe (246)
- 10.8. Praca z ładowalnymi modułami jądra (247)
- 10.8.1. Program ładujący moduły jądra (248)
- 10.8.2. Konfiguracja programu modprobe (248)
- 11.1. Napędy dyskietek (251)
- 11.1.1. Obrazy dyskietek (252)
- 11.1.2. Formatowanie dyskietek na niskim poziomie (252)
- 11.2. Nagrywarki płyt CD (253)
- 11.2.1. Sprawdzanie sprzętu (253)
- 11.2.2. Tworzenie obrazu systemu plików i zapisywanie go na płycie CD (254)
- 11.3. Wprowadzenie do USB (255)
- 11.3.1. System plików i narzędzia urządzeń USB (256)
- 11.3.2. Urządzenia wejściowe USB (256)
- 11.3.3. Aparaty cyfrowe, zewnętrzne nośniki pamięci Flash i dyski zewnętrzne (257)
- 11.4. Dyski IEEE 1394/FireWire (258)
- 11.5. Obsługa włączania w czasie pracy (hotplug) (259)
- 11.6. Karty PC (PCMCIA) (259)
- 11.6.1. Gdy włożymy kartę do czytnika (261)
- 11.6.2. Program cardctl (263)
- 11.7. Obsługa innych urządzeń (264)
- 12.1. PostScript (268)
- 12.2. Serwery wydruku (268)
- 12.3. Filtry wydruku (269)
- 12.4. Klienty drukowania (269)
- 12.4.1. Drukowanie w sieci (270)
- 12.5. CUPS (271)
- 12.5.1. Konfigurowanie demona cupsd (272)
- 12.5.2. Zabezpieczenia systemu CUPS (272)
- 12.5.3. Uruchamianie systemu CUPS (274)
- 12.5.4. Dodawanie i edytowanie drukarek (274)
- 12.5.5. Urządzenia drukarek (specyfikacje backendów) (276)
- 12.5.6. Pliki PPD (278)
- 12.5.7. Określanie filtra (279)
- 12.5.8. Filtr Foomatic (drukarki nieobsługujące PostScriptu) (282)
- 12.5.9. Przegląd poleceń administracyjnych (283)
- 12.5.10. Kontrola dostępu do serwera (284)
- 12.5.11. Automatyczne wykrywanie (285)
- 12.5.12. Współpraca z serwerem zgodnym z LPD (286)
- 12.5.13. Usuwanie problemów (286)
- 12.6. Ghostscript (289)
- 12.6.1. Opcje wiersza poleceń (290)
- 12.6.2. Więcej operacji w programie Ghostscript (291)
- 12.6.3. Serwer drukarek HP InkJet (292)
- 12.7. Inne opisy systemów drukowania (292)
- 13.1. Co powinno znaleźć się w archiwum? (293)
- 13.2. Sprzęt (294)
- 13.3. Archiwa pełne i przyrostowe (294)
- 13.4. Stosowanie programu tar (295)
- 13.4.1. Tworzenie archiwów (295)
- 13.4.2. Przyrostowe archiwa tworzone programem tar (296)
- 13.4.3. Rozpakowywanie archiwów (297)
- 13.5. Zapisywanie archiwów na nietradycyjne nośniki (298)
- 13.5.1. Zapisywanie archiwów na dyski twarde (298)
- 13.6. Napędy taśmowe (299)
- 13.6.1. Praca z napędami taśmowymi (300)
- 13.6.2. Tworzenie archiwów na taśmie (301)
- 13.6.3. Odczytywanie archiwów z taśmy (302)
- 13.6.4. Rozpakowywanie archiwów (303)
- 13.6.5. Przewijanie taśmy w przód i w tył (303)
- 13.6.6. Polecenia i status programu mt (304)
- 13.6.7. Bezpośredni dostęp do plików (305)
- 13.7. Inne programy do archiwizacji (306)
- 13.7.1. Programy dump i restore (306)
- 13.7.2. Program cpio (308)
- 13.7.3. System Amanda (310)
- 13.8. Inne źródła informacji (310)
- 14.1. Konfigurowanie serwera (314)
- 14.1.1. Kontrola dostępu do serwera (314)
- 14.1.2. Hasła (315)
- 14.2. Uruchamianie serwera (316)
- 14.3. Diagnostyka i pliki dziennika (317)
- 14.4. Współdzielenie plików (317)
- 14.4.1. Katalogi domowe (318)
- 14.5. Współdzielenie drukarek (318)
- 14.5.1. Współdzielenie pojedynczej drukarki (319)
- 14.6. Korzystanie z klientów Samby (319)
- 14.6.1. Dostęp do plików (320)
- 14.6.2. Drukowanie przez udział systemu Windows (321)
- 15.1. Podstawy polecenia rsync (324)
- 15.1.1. Tworzenie dokładnych kopii struktury katalogów (325)
- 15.1.2. Jak używać końcowego ukośnika? (326)
- 15.1.3. Pomijanie plików i katalogów (327)
- 15.2. Sumy kontrolne i tryb informacyjny (327)
- 15.3. Kompresja (328)
- 15.4. Ograniczanie przepustowości (329)
- 15.5. Przesyłanie plików do naszego komputera (329)
- 15.6. Więcej informacji o programie rsync (329)
- 16.1. Odpowiednie pliki uruchomieniowe (331)
- 16.2. Elementy plików uruchamiających powłokę (332)
- 16.2.1. Ścieżka wyszukiwania poleceń (332)
- 16.2.2. Ścieżka stron podręcznika man (333)
- 16.2.3. Symbol zachęty (334)
- 16.2.4. Aliasy (335)
- 16.2.5. Maska uprawnień (335)
- 16.3. Kolejność plików uruchomieniowych i przykłady (336)
- 16.3.1. Powłoka bash (336)
- 16.3.2. Powłoka tcsh (338)
- 16.4. Domyślne ustawienia użytkownika (339)
- 16.4.1. Powłoka (340)
- 16.4.2. Edytor (341)
- 16.4.3. Program stronicujący (341)
- 16.5. Pułapki w plikach uruchomieniowych (341)
- 16.6. Dalsze informacje (341)
- 17.1. Składniki podstawowe (344)
- 17.1.1. Płyta główna i procesor (344)
- 17.1.2. Pamięć (345)
- 17.1.3. Dysk twardy (346)
- 17.1.4. Karty sieciowe i infrastruktura sieciowa (347)
- 17.1.5. Sprzęt graficzny (348)
- 17.2. Inne elementy sprzętowe (349)
- 17.2.1. Monitory (349)
- 17.2.2. Klawiatury (350)
- 17.2.3. Myszy (350)
- 17.2.4. Modemy (351)
- 17.2.5. Drukarki (351)
- 17.3. Słowo o unowocześnianiu sprzętu (352)
- 17.4. Oszczędzanie pieniędzy (353)
- 17.4.1. Procesory (353)
- 17.4.2. Dyski twarde (355)
- 17.4.3. Obudowy komputera (355)
- 17.4.4. Karty wideo (355)
- 17.5. Komputery typu notebook (355)
- 17.6. Mniejsze projekty (356)
- 18.1. Kolejne tematy (357)
- 18.2. Przemyślenia końcowe (359)
Bibliografia (367)
Skorowidz (371)