SlideShare a Scribd company logo
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TREœCI
                                         COM+. Kompendium
                                         programisty
           KATALOG KSI¥¯EK               Autorzy: Graham Glass, King Ables
                                         T³umaczenie: Marcin Rogó¿
                      KATALOG ONLINE     ISBN: 978-83-246-0504-0
                                         Tytu³ orygina³u: Linux for Programmers and Users
       ZAMÓW DRUKOWANY KATALOG           Format: B5, stron: 648


              TWÓJ KOSZYK                                        Szczegó³owe omówienie systemu Linux
                    DODAJ DO KOSZYKA         • Instalacja, konfiguracja i uruchamianie
                                             • Praca z pow³okami tekstowymi
                                             • Programowanie w C
         CENNIK I INFORMACJE
                                             • œrodowiska graficzne
                                         Linux, napisany w ramach studenckich laboratoriów, w ci¹gu kilku lat sta³ siê niezwykle
                                         popularnym systemem operacyjnym. Jego stabilnoœæ i niezawodnoœæ doceniaj¹ ju¿ nie
                   ZAMÓW INFORMACJE
                     O NOWOœCIACH        tylko profesjonaliœci, ale tak¿e u¿ytkownicy domowi, dla których dostêpny nieodp³atnie
                                         produkt coraz czêœciej jest alternatyw¹ dla komercyjnych systemów operacyjnych.
                       ZAMÓW CENNIK      Linux œwiêci triumfy nie tylko jako baza dla wydajnych i bezpiecznych serwerów
                                         sieciowych, ale równie¿ jest wykorzystywany w stacjach roboczych oraz komputerach
                                         domowych u¿ywanych do pracy, rozrywki i przegl¹dania zasobów internetowych.
                 CZYTELNIA               Dla Linuksa powstaje coraz wiêcej oprogramowania, równie¿ dostêpnego nieodp³atnie
                                         i w niczym nieustêpuj¹cego narzêdziom komercyjnym.
          FRAGMENTY KSI¥¯EK ONLINE       „Linux dla programistów i u¿ytkowników” to doskona³y przewodnik po tym systemie
                                         operacyjnym. Omawia zagadnienia zwi¹zane z programowaniem i przedstawia je
                                         z perspektywy u¿ytkownika. Czytaj¹c go, dowiesz siê, jakie dystrybucje Linuksa
                                         mo¿esz znaleŸæ na rynku oraz jak zainstalowaæ system i skonfigurowaæ go. Nauczysz
                                         siê korzystaæ z pow³ok tekstowych i œrodowisk graficznych, pracowaæ w sieci i ³¹czyæ
                                         siê z internetem. Poznasz tajniki programowania w jêzyku C dla systemu Linux,
                                         napiszesz w³asne narzêdzia oraz zobaczysz, w jaki sposób dzia³a system. Przeczytasz
                                         tak¿e o podstawowych zadaniach administratora Linuksa.
                                             • Wybór dystrybucji
                                             • Instalacja systemu
                                             • Podstawowe narzêdzia dla u¿ytkowników
Wydawnictwo Helion                           • Przetwarzanie plików tekstowych
ul. Koœciuszki 1c                            • Operacje na systemie plików
44-100 Gliwice                               • Pow³oki Bash, Korn i C
tel. 032 230 98 63                           • Linux w sieci
e-mail: helion@helion.pl                     • œrodowiska graficzne
                                             • J¹dro Linuksa
                                             • Administrowanie systemem
                                               Poznaj system operacyjny, który zrewolucjonizowa³ wspó³czesn¹ informatykê
Przedmowa .................................................................................... 19
Rozdział 1. Czym jest Linux? ............................................................................ 27
                  1.1. Systemy komputerowe .......................................................................................... 28
                  1.2. Sprzęt .................................................................................................................... 28
                          1.2.1. Procesor .................................................................................................. 28
                          1.2.2. Magistrala ............................................................................................... 28
                          1.2.3. Pamięć RAM .......................................................................................... 29
                          1.2.4. Pamięć ROM .......................................................................................... 29
                          1.2.5. Dyski ...................................................................................................... 30
                          1.2.6. Napędy CD-ROM ................................................................................... 30
                          1.2.7. Monitor ................................................................................................... 30
                          1.2.8. Karta graficzna ....................................................................................... 30
                          1.2.9. Klawiatura .............................................................................................. 30
                        1.2.10. Myszka ................................................................................................... 30
                        1.2.11. Drukarka ................................................................................................. 31
                        1.2.12. Napędy taśmowe .................................................................................... 31
                        1.2.13. Modem .................................................................................................... 31
                        1.2.14. Interfejs sieciowy ................................................................................... 31
                        1.2.15. Inne urządzenia peryferyjne ................................................................... 31
                  1.3. System operacyjny ................................................................................................ 31
                  1.4. Oprogramowanie .................................................................................................. 32
                  1.5. Dzielenie zasobów ................................................................................................ 33
                  1.6. Komunikacja ......................................................................................................... 33
                  1.7. Narzędzia .............................................................................................................. 34
                  1.8. Wspomaganie programistów ................................................................................ 35
                  1.9. Standardy .............................................................................................................. 35
                 1.10. Historia Linuksa .................................................................................................... 36
                        1.10.1. UNIX ...................................................................................................... 36
                        1.10.2. Open Source Software i Free Software Foundation ............................... 37
                        1.10.3. Linus ....................................................................................................... 39
                 1.11. Pakiety z Linuksem ............................................................................................... 39
                 1.12. Filozofia Linuksa i UNIX-a .................................................................................. 40
                 1.13. Cechy Linuksa ...................................................................................................... 41
                 1.14. W dalszych rozdziałach ........................................................................................ 42
6                                                                                 Linux dla programistów i użytkowników


Rozdział 2. Instalowanie Linuksa ...................................................................... 45
                  2.1. Wstęp .................................................................................................................... 46
                  2.2. Upewnij się, że masz odpowiedni sprzęt .............................................................. 46
                          2.2.1. Jednostka centralna (procesor) ............................................................... 46
                          2.2.2. Architektura magistrali ........................................................................... 47
                          2.2.3. Pamięć .................................................................................................... 47
                          2.2.4. Dysk ........................................................................................................ 48
                          2.2.5. Monitor, klawiatura i myszka ................................................................. 48
                  2.3. Wybór dystrybucji ................................................................................................ 49
                          2.3.1. Debian .................................................................................................... 49
                          2.3.2. Fedora ..................................................................................................... 50
                          2.3.3. Mandriva ................................................................................................ 51
                          2.3.4. Slackware ............................................................................................... 51
                          2.3.5. SuSE ....................................................................................................... 52
                          2.3.6. TurboLinux ............................................................................................. 52
                  2.4. Rozważ opcjonalne pakiety oprogramowania ...................................................... 53
                          2.4.1. System X Window .................................................................................. 53
                          2.4.2. Środowiska graficzne ............................................................................. 53
                          2.4.3. Obsługa sieci .......................................................................................... 55
                          2.4.4. Narzędzia biurowe .................................................................................. 57
                          2.4.5. Narzędzia programistyczne i języki programowania ............................. 57
                  2.5. Zaprojektuj swój system ....................................................................................... 58
                          2.5.1. W jaki sposób ma być uruchamiany Linux? .......................................... 58
                          2.5.2. Partycjonowanie dysku ........................................................................... 59
                          2.5.3. System plików Linuksa .......................................................................... 60
                          2.5.4. Programy rozruchowe (ładujące) ........................................................... 63
                          2.5.5. Dyskietka startowa ................................................................................. 64
                  2.6. Zdobądź Linuksa .................................................................................................. 64
                          2.6.1. Dyski CD-ROM ..................................................................................... 65
                          2.6.2. Pobieranie ............................................................................................... 65
                  2.7. Instalacja Linuksa ................................................................................................. 66
                          2.7.1. Zdobądź dokumentację swojej dystrybucji ............................................ 66
                          2.7.2. Uruchomienie ......................................................................................... 67
                          2.7.3. Partycjonowanie dysków ........................................................................ 67
                          2.7.4. Zmiana rozmiaru partycji Windows ....................................................... 69
                          2.7.5. Konfigurowanie systemu ........................................................................ 69
                          2.7.6. Program rozruchowy .............................................................................. 70
Rozdział 3. Narzędzia GNU dla zwykłych użytkowników ..................................... 73
                  3.1. Uzyskiwanie konta ................................................................................................ 74
                  3.2. Logowanie ............................................................................................................ 75
                  3.3. Powłoki ................................................................................................................. 76
                  3.4. Uruchamianie narzędzi GNU ............................................................................... 76
                  3.5. Kanały wejścia, wyjścia i błędu ............................................................................ 77
                  3.6. Uzyskiwanie pomocy — man ............................................................................... 78
                  3.7. Znaki specjalne ..................................................................................................... 80
                         3.7.1. Przerywanie procesu — Control+C ....................................................... 81
                         3.7.2. Koniec danych wejściowych — Control+D ........................................... 81
                  3.8. Ustanawianie własnego hasła — passwd ............................................................. 81
                  3.9. Wylogowanie ........................................................................................................ 82
                 3.10. Poezja w działaniu — eksplorowanie systemu plików ......................................... 83
                 3.11. Wyświetlanie nazwy bieżącego katalogu roboczego — pwd ............................... 83
                 3.12. Względne i bezwzględne ścieżki dostępu ............................................................. 85
                 3.13. Tworzenie pliku .................................................................................................... 86
Spis treści                                                                                                                                  7


              3.14. Wyświetlanie zawartości katalogu — ls ............................................................... 87
              3.15. Wyświetlanie zawartości pliku — cat, more, head i tail ...................................... 88
              3.16. Zmienianie nazwy pliku — mv ............................................................................ 89
              3.17. Tworzenie katalogu — mkdir ............................................................................... 90
              3.18. Przechodzenie do innego katalogu — cd .............................................................. 91
              3.19. Kopiowanie pliku — cp ........................................................................................ 92
              3.20. Edycja pliku — vim .............................................................................................. 92
              3.21. Usuwanie katalogu — rmdir ................................................................................. 93
              3.22. Usuwanie pliku — rm ........................................................................................... 94
              3.23. Drukowanie pliku — lp, lpstat i cancel ................................................................ 95
              3.24. Drukowanie pliku — lpr, lpq i lprm ....................................................................... 96
              3.25. Liczenie słów w pliku — wc ................................................................................ 98
              3.26. Atrybuty pliku ....................................................................................................... 98
                     3.26.1. Przechowywanie pliku ........................................................................... 99
                     3.26.2. Nazwy plików ......................................................................................... 99
                     3.26.3. Data i czas modyfikacji pliku ............................................................... 100
                     3.26.4. Właściciel pliku .................................................................................... 100
                     3.26.5. Grupa pliku ........................................................................................... 100
                     3.26.6. Typy plików ......................................................................................... 101
                     3.26.7. Prawa dostępu do plików ..................................................................... 102
                     3.26.8. Liczba twardych dowiązań do pliku ..................................................... 104
              3.27. Grupy .................................................................................................................. 104
              3.28. Wyświetlanie grup, do których należysz — groups ........................................... 105
              3.29. Zmienianie grupy właścicieli pliku — chgrp ..................................................... 105
              3.30. Zmienianie praw dostępu do pliku — chmod ...................................................... 106
              3.31. Zmienianie właściciela pliku — chown .............................................................. 108
              3.32. Zmiana grupy — newgrp .................................................................................... 108
              3.33. Poezja w działaniu — epilog .............................................................................. 109
              3.34. Określanie typu terminala — tset ....................................................................... 109
              3.35. Zmienianie charakterystyk terminala — stty ...................................................... 112
              3.36. Edycja pliku — vim ............................................................................................ 113
                     3.36.1. Uruchamianie vim ................................................................................ 114
                     3.36.2. Tryb wprowadzania tekstu ................................................................... 114
                     3.36.3. Tryb wydawania poleceń ...................................................................... 115
                     3.36.4. Bufor pamięci i pliki tymczasowe ........................................................ 116
                     3.36.5. Popularne funkcje edycyjne ................................................................. 117
                     3.36.6. Przemieszczanie kursora ...................................................................... 117
                     3.36.7. Usuwanie tekstu ................................................................................... 117
                     3.36.8. Zamienianie tekstu ............................................................................... 119
                     3.36.9. Wklejanie tekstu ................................................................................... 119
                    3.36.10. Wyszukiwanie ...................................................................................... 120
                    3.36.11. Wyszukiwanie i zamienianie ................................................................ 121
                    3.36.12. Zapisywanie i odczytywanie pliku ....................................................... 121
                    3.36.13. Inne ....................................................................................................... 122
                    3.36.14. Dostosowywanie vim ........................................................................... 123
                    3.36.15. Zachowywanie ustawień ...................................................................... 123
              3.37. Edycja pliku — emacs ........................................................................................ 124
                     3.37.1. Uruchamianie edytora emacs ............................................................... 125
                     3.37.2. Polecenia edytora emacs ...................................................................... 125
                     3.37.3. Wydobywanie się z kłopotów .............................................................. 126
                     3.37.4. Uzyskiwanie pomocy ........................................................................... 126
                     3.37.5. Opuszczanie edytora emacs .................................................................. 127
                     3.37.6. Tryby działania edytora emacs ............................................................. 127
                     3.37.7. Wpisywanie tekstu ............................................................................... 127
8                                                                           Linux dla programistów i użytkowników


                    3.37.8. Popularne funkcje edycyjne ................................................................. 127
                    3.37.9. Przemieszczanie kursora ...................................................................... 128
                   3.37.10. Usuwanie, wklejanie i cofanie zmian ................................................... 128
                   3.37.11. Wyszukiwanie ...................................................................................... 129
                   3.37.12. Wyszukiwanie i zastępowanie .............................................................. 129
                   3.37.13. Zapisywanie i ładowanie plików .......................................................... 130
                   3.37.14. Inne ....................................................................................................... 130
             3.38. Poczta elektroniczna — mail .............................................................................. 130
                    3.38.1. Wysyłanie poczty ................................................................................. 131
                    3.38.2. Czytanie poczty .................................................................................... 133
                    3.38.3. Kontaktowanie się z administratorem systemu .................................... 135
Rozdział 4. Narzędzia GNU dla zaawansowanych użytkowników ....................... 137
              4.1. Wprowadzenie .................................................................................................... 138
              4.2. Filtrowanie plików — grep, egrep, fgrep i uniq ................................................. 138
                      4.2.1. Filtrowanie według wzorca — egrep, fgrep, grep ................................ 139
                      4.2.2. Usuwanie powtarzających się wierszy — uniq .................................... 142
              4.3. Sortowanie plików — sort .................................................................................. 143
              4.4. Porównywanie plików — cmp i diff .................................................................. 146
                      4.4.1. Sprawdzanie identyczności — cmp ..................................................... 146
                      4.4.2. Różnice w plikach — diff .................................................................... 147
              4.5. Wyszukiwanie plików — find ............................................................................ 148
              4.6. Archiwizowanie plików — cpio, tar, dump i restore .......................................... 150
                      4.6.1. Kopiowanie plików — cpio ................................................................. 151
                      4.6.2. Archiwizowanie na taśmie — tar ......................................................... 153
                      4.6.3. Tworzenie przyrostowych kopii zapasowych — dump i restore ......... 155
              4.7. Ustalanie harmonogramu wywoływania poleceń — cron i at ............................ 156
                      4.7.1. Cykliczne uruchamianie — crontab ..................................................... 157
                      4.7.2. Jednokrotne uruchamianie zadania w przyszłości — at ....................... 158
              4.8. Programowalne przetwarzanie tekstu — gawk .................................................. 160
                      4.8.1. Programy gawk ..................................................................................... 161
                      4.8.2. Dostęp do pojedynczych pól ................................................................ 162
                      4.8.3. BEGIN i END ...................................................................................... 162
                      4.8.4. Operatory .............................................................................................. 162
                      4.8.5. Zmienne ................................................................................................ 163
                      4.8.6. Struktury sterujące ................................................................................ 163
                      4.8.7. Rozszerzone wyrażenia regularne ........................................................ 164
                      4.8.8. Zasięg warunków ................................................................................. 164
                      4.8.9. Separatory pól ....................................................................................... 164
                     4.8.10. Funkcje wbudowane ............................................................................. 165
              4.9. Dowiązania twarde i symboliczne — ln ............................................................. 165
             4.10.Identyfikowanie powłok — whoami .................................................................. 167
             4.11. Zmienianie użytkownika — su ........................................................................... 167
             4.12. Przekształcanie plików ....................................................................................... 168
                     4.12.1. Kompresowanie plików — gzip i gunzip ............................................. 169
                     4.12.2. Edycja strumienia — sed ...................................................................... 169
                     4.12.3. Konwertowanie znaków — tr ............................................................... 173
                     4.12.4. Konwersja sekwencji podkreślających — ul ........................................ 174
             4.13.Przeglądanie surowej zawartości pliku — od ..................................................... 175
             4.14.Montowanie systemów plików — mount i umount ........................................... 176
             4.15. Identyfikowanie terminali — tty ........................................................................ 177
             4.16. Pomiar czasu wykonania — time ....................................................................... 177
Spis treści                                                                                                                                  9


                4.17.Tworzenie własnych programów — Perl ........................................................... 178
                      4.17.1. Skąd wziąć Perla? ................................................................................. 179
                      4.17.2. Uruchamianie Perla .............................................................................. 179
                      4.17.3. Wyświetlanie tekstu ............................................................................. 179
                      4.17.4. Zmienne, łańcuchy i liczby całkowite .................................................. 180
                      4.17.5. Tablice .................................................................................................. 180
                      4.17.6. Operatory matematyczne i logiczne ..................................................... 182
                      4.17.7. Operatory łańcuchów ........................................................................... 183
                      4.17.8. Operatory porównania .......................................................................... 183
                      4.17.9. Pętle — if, while, for i foreach ............................................................. 184
                     4.17.10. Obsługa plików ..................................................................................... 185
                     4.17.11. Funkcje ................................................................................................. 185
                     4.17.12. Funkcje biblioteczne ............................................................................. 186
                     4.17.13. Odczytywanie argumentów z wiersza poleceń .................................... 187
                     4.17.14. Praktyczny przykład ............................................................................. 188
Rozdział 5. Powłoki systemu Linux ................................................................. 193
                 5.1. Wprowadzanie .................................................................................................... 194
                 5.2. Wybór powłoki ................................................................................................... 195
                 5.3. Operacje powłoki ................................................................................................ 196
                 5.4. Pliki wykonywalne a wbudowane polecenia ...................................................... 197
                         5.4.1. Wyświetlanie informacji — echo ......................................................... 197
                         5.4.2. Zmiana katalogu — cd ......................................................................... 198
                 5.5. Metaznaki ........................................................................................................... 198
                 5.6. Przekierowanie ................................................................................................... 199
                         5.6.1. Przekierowanie wyjścia ........................................................................ 199
                         5.6.2. Przekierowanie wejścia ........................................................................ 200
                 5.7. Symbole wieloznaczne w nazwach plików ........................................................ 201
                         5.7.1. Potoki .................................................................................................... 202
                 5.8. Zastępowanie poleceniem ................................................................................... 204
                 5.9. Sekwencje ........................................................................................................... 204
                         5.9.1. Sekwencje warunkowe ......................................................................... 205
                5.10. Grupowanie poleceń ........................................................................................... 205
                5.11. Przetwarzanie w tle ............................................................................................. 206
                5.12.Przekierowanie procesów działających w tle ..................................................... 207
                5.13. Programy powłoki (skrypty) ............................................................................... 208
                5.14. Podpowłoki lub powłoki potomne ...................................................................... 209
                5.15. Zmienne .............................................................................................................. 210
                5.16. Cytowanie ........................................................................................................... 212
                5.17. Dokumenty wbudowane ..................................................................................... 213
                5.18. Sterowanie zadaniami ......................................................................................... 214
                       5.18.1. Status procesu — ps ............................................................................. 214
                       5.18.2. Wysyłanie sygnałów do procesów — kill ............................................ 217
                       5.18.3. Oczekiwanie na proces potomny — wait ............................................. 218
                5.19. Wyszukiwanie poleceń — $PATH ..................................................................... 219
                5.20.Zastępowanie standardowych narzędzi .............................................................. 220
                5.21.Kończenie działania i kody wyjścia .................................................................... 221
                5.22. Wspólne polecenia wbudowane ......................................................................... 222
                       5.22.1. Polecenie eval ....................................................................................... 222
                       5.22.2. Polecenie exec ...................................................................................... 222
                       5.22.3. Polecenie shift ...................................................................................... 223
                       5.22.4. Polecenie umask ................................................................................... 223
10                                                                               Linux dla programistów i użytkowników


Rozdział 6. Powłoka Bourne Again ................................................................. 227
                  6.1. Wprowadzenie .................................................................................................... 228
                  6.2. Rozpoczynanie sesji ............................................................................................ 229
                  6.3. Zmienne .............................................................................................................. 229
                          6.3.1. Tworzenie prostych zmiennych ............................................................ 230
                          6.3.2. Odwołania do zmiennych ..................................................................... 230
                          6.3.3. Tworzenie tablic ................................................................................... 233
                          6.3.4. Odwołania do tablic .............................................................................. 233
                          6.3.5. Tworzenie tablic ................................................................................... 234
                          6.3.6. Niszczenie tablic ................................................................................... 235
                          6.3.7. Odczytywanie zmiennej ze standardowego wejścia ............................ 235
                          6.3.8. Eksportowanie zmiennych ................................................................... 236
                          6.3.9. Zmienne tylko do odczytu .................................................................... 237
                        6.3.10. Zmienne predefiniowane ...................................................................... 238
                  6.4. Skróty poleceń .................................................................................................... 240
                          6.4.1. Aliasy .................................................................................................... 240
                          6.4.2. Historia poleceń .................................................................................... 241
                          6.4.3. Automatyczne uzupełnianie ................................................................. 243
                  6.5. Zastępowanie znaku tyldy .................................................................................. 243
                  6.6. Przekierowanie ................................................................................................... 244
                  6.7. Podstawianie poleceniem .................................................................................... 245
                  6.8. Arytmetyka ......................................................................................................... 245
                  6.9. Wyrażenia warunkowe ....................................................................................... 246
                          6.9.1. Porównania arytmetyczne .................................................................... 246
                          6.9.2. Porównywanie łańcuchów .................................................................... 247
                          6.9.3. Wyrażenia warunkowe dla plików ....................................................... 247
                 6.10. Struktury sterujące .............................................................................................. 247
                        6.10.1. Instrukcja case .. in .. esac .................................................................... 248
                        6.10.2. Instrukcja if .. then .. elif .. then .. else .. fi ........................................... 250
                        6.10.3. Instrukcja for .. do .. done ..................................................................... 251
                        6.10.4. Instrukcja while/until .. do .. done ........................................................ 251
                        6.10.5. Instrukcja trap ....................................................................................... 253
                 6.11. Funkcje ............................................................................................................... 253
                        6.11.1. Używanie parametrów .......................................................................... 254
                        6.11.2. Zwracanie wyniku funkcji .................................................................... 255
                        6.11.3. Dostęp do funkcji ................................................................................. 255
                        6.11.4. Rekurencja ............................................................................................ 256
                        6.11.5. Współdzielenie funkcji ......................................................................... 257
                 6.12. Tworzenie menu — select .................................................................................. 257
                 6.13.Dostęp do katalogów i stos katalogów ............................................................... 259
                 6.14. Sterowanie zadaniami ......................................................................................... 260
                        6.14.1. Wskazywanie zadania .......................................................................... 261
                        6.14.2. Polecenie bg ......................................................................................... 261
                        6.14.3. Polecenie fg .......................................................................................... 261
                        6.14.4. Polecenie kill ........................................................................................ 262
                 6.15. Opcje powłoki ..................................................................................................... 262
Rozdział 7. Powłoka Korn ............................................................................... 265
                  7.1. Wprowadzenie .................................................................................................... 266
                  7.2. Rozpoczynanie sesji ............................................................................................ 267
                  7.3. Zmienne .............................................................................................................. 268
                         7.3.1. Tworzenie (przypisywanie wartości) zmiennej .................................... 268
                         7.3.2. Odwołania do zmiennych ..................................................................... 269
                         7.3.3. Odczytywanie zmiennych ze standardowego wejścia .......................... 270
Spis treści                                                                                                                                    11


                          7.3.4. Eksportowanie zmiennych ................................................................... 271
                          7.3.5. Zmienne tylko do odczytu .................................................................... 272
                          7.3.6. Predefiniowane zmienne lokalne .......................................................... 273
                          7.3.7. Predefiniowane zmienne środowiska ................................................... 274
                  7.4. Aliasy .................................................................................................................. 274
                          7.4.1. Przypisywanie aliasów poleceniom wbudowanym .............................. 275
                          7.4.2. Usuwanie aliasów ................................................................................. 275
                          7.4.3. Predefiniowane aliasy ........................................................................... 276
                          7.4.4. Przydatne aliasy .................................................................................... 276
                          7.4.5. Aliasy śledzone ..................................................................................... 277
                          7.4.6. Współdzielenie aliasów ........................................................................ 277
                  7.5. Historia ............................................................................................................... 278
                          7.5.1. Polecenia numerowane ......................................................................... 278
                          7.5.2. Przechowywanie poleceń ..................................................................... 278
                          7.5.3. Ponowne wykonywanie poleceń .......................................................... 279
                          7.5.4. Edycja poleceń ..................................................................................... 279
                  7.6. Edycja poleceń .................................................................................................... 281
                          7.6.1. Wbudowany edytor — vi ..................................................................... 281
                          7.6.2. Wbudowany edytor — emacs i gmacs ................................................. 283
                  7.7. Arytmetyka ......................................................................................................... 284
                          7.7.1. Zapobieganie interpretacji metaznaków ............................................... 285
                          7.7.2. Sprawdzanie wartości ........................................................................... 285
                  7.8. Zastępowanie tyldy ............................................................................................. 285
                  7.9. Tworzenie menu — select .................................................................................. 286
                 7.10. Funkcje ............................................................................................................... 287
                        7.10.1. Używanie parametrów .......................................................................... 288
                        7.10.2. Zwracanie wyniku funkcji .................................................................... 289
                        7.10.3. Kontekst ................................................................................................ 289
                        7.10.4. Zmienne lokalne ................................................................................... 289
                        7.10.5. Rekurencja ............................................................................................ 290
                        7.10.6. Współdzielenie funkcji ......................................................................... 291
                 7.11. Sterowanie zadaniami ......................................................................................... 291
                        7.11.1. Polecenie jobs ....................................................................................... 292
                        7.11.2. Wskazywanie zadania .......................................................................... 292
                        7.11.3. Polecenie bg ......................................................................................... 293
                        7.11.4. Polecenie fg .......................................................................................... 293
                        7.11.5. Polecenie kill ........................................................................................ 293
                 7.12. Udoskonalenia .................................................................................................... 294
                        7.12.1. Przekierowanie ..................................................................................... 294
                        7.12.2. Potoki .................................................................................................... 295
                        7.12.3. Zastępowanie poleceniem .................................................................... 295
                        7.12.4. Zmienne ................................................................................................ 296
                        7.12.5. Polecenia wbudowane .......................................................................... 301
                 7.13. Przykładowy projekt — śmieci .......................................................................... 306
                 7.14. Opcje startowe powłoki ...................................................................................... 308
Rozdział 8. Powłoka C ................................................................................... 311
                  8.1. Wprowadzenie .................................................................................................... 312
                  8.2. Rozpoczynanie sesji ............................................................................................ 312
                  8.3. Zmienne .............................................................................................................. 314
                         8.3.1. Tworzenie prostych zmiennych i przypisywanie im wartości ............. 314
                         8.3.2. Odwołania do prostych zmiennych ...................................................... 315
                         8.3.3. Tworzenie zmiennych tablicowych i przypisywanie im wartości ........ 315
                         8.3.4. Dostęp do wartości zmiennej tablicowej .............................................. 316
12                                                                                Linux dla programistów i użytkowników


                          8.3.5. Budowanie tablic .................................................................................. 317
                          8.3.6. Predefiniowane zmienne lokalne .......................................................... 317
                          8.3.7. Tworzenie zmiennych środowiska i przypisywanie im wartości ......... 317
                          8.3.8. Predefiniowane zmienne środowiska ................................................... 319
                  8.4. Wyrażenia ........................................................................................................... 319
                          8.4.1. Wyrażenia łańcuchowe ......................................................................... 319
                          8.4.2. Wyrażenia arytmetyczne ...................................................................... 320
                          8.4.3. Wyrażenia stosowane w pracy z plikami ............................................. 321
                  8.5. Uzupełnianie nazw plików ................................................................................. 322
                  8.6. Edycja poleceń .................................................................................................... 323
                  8.7. Aliasy .................................................................................................................. 323
                          8.7.1. Usuwanie aliasów ................................................................................. 324
                          8.7.2. Przydatne aliasy .................................................................................... 324
                          8.7.3. Współdzielenie aliasów ........................................................................ 324
                          8.7.4. Aliasy z parametrami ............................................................................ 325
                  8.8. Historia ............................................................................................................... 325
                          8.8.1. Numerowane polecenia ........................................................................ 326
                          8.8.2. Przechowywanie poleceń ..................................................................... 326
                          8.8.3. Odczytywanie historii ........................................................................... 326
                          8.8.4. Ponowne wykonywanie poleceń .......................................................... 327
                          8.8.5. Dostęp do fragmentów historii ............................................................. 327
                          8.8.6. Dostęp do fragmentów nazw plików .................................................... 328
                          8.8.7. Zastępowanie historii ........................................................................... 329
                  8.9. Struktury sterujące .............................................................................................. 329
                          8.9.1. Pętla foreach .. end ............................................................................... 330
                          8.9.2. Polecenie goto ...................................................................................... 330
                          8.9.3. Instrukcje warunkowe if .. then .. else ..endif ....................................... 331
                          8.9.4. Polecenie onintr .................................................................................... 332
                          8.9.5. Polecenie repeat .................................................................................... 333
                          8.9.6. Instrukcja switch .. case .. endsw ......................................................... 333
                          8.9.7. Polecenie while .. end ........................................................................... 335
                 8.10. Przykładowy projekt — smieci .......................................................................... 335
                 8.11. Rozszerzenia ....................................................................................................... 337
                        8.11.1. Metaznaki {} ........................................................................................ 338
                        8.11.2. Rozwijanie nazw plików ...................................................................... 338
                        8.11.3. Przekierowanie ..................................................................................... 339
                        8.11.4. Potoki .................................................................................................... 339
                        8.11.5. Sterowanie zadaniami ........................................................................... 340
                        8.11.6. Kończenie działania powłoki logowania .............................................. 342
                 8.12. Polecenia wbudowane ........................................................................................ 342
                        8.12.1. Polecenie chdir ..................................................................................... 343
                        8.12.2. Polecenie glob ...................................................................................... 343
                        8.12.3. Polecenie source ................................................................................... 343
                 8.13. Stos katalogów .................................................................................................... 344
                        8.13.1. Tablica asocjacyjna .............................................................................. 345
                 8.14. Opcje startowe powłoki ...................................................................................... 346
Rozdział 9. Sieci i internet ............................................................................. 349
                   9.1. Wprowadzenie .................................................................................................... 350
                   9.2. Budowa sieci ....................................................................................................... 351
                          9.2.1. Ethernet ................................................................................................ 351
                          9.2.2. Mosty .................................................................................................... 352
                          9.2.3. Routery ................................................................................................. 352
                          9.2.4. Bramy ................................................................................................... 353
Spis treści                                                                                                                               13


                 9.3. Praca w sieci złożonej ......................................................................................... 353
                         9.3.1. Transmisja pakietowa ........................................................................... 354
                         9.3.2. Adresy IP .............................................................................................. 354
                         9.3.3. Nazwy ................................................................................................... 356
                         9.3.4. Trasowanie ........................................................................................... 356
                         9.3.5. Bezpieczeństwo .................................................................................... 356
                         9.3.6. Porty i popularne usługi ....................................................................... 358
                         9.3.7. Programowanie sieci ............................................................................ 359
                 9.4. Identyfikowanie użytkowników sieci ................................................................. 359
                         9.4.1. Wyświetlanie użytkowników — users ................................................. 359
                         9.4.2. Więcej informacji o użytkownikach — who i w .................................. 359
                         9.4.3. Nazwa Twojego hosta — hostname ..................................................... 360
                         9.4.4. Dane osobiste — finger ........................................................................ 360
                 9.5. Komunikowanie się z użytkownikami sieci ....................................................... 361
                         9.5.1. Ochrona przed komunikacją — mesg .................................................. 362
                         9.5.2. Wysyłanie pojedynczych wierszy — write .......................................... 362
                         9.5.3. Interaktywne rozmowy — talk ............................................................. 363
                         9.5.4. Wiadomości do wszystkich — wall ..................................................... 363
                 9.6. Przesyłanie danych ............................................................................................. 364
                         9.6.1. Kopiowanie plików pomiędzy dwoma hostami pracującymi
                                pod kontrolą systemu Linux lub UNIX — rcp i scp ............................ 365
                         9.6.2. Kopiowanie plików pomiędzy hostami niepracującymi
                                pod kontrolą systemu Linux lub UNIX — ftp i sftp ............................ 365
                 9.7. Przetwarzanie rozproszone ................................................................................. 368
                         9.7.1. Zdalne demony logowania — rlogin i slogin ....................................... 368
                         9.7.2. Zdalne wykonywanie poleceń — rsh i ssh ........................................... 368
                         9.7.3. Połączenia zdalne — telnet .................................................................. 370
                 9.8. Ewolucja internetu .............................................................................................. 372
                         9.8.1. Początki — lata sześćdziesiąte ............................................................. 373
                         9.8.2. Standaryzacja internetu — lata siedemdziesiąte .................................. 374
                         9.8.3. Rekonstrukcja i zmiana nazwy internetu — lata osiemdziesiąte ......... 376
                         9.8.4. Pajęczyna — lata dziewięćdziesiąte ..................................................... 379
                 9.9. Korzystanie ze współczesnego internetu ............................................................ 384
                         9.9.1. URL ...................................................................................................... 385
                         9.9.2. Przeszukiwanie sieci WWW ................................................................ 386
                         9.9.3. Wyszukiwanie użytkowników i domen ............................................... 386
Rozdział 10. Środowisko graficzne w Linuksie ................................................... 389
                10.1. Wprowadzenie .................................................................................................... 390
                       10.1.1. Graficzny interfejs użytkownika (GUI) ............................................... 390
                       10.1.2. MIT ....................................................................................................... 391
                10.2. Serwery X ........................................................................................................... 391
                       10.2.1. Geometria ekranu ................................................................................. 392
                       10.2.2. Bezpieczeństwo i uwierzytelnianie ...................................................... 393
                10.3. Środowiska graficzne .......................................................................................... 394
                       10.3.1. CDE ...................................................................................................... 394
                       10.3.2. GNOME ............................................................................................... 395
                       10.3.3. KDE ...................................................................................................... 395
                10.4. Menedżer okien .................................................................................................. 396
                       10.4.1. Aktywność okna ................................................................................... 396
                       10.4.2. Uruchamianie programów .................................................................... 396
                       10.4.3. Okna otwarte i zamknięte ..................................................................... 397
                       10.4.4. Wybór ................................................................................................... 398
14                                                                               Linux dla programistów i użytkowników


                10.5. Formanty ............................................................................................................. 400
                       10.5.1. Menu ..................................................................................................... 400
                       10.5.2. Przyciski ............................................................................................... 400
                       10.5.3. Pola wyboru i przyciski opcji ............................................................... 401
                       10.5.4. Paski przewijania .................................................................................. 402
                10.6.Operacje w środowisku graficznym ................................................................... 402
                       10.6.1. Przywoływanie głównego menu .......................................................... 402
                       10.6.2. Otwieranie i zamykanie okna ............................................................... 403
                       10.6.3. Minimalizowanie okna ......................................................................... 403
                       10.6.4. Maksymalizowanie okna ...................................................................... 404
                       10.6.5. Przesuwanie okna ................................................................................. 404
                       10.6.6. Zmiana rozmiaru okna .......................................................................... 404
                       10.6.7. Przenoszenie okna na spód lub na wierzch .......................................... 404
                       10.6.8. Przywoływanie menu okna .................................................................. 404
                10.7. Aplikacje klienckie ............................................................................................. 404
                       10.7.1. Polecenie xclock ................................................................................... 405
                       10.7.2. Polecenie xterm .................................................................................... 406
                10.8.Standardowe argumenty klientów X .................................................................. 406
                       10.8.1. Geometria ............................................................................................. 406
                       10.8.2. Tło i pierwszy plan ............................................................................... 406
                       10.8.3. Opcja title ............................................................................................. 407
                       10.8.4. Opcja iconic .......................................................................................... 407
                10.9. Tematy zaawansowane ....................................................................................... 407
                       10.9.1. Kopiuj i wklej ....................................................................................... 407
                       10.9.2. Korzystanie z sieci ................................................................................ 408
                       10.9.3. Zasoby aplikacji ................................................................................... 409
Rozdział 11. Programowanie w C ..................................................................... 413
                11.1. Język C ................................................................................................................ 414
                11.2. Kompilatory języka C ......................................................................................... 414
                11.3.Program złożony z jednego modułu ................................................................... 415
                        11.3.1. Kompilowanie programu C .................................................................. 416
                        11.3.2. Kod źródłowy poprawnej wersji programu wspak ............................... 417
                        11.3.3. Uruchamianie programu napisanego w C ............................................ 417
                        11.3.4. Nadawanie własnej nazwy plikowi wykonywalnemu .......................... 418
                11.4. Programy wielomodułowe .................................................................................. 418
                        11.4.1. Funkcje wielokrotnego użytku ............................................................. 419
                        11.4.2. Przygotowywanie funkcji wielokrotnego użytku ................................. 419
                        11.4.3. Oddzielne kompilowanie i konsolidacja modułów .............................. 420
                        11.4.4. Powtórne użycie funkcji wspak ............................................................ 421
                11.5. Archiwizacja modułów — ar .............................................................................. 422
                        11.5.1. Tworzenie lub dodawanie pliku ........................................................... 423
                        11.5.2. Dołączanie pliku ................................................................................... 423
                        11.5.3. Spis zawartości archiwum .................................................................... 423
                        11.5.4. Usuwanie pliku ..................................................................................... 423
                        11.5.5. Wydobywanie pliku z archiwum .......................................................... 423
                        11.5.6. Zarządzanie archiwum z wiersza poleceń ............................................ 424
                        11.5.7. Indeksowanie archiwów ....................................................................... 424
                        11.5.8. Biblioteki współdzielone ...................................................................... 425
                11.6.Zarządzanie zależnościami — make ................................................................... 425
                        11.6.1. Pliki powiązań ...................................................................................... 426
                        11.6.2. Porządek reguł ...................................................................................... 427
                        11.6.3. Uruchamianie make .............................................................................. 428
                        11.6.4. Reguły powiązań .................................................................................. 429
Spis treści                                                                                                                             15


                       11.6.5. Wymuszanie kompilacji ....................................................................... 429
                       11.6.6. Makra .................................................................................................... 430
                       11.6.7. Obsługa archiwum za pomocą make .................................................... 431
                       11.6.8. Inne możliwości make .......................................................................... 432
                11.7. Program profilujący GNU — gprof .................................................................... 432
                11.8.Szukanie błędów w programie — gdb ................................................................ 433
                       11.8.1. Przygotowywanie programu do debugowania ..................................... 434
                       11.8.2. Uruchamianie debuggera ...................................................................... 435
                       11.8.3. Uruchamianie programu ....................................................................... 435
                       11.8.4. Wyświetlanie kodu źródłowego ........................................................... 436
                       11.8.5. Ustawianie punktów wstrzymania ........................................................ 437
                       11.8.6. Wykonywanie krokowe ........................................................................ 439
                       11.8.7. Sprawdzanie wartości zmiennych ........................................................ 439
                       11.8.8. Olśnienie ............................................................................................... 441
                11.9. Gdy już skończyłeś — strip ................................................................................ 442
Rozdział 12. Programowanie systemu ............................................................... 445
                12.1. Wprowadzenie .................................................................................................... 446
                12.2. Obsługa błędów — perror() ................................................................................ 448
                12.3. Zarządzanie zwykłymi plikami ........................................................................... 450
                       12.3.1. Elementarz zarządzania plikami ........................................................... 450
                       12.3.2. Pierwszy przykład — wspak ................................................................ 452
                       12.3.3. Jak działa nasz program? ...................................................................... 453
                       12.3.4. Listing wspak.c ..................................................................................... 454
                       12.3.5. Otwieranie pliku — open() ................................................................... 459
                       12.3.6. Odczyt pliku — read() .......................................................................... 461
                       12.3.7. Zapis do pliku — write() ...................................................................... 462
                       12.3.8. Zmiana pozycji w pliku — lseek() ....................................................... 462
                       12.3.9. Zamykanie pliku — close() .................................................................. 464
                      12.3.10. Usuwanie pliku — unlink() .................................................................. 464
                      12.3.11. Drugi przykład — monitor ................................................................... 465
                      12.3.12. Jak działa program monitor? ................................................................ 466
                      12.3.13. Listing monitor.c .................................................................................. 467
                      12.3.14. Uzyskiwanie informacji o pliku — stat() ............................................. 473
                      12.3.15. Odczytywanie informacji o katalogu — opendir(), readdir() i closedir() 475
                      12.3.16. Inne wywołania systemowe związane z zarządzaniem plikami ........... 475
                      12.3.17. Zmiana właściciela i (lub) grupy pliku — chown() ............................. 475
                      12.3.18. Zmiana praw dostępu do pliku — chmod() .......................................... 477
                      12.3.19. Powielanie deskryptora pliku — dup() ................................................ 477
                      12.3.20. Operacje na deskryptorze pliku — fcntl() ............................................ 478
                      12.3.21. Sterowanie urządzeniami — ioctl() ...................................................... 480
                      12.3.22. Tworzenie dowiązań twardych — link() .............................................. 480
                      12.3.23. Tworzenie plików specjalnych — mknod(), mkdir() i mkfifo() .......... 481
                      12.3.24. Opróżnianie bufora systemu plików — sync() ........................................ 482
                      12.3.25. Zmiana rozmiaru pliku — truncate() .................................................... 482
                12.4. Zarządzanie procesami ....................................................................................... 483
                       12.4.1. Tworzenie nowego procesu — fork() .................................................. 484
                       12.4.2. Procesy osierocone ............................................................................... 486
                       12.4.3. Kończenie procesu — exit() ................................................................. 487
                       12.4.4. Procesy zombie ..................................................................................... 487
                       12.4.5. Oczekiwanie na proces potomny — wait() .......................................... 488
                       12.4.6. Różnicowanie procesu — exec() .......................................................... 489
                       12.4.7. Zmiana katalogu — chdir() .................................................................. 490
                       12.4.8. Zmiana priorytetu — nice() .................................................................. 491
16                                                                               Linux dla programistów i użytkowników


                        12.4.9. Dostęp do identyfikatorów grupy i użytkownika ................................. 492
                       12.4.10. Przykładowy program — przetwarzanie w tle ..................................... 493
                       12.4.11. Przekierowanie ..................................................................................... 494
                 12.5. Sygnały ............................................................................................................... 495
                        12.5.1. Typy sygnałów ..................................................................................... 496
                        12.5.2. Sygnały zdefiniowane .......................................................................... 496
                        12.5.3. Sygnały POSIX .................................................................................... 496
                        12.5.4. Sygnały terminala ................................................................................. 496
                        12.5.5. Ustawianie budzika w celu wysłania sygnału — alarm() .................... 497
                        12.5.6. Obsługa sygnałów — signal() .............................................................. 498
                        12.5.7. Ochrona istotnego kodu i łączenie programów obsługi przerwań ....... 500
                        12.5.8. Wysyłanie sygnałów — kill() ............................................................... 500
                        12.5.9. Zakończenie procesu potomnego ......................................................... 501
                       12.5.10. Zawieszanie i wznawianie procesu ...................................................... 502
                       12.5.11. Grupy procesów i terminale sterujące .................................................. 504
                 12.6. Komunikacja międzyprocesowa ......................................................................... 507
                        12.6.1. Potoki .................................................................................................... 508
                        12.6.2. Gniazda ................................................................................................. 514
Rozdział 13. Wewnątrz Linuksa ........................................................................ 537
                 13.1. Podstawowe informacje o jądrze ........................................................................ 538
                        13.1.1. Podsystemy jądra .................................................................................. 539
                        13.1.2. Procesy i pliki ....................................................................................... 539
                        13.1.3. Komunikacja z jądrem .......................................................................... 539
                        13.1.4. Wywołania systemowe ......................................................................... 540
                        13.1.5. Tryb jądra i tryb użytkownika .............................................................. 541
                        13.1.6. Przetwarzanie synchroniczne kontra asynchroniczne .......................... 543
                        13.1.7. Przerywanie przerwań .......................................................................... 544
                 13.2. System plików .................................................................................................... 544
                        13.2.1. Budowa dysku ...................................................................................... 545
                        13.2.2. Wirtualny system plików ...................................................................... 549
                        13.2.3. Struktura i-węzłów ............................................................................... 549
                        13.2.4. Układ systemu plików .......................................................................... 551
                        13.2.5. Uszkodzone bloki ................................................................................. 553
                        13.2.6. Katalogi ................................................................................................ 553
                        13.2.7. Tłumaczenie ścieżek dostępu na numery i-węzłów ............................. 553
                        13.2.8. Montowanie systemów plików ............................................................. 555
                 13.3. Zarządzanie procesami ....................................................................................... 556
                        13.3.1. Pliki wykonywalne ............................................................................... 556
                        13.3.2. Pierwsze procesy .................................................................................. 557
                        13.3.3. Procesy jądra i procesy użytkownika ................................................... 557
                        13.3.4. Hierarchia procesów ............................................................................. 557
                        13.3.5. Stany procesu ....................................................................................... 558
                        13.3.6. Reprezentacja procesu .......................................................................... 558
                        13.3.7. Lista zadań ............................................................................................ 560
                        13.3.8. Planista ................................................................................................. 560
                 13.4. Zarządzanie pamięcią wirtualną ......................................................................... 561
                        13.4.1. Tablica stron ......................................................................................... 562
                        13.4.2. Stronicowanie ....................................................................................... 563
                        13.4.3. Pliki odwzorowywane w pamięci ......................................................... 563
                        13.4.4. Wymiana .............................................................................................. 563
                        13.4.5. Alokacja i dealokacja ........................................................................... 564
                        13.4.6. Ładowanie pliku wykonywalnego — execl() i execv() ....................... 565
                        13.4.7. Powielanie procesu — fork() ............................................................... 565
Spis treści                                                                                                                              17


                13.5. Wejście i wyjście ................................................................................................ 566
                       13.5.1. Obiekty wejścia-wyjścia ....................................................................... 566
                       13.5.2. Wywołania systemowe wejścia-wyjścia .............................................. 567
                       13.5.3. Buforowanie wejścia-wyjścia ............................................................... 567
                       13.5.4. Funkcje wejścia-wyjścia dla zwykłego pliku ....................................... 568
                       13.5.5. Funkcje wejścia-wyjścia do katalogu ................................................... 571
                       13.5.6. Montowanie systemów plików ............................................................. 571
                       13.5.7. Tłumaczenie ścieżek dostępu ............................................................... 572
                       13.5.8. Funkcje wejścia-wyjścia dla plików specjalnych ................................. 573
                13.6. Komunikacja międzyprocesowa ......................................................................... 576
                       13.6.1. Sygnały ................................................................................................. 576
                       13.6.2. Potoki .................................................................................................... 579
                       13.6.3. Gniazda ................................................................................................. 580
Rozdział 14. Administrowanie systemem .......................................................... 583
               14.1. Wprowadzenie .................................................................................................... 584
               14.2. Jak zostać superużytkownikiem? ........................................................................ 584
                       14.2.1. Korzystanie z su ................................................................................... 585
                       14.2.2. Korzystanie z sudo ............................................................................... 585
               14.3. Uruchamianie systemu ........................................................................................ 586
                       14.3.1. Jądro systemu ....................................................................................... 586
                       14.3.2. Poziomy działania ................................................................................ 587
                       14.3.3. Proces init ............................................................................................. 587
                       14.3.4. Skrypty startowe ................................................................................... 588
               14.4. Wyłączanie systemu ........................................................................................... 588
               14.5. Konserwacja systemu plików ............................................................................. 589
                       14.5.1. Integralność systemu plików ................................................................ 589
                       14.5.2. Przestrzeń dyskowa .............................................................................. 589
                       14.5.3. Tworzenie nowego systemu plików ..................................................... 592
                       14.5.4. Tworzenie kopii zapasowej systemu plików ........................................ 592
               14.6.Zarządzanie kontami użytkowników .................................................................. 593
                       14.6.1. Plik haseł .............................................................................................. 593
                       14.6.2. Plik grup ............................................................................................... 594
               14.7.Instalowanie nowego oprogramowania .............................................................. 595
               14.8. Urządzenia peryferyjne ....................................................................................... 596
               14.9. Interfejs sieciowy ................................................................................................ 597
              14.10. Automatyzacja zadań .......................................................................................... 598
              14.11. Dostrajanie parametrów pracy jądra ................................................................... 599
                     14.11.1. System plików /proc ............................................................................. 599
                     14.11.2. Narzędzie sysctl .................................................................................... 600
              14.12. Bezpieczeństwo .................................................................................................. 600
              Dodatek A ................................................................................... 605
              Bibliografia .................................................................................. 617
              Skorowidz .................................................................................... 619
Rozdział 2.




Cel
      W przeszłości, gdy ktoś zostawał nowym użytkownikiem UNIX-a, system przeważ-
      nie udostępniany był w miejscu pracy użytkownika lub w szkole. Linux jest syste-
      mem popularnym zarówno na uniwersytetach, jak i w środowiskach biznesowych, ale
      stanowi on także świetny system operacyjny dla użytku osobistego. Z tego powodu
      możesz rozważyć zainstalowanie Linuksa. Ten rozdział uczyni to mniej stresującym.



Wymagania wstępne
      Ten rozdział będzie na pewno przydatny początkującym, którzy nie mieli jeszcze stycz-
      ności z Linuksem. Ogólna znajomość zagadnień związanych z komputerami oraz lektu-
      ra rozdziału 1., „Czym jest Linux?”, będzie na pewno bardzo pomocna.



Zakres
      W tym rozdziale omówię kwestie związane z wyborem właściwej dystrybucji Linuksa,
      metody jej zdobycia i sposób instalacji systemu. Ponieważ każda instalacja jest inna,
      będziesz musiał sięgnąć do przewodnika instalacji lub innej dokumentacji dystrybucji,
      którą będziesz chciał zainstalować.
46                                                  Linux dla programistów i użytkowników



Sposób prezentacji
     Rozpoczniemy od przejrzenia sprzętu wymaganego do uruchomienia Linuksa oraz po-
     pularnych dystrybucji Linuksa, z których prawdopodobnie będziesz wybierał. Gdy już za-
     decydujesz, którą zainstalować, omówimy kwestie związane z zainstalowaniem Linuksa.



2.1. Wstęp
     Być może sięgnąłeś po tę książkę, aby dowiedzieć się, jak korzystać z Linuksa w miej-
     scu, gdzie jest już zainstalowany. W takim przypadku z lektury tego rozdziału dowiesz
     się po prostu, w jaki sposób przebiegała instalacja. Możesz jednak zacząć korzystać
     z Linuksa, nie przeprowadzając własnej instalacji.

     Równie prawdopodobne jest to, że potrzebujesz lub chcesz uruchomić Linuksa na
     własnym komputerze (np. w domu). W takim przypadku musisz zdobyć dystrybucję
     i ją zainstalować, zanim przystąpisz do „prawdziwej” pracy.

     Ilość możliwych alternatyw, jakie są dostępne, może być przytłaczająca. Ponieważ
     możesz wybrać dowolną dystrybucję, nie mogę przedstawić szczegółowego opisu in-
     stalacji dla każdej z nich. Gdybym wybrał jedną dystrybucję i na jej podstawie pisał tę
     książkę, byłaby on znacznie mniej przydatna dla osób, które wybrały inną dystrybucję
     (a na pewno byłaby to większość czytelników). Aby jak najwięcej osób odniosło ko-
     rzyść z przeczytania tego rozdziału, nie ograniczymy się do omówienia jednej dystry-
     bucji, ale omówimy liczne kwestie i decyzje, jakie należy uwzględnić podczas instalacji
     dowolnej dystrybucji Linuksa. Powinieneś zapoznać się z dokumentacją instalacji dołą-
     czoną do wybranej dystrybucji.



2.2. Upewnij się, że masz
     odpowiedni sprzęt
     Linux działa na wielu platformach sprzętowych, ale mimo to warto jest poświęcić parę
     minut, aby mieć pewność, że komputer, na którym ma zostać zainstalowany, będzie
     odpowiedni.


2.2.1. Jednostka centralna (procesor)
     Liczba komputerów z procesorami firmy Intel (lub ich klonami), na których zainsta-
     lowany jest Linux, prawdopodobnie przewyższa liczbę instalacji na pozostałych typach
     sprzętu (przede wszystkim dlatego, że stanowią one większość obecnie używanych
Rozdział 2. ¨ Instalowanie Linuksa                                                                  47


          systemów). Jednak poza typowymi procesorami dla PC, produkowanymi przez firmy
          takie jak Intel, AMD i Cyrix, istnieją inne rodziny procesorów, na których Linux może
          pracować1:
            t 68000 (Motorola),
            t Alpha (DEC, stanowiący teraz część HP),
            t Itanium (HP i Intel),
            t MIPS (SGI),
            t PA-RISC (HP),
            t PowerPC (IBM i Freescale Semiconductor, niegdyś część Motoroli),
            t RS6000 (IBM),
            t SPARC (Sun Microsystems),
            t Vax (DEC, stanowiący teraz część HP).

          Procesor Intel Pentium I jest najstarszym procesorem Intela, jakiego mógłbyś użyć.
          Niektóre dystrybucje są kompilowane specjalnie dla Pentium, więc nie będą one działać
          na starszych procesorach, ale nawet jeżeli na systemie 80486 uda się uruchomić Linuk-
          sa, wydajność pozostawi wiele do życzenia. Odkryłem, że Pentium II (z odpowiednią
          ilością pamięci) wystarczy do większości zastosowań.


2.2.2. Architektura magistrali
          Większość współczesnych komputerów klasy PC posiada dwa typy architektury ma-
          gistrali: PCI (ang. Peripheral Component Interconnect) i ISA (ang. Industry Standard
          Architecture). Magistrala PCI ma szerokość 32 bitów i jest szybsza od starszych ar-
          chitektur magistral (a jej rozszerzona wersja — PCI-X — jest jeszcze szybsza). Magi-
          strala ISA jest jedną z tych starszych architektur. Jej szerokość to 16 bitów i jest wolniej-
          sza od magistrali PCI, ale jest jeszcze dostępna w wielu komputerach w celu zapewnienia
          zgodności ze starszym sprzętem. Po raz pierwszy została zastosowana przez IBM w 1980
          roku i miała szerokość 8 bitów, a później 16. Rozszerzona magistrala ISA (EISA) ma
          szerokość 32 bitów i także jest obsługiwana przez jądro Linuksa.

          Czasem Linux wymaga zastosowania dodatkowych sterowników dla nietypowych urzą-
          dzeń przyłączonych do magistrali ISA, ale z większością urządzeń PCI działa poprawnie.


2.2.3. Pamięć
          Jak każdy rozbudowany system operacyjny, także Linux wymaga znacznej ilości pa-
          mięci do wydajnej pracy. Tabela 2.1 przedstawia zalecaną ilość pamięci dla różnego
          typu instalacji.

1
    Oprócz wymienionych obecnie coraz większą popularnością cieszą się procesory ARM używane
    przede wszystkim w urządzeniach mobilnych — przyp. tłum.
48                                                              Linux dla programistów i użytkowników


Tabela 2.1. Zalecana ilość pamięci operacyjnej
    Minimalna ilość pamięci dla systemu
                                                                               64 MB
    bez graficznego interfejsu użytkownika
    Minimalna ilość pamięci dla typowej graficznej stacji roboczej             128 MB
    Zalecana ilość pamięci dla typowej stacji roboczej                         256 MB (lub więcej)

            Linux będzie działał na systemach z mniejszą ilością pamięci, ale jego wydajność będzie
            pozostawiała wiele do życzenia. Oczywiście im więcej pamięci jest zainstalowane w sys-
            temie, tym lepiej.


2.2.4. Dysk
            W zasadzie każdy system operacyjny zajmuje więcej przestrzeni na dysku wraz z każdą
            nową edycją i Linux nie stanowi tu wyjątku. Pełna instalacja Linuksa, w zależności
            od wybranej dystrybucji, wymaga około 3 gigabajtów2 (GB) przestrzeni na dysku. Na
            szczęście można ograniczyć ilość potrzebnego miejsca i nie stracić przy tym na uży-
            teczności systemu. Tabela 2.2 przedstawia oszacowaną przestrzeń wymaganą dla naj-
            częstszych sposobów użytkowania Linuksa.

            Większość komputerów opartych na procesorach Intel wyposażona jest w dyski twarde
            wykorzystujące interfejs IDE (ang. Integrated Device Electronics), z którymi Linux
            dobrze współpracuje. Niektóre wyższej klasy komputery PC mogą korzystać z dys-
            ków SCSI (ang. Small Computer Systems Interface) i mimo że Linux jest dostarczany
            ze sterownikami dla SCSI, jądro uruchamiające system nie zawsze je odnajduje przy
            ustawieniach domyślnych. Być może zajdzie konieczność sięgnięcia do przewodnika
            instalacji3, aby dowiedzieć się, jak załadować sterowniki SCSI, gdy Linux nie widzi
            dysków podczas ładowania systemu.

Tabela 2.2. Zalecana ilość miejsca na dysku twardym
    Mały system, bez większości dodatkowego oprogramowania                        Od 500 MB do 1 GB
    Typowa instalacja Linuksa zawierająca popularne aplikacje                     1 – 2 GB
    Stacja robocza lub serwer z dołączoną dużą ilością dodatkowego                2 – 4 GB
    oprogramowania
    Pełna instalacja zawierająca wszystkie pakiety z nośników instalacyjnych      4 – 12 GB (w zależności
                                                                                  od wybranej dystrybucji)


2.2.5. Monitor, klawiatura i myszka
            Większość monitorów, klawiatur i myszek, które są podłączone do komputera, będzie
            współpracować z Linuksem. Podobnie jak przy innym sprzęcie, starsze modele mogą
            nie być obsługiwane. Czasami także najnowsze urządzenia nie są rozpoznawane, po-
            nieważ nikt nie zdążył jeszcze napisać do nich sterowników.

2
     1 GB = 1024 megabajty (MB).
3
     Podobna sytuacja pojawia się często w przypadku użycia dysków SATA — przyp. tłum.
Rozdział 2. ¨ Instalowanie Linuksa                                                         49


        Wiele dystrybucji domyślnie ustawia rozdzielczość obrazu na 640×480 pikseli, aby
        zapewnić kompatybilność z jak największą liczbą kart graficznych i monitorów. Po
        zainstalowaniu Linuksa można zmienić konfigurację obrazu i ustawić wyższą rozdziel-
        czość, w granicach obsługiwanych przez kartę graficzną i monitor.

        Linux obsługuje większość klawiatur oraz myszy podłączonych zarówno do portu
        PS/2, jak i portu szeregowego, bez potrzeby określania konkretnego sterownika, ale być
        może będziesz musiał wybrać typ urządzenia z listy.



2.3. Wybór dystrybucji
        Jeżeli Linux ma jakąś wadę, to jest nią na pewno duża ilość dystrybucji, spośród któ-
        rych można wybierać! Wiele dużych i małych firm, a nawet pojedyncze osoby tworzą
        własne dystrybucje, które mają zaspokajać określone potrzeby. Jest to zaletą otwarte-
        go oprogramowania, ale może być też wadą, jeżeli chcesz wybrać tylko jedną z nich,
        aby zainstalować ją na własnym komputerze. Dystrybucje Linuksa są dostępne na
        wszystkich typach nośników, pod wszystkie platformy systemowe i dla różnorodnych
        potrzeb użytkowników. Niektóre dystrybucje (np. Knoppix, Linspire, MEPIS i SuSE)
        mają wersje Live, które uruchamiane są bezpośrednio z płyty CD-ROM, bez potrzeby
        przeprowadzania instalacji. FeatherLinux może być uruchamiany z pendrive’a podłą-
        czanego poprzez złącze USB. Yellow Dog Linux działa na komputerze Power Mac
        firmy Apple.

        Dobra wiadomość jest taka, że tylko kilka dystrybucji jest szeroko rozpowszechnio-
        nych. Istnieje znacznie więcej dystrybucji, niż moglibyśmy tu omówić. Ograniczymy się
        zatem tylko do najbardziej popularnych i najtańszych. Sporo informacji na ich temat
        (oraz wiele innych) można znaleźć w następujących witrynach:
            http://www.linux.org,
            http://www.distrowatch.com.

        Kod Linuksa i narzędzi GNU jest kodem otwartym, więc jest dostępny za darmo. Jed-
        nak w zależności od dystrybucji, którą wybierzesz, nośnika i wsparcia technicznego,
        być może będziesz musiał wydać jakąś sumę pieniędzy. Większość omawianych tu
        dystrybucji może zostać pobrana z internetu, ale wszystkie są również dostępne za
        niewielką opłatą w wersji na płytach CD.


2.3.1. Debian
        Debian GNU/Linux jest prawdziwie niekomercyjną dystrybucją Linuksa, która jest za-
        rządzana i rozwijana przez ochotników rozsianych po całym świecie, a nie przez jakie-
        kolwiek przedsiębiorstwo. Debian jest dostępny dla większej liczby platform systemo-
        wych niż większość pozostałych dystrybucji.
50                                                       Linux dla programistów i użytkowników


          Debian ma opinię trudnego w instalacji, jednak jest to sukcesywnie zmieniane dzięki
          utworzeniu nowego programu instalacyjnego. Podczas instalacji Linuksa można wybrać
          wiele opcji, a obecnie używany system instalacji Debiana wymaga od użytkownika ich
          zrozumienia. Instalacja jest przeprowadzana w trybie tekstowym (bez interfejsu graficz-
          nego), co może sprawiać trudność początkującym użytkownikom. System X Win-
          dow może zostać skonfigurowany dopiero po zakończeniu instalacji, więc początkowo
          Debian nie jest wyposażony w graficzny interfejs użytkownika.

          Zainstalowany Debian zbiera jednak wysokie noty za jego zaawansowany mechanizm
          zarządzania pakietami (ang. Advanced Packaging Tool), który służy do instalacji
          pakietów z programami (stosowany zamiast bardziej popularnego Red Hat Package
          Manager).

          Debian jest niezawodną dystrybucją i jest bardzo popularny wśród zaawansowanych
          użytkowników. Więcej informacji na jego temat uzyskasz w witrynach:
               http://www.debian,org/,
               http://www.aboutdebian.com/.


2.3.2. Fedora
          Założony w 1994 roku Red Hat, Inc. był wczesnym i bez wątpienia odnoszącym naj-
          większe sukcesy komercyjnym producentem dystrybucji Linux. Z biegiem czasu Red
          Hat skupił się na klientach biznesowych, którzy oczekiwali większego wsparcia dla sys-
          temu używanego w celach komercyjnych. Po wdrożeniu programu szkoleniowego Red
          Hat Certified Engineer przedsiębiorcy uzyskali pewność, że informacje, uaktualnienia
          i wsparcie techniczne będą dostępne jeszcze przez długi czas.

          Sukces oddalił Red Hata od mniejszych klientów i pojedynczych użytkowników Linuksa.
          Aby nie zaniedbać tej wielkiej i lojalnej grupy użytkowników, Red Hat powołał Projekt
          Fedora4, który w odróżnieniu od komercyjnej wersji systemu jest zarządzany przez
          wspólnotę użytkowników. Jego celem jest szybkie rozwijanie dystrybucji, tak więc jest
          ona pełna nowych rozwiązań, co odbija się nieco na stabilności. Dystrybucja dostarcza-
          na przez Projekt Fedora znana jest jako Fedora Core Linux i jest popularna dzięki ła-
          twości instalacji oraz użytkowania. Pomimo że Red Hat sponsoruje Projekt Fedora,
          nie udziela on wsparcia technicznego użytkownikom dystrybucji Fedora Core, w prze-
          ciwieństwie do własnych, komercyjnych dystrybucji.

          Jak większość twórców dystrybucji, Red Hat dodał kilka rozszerzeń do podstawowe-
          go systemu GNU/Linux. Fedora Core dostarczana jest z graficznym narzędziem do par-
          tycjonowania dysków, a także z własnym programem zarządzania pakietami (ang. Red
          Hat Package Manager — RPM), który jest używany także w wielu innych dystrybucjach.



4
    W 2002 roku powstała polska dystrybucja oparta na Fedora Core — Aurox. Więcej informacji
    na jej temat uzyskasz w witrynie http://www.aurox.org — przyp. tłum.
Rozdział 2. ¨ Instalowanie Linuksa                                                             51


        Fedora Core jest wyposażona w bardzo przyjazne narzędzie instalacyjne i najlepiej ze
        wszystkich dystrybucji wykrywa podczas instalacji urządzenia zainstalowane w sys-
        temie. Pomaga też dokonać wyboru spośród dodatkowych pakietów dostępnych do
        zainstalowania.

        Oficjalnie Fedora Core jest oznaczana jako wersja eksperymentalna i nie jest przezna-
        czona dla zastosowań wymagających niezawodności, ale dla większości zastosowań
        dystrybucja ta jest zupełnie wystarczająca. W środowisku biznesowym lub w innych
        istotnych zastosowaniach raczej wykorzystywane są komercyjne wydania Red Hata.
        Aby uzyskać więcej informacji na temat Fedora Core i Red Hata, odwiedź następują-
        ce witryny:
             http://fedora.redhat.com/,
             http://www.fedoranews.org/,
             http://www.redhat.com/.


2.3.3. Mandriva
        Mandriva Linux wywodzi się z dystrybucji Mandrake, która z kolei bazowała na Red
        Hacie. W 2005 roku firma Mandrake połączyła się z firmą Conectiva i zmieniona zo-
        stała nazwa zarówno firmy, jak i dystrybucji na Mandriva. Z dystrybucją dostarczane jest
        bardzo wygodne graficzne centrum sterowania (Centrum Sterowania Mandriva Linux).
        Mandriva korzysta z pakietów RPM, a oprócz tego posiada narzędzie działające w trybie
        tekstowym urpmi, które pozwala na przeprowadzanie aktualizacji pakietów (i całego
        systemu) na zasadzie podobnej do aplikacji apt-get, znanej z Debiana. Dystrybucja ta
        jest publicznie dostępna, jednak użytkownicy opłacający abonament Mandriva Club
        mają specjalne przywileje, w tym np. głosowanie, które programy mają zostać włą-
        czone do następnej dystrybucji. Więcej informacji na temat tej dystrybucji znajdziesz
        w witrynie:
             http://www.mandriva.pl.


2.3.4. Slackware
        Slackware Linux był pierwszą dystrybucją Linuksa utworzoną przez Patricka J. Volker-
        dinga (zresztą dalej aktywnie uczestniczącego w jej rozwoju) podczas studiów na uni-
        wersytecie stanowym Moorhead w Minnesocie. Podobnie jak Debian, Slackware jest
        niekomercyjną dystrybucją i stara się pozostać bardziej tradycyjną i zbliżoną do „czystej”
        dystrybucji Linuksa.

        Instalacja przeprowadzana jest w trybie tekstowym, a nie graficznym, co może prze-
        rażać początkujących użytkowników. Aby zainstalować system, należy załadować jądro,
        a następnie uruchomić narzędzie do partycjonowania dysku (fdisk lub cfdisk), po czym
        uruchomić program konfiguracyjny. Podobnie jak w Debianie, system X Window może
        zostać skonfigurowany dopiero po instalacji, więc początkowo Slackware nie jest wy-
        posażony w graficzny interfejs użytkownika.
52                                                  Linux dla programistów i użytkowników


     Braki w różnego rodzaju dodatkach Slackware nadrabia stabilnością. Doświadczeni
     użytkownicy (wśród których Slackware jest najpopularniejszy) doceniają, że nie jest
     on zabałaganiony niepotrzebnym kodem dodatkowych aplikacji.

     Spośród wszystkich dystrybucji Slackware najbardziej wyróżnia się tym, że podczas
     ładowania używa on skryptów przypominających skrypty BSD, a nie bardziej popu-
     larnej struktury z System V. Zawiera on także własne narzędzie do obsługi pakietów
     (pkgtool) zamiast RPM, ale pkgtool obsługuje także pliki w formacie RPM.

     Więcej informacji na temat Slackware znajdziesz w witrynie:
          http://www.slackware.com.


2.3.5. SuSE
     SuSE Linux powstał w Niemczech i był bardzo popularny w Europie. Jest on pochodną
     Slackware’a, ale posiada też cechy typowe dla komercyjnych dystrybucji. SuSE należy
     teraz do Novella i pomału staje się ulubioną dystrybucją w Stanach Zjednoczonych.

     SuSE posiada własne graficzne narzędzie służące do instalacji i konfiguracji, zwane YaST
     (jest to skrót od angielskiego Yet another Setup Tool — kolejne narzędzie instalacyj-
     ne). YaST wykonuje całą instalację (czasem, co jest przykre, w trybie tekstowym),
     włączając w to dzielenie dysku na partycje, a także jest głównym narzędziem służącym
     do konfiguracji działającego systemu. To rozwiązanie jest bardzo wygodne i zapew-
     nia miejsce w systemie, w którym można wykonać każde zadanie związane z konfi-
     guracją i aktualizacją systemu. SuSE dostarcza także narzędzie do konfiguracji systemu
     X Window o nazwie SaX2. Podobnie jak wiele innych dystrybucji, SuSE korzysta z pa-
     kietów RPM.

     Więcej informacji na temat SuSE znajdziesz w witrynie:
          http://www.suse.com.


2.3.6. TurboLinux
     Podczas gdy amerykańskim czytelnikom TurboLinux może nie przypaść do gustu, spodo-
     ba się on użytkownikom z innych części świata. TurboLinux jest wiodącą dystrybucją
     Linuksa w Azji i jest tam bardzo popularna, ponieważ świetnie obsługuje wielobajtowe
     języki (a więc dobrze działa w wersji chińskiej, japońskiej i koreańskiej). TurboLinux
     zawiera łatwy w użyciu program instalacyjny. Jest on własnością firmy Livedoor, firmy
     informatycznej z siedzibą w Tokio, która nabyła go w roku 1994.

     Więcej informacji na temat dystrybucji TurboLinux znajdziesz w witrynie:
          http://www.turbolinux.com.
Rozdział 2. ¨ Instalowanie Linuksa                                                            53



2.4. Rozważ opcjonalne pakiety
     oprogramowania
        Gdy wybierzesz już dystrybucję, którą chcesz zainstalować, będziesz chciał zdecy-
        dować, jak dużo zainstalować. Nie musisz podejmować decyzji dotyczącej każdego
        pojedynczego pakietu zarówno przed, jak i w trakcie instalacji. Możesz je zainstalować
        później. Jest jednak parę rzeczy, o których musisz pomyśleć przed instalacją, aby prze-
        biegła ona gładko.

        Powinieneś zastanowić się, czy potrzebujesz graficznej stacji roboczej, czy wystarczy
        Ci tylko praca w trybie tekstowym, czy komputer będzie podłączony do sieci oraz co
        będziesz robił przy użyciu nowego systemu. Oczywiście, jeżeli masz wystarczającą
        ilość miejsca na dysku, możesz zainstalować wszystkie składniki dystrybucji.


2.4.1. System X Window
        System X Window jest graficznym interfejsem użytkownika przeznaczonym dla sys-
        temów Linux (omawiam go szczegółowo w rozdziale 10., „Środowisko graficzne
        w Linuksie”). Jeżeli nie planujesz wykorzystania Linuksa jedynie jako serwera lub
        tylko po to, by korzystać z funkcji wprowadzanych z wiersza poleceń, prawdopodob-
        nie chcesz zainstalować system X Window.

        Do połowy 2004 roku XFree86 był wersją sytemu X Window o otwartym kodzie źró-
        dłowym, dołączaną do większości dystrybucji Linuksa. Z powodu zmian w licencjo-
        nowaniu, do czego fani wolnego oprogramowania nie są przyzwyczajeni, wiele dystry-
        bucji wybrało implementację dostarczaną przez X.org Foundation. W zależności od
        dystrybucji, a nawet wersji tej samej dystrybucji, dostarczony zostanie pakiet z jedną
        z tych wersji X.

        Prawdopodobnie będzie dostępna jedna albo druga, ale na pewno nie obie, więc jeśli
        planujesz wykorzystywać komputer jako stację roboczą, zainstaluj wersję systemu
        X Window dołączoną do dystrybucji.

        Więcej informacji na temat systemu X Window znajdziesz w witrynach:
             http://www.x.org,
             http://www.xfree86.org.


2.4.2. Środowiska graficzne
        Jeżeli zamierzasz uruchamiać Linuksa jako roboczą stację graficzną, wtedy poza zain-
        stalowaniem systemu X Window będziesz potrzebował środowiska graficznego. System
        X Window zapewnia jedynie podstawowe funkcje obsługi okien oraz wyświetlanie
        na ekranie, natomiast środowisko graficzne dostarcza interfejsu, z którego korzysta użyt-
        kownik, czyli ikon, menu i pasków narzędzi tworzących na ekranie wirtualny pulpit.
54                                                 Linux dla programistów i użytkowników


     Na głównych graczy wyrosły dwa środowiska wykorzystywane teraz także w systemach
     UNIX: GNOME (ang. GNU Object Model Enviroment) oraz KDE (ang. K Desktop
     Enviroment). Oba są dostarczane z większością dystrybucji Linuksa, ale każda okre-
     śla domyślne środowisko (np. Fedora wybiera GNOME, a Mandriva — KDE). Oby-
     dwa środowiska graficzne posiadają pasek menu zawierający liczne aplikacje, pasek
     stanu, w którym wyświetlane są aktualnie uruchomione procesy oraz inne informacje,
     a także właściwe dla siebie aplikacje (takie jak menedżery plików i okien).

     Jeżeli nigdy nie korzystałeś z GNOME i KDE, prawdopodobnie będziesz chciał zain-
     stalować oba (jeżeli masz wystarczającą ilość miejsca), aby je wypróbować. Toczy się
     nieustająca debata o wyższości jednego środowiska nad drugim, a każde z nich ma
     swoich zagorzałych zwolenników. Na zewnątrz obydwa zachowują się jak typowe sys-
     temy graficzne. Różnice zauważalne są raczej w filozofii wybranej przez projektantów i
     dotyczą problemów, które chcieli rozwiązać. Mocno upraszczając, można powiedzieć,
     że GNOME jest prosty, ale elegancki, natomiast KDE jest złożony, ale elastyczny.
     Wybór jest tak naprawdę kwestią gustu.

2.4.2.1. GNOME
     GNOME wyrósł z kodu napisanego dla bibliotek obsługi obrazów GNU. Posiada pulpit
     użytkownika, jak również platformę rozwojową dla aplikacji graficznych, które mogą
     być tworzone w różnych językach. Projektanci działający przy projekcie GNOME
     włożyli wiele wysiłku w stworzenie wygodnego interfejsu i położyli duży nacisk na
     użyteczność. W tradycji UNIX-a oznacza to prostotę, zapewnienie podstawowych
     funkcji środowiska graficznego, bez nadmiernego obciążania użytkownika dużą liczbą
     opcji. GNOME jest oprogramowaniem otwartym. Rysunek 2.1 przedstawia przykładowy
     pulpit GNOME.

2.4.2.2. KDE
     Na KDE również składa się pulpit oraz platforma programistyczna. Dostarcza on więcej
     aplikacji przeznaczonych dla środowiska KDE i próbuje zaspokoić więcej potrzeb
     różnych użytkowników. Podczas gdy daje to użytkownikom — w szczególności po-
     czątkującym — więcej opcji i możliwości, sprawia też, że pulpit wydaje się bardziej
     zabałaganiony. Niektórym nie podoba się, że korzenie KDE sięgają licencjonowanego
     oprogramowania, ale włożono wiele wysiłku, aby usunąć te fragmenty, i obecnie KDE
     jest w całości oprogramowaniem otwartym.

     Jeżeli chcesz zainstalować tylko jedno z środowisk, powinieneś odwiedzić witrynę oby-
     dwu projektów i dokładnie poczytać o ich możliwościach:
         http://www.kde.org,
         http://www.gnome.org.

     Mogę nawet pokusić się o stwierdzenie, że w obu witrynach „czuć atmosferę” panu-
     jącą w poszczególnych środowiskach, więc jeżeli któraś witryna wyda Ci się bardziej
     przyjazna i wygodna w użyciu, może to być pewnego rodzaju wskazówką (rysunek 4.2).
Rozdział 2. ¨ Instalowanie Linuksa                                                           55




Rysunek 2.1. Pulpit GNOME w dystrybucji Aurox


2.4.3. Obsługa sieci
        Jeżeli instalujesz Linuksa na komputerze podłączonym do sieci lokalnej, będziesz mu-
        siał dowiedzieć się kilku rzeczy, aby przeprowadzić instalację. Administrator sieci
        powinien udostępnić Ci wymagane informacje. W większości programów instalacyjnych
        należy w pewnym momencie wprowadzić te ustawienia. Jeżeli instalujesz Slackware
        w trakcie przeprowadzania instalacji, musisz uruchomić w tym celu narzędzie network.
        Możesz też określić wszystkie ustawienia związane z obsługą sieci po zakończeniu in-
        stalacji, ale upewnij się, że wybrałeś odpowiednio dużo pakietów, by usługi sieciowe
        i programy narzędziowe zostały zainstalowane, na wypadek gdybyś ich potrzebował.

        Pierwszą rzeczą, jakiej musisz się dowiedzieć o Twojej sieci, jest to, czy działa w niej
        serwer DHCP (ang. Dynamic Host Configuration Protocol). Jeżeli w sieci wykorzy-
        stywany jest protokół DHCP, komputer podczas ładowania systemu uzyskuje informa-
        cje dotyczące sieci, więc nie musisz samemu przeprowadzać konfiguracji (jednak mu-
        sisz poprosić administratora sieci, aby dodał do serwera DHCP informacje na temat
        nowego komputera). Komputer wykorzystujący DHCP podczas ładowania systemu
56                                                    Linux dla programistów i użytkowników




Rysunek 2.2. Pulpit KDE w dystrybucji Aurox

        rozgłasza komunikat, który można przetłumaczyć jako: „Kim jestem?”, i powinien uzy-
        skać w odpowiedzi swoją nazwę, adres sieciowy i pozostałe informacje potrzebne
        do działania w sieci.

        Jeżeli w sieci nie jest wykorzystywany DHCP, wtedy administrator musi przydzielić
        (lub pomóc Ci wybrać):
          t nazwę hosta dla Twojego komputera,
          t adres IP,
          t maskę sieciową,
          t domyślny adres bramy,
          t adres serwera nazw (DNS).

        Zagadnienia te są dokładniej omówione w rozdziale 9., „Sieci i internet”.

        Jeżeli komputer jest podłączony do sieci lokalnej, powinieneś zainstalować wszystkie
        pakiety zawierające usługi i narzędzia sieciowe. Jeżeli zamierzasz pozwolić innym
        komputerom uzyskać dostęp do systemu plików Twojego komputera, zainstaluj także
        NSF (ang. Network File System firmy Sun) oraz Sambę.
Rozdział 2. ¨ Instalowanie Linuksa                                                           57


        Powinieneś też dowiedzieć się, czy w sieci wykorzystywany jest protokół IP (IPv4), czy
        IPv6. Niektóre dystrybucje są domyślnie ustawione, aby korzystały z protokołu IPv6
        (najnowszej wersji protokołu sieciowego Internet Protocol), jednak w niektórych środo-
        wiskach może to powodować problemy z wydajnością. Jeżeli w sieci wciąż wykorzy-
        stywany jest IPv4 (a prawdopodobnie tak właśnie jest), powinieneś wyłączyć IPv6.


2.4.4. Narzędzia biurowe
        Z większością dystrybucji dostarczany jest bardzo dobry pakiet aplikacji biurowych
        (jeżeli nie, to możesz pobrać najnowszą wersję, dostępną pod podanym niżej adresem).
        Sun Microsystems sponsoruje i uczestniczy w projekcie OpenOffice.org, który dostar-
        cza zestaw narzędzi o możliwościach zbliżonych do pakietu Office firmy Microsoft.
        Bazujące na StarOffice firmy Sun (który nie może zostać wydany w wersji o otwartym
        kodzie źródłowym, ponieważ jego część objęta jest prawami autorskimi) narzędzia
        OpenOffice mogą importować i eksportować dane w formacie aplikacji Microsoftu, więc
        można bez przeszkód wymieniać informacje z użytkownikami tego oprogramowania.

        OpenOffice.org został pobrany już 16 milionów razy. W jego skład wchodzą:
          t Writer — edytor tekstu do tworzenia raportów, dokumentów, biuletynów
             i broszur.
          t Calc — arkusz kalkulacyjny.
          t Impress — program do tworzenia prezentacji z narzędziami umożliwiającymi
             rysowanie, animowanie oraz dodawanie efektów specjalnych.
          t Draw — narzędzie służące do rysowania, za pomocą którego utworzysz
             wszystko — od prostych diagramów po specjalistyczne obrazy trójwymiarowe.
          t Base — narzędzia baz danych, które obsługują bazy danych dBase,
             ODBC i JDBC.

        Jeżeli zamierzasz cokolwiek pisać lub tworzyć prezentacje w systemie Linux, instalacja
        tych narzędzi jest po prostu koniecznością. Jeżeli chcesz dowiedzieć się więcej na temat
        OpenOffice.org lub pobrać najnowszą wersję, odwiedź witrynę:
             http://www.openoffice.org.


2.4.5. Narzędzia programistyczne
       i języki programowania
        Linux dostarczany jest z kompilatorami języków GNU C i C++, Perl i Python. Java
        dostarczana jest z wieloma dystrybucjami, ale jeżeli nie ma jej w Twojej, możesz po-
        brać ją z witryny Sun Java:
             http://java.sun.com/linux/.
58                                                  Linux dla programistów i użytkowników



2.5. Zaprojektuj swój system
     Teraz, gdy wybrałeś już dystrybucję i narzędzia, które chcesz mieć w systemie, powi-
     nieneś pomyśleć nad układem systemu (systemów) plików. Można po prostu zainsta-
     lować Linuksa z płyt CD, zaakceptować wszystkie domyślne ustawienia, wielkość i lo-
     kalizację komponentów, aby uzyskać działający system. Ale naprawdę warto poświęcić
     chwilę i zastanowić się, czego oczekujemy od systemu, a następnie przygotować od-
     powiedni plan.


2.5.1. W jaki sposób ma być uruchamiany Linux?
     W idealnej sytuacji posiadasz nieużywany komputer, na którym możesz zainstalować
     Linuksa i z niego korzystać. Dzięki temu nie ryzykujesz utraty żadnych danych, gdy-
     byś popełnił błąd przy instalacji. W komisach komputerowych można nabyć starsze
     komputery za ułamek ceny nowego zestawu. Jeżeli posiadasz lub możesz pozwolić
     sobie na kupno dodatkowego komputera, zalecałbym pracę na zupełnie osobnym kom-
     puterze. Jednak nie zawsze jest to możliwe. Jeżeli musisz wykorzystać komputer, na
     którym jest już zainstalowany system Microsoft Windows, masz kilka opcji.

     Istnieją wersje Live niektórych dystrybucji (np. Knoppix, Linspire, MEPIS i SuSE),
     które mogą być uruchamiane bezpośrednio z CD, bez konieczności przeprowadzania
     instalacji.

     Inna możliwość polega na uruchamianiu Linuksa w systemie Windows. Komercyjny
     program, VMware (www.vmware.com), potrafi emulować komputer PC, co pozwala na
     zainstalowanie i uruchamianie Linuksa w tym środowisku.

     Najprawdopodobniej zdecydujesz się jednak na zainstalowanie Linuksa równolegle
     z systemem Windows. Jeżeli instalujesz równolegle Linuksa i inny system operacyj-
     ny, tworzysz system z podwójnym rozruchem (dual-boot), co umożliwia ładowanie
     dwóch różnych systemów operacyjnych. Możesz także zainstalować kilka różnych dys-
     trybucji Linuksa (jeżeli dysponujesz wystarczającą ilością miejsca na dysku) i „utwo-
     rzyć” komputer wielosystemowy (multiboot).

       System z podwójnym rozruchem twórz jedynie wtedy, gdy masz możliwość ponow-
       nej instalacji starego systemu, jeśli zajdzie taka potrzeba, i nie zapomnij najpierw
       utworzyć kopii zapasowej wszystkich danych! Jeżeli popełnisz błąd podczas insta-
       lacji Linuksa, możesz usunąć wszystkie dane z dysków, włączając w to istniejący
       system operacyjny i przechowywane dane. Jeżeli nie masz możliwości ponownej in-
       stalacji i odzyskania dawnego systemu na czystym dysku, nie powinieneś próbować
       tworzyć systemu z podwójnym rozruchem!
Rozdział 2. ¨ Instalowanie Linuksa                                                            59


2.5.2. Partycjonowanie dysku
        Jeżeli zamierzasz zainstalować Linuksa na dysku twardym, będziesz musiał na nim
        utworzyć jedną lub więcej partycji. Partycja jest wydzielonym obszarem dysku. Dysk
        może zawierać tylko jedną partycję (obejmującą cały dysk) lub może być podzielony
        na mniejsze jednostki.

        Dzielenie dysku na partycje jest z pewnością najtrudniejszym krokiem instalacji. Jeżeli
        chcesz zachować istniejące już w systemie dane (jak na przykład zainstalowaną partycję
        Windows), jest to także krok najbardziej niebezpieczny. Podczas tworzenia partycji linuk-
        sowych musisz uważać, aby nie nadpisać żadnych danych, które chcesz zachować.

        Każdy dysk posiada tablicę partycji, w której przechowywane są informacje na temat
        każdej partycji. Większość tablic partycji może zawierać cztery wpisy.

2.5.2.1. Typy partycji
        Większość dysków zawiera dwa typy partycji: podstawowe i rozszerzone (logiczne).
        Partycja podstawowa posiada wpis w tablicy partycji i wskazuje na ustalony obszar
        dysku. Partycja rozszerzona również posiada wpis w tablicy partycji, ale może wska-
        zywać do jednej lub kilku partycji logicznych. Jest to przydatne, gdyż zapewnia obsługę
        większej liczby partycji niż 4 zapewnione przez tablicę partycji.

        Niezależnie od wybranego typu partycji Linux będzie działał tak samo. Niektóre na-
        rzędzia do partycjonowania dysków nawet nie pokazują rozróżnienia między partycjami
        podstawowymi a rozszerzonymi. Jeżeli zajdzie taka potrzeba, po prostu tworzą party-
        cje rozszerzone.

2.5.2.2. Partycjonowanie dla Linuksa
        System plików Linuksa posiada hierarchiczną strukturę katalogów rozpoczynającą się
        od katalogu głównego (/). Jest on również nazywany katalogiem systemowym. Najprost-
        szym sposobem podzielenia dysku na partycje dla Linuksa jest umieszczenie całego
        systemu plików na jednej partycji. Masz również możliwość utworzenia dodatkowych
        partycji dla różnych części systemu.

        Inną partycją niezbędną dla działania Linuksa jest partycja wymiany (swap). Jest ona
        wykorzystywana przez podsystem pamięci wirtualnej do przerzucania danych z i do pa-
        mięci podczas działania systemu. Nie jest to system plików, ale raczej surowy obszar
        dysku, w którym jądro może „skrobać”. Ta partycja przeważnie jest 1,5 do 2 razy
        większa niż rozmiar pamięci operacyjnej zainstalowanej w systemie. Jeśli na przykład
        w systemie zainstalowane jest 256 MB pamięci, partycja powinna zajmować przynajm-
        niej 256 MB, ale wydajność zwiększy się, jeżeli będzie ona miała rozmiar 384 MB
        lub większy.

        Jeżeli posiadasz w systemie dwa czyste dyski, na każdym z nich możesz utworzyć
        partycję wymiany o rozmiarze równym połowie wymaganego. To dzieli proces wymia-
        ny danych pomiędzy dwa urządzenia i trochę zwiększa wydajność. W takim przypadku
60                                                  Linux dla programistów i użytkowników


     wielkość każdej partycji powinna być wystarczająco duża, by być przydatna dla sys-
     temu, więc nie twórz mniejszych niż 64 MB, nawet jeżeli razem będą tworzyć partycję
     większą, niż teoretycznie potrzebujesz.

     Jeżeli masz dwa dyski, ale wiesz, że jeden jest zdecydowanie szybszy, jeśli to możli-
     we, utwórz na nim partycję wymiany.

     Jeżeli tworzysz system podwójnego rozruchu lub wielosystemowy z większą ilością
     dystrybucji Linuksa, możesz utworzyć jedną partycję wymiany i skonfigurować wszyst-
     kie dystrybucje tak, aby korzystały z tej samej partycji. Na partycji wymiany nic nie
     jest na stałe zapisywane. Jest to po prostu obszar, z którego korzysta podsystem pamięci
     wirtualnej, gdy Linux jest uruchomiony. A ponieważ zawsze będzie uruchomiona tylko
     jedna dystrybucja, wszystkie mogą korzystać z tej samej partycji.

2.5.2.3. Partycjonowanie dla Linuksa i systemu Windows
     Jeżeli jesteś zmuszony do zainstalowania Linuksa w systemie, w którym zainstalowa-
     ny jest już Windows, wtedy partycje linuksowe możesz utworzyć jedynie w obszarach
     niewykorzystywanych przez Windows. Większość systemów Windows jest zainsta-
     lowana z użyciem całej dostępnej przestrzeni dyskowej, więc tu pojawia się pierwszy
     problem — jak zwolnić miejsce i udostępnić je Linuksowi?

     Jeżeli masz szczęście, może okazać się, że masz podłączony (lub możesz podłączyć)
     dodatkowy dysk. Jeżeli dysponujesz nieużywanym dyskiem, z którego nie korzysta
     Windows, tym samym masz miejsce na umieszczenie Linuksa i nie musisz nic zmie-
     niać na dysku zawierającym Windows (mimo to musisz uważać, aby podczas instalacji
     Linuksa przypadkiem nie wyczyścić dysku z zainstalowanym systemem Windows).
     Większość komputerów osobistych wyposażona jest tylko w jeden dysk twardy — w ta-
     kim przypadku musisz utworzyć partycję Linuksa na tym samym dysku. To, jak przeko-
     namy się później, wiąże się z koniecznością zmniejszenia istniejącej partycji Windows.


2.5.3. System plików Linuksa
     Partycja jest tylko obszarem na dysku, w którym mogą być przechowywane dane.
     Aby Linux mógł odczytywać i zapisywać pliki i katalogi, partycja musi zawierać sys-
     tem plików. System plików jest infrastrukturą danych, która wiąże w hierarchicznej
     strukturze nazwy plików i odpowiadające im bloki danych, co umożliwia łatwe użyt-
     kowanie komputera. Do zainstalowania Linuksa nie jest potrzebna jakaś zaawanso-
     wana wiedza na temat systemu plików i sposobów jego działania. Większość dystry-
     bucji zawiera kilka systemów plików, spośród których można wybierać.

2.5.3.1. Typy systemów plików
     Istnieje wiele różnych systemów plików, z których każdy ma swoje wady i zalety. Na
     przykład system plików z kroniką, który zapisuje informacje dotyczące operacji na
     plikach, zanim faktycznie je wykona, co znacząco zmniejsza prawdopodobieństwo
     utraty danych.
Rozdział 2. ¨ Instalowanie Linuksa                                                          61


        Wszystkie dystrybucje Linuksa obsługują poniższe popularne systemy plików:
          t ext2 (drugi rozszerzony system plików), standardowy system plików Linuksa
             (w niektórych programach instalacyjnych jest określany jako natywny),
          t ext3 to wersja ext2 z dodaną kroniką. Jest szybszy i bardziej niezawodny.

        Wiele dystrybucji oferuje także jeden lub więcej alternatywnych systemów plików
        z kroniką:
          t IBM JFS — system plików z kroniką zaprojektowany przez IBM;
          t ReiserFS — bardzo wydajny system plików z kroniką zaprojektowany przez
             Hansa Reisera;
          t XFS — system plików z kroniką utworzony przez SGI.

        Możesz wybrać dowolny system plików dostępny podczas instalacji. Większość osób
        wybiera ext2 lub ext3, chyba że wolą bardziej specjalistyczny system plików lub go
        potrzebują.

2.5.3.2. Organizacja systemu plików
        Drzewo katalogów Linuksa, zaczynające się od katalogu głównego (/), składa się z jed-
        nego lub większej liczby systemów plików. Ważną kwestią, którą należy uwzględnić
        podczas instalacji, jest sposób, w jaki podzielić system plików Linuksa między dostępne
        partycje. Możesz umieścić wszystkie pliki w katalogu głównym (/), utworzyć drugą
        partycję jako partycję wymiany i system będzie działał. Jest to rozwiązanie wystarcza-
        jące dla większości stacji roboczych. W zależności od tego, w jaki sposób chcesz ko-
        rzystać z systemu, możesz chcieć umieścić niektóre katalogi na osobnych partycjach.
        Gdy umieszczasz katalog w przeznaczonej tylko dla niego partycji, jest on połączo-
        ny z katalogiem głównym w punkcie montowania — katalogu w głównym syste-
        mie plików.

        Pliki ładujące przechowywane są w katalogu /boot. Jest on czasem umieszczany na
        małej, osobnej partycji, aby mieć pewność, że będzie się znajdował na początku dysku.
        Jest to związane z tym, że dawniej urządzenia ładujące system mogły odczytać tylko
        ograniczony obszar dysku. Dziś nie ma to większego znaczenia.

        W systemie, z którego będzie korzystać większa liczba użytkowników (np. serwera),
        katalogi domowe są często tworzone w standardowej lokalizacji, jak na przykład
        /home. Jeżeli katalog /home stanowi część głównego systemu plików, użytkownicy
        mogą zapełnić dysk systemowy. Jeżeli utworzysz katalog /home jako osobny system
        plików i zamontujesz go w głównym systemie, użytkownicy nie odczują żadnej róż-
        nicy, ale będą mogli zapełnić jedynie przeznaczoną dla nich partycję, a nie główny sys-
        tem plików. Jeżeli użytkownicy zapełnią /home, główny system plików wciąż będzie
        miał miejsce, więc system będzie bez przeszkód kontynuował pracę. Użytkownicy nie
        będą mogli tworzyć nowych plików, ale stanowi to mniejszy problem niż sytuacja,
        w której to system nie ma możliwości tworzenia nowych plików.
62                                                        Linux dla programistów i użytkowników


          Katalogi systemowe, które są używane do przechowywania znacznej ilości tymcza-
          sowych danych, także nadają się do zastosowania dla nich osobnego systemu plików.
          Katalog /var jest używany do przechowywania danych, takich jak pliki przesyłane do
          drukarki oraz otrzymywane i wysyłane wiadomości e-mail. Jeżeli /var stanowi osobną
          partycję, wtedy procesy te będą działały poprawnie, nawet jeżeli inne partycje będą
          zapełnione. Katalog /tmp jest kolejnym miejscem, w którym przechowywane są pliki
          tymczasowe. Może on zostać w ten sposób oddzielony od reszty systemu, na wypadek
          gdyby jakiś program zapędził się w liczbie tworzonych plików.

          Nawet katalogi systemowe, takie jak /usr i /opt, gdzie przechowywane są pliki syste-
          mowe i opcjonalne oprogramowanie, mogą być umieszczane na osobnych partycjach.
          Oczywiście rozmieszczenie systemu na osobnych partycjach wymaga więcej pracy, ale
          w zależności od wykorzystania systemu rezultat może być wart wysiłku.

2.5.3.3. Wielkość systemu plików
          Trudno powiedzieć, ile miejsca na dysku będziesz potrzebował dla różnych systemów
          plików. Zasadą jest, że partycja /boot (jeżeli ją tworzysz) powinna mieć wielkość przy-
          najmniej 10 MB5. Przechowywane są tam jedynie pliki potrzebne do rozruchu (jądro
          i inne pliki), więc nie wymaga ona zbyt wiele miejsca.

          Minimalna ilość przestrzeni dyskowej, na której w ogóle możesz instalować Linuksa,
          to około 500 MB, a najmniejszy główny system plików będzie miał właśnie zbliżony
          rozmiar. Im więcej zainstalujesz dodatkowego oprogramowania, tym większej ilości
          miejsca będziesz potrzebował (tabela 2.2 wcześniej w tym rozdziale).

          Nawet jeżeli dzielisz cały system plików pomiędzy różne partycje, nie powinieneś
          nigdy tworzyć głównego systemu plików mniejszego niż 500 MB. Wielkość pozo-
          stałych partycji, a w szczególności katalogu zawierającego katalogi domowe użytkow-
          ników uzależniona jest głównie od dostępnej ilości miejsca na dysku.

2.5.3.4. Udostępnianie systemów plików
          Jeżeli zamierzasz utworzyć system z podwójnym rozruchem (np. z systemem Windows
          lub inną dystrybucją Linuksa), musisz pamiętać o kilku kwestiach.

          Partycje Windows mogą być montowane i czytane w Linuksie. Niektóre systemy pli-
          ków mogą być montowane w trybie tylko do odczytu, natomiast niektóre w trybie od-
          czytu i zapisu. Zalecałbym montowanie wszystkich systemów plików Windows w trybie
          tylko do odczytu, aby uniknąć przypadkowej modyfikacji danych.

          Nie udostępniaj partycji /boot różnym dystrybucjom Linuksa. System ma pełną swobo-
          dę zapisu do tej partycji, włączając w to pliki, które mogą mieć te same nazwy w róż-
          nych dystrybucjach, tak więc jedna dystrybucja może nadpisać pliki (np. jądro) innej
          dystrybucji.


5
    Ze względu na powszechne użycie ramdysku startowego, którego obraz jest przechowywany w /boot,
    obecnie lepiej za minimum przyjąć co najmniej 20 MB — przyp. tłum.
Rozdział 2. ¨ Instalowanie Linuksa                                                                 63


2.5.4. Programy rozruchowe (ładujące)
          Słowo „rozruch” weszło w skład terminologii komputerowej na zasadzie analogii z roz-
          ruchem samochodu lub innej maszyny. Sprzęt „wie”, jak załadować mały program
          z określonej lokalizacji i jak go uruchomić. Z kolei ten program zna lokalizację wła-
          ściwego systemu operacyjnego i ładuje go.

          Gdy rozpoczyna się proces rozruchu, komputer ładuje zawartość głównego rekordu
          startowego (ang. Master Boot Record — MBR) znajdującego się w pierwszym sektorze
          pierwszego dysku6 i uruchamia ten program. W systemach pracujących pod Windows
          ładowany jest system Windows i komputer jest gotowy do użytku. W Linuksie jest
          podobnie. Program rozruchowy Linuksa ładuje jądro i oto startuje Linux.

          W większości dystrybucji można wybrać program ładujący: oryginalny LILO (ang.
          LInux LOader) lub nowszy — GRUB (ang. GNU Grand Unified Boot Loader). Obydwa
          wykonują w zasadzie tę samą pracę: tworzą kod rozruchowy pozwalający wybrać jeden
          lub więcej systemów, które mają zostać załadowane. Oba mogą zostać zainstalowane
          zarówno w MBR w pierwszym sektorze pierwszego dysku, jak i na dyskietce.

          Jeżeli umieścisz kod rozruchu w MBR, nadpiszesz całą jego zawartość (np. kod roz-
          ruchowy Windows). GRUB i LILO zachowują możliwość uruchomienia Windows
          z poziomu swojego menu, ale optowałbym za niezmienianiem zawartości MBR, jeżeli
          zamierzasz oprócz Linuksa uruchamiać też Windows.

          Jeżeli instalujesz program ładujący w MBR, wciąż musisz polegać na kodzie rozru-
          chowym Windows, który musi go znaleźć i przekazać mu kontrolę. Kod Windows
          jest znany z tego, że „nie lubi się” z innymi, i z tego powodu nie polecam takiego
          rozwiązania.

          Jeżeli planujesz utworzenie systemu z podwójnym rozruchem dla Windowsa i Linuksa,
          program rozruchowy możesz umieścić na dyskietce (przeważnie /dev/fd0). Dzięki temu
          nie będziesz musiał instalować programu ładującego na dysku twardym i pozostawisz
          bez zmian kod rozruchu Windows, znajdujący się w MBR. Gdy będziesz chciał uru-
          chomić Linuksa, włożysz do napędu dyskietkę zawierającą program ładujący, natomiast
          jeżeli w napędzie nie będzie dyskietki, zostanie uruchomiony system Windows. Jest to
          najbezpieczniejszy sposób konfiguracji systemu z podwójnym rozruchem. Upewnij się,
          że podczas instalacji określiłeś /dev/fd0 jako miejsce przechowywania programu roz-
          ruchowego.

          Jeżeli instalujesz pojedynczą dystrybucję, wtedy prawdopodobnie nie będziesz zmie-
          niał ustawień programu ładującego, pozostawisz te, które uruchamiają Linuksa. Jeśli
          chcesz utworzyć system wielosystemowy, będziesz musiał zmienić ustawienia progra-
          mu rozruchowego po instalacji każdego kolejnego systemu.



6
    Nowoczesne BIOS-y potrafią startować z dysków innych niż pierwszy dysk twardy, lecz może to
    spowodować dokonanie zmian w konfiguracji standardowego procesu startowego Linuksa — przyp. tłum.
64                                                          Linux dla programistów i użytkowników



2.5.5. Dyskietka startowa
          Podczas instalacji w większości dystrybucji można utworzyć dyskietkę startową (w za-
          instalowanym systemie możesz użyć polecenia mkbootdisk). Ta dyskietka może zostać
          użyta do uruchomienia Linuksa w przypadku załamania systemu lub wystąpienia in-
          nej awarii, która uszkodziła sektor rozruchowy twardego dysku. Powinieneś zawsze
          tworzyć dyskietkę startową. Możesz jej nigdy nie użyć i w związku z tym może się
          wydawać niepotrzebna, ale jej utworzenie zajmuje tylko kilka minut, a jej brak może
          się skończyć koniecznością ponownej instalacji systemu. Dyskietka startowa stanowi
          niejako polisę ubezpieczeniową.

          Aby jeszcze bardziej polecić tworzenie dyskietki startowej, teraz opowiem własną histo-
          rię. Podczas przygotowywania tej książki utworzyłem system o podwójnym rozruchu
          z Mandrake Linux i Windows XP. Wszystko świetnie działało. Do czasu. Któregoś dnia
          po włączeniu komputera pojawił się komunikat: „Lilo timestamp mismatch” (niezgod-
          ność znacznika czasu Lilo) i na tym koniec — żadnego menu, żadnego Windowsa ani
          Linuksa. Nie mogłem ponownie zainstalować LILO, ponieważ nie dało się uruchomić
          Linuksa. Ponieważ nie utworzyłem dyskietki startowej (był to w końcu system testowy),
          musiałem ponownie instalować7 zarówno Windowsa, jak i Linuksa. Nie pozwól, aby zda-
          rzyło się to w Twoim systemie!

          Możesz też używać dyskietki startowej zamiast dyskietki z zainstalowanym programem
          ładującym. W tym przypadku dyskietka zawiera nieco inne informacje, ale rezultat
          jest ten sam. Dyskietka startowa pozwala zmieniać parametry i lokalizację jądra w przy-
          padku, gdy z powodu awarii nie jest możliwe „normalne” uruchomienie systemu. Jednak
          domyślnie ładowane jest jądro znajdujące się na dysku twardym, czyli tak jak przy
          użyciu programu rozruchowego.



2.6. Zdobądź Linuksa
          Gdy już przygotowałeś sprzęt i wybrałeś dystrybucję, której chcesz używać, wszystko,
          co Ci pozostało, to jej zdobycie. Nośniki (lub ich obrazy) z Linuksem można pozy-
          skać na wiele sposobów. Jest to błogosławieństwem i przekleństwem. Błogosławień-
          stwem, ponieważ dla każdego komputera, niezależnie od ograniczeń, znajdzie się jakaś
          sensowna metoda zdobycia Linuksa. Przekleństwem, ponieważ istnieje tak wiele moż-
          liwości, że trudno zdecydować, która jest najlepsza.

          Linux jako taki jest dostępny za darmo, ponieważ jest rozpowszechniany na zasadach
          GNU Public License. To samo dotyczy narzędzi GNU dostarczanych z jądrem, które
          tworzą właściwą dystrybucję. Ponieważ GPL pozwala na rozpowszechnianie ich bez
          opłat, możesz pożyczyć od znajomego płyty CD, skopiować je lub za ich pomocą
          przeprowadzić instalację (w przypadku komercyjnego oprogramowania chronionego
          prawami autorskimi jest to przeważnie zabronione).

7
    Należy pamiętać, że większość nośników instalacyjnych z Linuksem pozwala na uruchomienie w trybie
    odzyskiwania systemu, zanim przystąpi się do bardziej drastycznych kroków — przyp. tłum.
Rozdział 2. ¨ Instalowanie Linuksa                                                            65


        Nawet jeżeli nie znasz nikogo, kto posiadałby już kopię, większość dystrybucji jest
        dostępna do pobrania za darmo lub jest rozpowszechniana na płytach CD za niewielką
        opłatą. Podczas gdy nie ma opłaty licencyjnej za oprogramowanie, firmy sprzedające
        dystrybucje Linuksa często dostarczają też nośniki, dokumentację i wsparcie technicz-
        ne, więc kupujesz coś więcej niż tylko darmowe oprogramowanie.


2.6.1. Dyski CD-ROM
        Najprostszą metodą na zainstalowanie Linuksa jest zdobycie go na jakimś stałym no-
        śniku, najczęściej na kilku dyskach CD-ROM. Można je łatwo kupić, przenosić i prze-
        chowywać. Jeżeli kiedyś będziesz musiał ponownie zainstalować Linuksa, po prostu
        włożysz CD i przystąpisz do pracy. Wadą dysków jest fakt, że przeważnie musisz je
        kupić. Ponieważ jednak Linux jest oprogramowaniem o otwartym kodzie źródłowym,
        cena CD zawiera przeważnie tylko koszty produkcji, a nie drogie opłaty licencyjne.

Tabela 2.3. Ceny wybranych dystrybucji Linuksa
 Fedora Core 5 (1 płyta DVD)                                                       32,94 zł
 Mandriva Linux PowerPack 2006 (2 płyty DVD, dokumentacja w wersji książkowej       199 zł
 i elektronicznej, 2 miesiące wsparcia technicznego)
 SuSE 10.0 (dodatkowo 300 stron dokumentacji i 90 dni wsparcia technicznego)        239 zł
 Aurox 11.0 (1 płyta DVD)                                                            35 zł
 Debian 3.1 (14 płyt CD)                                                             35 zł
 Slackware 10.2 (4 płyty CD)                                                         20 zł

        Różnice w cenie najczęściej wynikają z ilości płyt, na których zamieszczona jest dys-
        trybucja, ilości dołączonych pakietów i załączonej dokumentacji (np. przewodnika in-
        stalacji).

        Linuksa można kupić w wielu miejscach. Jeżeli dobrze poszukasz w internecie, znaj-
        dziesz wiele sklepów, w których możesz kupić dystrybucję. Uważam, że poniższe są
        godne polecenia:
             http://asseq.pl,
             http://sklep.linux.pl.


2.6.2. Pobieranie
        Jeżeli instalujesz Linuksa w miejscu, gdzie są już komputery pracujące pod jego kon-
        trolą (np. w średnim lub dużym przedsiębiorstwie czy na uniwersytecie), prawdopo-
        dobnie w sieci lokalnej znajdują się obrazy płyt instalacyjnych. Możesz je skopiować
        z innego komputera za pomocą dowolnego z dużej liczby narzędzi sieciowych, jeżeli
        tylko w docelowym komputerze zainstalowana jest karta sieciowa. Porozmawiaj z ad-
        ministratorem systemu lub z kimś, kto ma wiedzę na ten temat, ponieważ szczegóły
        dotyczące kroków, które należy podjąć, różnią się w zależności od miejsca przechowy-
        wania danych i rodzaju używanego interfejsu sieciowego.
66                                                         Linux dla programistów i użytkowników


          Jeżeli dysponujesz połączeniem z internetem, możesz pobrać obrazy instalacji z witryny
          www.linux.org lub dowolnej organizacji, która rozpowszechnia własną dystrybucję.
          Pobranie obrazu instalacji wiąże się ze skopiowaniem standardowego obrazu ISO dys-
          ków instalacyjnych i zapisaniem ich na CD lub dysku twardym. To jest rozwiązanie
          dla osób, które dysponują naprawdę szybkim łączem, a nawet wtedy pobieranie zaj-
          muje dużo czasu. W pewnym momencie czas, który należy przeznaczyć (nie wspomi-
          nając o cenie pustego dysku CD), przekracza stosunkowo niską cenę kopii dostępnej
          u sprzedawcy. Jeżeli nie znasz nikogo, kto miałby doświadczenie w tego typu działal-
          ności, polecałbym zakup dystrybucji.



2.7. Instalacja Linuksa
          Jak wspominałem na początku tego rozdziału, możesz wybrać dowolną dystrybucję
          i z tego powodu, nie mogę napisać dokładnego przewodnika instalacji przeznaczonego
          dla dystrybucji, na którą się zdecydowałeś. Mimo że programy instalacyjne poszcze-
          gólnych dystrybucji mogą się różnić, czynności, które wykonują, aby zainstalować
          Linuksa i narzędzia GNU, są w zasadzie takie same.


2.7.1. Zdobądź dokumentację swojej dystrybucji
          Pierwszą rzeczą, jaką powinieneś zrobić, jest zdobycie przewodnika instalacji przezna-
          czonego dla Twojej dystrybucji. Na większości dysków CD znajdują się pliki teksto-
          we lub HTML (przeznaczone do przeglądania w przeglądarce internetowej). Ich nazwy
          i lokalizacje mogą się różnić, ale szukaj katalogów zawierających pliki o nazwach po-
          dobnych do podanych poniżej8:
            t doc lub docu — katalog zawierający pliki dokumentacji;
            t README — dokument, który powinieneś przeczytać na samym początku;
            t HOWTO — często zawiera listę kroków, jakie musisz podjąć podczas instalacji;
            t release_notes — uwagi o wydaniu danej dystrybucji, czasem zawierają
               informacje dotyczące instalacji;
            t HTML lub htm — te pliki przeważnie są jakiegoś rodzaju dokumentacją;
            t FAQ (ang. Frequently Asked Questions) — często zadawane pytania;
            t install — uwagi na temat instalacji lub nazwa katalogu, który je zawiera.

          Dokumentacja Debiana znajduje się na przykład na dysku CD w katalogu install/doc,
          a Slackware dostarcza dobry podręcznik instalacji na pierwszym CD-ROM-ie zawiera-
          jącym kody źródłowe, jak również w pliku tekstowym Slackware-HOWTO na startowym

8
    Dokumentacja zawarta na nośnikach instalacyjnych jest często dostępna w różnych językach.
    Pliki z dokumentacją przetłumaczoną na język polski z reguły mają dodane na końcu _pl lub -pl
    — przyp. tłum.
Rozdział 2. ¨ Instalowanie Linuksa                                                             67


        dysku CD, natomiast podręcznik instalacji Mandrivy umieszczony jest w pliku installa-
        tion.htm. Możesz także znaleźć uwagi o instalacji w witrynach internetowych poszcze-
        gólnych sponsorów dystrybucji.


2.7.2. Uruchomienie
        Najprostszym sposobem, aby rozpocząć, jest załadowanie Linuksa z płyty CD. Jeżeli
        Twój komputer nie jest zbyt stary, powinien obsługiwać tę funkcję. Jeżeli nie obsługuje,
        powinieneś móc zmienić ustawienia rozruchu w programie konfiguracyjnym BIOS,
        tak aby jako pierwszy przeszukiwany był napęd dysków CD. Linux rozpoznaje więk-
        szość nowych napędów CD. Jeżeli nie możesz dokonać rozruchu z płyty CD, będziesz
        potrzebował dyskietki startowej.


2.7.3. Partycjonowanie dysków
        Jak widzieliśmy wcześniej, jest to krok niebezpieczny, mogący usunąć wszystkie dane
        znajdujące się na komputerze. Jeżeli jeszcze nie jesteś przekonany, wiedz, że nie mogę
        wystarczająco mocno podkreślić tego, jak bardzo istotne jest utworzenie kopii zapa-
        sowej przechowywanych danych, zanim przystąpisz do instalacji. To było ostatnie
        ostrzeżenie.

        Gdy korzystasz z programu tworzącego partycje, niezależnie od tego, czy posiada on
        interfejs graficzny, czy jest to fdisk lub cfdisk, będziesz korzystał z partycji za pomocą
        ich nazw urządzenia. Są to nazwy specjalnych plików znajdujących się w katalo-
        gu /dev, które określają każde urządzenie. Szczegółowe omówienie tych plików znaj-
        dziesz w rozdziale 13., „Wewnątrz Linuksa”. Nazwy, z którymi prawdopodobnie się
        spotkasz, to:
          t /dev/fd0 — pierwszy napęd dyskietek,
          t /dev/fd1 — drugi napęd dyskietek,
          t /dev/hda — pierwszy dysk twardy IDE,
          t /dev/hdb — drugi dysk IDE,
          t /dev/sda — pierwszy dysk SCSI,
          t /dev/sdb — drugi dysk SCSI.

        Zauważ, że podczas gdy w większości systemów znajdziesz /dev/fd0 (napęd dyskie-
        tek), to z pozostałych nazw możesz zobaczyć tylko kilka lub żadnej, ponieważ zależy
        to od dysków zainstalowanych w systemie. Zwróć też uwagę, że łącze z pliku /dev/fd0
        do właściwego napędu dyskietek jest tworzone podczas instalacji. Jeżeli przeprowa-
        dzasz instalację na laptopie wyposażonym w wymienny napęd dyskietek i nie jest on
        podłączony podczas instalacji, łącze nie zostanie poprawnie utworzone. Jeżeli podłą-
        czysz napęd dyskietek później i Linux nie będzie mógł uzyskać dostępu do niego
        przez /dev/fd0, wypróbuj inne nazwy urządzeń związane z IDE (np. u mnie zadziałało
68                                                             Linux dla programistów i użytkowników


           /dev/hdc). Jeżeli napęd CD-ROM jest urządzeniem IDE, dostęp do niego również powi-
           nien odbywać się przez któreś z urządzeń „hd”. Jedno z narzędzi służących do prze-
           glądania lub zarządzania sprzętem (np. Hardware Browser (hwbrowser) w Fedora lub
           Harddrake w Mandriva) może pomóc w zidentyfikowaniu dysków.

           Każda z partycji dysku twardego również będzie miała swoją nazwę urządzenia. Na
           przykład pierwsza partycja dysku /dev/hda będzie nazywać się /dev/hda1, druga par-
           tycja — /dev/hda2 itd.

           Podczas tworzenia partycji i przypisywania im poszczególnych składników systemu
           plików Linuksa pamiętaj, aby zanotować sobie, która partycja zawiera który składnik.
           Jeżeli tworzysz większą liczbę partycji, możesz łatwo się pogubić, a jeżeli nie zrobiłeś
           notatek, później sobie nie przypomnisz!

           Pamiętaj też, że niektóre narzędzia do partycjonowania dysku nie pokazują różnicy
           między partycją główną a partycjami rozszerzonymi, po prostu następuje przeskok
           z /dev/hda2 do /dev/hda5 (ponieważ /dev/hda4 została utworzona jako partycja roz-
           szerzona). Narzędzie Disk Drake w Mandrivie, jeżeli zajdzie taka potrzeba, tworzy
           rozszerzone partycje, nie wymagając wprowadzania żadnych ustawień, natomiast Disk
           Druid dostarczany z Fedorą pozwala „wymusić”, aby partycja była partycją główną,
           ale jeżeli tego nie określisz, sam dokona wyboru.

           Wszystkie dystrybucje zawierają narzędzia fdisk i cfdisk służące do tworzenia par-
           tycji. Większość twórców dystrybucji utworzyła własne narzędzia i nie korzysta już
           z tych programów. Niektóre, bardziej tradycyjne systemy (np. Debian i Slackware) wciąż
           polegają na cfdisk (chociaż aktualnie rozwijane jest nowe narzędzie instalacyjne dla
           Debiana). Narzędzie fdisk jest obsługiwane z wiersza poleceń, natomiast cfdisk jest
           narzędziem pełnoekranowym, w którym dostępne są informacje pomocy.

           Niezależnie od tego, którego narzędzia użyjesz, ogólny schemat postępowania polega
           na zdefiniowaniu partycji i ustaleniu miejsca jej montowania (lub ustawienia jej jako
           partycji wymiany), a następnie zapisaniu tablicy partycji na dysku. Dopóki tablica par-
           tycji nie będzie zapisana, żadne zmiany na dysku nie zostaną dokonane. Gdy już uaktu-
           alnisz tablicę partycji, dane znajdujące się na partycjach, które nie są dłużej zdefiniowa-
           ne, są już stracone (fizycznie znajdują się one jeszcze na dysku, ale nie ma sposobu9,
           aby uzyskać do nich dostęp), ponieważ ustalona jest już nowa tablica partycji.

           Częścią partycjonowania jest także formatowanie. Nie jest to konieczne, gdy partycja
           nie była zmieniana i została sformatowana wcześniej. Jednak gdy pozwolisz systemowi
           na ponowne sformatowanie wszystkiego, będziesz miał pewność wyniku. Jeżeli nie masz
           pewności, czy dysk jest w dobrym stanie, zalecałbym też przeprowadzenie podczas
           formatowania wyszukiwania uszkodzonych bloków (zajmie to więcej czasu, ale zaosz-
           czędzi wielu kłopotów, jeżeli okaże się później, że niektóre bloki są uszkodzone).




9
    Istnieją narzędzia „zgadujące” poprzednią tablicę partycji, należy jednak unikać sytuacji,
    gdy są potrzebne — przyp. tłum.
Rozdział 2. ¨ Instalowanie Linuksa                                                          69


2.7.4. Zmiana rozmiaru partycji Windows
        Jeżeli zamierzasz utworzyć system z podwójnym rozruchem dla Linuksa i Windowsa,
        być może będziesz musiał zmniejszyć partycję Windows, aby uzyskać wystarczającą
        ilość miejsca na instalację Linuksa. Pierwsze, co musisz zrobić, to załadować Windowsa
        i uruchomić program SCANDISK lub CHKDSK, aby upewnić się, że system plików
        Windows nie zawiera błędów. Następnie powinieneś uruchomić DEFRAG, aby prze-
        prowadzić defragmentację dysku i przenieść dane na jego początek. W raporcie pro-
        gramu DEFRAG zobacz, które bloki są wykorzystywane przez Windows jako ostatnie.
        Określi to, jak bardzo możesz zmniejszyć partycję Windows, ale powinieneś zostawić
        dodatkowe 20 – 25% wolnego miejsca na nowe pliki Windowsa.

        Gdy już określisz nowy rozmiar partycji Windows, musisz ją zmniejszyć, aby utwo-
        rzyć partycje Linuksa w zwolnionym miejscu. Stary program, FIPS, może zmniejszyć
        system plików FAT i FAT32, które są najczęściej wykorzystywane w systemach Win-
        dows 95, 98 i ME. Jeżeli Windows korzysta z któregoś z tych systemów, możesz zna-
        leźć program FIPS w swojej dystrybucji Linuksa (np. Mandriva i TurboLinux dostar-
        czają go w katalogu dosutils, a Debian w katalogu tools).

        Windows XP nie posiada narzędzia, za pomocą którego można zmniejszyć wykorzy-
        stywany przez niego system plików NTFS (dostarczone narzędzia pozwalają jedynie na
        powiększenie systemu plików). Jedynym rozwiązaniem jest zakupienie jednej z komer-
        cyjnych aplikacji służących do partycjonowania dysków. Jedną z nich jest, cieszący się
        dobrą opinią, PartitionMagic firmy Symantec.

        Niektóre dystrybucje Linuksa (np. Mandriva i SuSE) zawierają bardzo dobre narzę-
        dzia do dzielenia dysku na partycje, które potrafią także zmniejszać partycje NTFS.
        Niezależnie od sposobu, w jaki będziesz zmniejszał istniejącą partycję Windows, BĄDŹ
        BARDZO OSTROŻNY i wykonuj tylko te kroki, które całkowicie rozumiesz. Jeżeli nie
        jesteś czegoś pewien, zapytaj kogoś z większym doświadczeniem. Nadpisanie partycji
        jest nieodwołalne.


2.7.5. Konfigurowanie systemu
        Po utworzeniu partycji rozpocznie się instalacja. Jest to część mająca najwięcej wspól-
        nych cech we wszystkich dystrybucjach. Przy niewspomaganej instalacji, jak w Slackware
        po uruchomieniu cfdisk, należy uruchomić narzędzie setup.

        W części procesu instalacji związanej z konfiguracją systemu wybierasz ustawienia
        dotyczące:
          t języka,
          t klawiatury, myszki i monitora,
          t czasu i strefy czasowej,
          t poziomu bezpieczeństwa,
          t drukarki,
70                                                         Linux dla programistów i użytkowników


             t sieci,
             t dodatkowych pakietów/komponentów,
             t hasła użytkownika root,
             t ustawień nowego konta użytkownika lub użytkowników.

           Linux wykorzystuje Uniwersalny Czas Koordynowany (ang. Coordinated Universal
           Time — UTC), który (dla naszych potrzeb) jest równoważny z Czasem Uniwersalnym
           (ang. Greenwitch Mean Time — GMT). Gdy w jakimś programie wyświetlany jest
           czas, wykorzystuje on odwołanie do informacji dotyczącej strefy czasowej i wyświetla
           czas uwzględniający ewentualną poprawkę. Dzięki temu użytkownikom pracującym
           w różnych strefach czasowych wyświetlany jest właściwy czas lokalny, jednak we-
           wnętrzna reprezentacja jest wciąż w UTC/GMT.

           Może to stanowić problem, gdy tworzysz podwójny rozruch z Windowsem, ponieważ
           Windows korzysta wewnętrznie z czasu lokalnego. Podczas konfiguracji zostaniesz za-
           pytany, czy korzystać10 z czasu lokalnego, czy UTC, więc możesz wybrać czas lokalny.

           Niektóre dystrybucje pozwalają też wybrać poziom bezpieczeństwa, automatycznie za-
           instalują i skonfigurują funkcje systemu związane z bezpieczeństwem, jak np. firewall.


2.7.6. Program rozruchowy
           Podczas instalacji możesz wybrać, czy ma być zainstalowany program rozruchowy.
           Standardowym programem jest LILO, ale niektóre dystrybucje instalują domyślnie
           GRUB (np. Fedora i SuSE).

           Program startowy LILO zawiera narzędzie lilo, uruchamiane z linii poleceń, które za-
           pisuje kod rozruchowy do urządzenia rozruchowego określonego w pliku /etc/lilo.conf.
           Ten plik zawiera wszystkie informacje na temat różnych systemów operacyjnych oraz
           parametry rozruchu. Po wprowadzaniu zmian do pliku konfiguracyjnego uruchom lilo,
           aby zainstalować nowy program startowy.

           GRUB dostarcza więcej możliwości, ale to wiąże się z ustawieniem większej liczby
           opcji oraz bardziej złożonym interfejsem. GRUB zawiera powłokę poleceń, wywoły-
           waną poleceniem grub, która umożliwia zmianę informacji o rozruchu i wprowadzenie
           ich do programu startowego.

           Windows umieszcza kod rozruchowy uruchamiający Windows w MBR. Podczas in-
           stalacji Linuksa możesz nadpisać ten kod kodem LILO lub GRUB, aby uruchamiać
           Linuksa. Programy te przeważnie zachowują informacje rozruchowe Windowsa i two-
           rzą program rozruchowy wyświetlający go jako jeden z systemów, które można uru-
           chomić. Jednak bezpieczniej jest zapisywać program rozruchowy do MBR tylko wtedy,

10
     Chodzi o format czasu ustawiony w zegarze czasu rzeczywistego komputera. Wewnętrznie Linux
     nadal będzie korzystać z UTC po naniesieniu odpowiedniej korekty na czas odczytany z zegara
     czasu rzeczywistego — przyp. tłum.
Rozdział 2. ¨ Instalowanie Linuksa                                                          71


        gdy nie planujesz już uruchamiać systemu Windows (czyli jeżeli instalujesz Linuksa
        w miejsce Windows), ponieważ po nadpisaniu MBR oryginalny kod rozruchowy Win-
        dows przepadnie. Możesz go przywrócić przy użyciu Konsoli Odzyskiwania systemu
        Windows w Windows XP (lub fdisk, we wcześniejszych wersjach), ale jeżeli będziesz
        miał kłopoty z ponownym uruchomieniem Windowsa, nie pomoże Ci to. Mimo że pro-
        gramy rozruchowe mogą zostać zainstalowane w taki sposób, aby można było urucha-
        miać system Windows, zalecałbym umieszczenie programu startowego na dyskietce
        i pozostawienie bez zmian jego kodu rozruchowego. Jeżeli zdecydujesz się nadpisać
        MBR, upewnij się, że Windows pojawia się na liście systemów, które można urucho-
        mić, zanim zainstalujesz program rozruchowy na dysku.



Podsumowanie
Lista kontrolna
        W tym rozdziale omówiłem:
          t sprzęt potrzebny do uruchomienia Linuksa,
          t dostępne dystrybucje Linuksa,
          t pakiety Linuksa,
          t partycjonowanie dysku i organizację systemu plików Linuksa,
          t programy i dyskietki rozruchowe,
          t sposoby zdobycia własnej dystrybucji Linuksa.


Quiz
          1. Jaka jest minimalna ilość pamięci i miejsca na dysku wymagana do komfortowej
            pracy Linuksa?
          2. Ile partycji podstawowych może zostać utworzonych na dysku?
          3. Jaka jest minimalna liczba partycji konieczna do uruchomienia Linuksa?
          4. Czym jest system z podwójnym rozruchem?
          5. Jaka jest różnica między systemami plików ext2 i ext3?
          6. Opisz funkcje programu rozruchowego.
72                                              Linux dla programistów i użytkowników



Ćwiczenia
     1. Wyszukaj trzy dystrybucje Linuksa, nieomówione w tym rozdziale, i zastanów
       się, dlaczego ktoś mógłby je wybrać zamiast bardziej popularnych dystrybucji
       [poziom trudności: średnie].


Projekty
     1. Zdobądź dystrybucję Linuksa i ją zainstaluj (chyba się tego spodziewałeś)
       [poziom trudności: łatwe].

More Related Content

PDF
Linux. Praktyczny kurs
PDF
Po prostu Red Hat Linux 9
PDF
Mandrake Linux
PDF
Fedora 7. Księga eksperta
PDF
Debian Linux. Ćwiczenia
PDF
Linux. Najlepsze przepisy. Wydanie II
PDF
Linux. Kurs
PDF
Linux. Praktyczny kurs
Po prostu Red Hat Linux 9
Mandrake Linux
Fedora 7. Księga eksperta
Debian Linux. Ćwiczenia
Linux. Najlepsze przepisy. Wydanie II
Linux. Kurs

What's hot (20)

PDF
Fedora Core. Ćwiczenia
PDF
Po prostu Red Hat Linux 8
PDF
Fedora Core 2 dla każdego
PDF
Aurox. Ćwiczenia
PDF
Linux. Leksykon kieszonkowy
PDF
Red Hat Enterprise Linux i Fedora Core 2. Wprowadzenie
PDF
Mandrake Linux. Ćwiczenia
PDF
100 sposobów na Linux Server. Wskazówki i narzędzia dotyczące integracji, mon...
PDF
100 sposobów na Linux
PDF
Red Hat Linux 8. Ćwiczenia praktyczne
PDF
Linux Desktop. Leksykon kieszonkowy
PDF
100 sposobów na Ubuntu
PDF
SUSE Linux 10. Księga eksperta
PDF
Linux. Biblia. Edycja 2007
PDF
FreeBSD. Podstawy administracji systemem. Wydanie II
PDF
Windows Vista PL. Bez kantów
PDF
Linux w sieci
PDF
Windows XP Home Edition. Nieoficjalny podręcznik
PDF
Jak to się robi w Linuksie
PDF
Windows XP PL. Kurs
Fedora Core. Ćwiczenia
Po prostu Red Hat Linux 8
Fedora Core 2 dla każdego
Aurox. Ćwiczenia
Linux. Leksykon kieszonkowy
Red Hat Enterprise Linux i Fedora Core 2. Wprowadzenie
Mandrake Linux. Ćwiczenia
100 sposobów na Linux Server. Wskazówki i narzędzia dotyczące integracji, mon...
100 sposobów na Linux
Red Hat Linux 8. Ćwiczenia praktyczne
Linux Desktop. Leksykon kieszonkowy
100 sposobów na Ubuntu
SUSE Linux 10. Księga eksperta
Linux. Biblia. Edycja 2007
FreeBSD. Podstawy administracji systemem. Wydanie II
Windows Vista PL. Bez kantów
Linux w sieci
Windows XP Home Edition. Nieoficjalny podręcznik
Jak to się robi w Linuksie
Windows XP PL. Kurs
Ad

Similar to Linux dla programistów i użytkowników (15)

PDF
Linux. Kurs. Wydanie II
PDF
Jak działa Linux
PDF
SUSE Linux. Ćwiczenia
PDF
Slackware Linux. Ćwiczenia
PDF
Mandrake Linux. Ćwiczenia zaawansowane
PDF
Mandriva. Ćwiczenia
PDF
Debian GNU/Linux 3.1. Biblia
PDF
Ubuntu Linux. Ćwiczenia
PDF
Linux. Rozwiązywanie problemów. Biblia
PDF
Red Hat Linux 9. Biblia
PDF
Red Hat Linux 7.3. Księga eksperta
PDF
FreeBSD. Podstawy administracji systemem
PDF
JDBC. Leksykon kieszonkowy
PDF
Red Hat Linux 8. Biblia
PDF
Linux. Komendy i polecenia
Linux. Kurs. Wydanie II
Jak działa Linux
SUSE Linux. Ćwiczenia
Slackware Linux. Ćwiczenia
Mandrake Linux. Ćwiczenia zaawansowane
Mandriva. Ćwiczenia
Debian GNU/Linux 3.1. Biblia
Ubuntu Linux. Ćwiczenia
Linux. Rozwiązywanie problemów. Biblia
Red Hat Linux 9. Biblia
Red Hat Linux 7.3. Księga eksperta
FreeBSD. Podstawy administracji systemem
JDBC. Leksykon kieszonkowy
Red Hat Linux 8. Biblia
Linux. Komendy i polecenia
Ad

More from Wydawnictwo Helion (20)

PDF
Tworzenie filmów w Windows XP. Projekty
PDF
Blog, więcej niż internetowy pamiętnik
PDF
Access w biurze i nie tylko
PDF
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
PDF
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
PDF
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
PDF
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
PDF
Makrofotografia. Magia szczegółu
PDF
Windows PowerShell. Podstawy
PDF
Java. Efektywne programowanie. Wydanie II
PDF
JavaScript. Pierwsze starcie
PDF
Ajax, JavaScript i PHP. Intensywny trening
PDF
PowerPoint 2007 PL. Seria praktyk
PDF
Excel 2007 PL. Seria praktyk
PDF
Access 2007 PL. Seria praktyk
PDF
Word 2007 PL. Seria praktyk
PDF
Serwisy społecznościowe. Budowa, administracja i moderacja
PDF
AutoCAD 2008 i 2008 PL
PDF
Bazy danych. Pierwsze starcie
PDF
Inventor. Pierwsze kroki
Tworzenie filmów w Windows XP. Projekty
Blog, więcej niż internetowy pamiętnik
Access w biurze i nie tylko
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Makrofotografia. Magia szczegółu
Windows PowerShell. Podstawy
Java. Efektywne programowanie. Wydanie II
JavaScript. Pierwsze starcie
Ajax, JavaScript i PHP. Intensywny trening
PowerPoint 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
Serwisy społecznościowe. Budowa, administracja i moderacja
AutoCAD 2008 i 2008 PL
Bazy danych. Pierwsze starcie
Inventor. Pierwsze kroki

Linux dla programistów i użytkowników

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TREœCI COM+. Kompendium programisty KATALOG KSI¥¯EK Autorzy: Graham Glass, King Ables T³umaczenie: Marcin Rogó¿ KATALOG ONLINE ISBN: 978-83-246-0504-0 Tytu³ orygina³u: Linux for Programmers and Users ZAMÓW DRUKOWANY KATALOG Format: B5, stron: 648 TWÓJ KOSZYK Szczegó³owe omówienie systemu Linux DODAJ DO KOSZYKA • Instalacja, konfiguracja i uruchamianie • Praca z pow³okami tekstowymi • Programowanie w C CENNIK I INFORMACJE • œrodowiska graficzne Linux, napisany w ramach studenckich laboratoriów, w ci¹gu kilku lat sta³ siê niezwykle popularnym systemem operacyjnym. Jego stabilnoœæ i niezawodnoœæ doceniaj¹ ju¿ nie ZAMÓW INFORMACJE O NOWOœCIACH tylko profesjonaliœci, ale tak¿e u¿ytkownicy domowi, dla których dostêpny nieodp³atnie produkt coraz czêœciej jest alternatyw¹ dla komercyjnych systemów operacyjnych. ZAMÓW CENNIK Linux œwiêci triumfy nie tylko jako baza dla wydajnych i bezpiecznych serwerów sieciowych, ale równie¿ jest wykorzystywany w stacjach roboczych oraz komputerach domowych u¿ywanych do pracy, rozrywki i przegl¹dania zasobów internetowych. CZYTELNIA Dla Linuksa powstaje coraz wiêcej oprogramowania, równie¿ dostêpnego nieodp³atnie i w niczym nieustêpuj¹cego narzêdziom komercyjnym. FRAGMENTY KSI¥¯EK ONLINE „Linux dla programistów i u¿ytkowników” to doskona³y przewodnik po tym systemie operacyjnym. Omawia zagadnienia zwi¹zane z programowaniem i przedstawia je z perspektywy u¿ytkownika. Czytaj¹c go, dowiesz siê, jakie dystrybucje Linuksa mo¿esz znaleŸæ na rynku oraz jak zainstalowaæ system i skonfigurowaæ go. Nauczysz siê korzystaæ z pow³ok tekstowych i œrodowisk graficznych, pracowaæ w sieci i ³¹czyæ siê z internetem. Poznasz tajniki programowania w jêzyku C dla systemu Linux, napiszesz w³asne narzêdzia oraz zobaczysz, w jaki sposób dzia³a system. Przeczytasz tak¿e o podstawowych zadaniach administratora Linuksa. • Wybór dystrybucji • Instalacja systemu • Podstawowe narzêdzia dla u¿ytkowników Wydawnictwo Helion • Przetwarzanie plików tekstowych ul. Koœciuszki 1c • Operacje na systemie plików 44-100 Gliwice • Pow³oki Bash, Korn i C tel. 032 230 98 63 • Linux w sieci e-mail: helion@helion.pl • œrodowiska graficzne • J¹dro Linuksa • Administrowanie systemem Poznaj system operacyjny, który zrewolucjonizowa³ wspó³czesn¹ informatykê
  • 2. Przedmowa .................................................................................... 19 Rozdział 1. Czym jest Linux? ............................................................................ 27 1.1. Systemy komputerowe .......................................................................................... 28 1.2. Sprzęt .................................................................................................................... 28 1.2.1. Procesor .................................................................................................. 28 1.2.2. Magistrala ............................................................................................... 28 1.2.3. Pamięć RAM .......................................................................................... 29 1.2.4. Pamięć ROM .......................................................................................... 29 1.2.5. Dyski ...................................................................................................... 30 1.2.6. Napędy CD-ROM ................................................................................... 30 1.2.7. Monitor ................................................................................................... 30 1.2.8. Karta graficzna ....................................................................................... 30 1.2.9. Klawiatura .............................................................................................. 30 1.2.10. Myszka ................................................................................................... 30 1.2.11. Drukarka ................................................................................................. 31 1.2.12. Napędy taśmowe .................................................................................... 31 1.2.13. Modem .................................................................................................... 31 1.2.14. Interfejs sieciowy ................................................................................... 31 1.2.15. Inne urządzenia peryferyjne ................................................................... 31 1.3. System operacyjny ................................................................................................ 31 1.4. Oprogramowanie .................................................................................................. 32 1.5. Dzielenie zasobów ................................................................................................ 33 1.6. Komunikacja ......................................................................................................... 33 1.7. Narzędzia .............................................................................................................. 34 1.8. Wspomaganie programistów ................................................................................ 35 1.9. Standardy .............................................................................................................. 35 1.10. Historia Linuksa .................................................................................................... 36 1.10.1. UNIX ...................................................................................................... 36 1.10.2. Open Source Software i Free Software Foundation ............................... 37 1.10.3. Linus ....................................................................................................... 39 1.11. Pakiety z Linuksem ............................................................................................... 39 1.12. Filozofia Linuksa i UNIX-a .................................................................................. 40 1.13. Cechy Linuksa ...................................................................................................... 41 1.14. W dalszych rozdziałach ........................................................................................ 42
  • 3. 6 Linux dla programistów i użytkowników Rozdział 2. Instalowanie Linuksa ...................................................................... 45 2.1. Wstęp .................................................................................................................... 46 2.2. Upewnij się, że masz odpowiedni sprzęt .............................................................. 46 2.2.1. Jednostka centralna (procesor) ............................................................... 46 2.2.2. Architektura magistrali ........................................................................... 47 2.2.3. Pamięć .................................................................................................... 47 2.2.4. Dysk ........................................................................................................ 48 2.2.5. Monitor, klawiatura i myszka ................................................................. 48 2.3. Wybór dystrybucji ................................................................................................ 49 2.3.1. Debian .................................................................................................... 49 2.3.2. Fedora ..................................................................................................... 50 2.3.3. Mandriva ................................................................................................ 51 2.3.4. Slackware ............................................................................................... 51 2.3.5. SuSE ....................................................................................................... 52 2.3.6. TurboLinux ............................................................................................. 52 2.4. Rozważ opcjonalne pakiety oprogramowania ...................................................... 53 2.4.1. System X Window .................................................................................. 53 2.4.2. Środowiska graficzne ............................................................................. 53 2.4.3. Obsługa sieci .......................................................................................... 55 2.4.4. Narzędzia biurowe .................................................................................. 57 2.4.5. Narzędzia programistyczne i języki programowania ............................. 57 2.5. Zaprojektuj swój system ....................................................................................... 58 2.5.1. W jaki sposób ma być uruchamiany Linux? .......................................... 58 2.5.2. Partycjonowanie dysku ........................................................................... 59 2.5.3. System plików Linuksa .......................................................................... 60 2.5.4. Programy rozruchowe (ładujące) ........................................................... 63 2.5.5. Dyskietka startowa ................................................................................. 64 2.6. Zdobądź Linuksa .................................................................................................. 64 2.6.1. Dyski CD-ROM ..................................................................................... 65 2.6.2. Pobieranie ............................................................................................... 65 2.7. Instalacja Linuksa ................................................................................................. 66 2.7.1. Zdobądź dokumentację swojej dystrybucji ............................................ 66 2.7.2. Uruchomienie ......................................................................................... 67 2.7.3. Partycjonowanie dysków ........................................................................ 67 2.7.4. Zmiana rozmiaru partycji Windows ....................................................... 69 2.7.5. Konfigurowanie systemu ........................................................................ 69 2.7.6. Program rozruchowy .............................................................................. 70 Rozdział 3. Narzędzia GNU dla zwykłych użytkowników ..................................... 73 3.1. Uzyskiwanie konta ................................................................................................ 74 3.2. Logowanie ............................................................................................................ 75 3.3. Powłoki ................................................................................................................. 76 3.4. Uruchamianie narzędzi GNU ............................................................................... 76 3.5. Kanały wejścia, wyjścia i błędu ............................................................................ 77 3.6. Uzyskiwanie pomocy — man ............................................................................... 78 3.7. Znaki specjalne ..................................................................................................... 80 3.7.1. Przerywanie procesu — Control+C ....................................................... 81 3.7.2. Koniec danych wejściowych — Control+D ........................................... 81 3.8. Ustanawianie własnego hasła — passwd ............................................................. 81 3.9. Wylogowanie ........................................................................................................ 82 3.10. Poezja w działaniu — eksplorowanie systemu plików ......................................... 83 3.11. Wyświetlanie nazwy bieżącego katalogu roboczego — pwd ............................... 83 3.12. Względne i bezwzględne ścieżki dostępu ............................................................. 85 3.13. Tworzenie pliku .................................................................................................... 86
  • 4. Spis treści 7 3.14. Wyświetlanie zawartości katalogu — ls ............................................................... 87 3.15. Wyświetlanie zawartości pliku — cat, more, head i tail ...................................... 88 3.16. Zmienianie nazwy pliku — mv ............................................................................ 89 3.17. Tworzenie katalogu — mkdir ............................................................................... 90 3.18. Przechodzenie do innego katalogu — cd .............................................................. 91 3.19. Kopiowanie pliku — cp ........................................................................................ 92 3.20. Edycja pliku — vim .............................................................................................. 92 3.21. Usuwanie katalogu — rmdir ................................................................................. 93 3.22. Usuwanie pliku — rm ........................................................................................... 94 3.23. Drukowanie pliku — lp, lpstat i cancel ................................................................ 95 3.24. Drukowanie pliku — lpr, lpq i lprm ....................................................................... 96 3.25. Liczenie słów w pliku — wc ................................................................................ 98 3.26. Atrybuty pliku ....................................................................................................... 98 3.26.1. Przechowywanie pliku ........................................................................... 99 3.26.2. Nazwy plików ......................................................................................... 99 3.26.3. Data i czas modyfikacji pliku ............................................................... 100 3.26.4. Właściciel pliku .................................................................................... 100 3.26.5. Grupa pliku ........................................................................................... 100 3.26.6. Typy plików ......................................................................................... 101 3.26.7. Prawa dostępu do plików ..................................................................... 102 3.26.8. Liczba twardych dowiązań do pliku ..................................................... 104 3.27. Grupy .................................................................................................................. 104 3.28. Wyświetlanie grup, do których należysz — groups ........................................... 105 3.29. Zmienianie grupy właścicieli pliku — chgrp ..................................................... 105 3.30. Zmienianie praw dostępu do pliku — chmod ...................................................... 106 3.31. Zmienianie właściciela pliku — chown .............................................................. 108 3.32. Zmiana grupy — newgrp .................................................................................... 108 3.33. Poezja w działaniu — epilog .............................................................................. 109 3.34. Określanie typu terminala — tset ....................................................................... 109 3.35. Zmienianie charakterystyk terminala — stty ...................................................... 112 3.36. Edycja pliku — vim ............................................................................................ 113 3.36.1. Uruchamianie vim ................................................................................ 114 3.36.2. Tryb wprowadzania tekstu ................................................................... 114 3.36.3. Tryb wydawania poleceń ...................................................................... 115 3.36.4. Bufor pamięci i pliki tymczasowe ........................................................ 116 3.36.5. Popularne funkcje edycyjne ................................................................. 117 3.36.6. Przemieszczanie kursora ...................................................................... 117 3.36.7. Usuwanie tekstu ................................................................................... 117 3.36.8. Zamienianie tekstu ............................................................................... 119 3.36.9. Wklejanie tekstu ................................................................................... 119 3.36.10. Wyszukiwanie ...................................................................................... 120 3.36.11. Wyszukiwanie i zamienianie ................................................................ 121 3.36.12. Zapisywanie i odczytywanie pliku ....................................................... 121 3.36.13. Inne ....................................................................................................... 122 3.36.14. Dostosowywanie vim ........................................................................... 123 3.36.15. Zachowywanie ustawień ...................................................................... 123 3.37. Edycja pliku — emacs ........................................................................................ 124 3.37.1. Uruchamianie edytora emacs ............................................................... 125 3.37.2. Polecenia edytora emacs ...................................................................... 125 3.37.3. Wydobywanie się z kłopotów .............................................................. 126 3.37.4. Uzyskiwanie pomocy ........................................................................... 126 3.37.5. Opuszczanie edytora emacs .................................................................. 127 3.37.6. Tryby działania edytora emacs ............................................................. 127 3.37.7. Wpisywanie tekstu ............................................................................... 127
  • 5. 8 Linux dla programistów i użytkowników 3.37.8. Popularne funkcje edycyjne ................................................................. 127 3.37.9. Przemieszczanie kursora ...................................................................... 128 3.37.10. Usuwanie, wklejanie i cofanie zmian ................................................... 128 3.37.11. Wyszukiwanie ...................................................................................... 129 3.37.12. Wyszukiwanie i zastępowanie .............................................................. 129 3.37.13. Zapisywanie i ładowanie plików .......................................................... 130 3.37.14. Inne ....................................................................................................... 130 3.38. Poczta elektroniczna — mail .............................................................................. 130 3.38.1. Wysyłanie poczty ................................................................................. 131 3.38.2. Czytanie poczty .................................................................................... 133 3.38.3. Kontaktowanie się z administratorem systemu .................................... 135 Rozdział 4. Narzędzia GNU dla zaawansowanych użytkowników ....................... 137 4.1. Wprowadzenie .................................................................................................... 138 4.2. Filtrowanie plików — grep, egrep, fgrep i uniq ................................................. 138 4.2.1. Filtrowanie według wzorca — egrep, fgrep, grep ................................ 139 4.2.2. Usuwanie powtarzających się wierszy — uniq .................................... 142 4.3. Sortowanie plików — sort .................................................................................. 143 4.4. Porównywanie plików — cmp i diff .................................................................. 146 4.4.1. Sprawdzanie identyczności — cmp ..................................................... 146 4.4.2. Różnice w plikach — diff .................................................................... 147 4.5. Wyszukiwanie plików — find ............................................................................ 148 4.6. Archiwizowanie plików — cpio, tar, dump i restore .......................................... 150 4.6.1. Kopiowanie plików — cpio ................................................................. 151 4.6.2. Archiwizowanie na taśmie — tar ......................................................... 153 4.6.3. Tworzenie przyrostowych kopii zapasowych — dump i restore ......... 155 4.7. Ustalanie harmonogramu wywoływania poleceń — cron i at ............................ 156 4.7.1. Cykliczne uruchamianie — crontab ..................................................... 157 4.7.2. Jednokrotne uruchamianie zadania w przyszłości — at ....................... 158 4.8. Programowalne przetwarzanie tekstu — gawk .................................................. 160 4.8.1. Programy gawk ..................................................................................... 161 4.8.2. Dostęp do pojedynczych pól ................................................................ 162 4.8.3. BEGIN i END ...................................................................................... 162 4.8.4. Operatory .............................................................................................. 162 4.8.5. Zmienne ................................................................................................ 163 4.8.6. Struktury sterujące ................................................................................ 163 4.8.7. Rozszerzone wyrażenia regularne ........................................................ 164 4.8.8. Zasięg warunków ................................................................................. 164 4.8.9. Separatory pól ....................................................................................... 164 4.8.10. Funkcje wbudowane ............................................................................. 165 4.9. Dowiązania twarde i symboliczne — ln ............................................................. 165 4.10.Identyfikowanie powłok — whoami .................................................................. 167 4.11. Zmienianie użytkownika — su ........................................................................... 167 4.12. Przekształcanie plików ....................................................................................... 168 4.12.1. Kompresowanie plików — gzip i gunzip ............................................. 169 4.12.2. Edycja strumienia — sed ...................................................................... 169 4.12.3. Konwertowanie znaków — tr ............................................................... 173 4.12.4. Konwersja sekwencji podkreślających — ul ........................................ 174 4.13.Przeglądanie surowej zawartości pliku — od ..................................................... 175 4.14.Montowanie systemów plików — mount i umount ........................................... 176 4.15. Identyfikowanie terminali — tty ........................................................................ 177 4.16. Pomiar czasu wykonania — time ....................................................................... 177
  • 6. Spis treści 9 4.17.Tworzenie własnych programów — Perl ........................................................... 178 4.17.1. Skąd wziąć Perla? ................................................................................. 179 4.17.2. Uruchamianie Perla .............................................................................. 179 4.17.3. Wyświetlanie tekstu ............................................................................. 179 4.17.4. Zmienne, łańcuchy i liczby całkowite .................................................. 180 4.17.5. Tablice .................................................................................................. 180 4.17.6. Operatory matematyczne i logiczne ..................................................... 182 4.17.7. Operatory łańcuchów ........................................................................... 183 4.17.8. Operatory porównania .......................................................................... 183 4.17.9. Pętle — if, while, for i foreach ............................................................. 184 4.17.10. Obsługa plików ..................................................................................... 185 4.17.11. Funkcje ................................................................................................. 185 4.17.12. Funkcje biblioteczne ............................................................................. 186 4.17.13. Odczytywanie argumentów z wiersza poleceń .................................... 187 4.17.14. Praktyczny przykład ............................................................................. 188 Rozdział 5. Powłoki systemu Linux ................................................................. 193 5.1. Wprowadzanie .................................................................................................... 194 5.2. Wybór powłoki ................................................................................................... 195 5.3. Operacje powłoki ................................................................................................ 196 5.4. Pliki wykonywalne a wbudowane polecenia ...................................................... 197 5.4.1. Wyświetlanie informacji — echo ......................................................... 197 5.4.2. Zmiana katalogu — cd ......................................................................... 198 5.5. Metaznaki ........................................................................................................... 198 5.6. Przekierowanie ................................................................................................... 199 5.6.1. Przekierowanie wyjścia ........................................................................ 199 5.6.2. Przekierowanie wejścia ........................................................................ 200 5.7. Symbole wieloznaczne w nazwach plików ........................................................ 201 5.7.1. Potoki .................................................................................................... 202 5.8. Zastępowanie poleceniem ................................................................................... 204 5.9. Sekwencje ........................................................................................................... 204 5.9.1. Sekwencje warunkowe ......................................................................... 205 5.10. Grupowanie poleceń ........................................................................................... 205 5.11. Przetwarzanie w tle ............................................................................................. 206 5.12.Przekierowanie procesów działających w tle ..................................................... 207 5.13. Programy powłoki (skrypty) ............................................................................... 208 5.14. Podpowłoki lub powłoki potomne ...................................................................... 209 5.15. Zmienne .............................................................................................................. 210 5.16. Cytowanie ........................................................................................................... 212 5.17. Dokumenty wbudowane ..................................................................................... 213 5.18. Sterowanie zadaniami ......................................................................................... 214 5.18.1. Status procesu — ps ............................................................................. 214 5.18.2. Wysyłanie sygnałów do procesów — kill ............................................ 217 5.18.3. Oczekiwanie na proces potomny — wait ............................................. 218 5.19. Wyszukiwanie poleceń — $PATH ..................................................................... 219 5.20.Zastępowanie standardowych narzędzi .............................................................. 220 5.21.Kończenie działania i kody wyjścia .................................................................... 221 5.22. Wspólne polecenia wbudowane ......................................................................... 222 5.22.1. Polecenie eval ....................................................................................... 222 5.22.2. Polecenie exec ...................................................................................... 222 5.22.3. Polecenie shift ...................................................................................... 223 5.22.4. Polecenie umask ................................................................................... 223
  • 7. 10 Linux dla programistów i użytkowników Rozdział 6. Powłoka Bourne Again ................................................................. 227 6.1. Wprowadzenie .................................................................................................... 228 6.2. Rozpoczynanie sesji ............................................................................................ 229 6.3. Zmienne .............................................................................................................. 229 6.3.1. Tworzenie prostych zmiennych ............................................................ 230 6.3.2. Odwołania do zmiennych ..................................................................... 230 6.3.3. Tworzenie tablic ................................................................................... 233 6.3.4. Odwołania do tablic .............................................................................. 233 6.3.5. Tworzenie tablic ................................................................................... 234 6.3.6. Niszczenie tablic ................................................................................... 235 6.3.7. Odczytywanie zmiennej ze standardowego wejścia ............................ 235 6.3.8. Eksportowanie zmiennych ................................................................... 236 6.3.9. Zmienne tylko do odczytu .................................................................... 237 6.3.10. Zmienne predefiniowane ...................................................................... 238 6.4. Skróty poleceń .................................................................................................... 240 6.4.1. Aliasy .................................................................................................... 240 6.4.2. Historia poleceń .................................................................................... 241 6.4.3. Automatyczne uzupełnianie ................................................................. 243 6.5. Zastępowanie znaku tyldy .................................................................................. 243 6.6. Przekierowanie ................................................................................................... 244 6.7. Podstawianie poleceniem .................................................................................... 245 6.8. Arytmetyka ......................................................................................................... 245 6.9. Wyrażenia warunkowe ....................................................................................... 246 6.9.1. Porównania arytmetyczne .................................................................... 246 6.9.2. Porównywanie łańcuchów .................................................................... 247 6.9.3. Wyrażenia warunkowe dla plików ....................................................... 247 6.10. Struktury sterujące .............................................................................................. 247 6.10.1. Instrukcja case .. in .. esac .................................................................... 248 6.10.2. Instrukcja if .. then .. elif .. then .. else .. fi ........................................... 250 6.10.3. Instrukcja for .. do .. done ..................................................................... 251 6.10.4. Instrukcja while/until .. do .. done ........................................................ 251 6.10.5. Instrukcja trap ....................................................................................... 253 6.11. Funkcje ............................................................................................................... 253 6.11.1. Używanie parametrów .......................................................................... 254 6.11.2. Zwracanie wyniku funkcji .................................................................... 255 6.11.3. Dostęp do funkcji ................................................................................. 255 6.11.4. Rekurencja ............................................................................................ 256 6.11.5. Współdzielenie funkcji ......................................................................... 257 6.12. Tworzenie menu — select .................................................................................. 257 6.13.Dostęp do katalogów i stos katalogów ............................................................... 259 6.14. Sterowanie zadaniami ......................................................................................... 260 6.14.1. Wskazywanie zadania .......................................................................... 261 6.14.2. Polecenie bg ......................................................................................... 261 6.14.3. Polecenie fg .......................................................................................... 261 6.14.4. Polecenie kill ........................................................................................ 262 6.15. Opcje powłoki ..................................................................................................... 262 Rozdział 7. Powłoka Korn ............................................................................... 265 7.1. Wprowadzenie .................................................................................................... 266 7.2. Rozpoczynanie sesji ............................................................................................ 267 7.3. Zmienne .............................................................................................................. 268 7.3.1. Tworzenie (przypisywanie wartości) zmiennej .................................... 268 7.3.2. Odwołania do zmiennych ..................................................................... 269 7.3.3. Odczytywanie zmiennych ze standardowego wejścia .......................... 270
  • 8. Spis treści 11 7.3.4. Eksportowanie zmiennych ................................................................... 271 7.3.5. Zmienne tylko do odczytu .................................................................... 272 7.3.6. Predefiniowane zmienne lokalne .......................................................... 273 7.3.7. Predefiniowane zmienne środowiska ................................................... 274 7.4. Aliasy .................................................................................................................. 274 7.4.1. Przypisywanie aliasów poleceniom wbudowanym .............................. 275 7.4.2. Usuwanie aliasów ................................................................................. 275 7.4.3. Predefiniowane aliasy ........................................................................... 276 7.4.4. Przydatne aliasy .................................................................................... 276 7.4.5. Aliasy śledzone ..................................................................................... 277 7.4.6. Współdzielenie aliasów ........................................................................ 277 7.5. Historia ............................................................................................................... 278 7.5.1. Polecenia numerowane ......................................................................... 278 7.5.2. Przechowywanie poleceń ..................................................................... 278 7.5.3. Ponowne wykonywanie poleceń .......................................................... 279 7.5.4. Edycja poleceń ..................................................................................... 279 7.6. Edycja poleceń .................................................................................................... 281 7.6.1. Wbudowany edytor — vi ..................................................................... 281 7.6.2. Wbudowany edytor — emacs i gmacs ................................................. 283 7.7. Arytmetyka ......................................................................................................... 284 7.7.1. Zapobieganie interpretacji metaznaków ............................................... 285 7.7.2. Sprawdzanie wartości ........................................................................... 285 7.8. Zastępowanie tyldy ............................................................................................. 285 7.9. Tworzenie menu — select .................................................................................. 286 7.10. Funkcje ............................................................................................................... 287 7.10.1. Używanie parametrów .......................................................................... 288 7.10.2. Zwracanie wyniku funkcji .................................................................... 289 7.10.3. Kontekst ................................................................................................ 289 7.10.4. Zmienne lokalne ................................................................................... 289 7.10.5. Rekurencja ............................................................................................ 290 7.10.6. Współdzielenie funkcji ......................................................................... 291 7.11. Sterowanie zadaniami ......................................................................................... 291 7.11.1. Polecenie jobs ....................................................................................... 292 7.11.2. Wskazywanie zadania .......................................................................... 292 7.11.3. Polecenie bg ......................................................................................... 293 7.11.4. Polecenie fg .......................................................................................... 293 7.11.5. Polecenie kill ........................................................................................ 293 7.12. Udoskonalenia .................................................................................................... 294 7.12.1. Przekierowanie ..................................................................................... 294 7.12.2. Potoki .................................................................................................... 295 7.12.3. Zastępowanie poleceniem .................................................................... 295 7.12.4. Zmienne ................................................................................................ 296 7.12.5. Polecenia wbudowane .......................................................................... 301 7.13. Przykładowy projekt — śmieci .......................................................................... 306 7.14. Opcje startowe powłoki ...................................................................................... 308 Rozdział 8. Powłoka C ................................................................................... 311 8.1. Wprowadzenie .................................................................................................... 312 8.2. Rozpoczynanie sesji ............................................................................................ 312 8.3. Zmienne .............................................................................................................. 314 8.3.1. Tworzenie prostych zmiennych i przypisywanie im wartości ............. 314 8.3.2. Odwołania do prostych zmiennych ...................................................... 315 8.3.3. Tworzenie zmiennych tablicowych i przypisywanie im wartości ........ 315 8.3.4. Dostęp do wartości zmiennej tablicowej .............................................. 316
  • 9. 12 Linux dla programistów i użytkowników 8.3.5. Budowanie tablic .................................................................................. 317 8.3.6. Predefiniowane zmienne lokalne .......................................................... 317 8.3.7. Tworzenie zmiennych środowiska i przypisywanie im wartości ......... 317 8.3.8. Predefiniowane zmienne środowiska ................................................... 319 8.4. Wyrażenia ........................................................................................................... 319 8.4.1. Wyrażenia łańcuchowe ......................................................................... 319 8.4.2. Wyrażenia arytmetyczne ...................................................................... 320 8.4.3. Wyrażenia stosowane w pracy z plikami ............................................. 321 8.5. Uzupełnianie nazw plików ................................................................................. 322 8.6. Edycja poleceń .................................................................................................... 323 8.7. Aliasy .................................................................................................................. 323 8.7.1. Usuwanie aliasów ................................................................................. 324 8.7.2. Przydatne aliasy .................................................................................... 324 8.7.3. Współdzielenie aliasów ........................................................................ 324 8.7.4. Aliasy z parametrami ............................................................................ 325 8.8. Historia ............................................................................................................... 325 8.8.1. Numerowane polecenia ........................................................................ 326 8.8.2. Przechowywanie poleceń ..................................................................... 326 8.8.3. Odczytywanie historii ........................................................................... 326 8.8.4. Ponowne wykonywanie poleceń .......................................................... 327 8.8.5. Dostęp do fragmentów historii ............................................................. 327 8.8.6. Dostęp do fragmentów nazw plików .................................................... 328 8.8.7. Zastępowanie historii ........................................................................... 329 8.9. Struktury sterujące .............................................................................................. 329 8.9.1. Pętla foreach .. end ............................................................................... 330 8.9.2. Polecenie goto ...................................................................................... 330 8.9.3. Instrukcje warunkowe if .. then .. else ..endif ....................................... 331 8.9.4. Polecenie onintr .................................................................................... 332 8.9.5. Polecenie repeat .................................................................................... 333 8.9.6. Instrukcja switch .. case .. endsw ......................................................... 333 8.9.7. Polecenie while .. end ........................................................................... 335 8.10. Przykładowy projekt — smieci .......................................................................... 335 8.11. Rozszerzenia ....................................................................................................... 337 8.11.1. Metaznaki {} ........................................................................................ 338 8.11.2. Rozwijanie nazw plików ...................................................................... 338 8.11.3. Przekierowanie ..................................................................................... 339 8.11.4. Potoki .................................................................................................... 339 8.11.5. Sterowanie zadaniami ........................................................................... 340 8.11.6. Kończenie działania powłoki logowania .............................................. 342 8.12. Polecenia wbudowane ........................................................................................ 342 8.12.1. Polecenie chdir ..................................................................................... 343 8.12.2. Polecenie glob ...................................................................................... 343 8.12.3. Polecenie source ................................................................................... 343 8.13. Stos katalogów .................................................................................................... 344 8.13.1. Tablica asocjacyjna .............................................................................. 345 8.14. Opcje startowe powłoki ...................................................................................... 346 Rozdział 9. Sieci i internet ............................................................................. 349 9.1. Wprowadzenie .................................................................................................... 350 9.2. Budowa sieci ....................................................................................................... 351 9.2.1. Ethernet ................................................................................................ 351 9.2.2. Mosty .................................................................................................... 352 9.2.3. Routery ................................................................................................. 352 9.2.4. Bramy ................................................................................................... 353
  • 10. Spis treści 13 9.3. Praca w sieci złożonej ......................................................................................... 353 9.3.1. Transmisja pakietowa ........................................................................... 354 9.3.2. Adresy IP .............................................................................................. 354 9.3.3. Nazwy ................................................................................................... 356 9.3.4. Trasowanie ........................................................................................... 356 9.3.5. Bezpieczeństwo .................................................................................... 356 9.3.6. Porty i popularne usługi ....................................................................... 358 9.3.7. Programowanie sieci ............................................................................ 359 9.4. Identyfikowanie użytkowników sieci ................................................................. 359 9.4.1. Wyświetlanie użytkowników — users ................................................. 359 9.4.2. Więcej informacji o użytkownikach — who i w .................................. 359 9.4.3. Nazwa Twojego hosta — hostname ..................................................... 360 9.4.4. Dane osobiste — finger ........................................................................ 360 9.5. Komunikowanie się z użytkownikami sieci ....................................................... 361 9.5.1. Ochrona przed komunikacją — mesg .................................................. 362 9.5.2. Wysyłanie pojedynczych wierszy — write .......................................... 362 9.5.3. Interaktywne rozmowy — talk ............................................................. 363 9.5.4. Wiadomości do wszystkich — wall ..................................................... 363 9.6. Przesyłanie danych ............................................................................................. 364 9.6.1. Kopiowanie plików pomiędzy dwoma hostami pracującymi pod kontrolą systemu Linux lub UNIX — rcp i scp ............................ 365 9.6.2. Kopiowanie plików pomiędzy hostami niepracującymi pod kontrolą systemu Linux lub UNIX — ftp i sftp ............................ 365 9.7. Przetwarzanie rozproszone ................................................................................. 368 9.7.1. Zdalne demony logowania — rlogin i slogin ....................................... 368 9.7.2. Zdalne wykonywanie poleceń — rsh i ssh ........................................... 368 9.7.3. Połączenia zdalne — telnet .................................................................. 370 9.8. Ewolucja internetu .............................................................................................. 372 9.8.1. Początki — lata sześćdziesiąte ............................................................. 373 9.8.2. Standaryzacja internetu — lata siedemdziesiąte .................................. 374 9.8.3. Rekonstrukcja i zmiana nazwy internetu — lata osiemdziesiąte ......... 376 9.8.4. Pajęczyna — lata dziewięćdziesiąte ..................................................... 379 9.9. Korzystanie ze współczesnego internetu ............................................................ 384 9.9.1. URL ...................................................................................................... 385 9.9.2. Przeszukiwanie sieci WWW ................................................................ 386 9.9.3. Wyszukiwanie użytkowników i domen ............................................... 386 Rozdział 10. Środowisko graficzne w Linuksie ................................................... 389 10.1. Wprowadzenie .................................................................................................... 390 10.1.1. Graficzny interfejs użytkownika (GUI) ............................................... 390 10.1.2. MIT ....................................................................................................... 391 10.2. Serwery X ........................................................................................................... 391 10.2.1. Geometria ekranu ................................................................................. 392 10.2.2. Bezpieczeństwo i uwierzytelnianie ...................................................... 393 10.3. Środowiska graficzne .......................................................................................... 394 10.3.1. CDE ...................................................................................................... 394 10.3.2. GNOME ............................................................................................... 395 10.3.3. KDE ...................................................................................................... 395 10.4. Menedżer okien .................................................................................................. 396 10.4.1. Aktywność okna ................................................................................... 396 10.4.2. Uruchamianie programów .................................................................... 396 10.4.3. Okna otwarte i zamknięte ..................................................................... 397 10.4.4. Wybór ................................................................................................... 398
  • 11. 14 Linux dla programistów i użytkowników 10.5. Formanty ............................................................................................................. 400 10.5.1. Menu ..................................................................................................... 400 10.5.2. Przyciski ............................................................................................... 400 10.5.3. Pola wyboru i przyciski opcji ............................................................... 401 10.5.4. Paski przewijania .................................................................................. 402 10.6.Operacje w środowisku graficznym ................................................................... 402 10.6.1. Przywoływanie głównego menu .......................................................... 402 10.6.2. Otwieranie i zamykanie okna ............................................................... 403 10.6.3. Minimalizowanie okna ......................................................................... 403 10.6.4. Maksymalizowanie okna ...................................................................... 404 10.6.5. Przesuwanie okna ................................................................................. 404 10.6.6. Zmiana rozmiaru okna .......................................................................... 404 10.6.7. Przenoszenie okna na spód lub na wierzch .......................................... 404 10.6.8. Przywoływanie menu okna .................................................................. 404 10.7. Aplikacje klienckie ............................................................................................. 404 10.7.1. Polecenie xclock ................................................................................... 405 10.7.2. Polecenie xterm .................................................................................... 406 10.8.Standardowe argumenty klientów X .................................................................. 406 10.8.1. Geometria ............................................................................................. 406 10.8.2. Tło i pierwszy plan ............................................................................... 406 10.8.3. Opcja title ............................................................................................. 407 10.8.4. Opcja iconic .......................................................................................... 407 10.9. Tematy zaawansowane ....................................................................................... 407 10.9.1. Kopiuj i wklej ....................................................................................... 407 10.9.2. Korzystanie z sieci ................................................................................ 408 10.9.3. Zasoby aplikacji ................................................................................... 409 Rozdział 11. Programowanie w C ..................................................................... 413 11.1. Język C ................................................................................................................ 414 11.2. Kompilatory języka C ......................................................................................... 414 11.3.Program złożony z jednego modułu ................................................................... 415 11.3.1. Kompilowanie programu C .................................................................. 416 11.3.2. Kod źródłowy poprawnej wersji programu wspak ............................... 417 11.3.3. Uruchamianie programu napisanego w C ............................................ 417 11.3.4. Nadawanie własnej nazwy plikowi wykonywalnemu .......................... 418 11.4. Programy wielomodułowe .................................................................................. 418 11.4.1. Funkcje wielokrotnego użytku ............................................................. 419 11.4.2. Przygotowywanie funkcji wielokrotnego użytku ................................. 419 11.4.3. Oddzielne kompilowanie i konsolidacja modułów .............................. 420 11.4.4. Powtórne użycie funkcji wspak ............................................................ 421 11.5. Archiwizacja modułów — ar .............................................................................. 422 11.5.1. Tworzenie lub dodawanie pliku ........................................................... 423 11.5.2. Dołączanie pliku ................................................................................... 423 11.5.3. Spis zawartości archiwum .................................................................... 423 11.5.4. Usuwanie pliku ..................................................................................... 423 11.5.5. Wydobywanie pliku z archiwum .......................................................... 423 11.5.6. Zarządzanie archiwum z wiersza poleceń ............................................ 424 11.5.7. Indeksowanie archiwów ....................................................................... 424 11.5.8. Biblioteki współdzielone ...................................................................... 425 11.6.Zarządzanie zależnościami — make ................................................................... 425 11.6.1. Pliki powiązań ...................................................................................... 426 11.6.2. Porządek reguł ...................................................................................... 427 11.6.3. Uruchamianie make .............................................................................. 428 11.6.4. Reguły powiązań .................................................................................. 429
  • 12. Spis treści 15 11.6.5. Wymuszanie kompilacji ....................................................................... 429 11.6.6. Makra .................................................................................................... 430 11.6.7. Obsługa archiwum za pomocą make .................................................... 431 11.6.8. Inne możliwości make .......................................................................... 432 11.7. Program profilujący GNU — gprof .................................................................... 432 11.8.Szukanie błędów w programie — gdb ................................................................ 433 11.8.1. Przygotowywanie programu do debugowania ..................................... 434 11.8.2. Uruchamianie debuggera ...................................................................... 435 11.8.3. Uruchamianie programu ....................................................................... 435 11.8.4. Wyświetlanie kodu źródłowego ........................................................... 436 11.8.5. Ustawianie punktów wstrzymania ........................................................ 437 11.8.6. Wykonywanie krokowe ........................................................................ 439 11.8.7. Sprawdzanie wartości zmiennych ........................................................ 439 11.8.8. Olśnienie ............................................................................................... 441 11.9. Gdy już skończyłeś — strip ................................................................................ 442 Rozdział 12. Programowanie systemu ............................................................... 445 12.1. Wprowadzenie .................................................................................................... 446 12.2. Obsługa błędów — perror() ................................................................................ 448 12.3. Zarządzanie zwykłymi plikami ........................................................................... 450 12.3.1. Elementarz zarządzania plikami ........................................................... 450 12.3.2. Pierwszy przykład — wspak ................................................................ 452 12.3.3. Jak działa nasz program? ...................................................................... 453 12.3.4. Listing wspak.c ..................................................................................... 454 12.3.5. Otwieranie pliku — open() ................................................................... 459 12.3.6. Odczyt pliku — read() .......................................................................... 461 12.3.7. Zapis do pliku — write() ...................................................................... 462 12.3.8. Zmiana pozycji w pliku — lseek() ....................................................... 462 12.3.9. Zamykanie pliku — close() .................................................................. 464 12.3.10. Usuwanie pliku — unlink() .................................................................. 464 12.3.11. Drugi przykład — monitor ................................................................... 465 12.3.12. Jak działa program monitor? ................................................................ 466 12.3.13. Listing monitor.c .................................................................................. 467 12.3.14. Uzyskiwanie informacji o pliku — stat() ............................................. 473 12.3.15. Odczytywanie informacji o katalogu — opendir(), readdir() i closedir() 475 12.3.16. Inne wywołania systemowe związane z zarządzaniem plikami ........... 475 12.3.17. Zmiana właściciela i (lub) grupy pliku — chown() ............................. 475 12.3.18. Zmiana praw dostępu do pliku — chmod() .......................................... 477 12.3.19. Powielanie deskryptora pliku — dup() ................................................ 477 12.3.20. Operacje na deskryptorze pliku — fcntl() ............................................ 478 12.3.21. Sterowanie urządzeniami — ioctl() ...................................................... 480 12.3.22. Tworzenie dowiązań twardych — link() .............................................. 480 12.3.23. Tworzenie plików specjalnych — mknod(), mkdir() i mkfifo() .......... 481 12.3.24. Opróżnianie bufora systemu plików — sync() ........................................ 482 12.3.25. Zmiana rozmiaru pliku — truncate() .................................................... 482 12.4. Zarządzanie procesami ....................................................................................... 483 12.4.1. Tworzenie nowego procesu — fork() .................................................. 484 12.4.2. Procesy osierocone ............................................................................... 486 12.4.3. Kończenie procesu — exit() ................................................................. 487 12.4.4. Procesy zombie ..................................................................................... 487 12.4.5. Oczekiwanie na proces potomny — wait() .......................................... 488 12.4.6. Różnicowanie procesu — exec() .......................................................... 489 12.4.7. Zmiana katalogu — chdir() .................................................................. 490 12.4.8. Zmiana priorytetu — nice() .................................................................. 491
  • 13. 16 Linux dla programistów i użytkowników 12.4.9. Dostęp do identyfikatorów grupy i użytkownika ................................. 492 12.4.10. Przykładowy program — przetwarzanie w tle ..................................... 493 12.4.11. Przekierowanie ..................................................................................... 494 12.5. Sygnały ............................................................................................................... 495 12.5.1. Typy sygnałów ..................................................................................... 496 12.5.2. Sygnały zdefiniowane .......................................................................... 496 12.5.3. Sygnały POSIX .................................................................................... 496 12.5.4. Sygnały terminala ................................................................................. 496 12.5.5. Ustawianie budzika w celu wysłania sygnału — alarm() .................... 497 12.5.6. Obsługa sygnałów — signal() .............................................................. 498 12.5.7. Ochrona istotnego kodu i łączenie programów obsługi przerwań ....... 500 12.5.8. Wysyłanie sygnałów — kill() ............................................................... 500 12.5.9. Zakończenie procesu potomnego ......................................................... 501 12.5.10. Zawieszanie i wznawianie procesu ...................................................... 502 12.5.11. Grupy procesów i terminale sterujące .................................................. 504 12.6. Komunikacja międzyprocesowa ......................................................................... 507 12.6.1. Potoki .................................................................................................... 508 12.6.2. Gniazda ................................................................................................. 514 Rozdział 13. Wewnątrz Linuksa ........................................................................ 537 13.1. Podstawowe informacje o jądrze ........................................................................ 538 13.1.1. Podsystemy jądra .................................................................................. 539 13.1.2. Procesy i pliki ....................................................................................... 539 13.1.3. Komunikacja z jądrem .......................................................................... 539 13.1.4. Wywołania systemowe ......................................................................... 540 13.1.5. Tryb jądra i tryb użytkownika .............................................................. 541 13.1.6. Przetwarzanie synchroniczne kontra asynchroniczne .......................... 543 13.1.7. Przerywanie przerwań .......................................................................... 544 13.2. System plików .................................................................................................... 544 13.2.1. Budowa dysku ...................................................................................... 545 13.2.2. Wirtualny system plików ...................................................................... 549 13.2.3. Struktura i-węzłów ............................................................................... 549 13.2.4. Układ systemu plików .......................................................................... 551 13.2.5. Uszkodzone bloki ................................................................................. 553 13.2.6. Katalogi ................................................................................................ 553 13.2.7. Tłumaczenie ścieżek dostępu na numery i-węzłów ............................. 553 13.2.8. Montowanie systemów plików ............................................................. 555 13.3. Zarządzanie procesami ....................................................................................... 556 13.3.1. Pliki wykonywalne ............................................................................... 556 13.3.2. Pierwsze procesy .................................................................................. 557 13.3.3. Procesy jądra i procesy użytkownika ................................................... 557 13.3.4. Hierarchia procesów ............................................................................. 557 13.3.5. Stany procesu ....................................................................................... 558 13.3.6. Reprezentacja procesu .......................................................................... 558 13.3.7. Lista zadań ............................................................................................ 560 13.3.8. Planista ................................................................................................. 560 13.4. Zarządzanie pamięcią wirtualną ......................................................................... 561 13.4.1. Tablica stron ......................................................................................... 562 13.4.2. Stronicowanie ....................................................................................... 563 13.4.3. Pliki odwzorowywane w pamięci ......................................................... 563 13.4.4. Wymiana .............................................................................................. 563 13.4.5. Alokacja i dealokacja ........................................................................... 564 13.4.6. Ładowanie pliku wykonywalnego — execl() i execv() ....................... 565 13.4.7. Powielanie procesu — fork() ............................................................... 565
  • 14. Spis treści 17 13.5. Wejście i wyjście ................................................................................................ 566 13.5.1. Obiekty wejścia-wyjścia ....................................................................... 566 13.5.2. Wywołania systemowe wejścia-wyjścia .............................................. 567 13.5.3. Buforowanie wejścia-wyjścia ............................................................... 567 13.5.4. Funkcje wejścia-wyjścia dla zwykłego pliku ....................................... 568 13.5.5. Funkcje wejścia-wyjścia do katalogu ................................................... 571 13.5.6. Montowanie systemów plików ............................................................. 571 13.5.7. Tłumaczenie ścieżek dostępu ............................................................... 572 13.5.8. Funkcje wejścia-wyjścia dla plików specjalnych ................................. 573 13.6. Komunikacja międzyprocesowa ......................................................................... 576 13.6.1. Sygnały ................................................................................................. 576 13.6.2. Potoki .................................................................................................... 579 13.6.3. Gniazda ................................................................................................. 580 Rozdział 14. Administrowanie systemem .......................................................... 583 14.1. Wprowadzenie .................................................................................................... 584 14.2. Jak zostać superużytkownikiem? ........................................................................ 584 14.2.1. Korzystanie z su ................................................................................... 585 14.2.2. Korzystanie z sudo ............................................................................... 585 14.3. Uruchamianie systemu ........................................................................................ 586 14.3.1. Jądro systemu ....................................................................................... 586 14.3.2. Poziomy działania ................................................................................ 587 14.3.3. Proces init ............................................................................................. 587 14.3.4. Skrypty startowe ................................................................................... 588 14.4. Wyłączanie systemu ........................................................................................... 588 14.5. Konserwacja systemu plików ............................................................................. 589 14.5.1. Integralność systemu plików ................................................................ 589 14.5.2. Przestrzeń dyskowa .............................................................................. 589 14.5.3. Tworzenie nowego systemu plików ..................................................... 592 14.5.4. Tworzenie kopii zapasowej systemu plików ........................................ 592 14.6.Zarządzanie kontami użytkowników .................................................................. 593 14.6.1. Plik haseł .............................................................................................. 593 14.6.2. Plik grup ............................................................................................... 594 14.7.Instalowanie nowego oprogramowania .............................................................. 595 14.8. Urządzenia peryferyjne ....................................................................................... 596 14.9. Interfejs sieciowy ................................................................................................ 597 14.10. Automatyzacja zadań .......................................................................................... 598 14.11. Dostrajanie parametrów pracy jądra ................................................................... 599 14.11.1. System plików /proc ............................................................................. 599 14.11.2. Narzędzie sysctl .................................................................................... 600 14.12. Bezpieczeństwo .................................................................................................. 600 Dodatek A ................................................................................... 605 Bibliografia .................................................................................. 617 Skorowidz .................................................................................... 619
  • 15. Rozdział 2. Cel W przeszłości, gdy ktoś zostawał nowym użytkownikiem UNIX-a, system przeważ- nie udostępniany był w miejscu pracy użytkownika lub w szkole. Linux jest syste- mem popularnym zarówno na uniwersytetach, jak i w środowiskach biznesowych, ale stanowi on także świetny system operacyjny dla użytku osobistego. Z tego powodu możesz rozważyć zainstalowanie Linuksa. Ten rozdział uczyni to mniej stresującym. Wymagania wstępne Ten rozdział będzie na pewno przydatny początkującym, którzy nie mieli jeszcze stycz- ności z Linuksem. Ogólna znajomość zagadnień związanych z komputerami oraz lektu- ra rozdziału 1., „Czym jest Linux?”, będzie na pewno bardzo pomocna. Zakres W tym rozdziale omówię kwestie związane z wyborem właściwej dystrybucji Linuksa, metody jej zdobycia i sposób instalacji systemu. Ponieważ każda instalacja jest inna, będziesz musiał sięgnąć do przewodnika instalacji lub innej dokumentacji dystrybucji, którą będziesz chciał zainstalować.
  • 16. 46 Linux dla programistów i użytkowników Sposób prezentacji Rozpoczniemy od przejrzenia sprzętu wymaganego do uruchomienia Linuksa oraz po- pularnych dystrybucji Linuksa, z których prawdopodobnie będziesz wybierał. Gdy już za- decydujesz, którą zainstalować, omówimy kwestie związane z zainstalowaniem Linuksa. 2.1. Wstęp Być może sięgnąłeś po tę książkę, aby dowiedzieć się, jak korzystać z Linuksa w miej- scu, gdzie jest już zainstalowany. W takim przypadku z lektury tego rozdziału dowiesz się po prostu, w jaki sposób przebiegała instalacja. Możesz jednak zacząć korzystać z Linuksa, nie przeprowadzając własnej instalacji. Równie prawdopodobne jest to, że potrzebujesz lub chcesz uruchomić Linuksa na własnym komputerze (np. w domu). W takim przypadku musisz zdobyć dystrybucję i ją zainstalować, zanim przystąpisz do „prawdziwej” pracy. Ilość możliwych alternatyw, jakie są dostępne, może być przytłaczająca. Ponieważ możesz wybrać dowolną dystrybucję, nie mogę przedstawić szczegółowego opisu in- stalacji dla każdej z nich. Gdybym wybrał jedną dystrybucję i na jej podstawie pisał tę książkę, byłaby on znacznie mniej przydatna dla osób, które wybrały inną dystrybucję (a na pewno byłaby to większość czytelników). Aby jak najwięcej osób odniosło ko- rzyść z przeczytania tego rozdziału, nie ograniczymy się do omówienia jednej dystry- bucji, ale omówimy liczne kwestie i decyzje, jakie należy uwzględnić podczas instalacji dowolnej dystrybucji Linuksa. Powinieneś zapoznać się z dokumentacją instalacji dołą- czoną do wybranej dystrybucji. 2.2. Upewnij się, że masz odpowiedni sprzęt Linux działa na wielu platformach sprzętowych, ale mimo to warto jest poświęcić parę minut, aby mieć pewność, że komputer, na którym ma zostać zainstalowany, będzie odpowiedni. 2.2.1. Jednostka centralna (procesor) Liczba komputerów z procesorami firmy Intel (lub ich klonami), na których zainsta- lowany jest Linux, prawdopodobnie przewyższa liczbę instalacji na pozostałych typach sprzętu (przede wszystkim dlatego, że stanowią one większość obecnie używanych
  • 17. Rozdział 2. ¨ Instalowanie Linuksa 47 systemów). Jednak poza typowymi procesorami dla PC, produkowanymi przez firmy takie jak Intel, AMD i Cyrix, istnieją inne rodziny procesorów, na których Linux może pracować1: t 68000 (Motorola), t Alpha (DEC, stanowiący teraz część HP), t Itanium (HP i Intel), t MIPS (SGI), t PA-RISC (HP), t PowerPC (IBM i Freescale Semiconductor, niegdyś część Motoroli), t RS6000 (IBM), t SPARC (Sun Microsystems), t Vax (DEC, stanowiący teraz część HP). Procesor Intel Pentium I jest najstarszym procesorem Intela, jakiego mógłbyś użyć. Niektóre dystrybucje są kompilowane specjalnie dla Pentium, więc nie będą one działać na starszych procesorach, ale nawet jeżeli na systemie 80486 uda się uruchomić Linuk- sa, wydajność pozostawi wiele do życzenia. Odkryłem, że Pentium II (z odpowiednią ilością pamięci) wystarczy do większości zastosowań. 2.2.2. Architektura magistrali Większość współczesnych komputerów klasy PC posiada dwa typy architektury ma- gistrali: PCI (ang. Peripheral Component Interconnect) i ISA (ang. Industry Standard Architecture). Magistrala PCI ma szerokość 32 bitów i jest szybsza od starszych ar- chitektur magistral (a jej rozszerzona wersja — PCI-X — jest jeszcze szybsza). Magi- strala ISA jest jedną z tych starszych architektur. Jej szerokość to 16 bitów i jest wolniej- sza od magistrali PCI, ale jest jeszcze dostępna w wielu komputerach w celu zapewnienia zgodności ze starszym sprzętem. Po raz pierwszy została zastosowana przez IBM w 1980 roku i miała szerokość 8 bitów, a później 16. Rozszerzona magistrala ISA (EISA) ma szerokość 32 bitów i także jest obsługiwana przez jądro Linuksa. Czasem Linux wymaga zastosowania dodatkowych sterowników dla nietypowych urzą- dzeń przyłączonych do magistrali ISA, ale z większością urządzeń PCI działa poprawnie. 2.2.3. Pamięć Jak każdy rozbudowany system operacyjny, także Linux wymaga znacznej ilości pa- mięci do wydajnej pracy. Tabela 2.1 przedstawia zalecaną ilość pamięci dla różnego typu instalacji. 1 Oprócz wymienionych obecnie coraz większą popularnością cieszą się procesory ARM używane przede wszystkim w urządzeniach mobilnych — przyp. tłum.
  • 18. 48 Linux dla programistów i użytkowników Tabela 2.1. Zalecana ilość pamięci operacyjnej Minimalna ilość pamięci dla systemu 64 MB bez graficznego interfejsu użytkownika Minimalna ilość pamięci dla typowej graficznej stacji roboczej 128 MB Zalecana ilość pamięci dla typowej stacji roboczej 256 MB (lub więcej) Linux będzie działał na systemach z mniejszą ilością pamięci, ale jego wydajność będzie pozostawiała wiele do życzenia. Oczywiście im więcej pamięci jest zainstalowane w sys- temie, tym lepiej. 2.2.4. Dysk W zasadzie każdy system operacyjny zajmuje więcej przestrzeni na dysku wraz z każdą nową edycją i Linux nie stanowi tu wyjątku. Pełna instalacja Linuksa, w zależności od wybranej dystrybucji, wymaga około 3 gigabajtów2 (GB) przestrzeni na dysku. Na szczęście można ograniczyć ilość potrzebnego miejsca i nie stracić przy tym na uży- teczności systemu. Tabela 2.2 przedstawia oszacowaną przestrzeń wymaganą dla naj- częstszych sposobów użytkowania Linuksa. Większość komputerów opartych na procesorach Intel wyposażona jest w dyski twarde wykorzystujące interfejs IDE (ang. Integrated Device Electronics), z którymi Linux dobrze współpracuje. Niektóre wyższej klasy komputery PC mogą korzystać z dys- ków SCSI (ang. Small Computer Systems Interface) i mimo że Linux jest dostarczany ze sterownikami dla SCSI, jądro uruchamiające system nie zawsze je odnajduje przy ustawieniach domyślnych. Być może zajdzie konieczność sięgnięcia do przewodnika instalacji3, aby dowiedzieć się, jak załadować sterowniki SCSI, gdy Linux nie widzi dysków podczas ładowania systemu. Tabela 2.2. Zalecana ilość miejsca na dysku twardym Mały system, bez większości dodatkowego oprogramowania Od 500 MB do 1 GB Typowa instalacja Linuksa zawierająca popularne aplikacje 1 – 2 GB Stacja robocza lub serwer z dołączoną dużą ilością dodatkowego 2 – 4 GB oprogramowania Pełna instalacja zawierająca wszystkie pakiety z nośników instalacyjnych 4 – 12 GB (w zależności od wybranej dystrybucji) 2.2.5. Monitor, klawiatura i myszka Większość monitorów, klawiatur i myszek, które są podłączone do komputera, będzie współpracować z Linuksem. Podobnie jak przy innym sprzęcie, starsze modele mogą nie być obsługiwane. Czasami także najnowsze urządzenia nie są rozpoznawane, po- nieważ nikt nie zdążył jeszcze napisać do nich sterowników. 2 1 GB = 1024 megabajty (MB). 3 Podobna sytuacja pojawia się często w przypadku użycia dysków SATA — przyp. tłum.
  • 19. Rozdział 2. ¨ Instalowanie Linuksa 49 Wiele dystrybucji domyślnie ustawia rozdzielczość obrazu na 640×480 pikseli, aby zapewnić kompatybilność z jak największą liczbą kart graficznych i monitorów. Po zainstalowaniu Linuksa można zmienić konfigurację obrazu i ustawić wyższą rozdziel- czość, w granicach obsługiwanych przez kartę graficzną i monitor. Linux obsługuje większość klawiatur oraz myszy podłączonych zarówno do portu PS/2, jak i portu szeregowego, bez potrzeby określania konkretnego sterownika, ale być może będziesz musiał wybrać typ urządzenia z listy. 2.3. Wybór dystrybucji Jeżeli Linux ma jakąś wadę, to jest nią na pewno duża ilość dystrybucji, spośród któ- rych można wybierać! Wiele dużych i małych firm, a nawet pojedyncze osoby tworzą własne dystrybucje, które mają zaspokajać określone potrzeby. Jest to zaletą otwarte- go oprogramowania, ale może być też wadą, jeżeli chcesz wybrać tylko jedną z nich, aby zainstalować ją na własnym komputerze. Dystrybucje Linuksa są dostępne na wszystkich typach nośników, pod wszystkie platformy systemowe i dla różnorodnych potrzeb użytkowników. Niektóre dystrybucje (np. Knoppix, Linspire, MEPIS i SuSE) mają wersje Live, które uruchamiane są bezpośrednio z płyty CD-ROM, bez potrzeby przeprowadzania instalacji. FeatherLinux może być uruchamiany z pendrive’a podłą- czanego poprzez złącze USB. Yellow Dog Linux działa na komputerze Power Mac firmy Apple. Dobra wiadomość jest taka, że tylko kilka dystrybucji jest szeroko rozpowszechnio- nych. Istnieje znacznie więcej dystrybucji, niż moglibyśmy tu omówić. Ograniczymy się zatem tylko do najbardziej popularnych i najtańszych. Sporo informacji na ich temat (oraz wiele innych) można znaleźć w następujących witrynach: http://www.linux.org, http://www.distrowatch.com. Kod Linuksa i narzędzi GNU jest kodem otwartym, więc jest dostępny za darmo. Jed- nak w zależności od dystrybucji, którą wybierzesz, nośnika i wsparcia technicznego, być może będziesz musiał wydać jakąś sumę pieniędzy. Większość omawianych tu dystrybucji może zostać pobrana z internetu, ale wszystkie są również dostępne za niewielką opłatą w wersji na płytach CD. 2.3.1. Debian Debian GNU/Linux jest prawdziwie niekomercyjną dystrybucją Linuksa, która jest za- rządzana i rozwijana przez ochotników rozsianych po całym świecie, a nie przez jakie- kolwiek przedsiębiorstwo. Debian jest dostępny dla większej liczby platform systemo- wych niż większość pozostałych dystrybucji.
  • 20. 50 Linux dla programistów i użytkowników Debian ma opinię trudnego w instalacji, jednak jest to sukcesywnie zmieniane dzięki utworzeniu nowego programu instalacyjnego. Podczas instalacji Linuksa można wybrać wiele opcji, a obecnie używany system instalacji Debiana wymaga od użytkownika ich zrozumienia. Instalacja jest przeprowadzana w trybie tekstowym (bez interfejsu graficz- nego), co może sprawiać trudność początkującym użytkownikom. System X Win- dow może zostać skonfigurowany dopiero po zakończeniu instalacji, więc początkowo Debian nie jest wyposażony w graficzny interfejs użytkownika. Zainstalowany Debian zbiera jednak wysokie noty za jego zaawansowany mechanizm zarządzania pakietami (ang. Advanced Packaging Tool), który służy do instalacji pakietów z programami (stosowany zamiast bardziej popularnego Red Hat Package Manager). Debian jest niezawodną dystrybucją i jest bardzo popularny wśród zaawansowanych użytkowników. Więcej informacji na jego temat uzyskasz w witrynach: http://www.debian,org/, http://www.aboutdebian.com/. 2.3.2. Fedora Założony w 1994 roku Red Hat, Inc. był wczesnym i bez wątpienia odnoszącym naj- większe sukcesy komercyjnym producentem dystrybucji Linux. Z biegiem czasu Red Hat skupił się na klientach biznesowych, którzy oczekiwali większego wsparcia dla sys- temu używanego w celach komercyjnych. Po wdrożeniu programu szkoleniowego Red Hat Certified Engineer przedsiębiorcy uzyskali pewność, że informacje, uaktualnienia i wsparcie techniczne będą dostępne jeszcze przez długi czas. Sukces oddalił Red Hata od mniejszych klientów i pojedynczych użytkowników Linuksa. Aby nie zaniedbać tej wielkiej i lojalnej grupy użytkowników, Red Hat powołał Projekt Fedora4, który w odróżnieniu od komercyjnej wersji systemu jest zarządzany przez wspólnotę użytkowników. Jego celem jest szybkie rozwijanie dystrybucji, tak więc jest ona pełna nowych rozwiązań, co odbija się nieco na stabilności. Dystrybucja dostarcza- na przez Projekt Fedora znana jest jako Fedora Core Linux i jest popularna dzięki ła- twości instalacji oraz użytkowania. Pomimo że Red Hat sponsoruje Projekt Fedora, nie udziela on wsparcia technicznego użytkownikom dystrybucji Fedora Core, w prze- ciwieństwie do własnych, komercyjnych dystrybucji. Jak większość twórców dystrybucji, Red Hat dodał kilka rozszerzeń do podstawowe- go systemu GNU/Linux. Fedora Core dostarczana jest z graficznym narzędziem do par- tycjonowania dysków, a także z własnym programem zarządzania pakietami (ang. Red Hat Package Manager — RPM), który jest używany także w wielu innych dystrybucjach. 4 W 2002 roku powstała polska dystrybucja oparta na Fedora Core — Aurox. Więcej informacji na jej temat uzyskasz w witrynie http://www.aurox.org — przyp. tłum.
  • 21. Rozdział 2. ¨ Instalowanie Linuksa 51 Fedora Core jest wyposażona w bardzo przyjazne narzędzie instalacyjne i najlepiej ze wszystkich dystrybucji wykrywa podczas instalacji urządzenia zainstalowane w sys- temie. Pomaga też dokonać wyboru spośród dodatkowych pakietów dostępnych do zainstalowania. Oficjalnie Fedora Core jest oznaczana jako wersja eksperymentalna i nie jest przezna- czona dla zastosowań wymagających niezawodności, ale dla większości zastosowań dystrybucja ta jest zupełnie wystarczająca. W środowisku biznesowym lub w innych istotnych zastosowaniach raczej wykorzystywane są komercyjne wydania Red Hata. Aby uzyskać więcej informacji na temat Fedora Core i Red Hata, odwiedź następują- ce witryny: http://fedora.redhat.com/, http://www.fedoranews.org/, http://www.redhat.com/. 2.3.3. Mandriva Mandriva Linux wywodzi się z dystrybucji Mandrake, która z kolei bazowała na Red Hacie. W 2005 roku firma Mandrake połączyła się z firmą Conectiva i zmieniona zo- stała nazwa zarówno firmy, jak i dystrybucji na Mandriva. Z dystrybucją dostarczane jest bardzo wygodne graficzne centrum sterowania (Centrum Sterowania Mandriva Linux). Mandriva korzysta z pakietów RPM, a oprócz tego posiada narzędzie działające w trybie tekstowym urpmi, które pozwala na przeprowadzanie aktualizacji pakietów (i całego systemu) na zasadzie podobnej do aplikacji apt-get, znanej z Debiana. Dystrybucja ta jest publicznie dostępna, jednak użytkownicy opłacający abonament Mandriva Club mają specjalne przywileje, w tym np. głosowanie, które programy mają zostać włą- czone do następnej dystrybucji. Więcej informacji na temat tej dystrybucji znajdziesz w witrynie: http://www.mandriva.pl. 2.3.4. Slackware Slackware Linux był pierwszą dystrybucją Linuksa utworzoną przez Patricka J. Volker- dinga (zresztą dalej aktywnie uczestniczącego w jej rozwoju) podczas studiów na uni- wersytecie stanowym Moorhead w Minnesocie. Podobnie jak Debian, Slackware jest niekomercyjną dystrybucją i stara się pozostać bardziej tradycyjną i zbliżoną do „czystej” dystrybucji Linuksa. Instalacja przeprowadzana jest w trybie tekstowym, a nie graficznym, co może prze- rażać początkujących użytkowników. Aby zainstalować system, należy załadować jądro, a następnie uruchomić narzędzie do partycjonowania dysku (fdisk lub cfdisk), po czym uruchomić program konfiguracyjny. Podobnie jak w Debianie, system X Window może zostać skonfigurowany dopiero po instalacji, więc początkowo Slackware nie jest wy- posażony w graficzny interfejs użytkownika.
  • 22. 52 Linux dla programistów i użytkowników Braki w różnego rodzaju dodatkach Slackware nadrabia stabilnością. Doświadczeni użytkownicy (wśród których Slackware jest najpopularniejszy) doceniają, że nie jest on zabałaganiony niepotrzebnym kodem dodatkowych aplikacji. Spośród wszystkich dystrybucji Slackware najbardziej wyróżnia się tym, że podczas ładowania używa on skryptów przypominających skrypty BSD, a nie bardziej popu- larnej struktury z System V. Zawiera on także własne narzędzie do obsługi pakietów (pkgtool) zamiast RPM, ale pkgtool obsługuje także pliki w formacie RPM. Więcej informacji na temat Slackware znajdziesz w witrynie: http://www.slackware.com. 2.3.5. SuSE SuSE Linux powstał w Niemczech i był bardzo popularny w Europie. Jest on pochodną Slackware’a, ale posiada też cechy typowe dla komercyjnych dystrybucji. SuSE należy teraz do Novella i pomału staje się ulubioną dystrybucją w Stanach Zjednoczonych. SuSE posiada własne graficzne narzędzie służące do instalacji i konfiguracji, zwane YaST (jest to skrót od angielskiego Yet another Setup Tool — kolejne narzędzie instalacyj- ne). YaST wykonuje całą instalację (czasem, co jest przykre, w trybie tekstowym), włączając w to dzielenie dysku na partycje, a także jest głównym narzędziem służącym do konfiguracji działającego systemu. To rozwiązanie jest bardzo wygodne i zapew- nia miejsce w systemie, w którym można wykonać każde zadanie związane z konfi- guracją i aktualizacją systemu. SuSE dostarcza także narzędzie do konfiguracji systemu X Window o nazwie SaX2. Podobnie jak wiele innych dystrybucji, SuSE korzysta z pa- kietów RPM. Więcej informacji na temat SuSE znajdziesz w witrynie: http://www.suse.com. 2.3.6. TurboLinux Podczas gdy amerykańskim czytelnikom TurboLinux może nie przypaść do gustu, spodo- ba się on użytkownikom z innych części świata. TurboLinux jest wiodącą dystrybucją Linuksa w Azji i jest tam bardzo popularna, ponieważ świetnie obsługuje wielobajtowe języki (a więc dobrze działa w wersji chińskiej, japońskiej i koreańskiej). TurboLinux zawiera łatwy w użyciu program instalacyjny. Jest on własnością firmy Livedoor, firmy informatycznej z siedzibą w Tokio, która nabyła go w roku 1994. Więcej informacji na temat dystrybucji TurboLinux znajdziesz w witrynie: http://www.turbolinux.com.
  • 23. Rozdział 2. ¨ Instalowanie Linuksa 53 2.4. Rozważ opcjonalne pakiety oprogramowania Gdy wybierzesz już dystrybucję, którą chcesz zainstalować, będziesz chciał zdecy- dować, jak dużo zainstalować. Nie musisz podejmować decyzji dotyczącej każdego pojedynczego pakietu zarówno przed, jak i w trakcie instalacji. Możesz je zainstalować później. Jest jednak parę rzeczy, o których musisz pomyśleć przed instalacją, aby prze- biegła ona gładko. Powinieneś zastanowić się, czy potrzebujesz graficznej stacji roboczej, czy wystarczy Ci tylko praca w trybie tekstowym, czy komputer będzie podłączony do sieci oraz co będziesz robił przy użyciu nowego systemu. Oczywiście, jeżeli masz wystarczającą ilość miejsca na dysku, możesz zainstalować wszystkie składniki dystrybucji. 2.4.1. System X Window System X Window jest graficznym interfejsem użytkownika przeznaczonym dla sys- temów Linux (omawiam go szczegółowo w rozdziale 10., „Środowisko graficzne w Linuksie”). Jeżeli nie planujesz wykorzystania Linuksa jedynie jako serwera lub tylko po to, by korzystać z funkcji wprowadzanych z wiersza poleceń, prawdopodob- nie chcesz zainstalować system X Window. Do połowy 2004 roku XFree86 był wersją sytemu X Window o otwartym kodzie źró- dłowym, dołączaną do większości dystrybucji Linuksa. Z powodu zmian w licencjo- nowaniu, do czego fani wolnego oprogramowania nie są przyzwyczajeni, wiele dystry- bucji wybrało implementację dostarczaną przez X.org Foundation. W zależności od dystrybucji, a nawet wersji tej samej dystrybucji, dostarczony zostanie pakiet z jedną z tych wersji X. Prawdopodobnie będzie dostępna jedna albo druga, ale na pewno nie obie, więc jeśli planujesz wykorzystywać komputer jako stację roboczą, zainstaluj wersję systemu X Window dołączoną do dystrybucji. Więcej informacji na temat systemu X Window znajdziesz w witrynach: http://www.x.org, http://www.xfree86.org. 2.4.2. Środowiska graficzne Jeżeli zamierzasz uruchamiać Linuksa jako roboczą stację graficzną, wtedy poza zain- stalowaniem systemu X Window będziesz potrzebował środowiska graficznego. System X Window zapewnia jedynie podstawowe funkcje obsługi okien oraz wyświetlanie na ekranie, natomiast środowisko graficzne dostarcza interfejsu, z którego korzysta użyt- kownik, czyli ikon, menu i pasków narzędzi tworzących na ekranie wirtualny pulpit.
  • 24. 54 Linux dla programistów i użytkowników Na głównych graczy wyrosły dwa środowiska wykorzystywane teraz także w systemach UNIX: GNOME (ang. GNU Object Model Enviroment) oraz KDE (ang. K Desktop Enviroment). Oba są dostarczane z większością dystrybucji Linuksa, ale każda okre- śla domyślne środowisko (np. Fedora wybiera GNOME, a Mandriva — KDE). Oby- dwa środowiska graficzne posiadają pasek menu zawierający liczne aplikacje, pasek stanu, w którym wyświetlane są aktualnie uruchomione procesy oraz inne informacje, a także właściwe dla siebie aplikacje (takie jak menedżery plików i okien). Jeżeli nigdy nie korzystałeś z GNOME i KDE, prawdopodobnie będziesz chciał zain- stalować oba (jeżeli masz wystarczającą ilość miejsca), aby je wypróbować. Toczy się nieustająca debata o wyższości jednego środowiska nad drugim, a każde z nich ma swoich zagorzałych zwolenników. Na zewnątrz obydwa zachowują się jak typowe sys- temy graficzne. Różnice zauważalne są raczej w filozofii wybranej przez projektantów i dotyczą problemów, które chcieli rozwiązać. Mocno upraszczając, można powiedzieć, że GNOME jest prosty, ale elegancki, natomiast KDE jest złożony, ale elastyczny. Wybór jest tak naprawdę kwestią gustu. 2.4.2.1. GNOME GNOME wyrósł z kodu napisanego dla bibliotek obsługi obrazów GNU. Posiada pulpit użytkownika, jak również platformę rozwojową dla aplikacji graficznych, które mogą być tworzone w różnych językach. Projektanci działający przy projekcie GNOME włożyli wiele wysiłku w stworzenie wygodnego interfejsu i położyli duży nacisk na użyteczność. W tradycji UNIX-a oznacza to prostotę, zapewnienie podstawowych funkcji środowiska graficznego, bez nadmiernego obciążania użytkownika dużą liczbą opcji. GNOME jest oprogramowaniem otwartym. Rysunek 2.1 przedstawia przykładowy pulpit GNOME. 2.4.2.2. KDE Na KDE również składa się pulpit oraz platforma programistyczna. Dostarcza on więcej aplikacji przeznaczonych dla środowiska KDE i próbuje zaspokoić więcej potrzeb różnych użytkowników. Podczas gdy daje to użytkownikom — w szczególności po- czątkującym — więcej opcji i możliwości, sprawia też, że pulpit wydaje się bardziej zabałaganiony. Niektórym nie podoba się, że korzenie KDE sięgają licencjonowanego oprogramowania, ale włożono wiele wysiłku, aby usunąć te fragmenty, i obecnie KDE jest w całości oprogramowaniem otwartym. Jeżeli chcesz zainstalować tylko jedno z środowisk, powinieneś odwiedzić witrynę oby- dwu projektów i dokładnie poczytać o ich możliwościach: http://www.kde.org, http://www.gnome.org. Mogę nawet pokusić się o stwierdzenie, że w obu witrynach „czuć atmosferę” panu- jącą w poszczególnych środowiskach, więc jeżeli któraś witryna wyda Ci się bardziej przyjazna i wygodna w użyciu, może to być pewnego rodzaju wskazówką (rysunek 4.2).
  • 25. Rozdział 2. ¨ Instalowanie Linuksa 55 Rysunek 2.1. Pulpit GNOME w dystrybucji Aurox 2.4.3. Obsługa sieci Jeżeli instalujesz Linuksa na komputerze podłączonym do sieci lokalnej, będziesz mu- siał dowiedzieć się kilku rzeczy, aby przeprowadzić instalację. Administrator sieci powinien udostępnić Ci wymagane informacje. W większości programów instalacyjnych należy w pewnym momencie wprowadzić te ustawienia. Jeżeli instalujesz Slackware w trakcie przeprowadzania instalacji, musisz uruchomić w tym celu narzędzie network. Możesz też określić wszystkie ustawienia związane z obsługą sieci po zakończeniu in- stalacji, ale upewnij się, że wybrałeś odpowiednio dużo pakietów, by usługi sieciowe i programy narzędziowe zostały zainstalowane, na wypadek gdybyś ich potrzebował. Pierwszą rzeczą, jakiej musisz się dowiedzieć o Twojej sieci, jest to, czy działa w niej serwer DHCP (ang. Dynamic Host Configuration Protocol). Jeżeli w sieci wykorzy- stywany jest protokół DHCP, komputer podczas ładowania systemu uzyskuje informa- cje dotyczące sieci, więc nie musisz samemu przeprowadzać konfiguracji (jednak mu- sisz poprosić administratora sieci, aby dodał do serwera DHCP informacje na temat nowego komputera). Komputer wykorzystujący DHCP podczas ładowania systemu
  • 26. 56 Linux dla programistów i użytkowników Rysunek 2.2. Pulpit KDE w dystrybucji Aurox rozgłasza komunikat, który można przetłumaczyć jako: „Kim jestem?”, i powinien uzy- skać w odpowiedzi swoją nazwę, adres sieciowy i pozostałe informacje potrzebne do działania w sieci. Jeżeli w sieci nie jest wykorzystywany DHCP, wtedy administrator musi przydzielić (lub pomóc Ci wybrać): t nazwę hosta dla Twojego komputera, t adres IP, t maskę sieciową, t domyślny adres bramy, t adres serwera nazw (DNS). Zagadnienia te są dokładniej omówione w rozdziale 9., „Sieci i internet”. Jeżeli komputer jest podłączony do sieci lokalnej, powinieneś zainstalować wszystkie pakiety zawierające usługi i narzędzia sieciowe. Jeżeli zamierzasz pozwolić innym komputerom uzyskać dostęp do systemu plików Twojego komputera, zainstaluj także NSF (ang. Network File System firmy Sun) oraz Sambę.
  • 27. Rozdział 2. ¨ Instalowanie Linuksa 57 Powinieneś też dowiedzieć się, czy w sieci wykorzystywany jest protokół IP (IPv4), czy IPv6. Niektóre dystrybucje są domyślnie ustawione, aby korzystały z protokołu IPv6 (najnowszej wersji protokołu sieciowego Internet Protocol), jednak w niektórych środo- wiskach może to powodować problemy z wydajnością. Jeżeli w sieci wciąż wykorzy- stywany jest IPv4 (a prawdopodobnie tak właśnie jest), powinieneś wyłączyć IPv6. 2.4.4. Narzędzia biurowe Z większością dystrybucji dostarczany jest bardzo dobry pakiet aplikacji biurowych (jeżeli nie, to możesz pobrać najnowszą wersję, dostępną pod podanym niżej adresem). Sun Microsystems sponsoruje i uczestniczy w projekcie OpenOffice.org, który dostar- cza zestaw narzędzi o możliwościach zbliżonych do pakietu Office firmy Microsoft. Bazujące na StarOffice firmy Sun (który nie może zostać wydany w wersji o otwartym kodzie źródłowym, ponieważ jego część objęta jest prawami autorskimi) narzędzia OpenOffice mogą importować i eksportować dane w formacie aplikacji Microsoftu, więc można bez przeszkód wymieniać informacje z użytkownikami tego oprogramowania. OpenOffice.org został pobrany już 16 milionów razy. W jego skład wchodzą: t Writer — edytor tekstu do tworzenia raportów, dokumentów, biuletynów i broszur. t Calc — arkusz kalkulacyjny. t Impress — program do tworzenia prezentacji z narzędziami umożliwiającymi rysowanie, animowanie oraz dodawanie efektów specjalnych. t Draw — narzędzie służące do rysowania, za pomocą którego utworzysz wszystko — od prostych diagramów po specjalistyczne obrazy trójwymiarowe. t Base — narzędzia baz danych, które obsługują bazy danych dBase, ODBC i JDBC. Jeżeli zamierzasz cokolwiek pisać lub tworzyć prezentacje w systemie Linux, instalacja tych narzędzi jest po prostu koniecznością. Jeżeli chcesz dowiedzieć się więcej na temat OpenOffice.org lub pobrać najnowszą wersję, odwiedź witrynę: http://www.openoffice.org. 2.4.5. Narzędzia programistyczne i języki programowania Linux dostarczany jest z kompilatorami języków GNU C i C++, Perl i Python. Java dostarczana jest z wieloma dystrybucjami, ale jeżeli nie ma jej w Twojej, możesz po- brać ją z witryny Sun Java: http://java.sun.com/linux/.
  • 28. 58 Linux dla programistów i użytkowników 2.5. Zaprojektuj swój system Teraz, gdy wybrałeś już dystrybucję i narzędzia, które chcesz mieć w systemie, powi- nieneś pomyśleć nad układem systemu (systemów) plików. Można po prostu zainsta- lować Linuksa z płyt CD, zaakceptować wszystkie domyślne ustawienia, wielkość i lo- kalizację komponentów, aby uzyskać działający system. Ale naprawdę warto poświęcić chwilę i zastanowić się, czego oczekujemy od systemu, a następnie przygotować od- powiedni plan. 2.5.1. W jaki sposób ma być uruchamiany Linux? W idealnej sytuacji posiadasz nieużywany komputer, na którym możesz zainstalować Linuksa i z niego korzystać. Dzięki temu nie ryzykujesz utraty żadnych danych, gdy- byś popełnił błąd przy instalacji. W komisach komputerowych można nabyć starsze komputery za ułamek ceny nowego zestawu. Jeżeli posiadasz lub możesz pozwolić sobie na kupno dodatkowego komputera, zalecałbym pracę na zupełnie osobnym kom- puterze. Jednak nie zawsze jest to możliwe. Jeżeli musisz wykorzystać komputer, na którym jest już zainstalowany system Microsoft Windows, masz kilka opcji. Istnieją wersje Live niektórych dystrybucji (np. Knoppix, Linspire, MEPIS i SuSE), które mogą być uruchamiane bezpośrednio z CD, bez konieczności przeprowadzania instalacji. Inna możliwość polega na uruchamianiu Linuksa w systemie Windows. Komercyjny program, VMware (www.vmware.com), potrafi emulować komputer PC, co pozwala na zainstalowanie i uruchamianie Linuksa w tym środowisku. Najprawdopodobniej zdecydujesz się jednak na zainstalowanie Linuksa równolegle z systemem Windows. Jeżeli instalujesz równolegle Linuksa i inny system operacyj- ny, tworzysz system z podwójnym rozruchem (dual-boot), co umożliwia ładowanie dwóch różnych systemów operacyjnych. Możesz także zainstalować kilka różnych dys- trybucji Linuksa (jeżeli dysponujesz wystarczającą ilością miejsca na dysku) i „utwo- rzyć” komputer wielosystemowy (multiboot). System z podwójnym rozruchem twórz jedynie wtedy, gdy masz możliwość ponow- nej instalacji starego systemu, jeśli zajdzie taka potrzeba, i nie zapomnij najpierw utworzyć kopii zapasowej wszystkich danych! Jeżeli popełnisz błąd podczas insta- lacji Linuksa, możesz usunąć wszystkie dane z dysków, włączając w to istniejący system operacyjny i przechowywane dane. Jeżeli nie masz możliwości ponownej in- stalacji i odzyskania dawnego systemu na czystym dysku, nie powinieneś próbować tworzyć systemu z podwójnym rozruchem!
  • 29. Rozdział 2. ¨ Instalowanie Linuksa 59 2.5.2. Partycjonowanie dysku Jeżeli zamierzasz zainstalować Linuksa na dysku twardym, będziesz musiał na nim utworzyć jedną lub więcej partycji. Partycja jest wydzielonym obszarem dysku. Dysk może zawierać tylko jedną partycję (obejmującą cały dysk) lub może być podzielony na mniejsze jednostki. Dzielenie dysku na partycje jest z pewnością najtrudniejszym krokiem instalacji. Jeżeli chcesz zachować istniejące już w systemie dane (jak na przykład zainstalowaną partycję Windows), jest to także krok najbardziej niebezpieczny. Podczas tworzenia partycji linuk- sowych musisz uważać, aby nie nadpisać żadnych danych, które chcesz zachować. Każdy dysk posiada tablicę partycji, w której przechowywane są informacje na temat każdej partycji. Większość tablic partycji może zawierać cztery wpisy. 2.5.2.1. Typy partycji Większość dysków zawiera dwa typy partycji: podstawowe i rozszerzone (logiczne). Partycja podstawowa posiada wpis w tablicy partycji i wskazuje na ustalony obszar dysku. Partycja rozszerzona również posiada wpis w tablicy partycji, ale może wska- zywać do jednej lub kilku partycji logicznych. Jest to przydatne, gdyż zapewnia obsługę większej liczby partycji niż 4 zapewnione przez tablicę partycji. Niezależnie od wybranego typu partycji Linux będzie działał tak samo. Niektóre na- rzędzia do partycjonowania dysków nawet nie pokazują rozróżnienia między partycjami podstawowymi a rozszerzonymi. Jeżeli zajdzie taka potrzeba, po prostu tworzą party- cje rozszerzone. 2.5.2.2. Partycjonowanie dla Linuksa System plików Linuksa posiada hierarchiczną strukturę katalogów rozpoczynającą się od katalogu głównego (/). Jest on również nazywany katalogiem systemowym. Najprost- szym sposobem podzielenia dysku na partycje dla Linuksa jest umieszczenie całego systemu plików na jednej partycji. Masz również możliwość utworzenia dodatkowych partycji dla różnych części systemu. Inną partycją niezbędną dla działania Linuksa jest partycja wymiany (swap). Jest ona wykorzystywana przez podsystem pamięci wirtualnej do przerzucania danych z i do pa- mięci podczas działania systemu. Nie jest to system plików, ale raczej surowy obszar dysku, w którym jądro może „skrobać”. Ta partycja przeważnie jest 1,5 do 2 razy większa niż rozmiar pamięci operacyjnej zainstalowanej w systemie. Jeśli na przykład w systemie zainstalowane jest 256 MB pamięci, partycja powinna zajmować przynajm- niej 256 MB, ale wydajność zwiększy się, jeżeli będzie ona miała rozmiar 384 MB lub większy. Jeżeli posiadasz w systemie dwa czyste dyski, na każdym z nich możesz utworzyć partycję wymiany o rozmiarze równym połowie wymaganego. To dzieli proces wymia- ny danych pomiędzy dwa urządzenia i trochę zwiększa wydajność. W takim przypadku
  • 30. 60 Linux dla programistów i użytkowników wielkość każdej partycji powinna być wystarczająco duża, by być przydatna dla sys- temu, więc nie twórz mniejszych niż 64 MB, nawet jeżeli razem będą tworzyć partycję większą, niż teoretycznie potrzebujesz. Jeżeli masz dwa dyski, ale wiesz, że jeden jest zdecydowanie szybszy, jeśli to możli- we, utwórz na nim partycję wymiany. Jeżeli tworzysz system podwójnego rozruchu lub wielosystemowy z większą ilością dystrybucji Linuksa, możesz utworzyć jedną partycję wymiany i skonfigurować wszyst- kie dystrybucje tak, aby korzystały z tej samej partycji. Na partycji wymiany nic nie jest na stałe zapisywane. Jest to po prostu obszar, z którego korzysta podsystem pamięci wirtualnej, gdy Linux jest uruchomiony. A ponieważ zawsze będzie uruchomiona tylko jedna dystrybucja, wszystkie mogą korzystać z tej samej partycji. 2.5.2.3. Partycjonowanie dla Linuksa i systemu Windows Jeżeli jesteś zmuszony do zainstalowania Linuksa w systemie, w którym zainstalowa- ny jest już Windows, wtedy partycje linuksowe możesz utworzyć jedynie w obszarach niewykorzystywanych przez Windows. Większość systemów Windows jest zainsta- lowana z użyciem całej dostępnej przestrzeni dyskowej, więc tu pojawia się pierwszy problem — jak zwolnić miejsce i udostępnić je Linuksowi? Jeżeli masz szczęście, może okazać się, że masz podłączony (lub możesz podłączyć) dodatkowy dysk. Jeżeli dysponujesz nieużywanym dyskiem, z którego nie korzysta Windows, tym samym masz miejsce na umieszczenie Linuksa i nie musisz nic zmie- niać na dysku zawierającym Windows (mimo to musisz uważać, aby podczas instalacji Linuksa przypadkiem nie wyczyścić dysku z zainstalowanym systemem Windows). Większość komputerów osobistych wyposażona jest tylko w jeden dysk twardy — w ta- kim przypadku musisz utworzyć partycję Linuksa na tym samym dysku. To, jak przeko- namy się później, wiąże się z koniecznością zmniejszenia istniejącej partycji Windows. 2.5.3. System plików Linuksa Partycja jest tylko obszarem na dysku, w którym mogą być przechowywane dane. Aby Linux mógł odczytywać i zapisywać pliki i katalogi, partycja musi zawierać sys- tem plików. System plików jest infrastrukturą danych, która wiąże w hierarchicznej strukturze nazwy plików i odpowiadające im bloki danych, co umożliwia łatwe użyt- kowanie komputera. Do zainstalowania Linuksa nie jest potrzebna jakaś zaawanso- wana wiedza na temat systemu plików i sposobów jego działania. Większość dystry- bucji zawiera kilka systemów plików, spośród których można wybierać. 2.5.3.1. Typy systemów plików Istnieje wiele różnych systemów plików, z których każdy ma swoje wady i zalety. Na przykład system plików z kroniką, który zapisuje informacje dotyczące operacji na plikach, zanim faktycznie je wykona, co znacząco zmniejsza prawdopodobieństwo utraty danych.
  • 31. Rozdział 2. ¨ Instalowanie Linuksa 61 Wszystkie dystrybucje Linuksa obsługują poniższe popularne systemy plików: t ext2 (drugi rozszerzony system plików), standardowy system plików Linuksa (w niektórych programach instalacyjnych jest określany jako natywny), t ext3 to wersja ext2 z dodaną kroniką. Jest szybszy i bardziej niezawodny. Wiele dystrybucji oferuje także jeden lub więcej alternatywnych systemów plików z kroniką: t IBM JFS — system plików z kroniką zaprojektowany przez IBM; t ReiserFS — bardzo wydajny system plików z kroniką zaprojektowany przez Hansa Reisera; t XFS — system plików z kroniką utworzony przez SGI. Możesz wybrać dowolny system plików dostępny podczas instalacji. Większość osób wybiera ext2 lub ext3, chyba że wolą bardziej specjalistyczny system plików lub go potrzebują. 2.5.3.2. Organizacja systemu plików Drzewo katalogów Linuksa, zaczynające się od katalogu głównego (/), składa się z jed- nego lub większej liczby systemów plików. Ważną kwestią, którą należy uwzględnić podczas instalacji, jest sposób, w jaki podzielić system plików Linuksa między dostępne partycje. Możesz umieścić wszystkie pliki w katalogu głównym (/), utworzyć drugą partycję jako partycję wymiany i system będzie działał. Jest to rozwiązanie wystarcza- jące dla większości stacji roboczych. W zależności od tego, w jaki sposób chcesz ko- rzystać z systemu, możesz chcieć umieścić niektóre katalogi na osobnych partycjach. Gdy umieszczasz katalog w przeznaczonej tylko dla niego partycji, jest on połączo- ny z katalogiem głównym w punkcie montowania — katalogu w głównym syste- mie plików. Pliki ładujące przechowywane są w katalogu /boot. Jest on czasem umieszczany na małej, osobnej partycji, aby mieć pewność, że będzie się znajdował na początku dysku. Jest to związane z tym, że dawniej urządzenia ładujące system mogły odczytać tylko ograniczony obszar dysku. Dziś nie ma to większego znaczenia. W systemie, z którego będzie korzystać większa liczba użytkowników (np. serwera), katalogi domowe są często tworzone w standardowej lokalizacji, jak na przykład /home. Jeżeli katalog /home stanowi część głównego systemu plików, użytkownicy mogą zapełnić dysk systemowy. Jeżeli utworzysz katalog /home jako osobny system plików i zamontujesz go w głównym systemie, użytkownicy nie odczują żadnej róż- nicy, ale będą mogli zapełnić jedynie przeznaczoną dla nich partycję, a nie główny sys- tem plików. Jeżeli użytkownicy zapełnią /home, główny system plików wciąż będzie miał miejsce, więc system będzie bez przeszkód kontynuował pracę. Użytkownicy nie będą mogli tworzyć nowych plików, ale stanowi to mniejszy problem niż sytuacja, w której to system nie ma możliwości tworzenia nowych plików.
  • 32. 62 Linux dla programistów i użytkowników Katalogi systemowe, które są używane do przechowywania znacznej ilości tymcza- sowych danych, także nadają się do zastosowania dla nich osobnego systemu plików. Katalog /var jest używany do przechowywania danych, takich jak pliki przesyłane do drukarki oraz otrzymywane i wysyłane wiadomości e-mail. Jeżeli /var stanowi osobną partycję, wtedy procesy te będą działały poprawnie, nawet jeżeli inne partycje będą zapełnione. Katalog /tmp jest kolejnym miejscem, w którym przechowywane są pliki tymczasowe. Może on zostać w ten sposób oddzielony od reszty systemu, na wypadek gdyby jakiś program zapędził się w liczbie tworzonych plików. Nawet katalogi systemowe, takie jak /usr i /opt, gdzie przechowywane są pliki syste- mowe i opcjonalne oprogramowanie, mogą być umieszczane na osobnych partycjach. Oczywiście rozmieszczenie systemu na osobnych partycjach wymaga więcej pracy, ale w zależności od wykorzystania systemu rezultat może być wart wysiłku. 2.5.3.3. Wielkość systemu plików Trudno powiedzieć, ile miejsca na dysku będziesz potrzebował dla różnych systemów plików. Zasadą jest, że partycja /boot (jeżeli ją tworzysz) powinna mieć wielkość przy- najmniej 10 MB5. Przechowywane są tam jedynie pliki potrzebne do rozruchu (jądro i inne pliki), więc nie wymaga ona zbyt wiele miejsca. Minimalna ilość przestrzeni dyskowej, na której w ogóle możesz instalować Linuksa, to około 500 MB, a najmniejszy główny system plików będzie miał właśnie zbliżony rozmiar. Im więcej zainstalujesz dodatkowego oprogramowania, tym większej ilości miejsca będziesz potrzebował (tabela 2.2 wcześniej w tym rozdziale). Nawet jeżeli dzielisz cały system plików pomiędzy różne partycje, nie powinieneś nigdy tworzyć głównego systemu plików mniejszego niż 500 MB. Wielkość pozo- stałych partycji, a w szczególności katalogu zawierającego katalogi domowe użytkow- ników uzależniona jest głównie od dostępnej ilości miejsca na dysku. 2.5.3.4. Udostępnianie systemów plików Jeżeli zamierzasz utworzyć system z podwójnym rozruchem (np. z systemem Windows lub inną dystrybucją Linuksa), musisz pamiętać o kilku kwestiach. Partycje Windows mogą być montowane i czytane w Linuksie. Niektóre systemy pli- ków mogą być montowane w trybie tylko do odczytu, natomiast niektóre w trybie od- czytu i zapisu. Zalecałbym montowanie wszystkich systemów plików Windows w trybie tylko do odczytu, aby uniknąć przypadkowej modyfikacji danych. Nie udostępniaj partycji /boot różnym dystrybucjom Linuksa. System ma pełną swobo- dę zapisu do tej partycji, włączając w to pliki, które mogą mieć te same nazwy w róż- nych dystrybucjach, tak więc jedna dystrybucja może nadpisać pliki (np. jądro) innej dystrybucji. 5 Ze względu na powszechne użycie ramdysku startowego, którego obraz jest przechowywany w /boot, obecnie lepiej za minimum przyjąć co najmniej 20 MB — przyp. tłum.
  • 33. Rozdział 2. ¨ Instalowanie Linuksa 63 2.5.4. Programy rozruchowe (ładujące) Słowo „rozruch” weszło w skład terminologii komputerowej na zasadzie analogii z roz- ruchem samochodu lub innej maszyny. Sprzęt „wie”, jak załadować mały program z określonej lokalizacji i jak go uruchomić. Z kolei ten program zna lokalizację wła- ściwego systemu operacyjnego i ładuje go. Gdy rozpoczyna się proces rozruchu, komputer ładuje zawartość głównego rekordu startowego (ang. Master Boot Record — MBR) znajdującego się w pierwszym sektorze pierwszego dysku6 i uruchamia ten program. W systemach pracujących pod Windows ładowany jest system Windows i komputer jest gotowy do użytku. W Linuksie jest podobnie. Program rozruchowy Linuksa ładuje jądro i oto startuje Linux. W większości dystrybucji można wybrać program ładujący: oryginalny LILO (ang. LInux LOader) lub nowszy — GRUB (ang. GNU Grand Unified Boot Loader). Obydwa wykonują w zasadzie tę samą pracę: tworzą kod rozruchowy pozwalający wybrać jeden lub więcej systemów, które mają zostać załadowane. Oba mogą zostać zainstalowane zarówno w MBR w pierwszym sektorze pierwszego dysku, jak i na dyskietce. Jeżeli umieścisz kod rozruchu w MBR, nadpiszesz całą jego zawartość (np. kod roz- ruchowy Windows). GRUB i LILO zachowują możliwość uruchomienia Windows z poziomu swojego menu, ale optowałbym za niezmienianiem zawartości MBR, jeżeli zamierzasz oprócz Linuksa uruchamiać też Windows. Jeżeli instalujesz program ładujący w MBR, wciąż musisz polegać na kodzie rozru- chowym Windows, który musi go znaleźć i przekazać mu kontrolę. Kod Windows jest znany z tego, że „nie lubi się” z innymi, i z tego powodu nie polecam takiego rozwiązania. Jeżeli planujesz utworzenie systemu z podwójnym rozruchem dla Windowsa i Linuksa, program rozruchowy możesz umieścić na dyskietce (przeważnie /dev/fd0). Dzięki temu nie będziesz musiał instalować programu ładującego na dysku twardym i pozostawisz bez zmian kod rozruchu Windows, znajdujący się w MBR. Gdy będziesz chciał uru- chomić Linuksa, włożysz do napędu dyskietkę zawierającą program ładujący, natomiast jeżeli w napędzie nie będzie dyskietki, zostanie uruchomiony system Windows. Jest to najbezpieczniejszy sposób konfiguracji systemu z podwójnym rozruchem. Upewnij się, że podczas instalacji określiłeś /dev/fd0 jako miejsce przechowywania programu roz- ruchowego. Jeżeli instalujesz pojedynczą dystrybucję, wtedy prawdopodobnie nie będziesz zmie- niał ustawień programu ładującego, pozostawisz te, które uruchamiają Linuksa. Jeśli chcesz utworzyć system wielosystemowy, będziesz musiał zmienić ustawienia progra- mu rozruchowego po instalacji każdego kolejnego systemu. 6 Nowoczesne BIOS-y potrafią startować z dysków innych niż pierwszy dysk twardy, lecz może to spowodować dokonanie zmian w konfiguracji standardowego procesu startowego Linuksa — przyp. tłum.
  • 34. 64 Linux dla programistów i użytkowników 2.5.5. Dyskietka startowa Podczas instalacji w większości dystrybucji można utworzyć dyskietkę startową (w za- instalowanym systemie możesz użyć polecenia mkbootdisk). Ta dyskietka może zostać użyta do uruchomienia Linuksa w przypadku załamania systemu lub wystąpienia in- nej awarii, która uszkodziła sektor rozruchowy twardego dysku. Powinieneś zawsze tworzyć dyskietkę startową. Możesz jej nigdy nie użyć i w związku z tym może się wydawać niepotrzebna, ale jej utworzenie zajmuje tylko kilka minut, a jej brak może się skończyć koniecznością ponownej instalacji systemu. Dyskietka startowa stanowi niejako polisę ubezpieczeniową. Aby jeszcze bardziej polecić tworzenie dyskietki startowej, teraz opowiem własną histo- rię. Podczas przygotowywania tej książki utworzyłem system o podwójnym rozruchu z Mandrake Linux i Windows XP. Wszystko świetnie działało. Do czasu. Któregoś dnia po włączeniu komputera pojawił się komunikat: „Lilo timestamp mismatch” (niezgod- ność znacznika czasu Lilo) i na tym koniec — żadnego menu, żadnego Windowsa ani Linuksa. Nie mogłem ponownie zainstalować LILO, ponieważ nie dało się uruchomić Linuksa. Ponieważ nie utworzyłem dyskietki startowej (był to w końcu system testowy), musiałem ponownie instalować7 zarówno Windowsa, jak i Linuksa. Nie pozwól, aby zda- rzyło się to w Twoim systemie! Możesz też używać dyskietki startowej zamiast dyskietki z zainstalowanym programem ładującym. W tym przypadku dyskietka zawiera nieco inne informacje, ale rezultat jest ten sam. Dyskietka startowa pozwala zmieniać parametry i lokalizację jądra w przy- padku, gdy z powodu awarii nie jest możliwe „normalne” uruchomienie systemu. Jednak domyślnie ładowane jest jądro znajdujące się na dysku twardym, czyli tak jak przy użyciu programu rozruchowego. 2.6. Zdobądź Linuksa Gdy już przygotowałeś sprzęt i wybrałeś dystrybucję, której chcesz używać, wszystko, co Ci pozostało, to jej zdobycie. Nośniki (lub ich obrazy) z Linuksem można pozy- skać na wiele sposobów. Jest to błogosławieństwem i przekleństwem. Błogosławień- stwem, ponieważ dla każdego komputera, niezależnie od ograniczeń, znajdzie się jakaś sensowna metoda zdobycia Linuksa. Przekleństwem, ponieważ istnieje tak wiele moż- liwości, że trudno zdecydować, która jest najlepsza. Linux jako taki jest dostępny za darmo, ponieważ jest rozpowszechniany na zasadach GNU Public License. To samo dotyczy narzędzi GNU dostarczanych z jądrem, które tworzą właściwą dystrybucję. Ponieważ GPL pozwala na rozpowszechnianie ich bez opłat, możesz pożyczyć od znajomego płyty CD, skopiować je lub za ich pomocą przeprowadzić instalację (w przypadku komercyjnego oprogramowania chronionego prawami autorskimi jest to przeważnie zabronione). 7 Należy pamiętać, że większość nośników instalacyjnych z Linuksem pozwala na uruchomienie w trybie odzyskiwania systemu, zanim przystąpi się do bardziej drastycznych kroków — przyp. tłum.
  • 35. Rozdział 2. ¨ Instalowanie Linuksa 65 Nawet jeżeli nie znasz nikogo, kto posiadałby już kopię, większość dystrybucji jest dostępna do pobrania za darmo lub jest rozpowszechniana na płytach CD za niewielką opłatą. Podczas gdy nie ma opłaty licencyjnej za oprogramowanie, firmy sprzedające dystrybucje Linuksa często dostarczają też nośniki, dokumentację i wsparcie technicz- ne, więc kupujesz coś więcej niż tylko darmowe oprogramowanie. 2.6.1. Dyski CD-ROM Najprostszą metodą na zainstalowanie Linuksa jest zdobycie go na jakimś stałym no- śniku, najczęściej na kilku dyskach CD-ROM. Można je łatwo kupić, przenosić i prze- chowywać. Jeżeli kiedyś będziesz musiał ponownie zainstalować Linuksa, po prostu włożysz CD i przystąpisz do pracy. Wadą dysków jest fakt, że przeważnie musisz je kupić. Ponieważ jednak Linux jest oprogramowaniem o otwartym kodzie źródłowym, cena CD zawiera przeważnie tylko koszty produkcji, a nie drogie opłaty licencyjne. Tabela 2.3. Ceny wybranych dystrybucji Linuksa Fedora Core 5 (1 płyta DVD) 32,94 zł Mandriva Linux PowerPack 2006 (2 płyty DVD, dokumentacja w wersji książkowej 199 zł i elektronicznej, 2 miesiące wsparcia technicznego) SuSE 10.0 (dodatkowo 300 stron dokumentacji i 90 dni wsparcia technicznego) 239 zł Aurox 11.0 (1 płyta DVD) 35 zł Debian 3.1 (14 płyt CD) 35 zł Slackware 10.2 (4 płyty CD) 20 zł Różnice w cenie najczęściej wynikają z ilości płyt, na których zamieszczona jest dys- trybucja, ilości dołączonych pakietów i załączonej dokumentacji (np. przewodnika in- stalacji). Linuksa można kupić w wielu miejscach. Jeżeli dobrze poszukasz w internecie, znaj- dziesz wiele sklepów, w których możesz kupić dystrybucję. Uważam, że poniższe są godne polecenia: http://asseq.pl, http://sklep.linux.pl. 2.6.2. Pobieranie Jeżeli instalujesz Linuksa w miejscu, gdzie są już komputery pracujące pod jego kon- trolą (np. w średnim lub dużym przedsiębiorstwie czy na uniwersytecie), prawdopo- dobnie w sieci lokalnej znajdują się obrazy płyt instalacyjnych. Możesz je skopiować z innego komputera za pomocą dowolnego z dużej liczby narzędzi sieciowych, jeżeli tylko w docelowym komputerze zainstalowana jest karta sieciowa. Porozmawiaj z ad- ministratorem systemu lub z kimś, kto ma wiedzę na ten temat, ponieważ szczegóły dotyczące kroków, które należy podjąć, różnią się w zależności od miejsca przechowy- wania danych i rodzaju używanego interfejsu sieciowego.
  • 36. 66 Linux dla programistów i użytkowników Jeżeli dysponujesz połączeniem z internetem, możesz pobrać obrazy instalacji z witryny www.linux.org lub dowolnej organizacji, która rozpowszechnia własną dystrybucję. Pobranie obrazu instalacji wiąże się ze skopiowaniem standardowego obrazu ISO dys- ków instalacyjnych i zapisaniem ich na CD lub dysku twardym. To jest rozwiązanie dla osób, które dysponują naprawdę szybkim łączem, a nawet wtedy pobieranie zaj- muje dużo czasu. W pewnym momencie czas, który należy przeznaczyć (nie wspomi- nając o cenie pustego dysku CD), przekracza stosunkowo niską cenę kopii dostępnej u sprzedawcy. Jeżeli nie znasz nikogo, kto miałby doświadczenie w tego typu działal- ności, polecałbym zakup dystrybucji. 2.7. Instalacja Linuksa Jak wspominałem na początku tego rozdziału, możesz wybrać dowolną dystrybucję i z tego powodu, nie mogę napisać dokładnego przewodnika instalacji przeznaczonego dla dystrybucji, na którą się zdecydowałeś. Mimo że programy instalacyjne poszcze- gólnych dystrybucji mogą się różnić, czynności, które wykonują, aby zainstalować Linuksa i narzędzia GNU, są w zasadzie takie same. 2.7.1. Zdobądź dokumentację swojej dystrybucji Pierwszą rzeczą, jaką powinieneś zrobić, jest zdobycie przewodnika instalacji przezna- czonego dla Twojej dystrybucji. Na większości dysków CD znajdują się pliki teksto- we lub HTML (przeznaczone do przeglądania w przeglądarce internetowej). Ich nazwy i lokalizacje mogą się różnić, ale szukaj katalogów zawierających pliki o nazwach po- dobnych do podanych poniżej8: t doc lub docu — katalog zawierający pliki dokumentacji; t README — dokument, który powinieneś przeczytać na samym początku; t HOWTO — często zawiera listę kroków, jakie musisz podjąć podczas instalacji; t release_notes — uwagi o wydaniu danej dystrybucji, czasem zawierają informacje dotyczące instalacji; t HTML lub htm — te pliki przeważnie są jakiegoś rodzaju dokumentacją; t FAQ (ang. Frequently Asked Questions) — często zadawane pytania; t install — uwagi na temat instalacji lub nazwa katalogu, który je zawiera. Dokumentacja Debiana znajduje się na przykład na dysku CD w katalogu install/doc, a Slackware dostarcza dobry podręcznik instalacji na pierwszym CD-ROM-ie zawiera- jącym kody źródłowe, jak również w pliku tekstowym Slackware-HOWTO na startowym 8 Dokumentacja zawarta na nośnikach instalacyjnych jest często dostępna w różnych językach. Pliki z dokumentacją przetłumaczoną na język polski z reguły mają dodane na końcu _pl lub -pl — przyp. tłum.
  • 37. Rozdział 2. ¨ Instalowanie Linuksa 67 dysku CD, natomiast podręcznik instalacji Mandrivy umieszczony jest w pliku installa- tion.htm. Możesz także znaleźć uwagi o instalacji w witrynach internetowych poszcze- gólnych sponsorów dystrybucji. 2.7.2. Uruchomienie Najprostszym sposobem, aby rozpocząć, jest załadowanie Linuksa z płyty CD. Jeżeli Twój komputer nie jest zbyt stary, powinien obsługiwać tę funkcję. Jeżeli nie obsługuje, powinieneś móc zmienić ustawienia rozruchu w programie konfiguracyjnym BIOS, tak aby jako pierwszy przeszukiwany był napęd dysków CD. Linux rozpoznaje więk- szość nowych napędów CD. Jeżeli nie możesz dokonać rozruchu z płyty CD, będziesz potrzebował dyskietki startowej. 2.7.3. Partycjonowanie dysków Jak widzieliśmy wcześniej, jest to krok niebezpieczny, mogący usunąć wszystkie dane znajdujące się na komputerze. Jeżeli jeszcze nie jesteś przekonany, wiedz, że nie mogę wystarczająco mocno podkreślić tego, jak bardzo istotne jest utworzenie kopii zapa- sowej przechowywanych danych, zanim przystąpisz do instalacji. To było ostatnie ostrzeżenie. Gdy korzystasz z programu tworzącego partycje, niezależnie od tego, czy posiada on interfejs graficzny, czy jest to fdisk lub cfdisk, będziesz korzystał z partycji za pomocą ich nazw urządzenia. Są to nazwy specjalnych plików znajdujących się w katalo- gu /dev, które określają każde urządzenie. Szczegółowe omówienie tych plików znaj- dziesz w rozdziale 13., „Wewnątrz Linuksa”. Nazwy, z którymi prawdopodobnie się spotkasz, to: t /dev/fd0 — pierwszy napęd dyskietek, t /dev/fd1 — drugi napęd dyskietek, t /dev/hda — pierwszy dysk twardy IDE, t /dev/hdb — drugi dysk IDE, t /dev/sda — pierwszy dysk SCSI, t /dev/sdb — drugi dysk SCSI. Zauważ, że podczas gdy w większości systemów znajdziesz /dev/fd0 (napęd dyskie- tek), to z pozostałych nazw możesz zobaczyć tylko kilka lub żadnej, ponieważ zależy to od dysków zainstalowanych w systemie. Zwróć też uwagę, że łącze z pliku /dev/fd0 do właściwego napędu dyskietek jest tworzone podczas instalacji. Jeżeli przeprowa- dzasz instalację na laptopie wyposażonym w wymienny napęd dyskietek i nie jest on podłączony podczas instalacji, łącze nie zostanie poprawnie utworzone. Jeżeli podłą- czysz napęd dyskietek później i Linux nie będzie mógł uzyskać dostępu do niego przez /dev/fd0, wypróbuj inne nazwy urządzeń związane z IDE (np. u mnie zadziałało
  • 38. 68 Linux dla programistów i użytkowników /dev/hdc). Jeżeli napęd CD-ROM jest urządzeniem IDE, dostęp do niego również powi- nien odbywać się przez któreś z urządzeń „hd”. Jedno z narzędzi służących do prze- glądania lub zarządzania sprzętem (np. Hardware Browser (hwbrowser) w Fedora lub Harddrake w Mandriva) może pomóc w zidentyfikowaniu dysków. Każda z partycji dysku twardego również będzie miała swoją nazwę urządzenia. Na przykład pierwsza partycja dysku /dev/hda będzie nazywać się /dev/hda1, druga par- tycja — /dev/hda2 itd. Podczas tworzenia partycji i przypisywania im poszczególnych składników systemu plików Linuksa pamiętaj, aby zanotować sobie, która partycja zawiera który składnik. Jeżeli tworzysz większą liczbę partycji, możesz łatwo się pogubić, a jeżeli nie zrobiłeś notatek, później sobie nie przypomnisz! Pamiętaj też, że niektóre narzędzia do partycjonowania dysku nie pokazują różnicy między partycją główną a partycjami rozszerzonymi, po prostu następuje przeskok z /dev/hda2 do /dev/hda5 (ponieważ /dev/hda4 została utworzona jako partycja roz- szerzona). Narzędzie Disk Drake w Mandrivie, jeżeli zajdzie taka potrzeba, tworzy rozszerzone partycje, nie wymagając wprowadzania żadnych ustawień, natomiast Disk Druid dostarczany z Fedorą pozwala „wymusić”, aby partycja była partycją główną, ale jeżeli tego nie określisz, sam dokona wyboru. Wszystkie dystrybucje zawierają narzędzia fdisk i cfdisk służące do tworzenia par- tycji. Większość twórców dystrybucji utworzyła własne narzędzia i nie korzysta już z tych programów. Niektóre, bardziej tradycyjne systemy (np. Debian i Slackware) wciąż polegają na cfdisk (chociaż aktualnie rozwijane jest nowe narzędzie instalacyjne dla Debiana). Narzędzie fdisk jest obsługiwane z wiersza poleceń, natomiast cfdisk jest narzędziem pełnoekranowym, w którym dostępne są informacje pomocy. Niezależnie od tego, którego narzędzia użyjesz, ogólny schemat postępowania polega na zdefiniowaniu partycji i ustaleniu miejsca jej montowania (lub ustawienia jej jako partycji wymiany), a następnie zapisaniu tablicy partycji na dysku. Dopóki tablica par- tycji nie będzie zapisana, żadne zmiany na dysku nie zostaną dokonane. Gdy już uaktu- alnisz tablicę partycji, dane znajdujące się na partycjach, które nie są dłużej zdefiniowa- ne, są już stracone (fizycznie znajdują się one jeszcze na dysku, ale nie ma sposobu9, aby uzyskać do nich dostęp), ponieważ ustalona jest już nowa tablica partycji. Częścią partycjonowania jest także formatowanie. Nie jest to konieczne, gdy partycja nie była zmieniana i została sformatowana wcześniej. Jednak gdy pozwolisz systemowi na ponowne sformatowanie wszystkiego, będziesz miał pewność wyniku. Jeżeli nie masz pewności, czy dysk jest w dobrym stanie, zalecałbym też przeprowadzenie podczas formatowania wyszukiwania uszkodzonych bloków (zajmie to więcej czasu, ale zaosz- czędzi wielu kłopotów, jeżeli okaże się później, że niektóre bloki są uszkodzone). 9 Istnieją narzędzia „zgadujące” poprzednią tablicę partycji, należy jednak unikać sytuacji, gdy są potrzebne — przyp. tłum.
  • 39. Rozdział 2. ¨ Instalowanie Linuksa 69 2.7.4. Zmiana rozmiaru partycji Windows Jeżeli zamierzasz utworzyć system z podwójnym rozruchem dla Linuksa i Windowsa, być może będziesz musiał zmniejszyć partycję Windows, aby uzyskać wystarczającą ilość miejsca na instalację Linuksa. Pierwsze, co musisz zrobić, to załadować Windowsa i uruchomić program SCANDISK lub CHKDSK, aby upewnić się, że system plików Windows nie zawiera błędów. Następnie powinieneś uruchomić DEFRAG, aby prze- prowadzić defragmentację dysku i przenieść dane na jego początek. W raporcie pro- gramu DEFRAG zobacz, które bloki są wykorzystywane przez Windows jako ostatnie. Określi to, jak bardzo możesz zmniejszyć partycję Windows, ale powinieneś zostawić dodatkowe 20 – 25% wolnego miejsca na nowe pliki Windowsa. Gdy już określisz nowy rozmiar partycji Windows, musisz ją zmniejszyć, aby utwo- rzyć partycje Linuksa w zwolnionym miejscu. Stary program, FIPS, może zmniejszyć system plików FAT i FAT32, które są najczęściej wykorzystywane w systemach Win- dows 95, 98 i ME. Jeżeli Windows korzysta z któregoś z tych systemów, możesz zna- leźć program FIPS w swojej dystrybucji Linuksa (np. Mandriva i TurboLinux dostar- czają go w katalogu dosutils, a Debian w katalogu tools). Windows XP nie posiada narzędzia, za pomocą którego można zmniejszyć wykorzy- stywany przez niego system plików NTFS (dostarczone narzędzia pozwalają jedynie na powiększenie systemu plików). Jedynym rozwiązaniem jest zakupienie jednej z komer- cyjnych aplikacji służących do partycjonowania dysków. Jedną z nich jest, cieszący się dobrą opinią, PartitionMagic firmy Symantec. Niektóre dystrybucje Linuksa (np. Mandriva i SuSE) zawierają bardzo dobre narzę- dzia do dzielenia dysku na partycje, które potrafią także zmniejszać partycje NTFS. Niezależnie od sposobu, w jaki będziesz zmniejszał istniejącą partycję Windows, BĄDŹ BARDZO OSTROŻNY i wykonuj tylko te kroki, które całkowicie rozumiesz. Jeżeli nie jesteś czegoś pewien, zapytaj kogoś z większym doświadczeniem. Nadpisanie partycji jest nieodwołalne. 2.7.5. Konfigurowanie systemu Po utworzeniu partycji rozpocznie się instalacja. Jest to część mająca najwięcej wspól- nych cech we wszystkich dystrybucjach. Przy niewspomaganej instalacji, jak w Slackware po uruchomieniu cfdisk, należy uruchomić narzędzie setup. W części procesu instalacji związanej z konfiguracją systemu wybierasz ustawienia dotyczące: t języka, t klawiatury, myszki i monitora, t czasu i strefy czasowej, t poziomu bezpieczeństwa, t drukarki,
  • 40. 70 Linux dla programistów i użytkowników t sieci, t dodatkowych pakietów/komponentów, t hasła użytkownika root, t ustawień nowego konta użytkownika lub użytkowników. Linux wykorzystuje Uniwersalny Czas Koordynowany (ang. Coordinated Universal Time — UTC), który (dla naszych potrzeb) jest równoważny z Czasem Uniwersalnym (ang. Greenwitch Mean Time — GMT). Gdy w jakimś programie wyświetlany jest czas, wykorzystuje on odwołanie do informacji dotyczącej strefy czasowej i wyświetla czas uwzględniający ewentualną poprawkę. Dzięki temu użytkownikom pracującym w różnych strefach czasowych wyświetlany jest właściwy czas lokalny, jednak we- wnętrzna reprezentacja jest wciąż w UTC/GMT. Może to stanowić problem, gdy tworzysz podwójny rozruch z Windowsem, ponieważ Windows korzysta wewnętrznie z czasu lokalnego. Podczas konfiguracji zostaniesz za- pytany, czy korzystać10 z czasu lokalnego, czy UTC, więc możesz wybrać czas lokalny. Niektóre dystrybucje pozwalają też wybrać poziom bezpieczeństwa, automatycznie za- instalują i skonfigurują funkcje systemu związane z bezpieczeństwem, jak np. firewall. 2.7.6. Program rozruchowy Podczas instalacji możesz wybrać, czy ma być zainstalowany program rozruchowy. Standardowym programem jest LILO, ale niektóre dystrybucje instalują domyślnie GRUB (np. Fedora i SuSE). Program startowy LILO zawiera narzędzie lilo, uruchamiane z linii poleceń, które za- pisuje kod rozruchowy do urządzenia rozruchowego określonego w pliku /etc/lilo.conf. Ten plik zawiera wszystkie informacje na temat różnych systemów operacyjnych oraz parametry rozruchu. Po wprowadzaniu zmian do pliku konfiguracyjnego uruchom lilo, aby zainstalować nowy program startowy. GRUB dostarcza więcej możliwości, ale to wiąże się z ustawieniem większej liczby opcji oraz bardziej złożonym interfejsem. GRUB zawiera powłokę poleceń, wywoły- waną poleceniem grub, która umożliwia zmianę informacji o rozruchu i wprowadzenie ich do programu startowego. Windows umieszcza kod rozruchowy uruchamiający Windows w MBR. Podczas in- stalacji Linuksa możesz nadpisać ten kod kodem LILO lub GRUB, aby uruchamiać Linuksa. Programy te przeważnie zachowują informacje rozruchowe Windowsa i two- rzą program rozruchowy wyświetlający go jako jeden z systemów, które można uru- chomić. Jednak bezpieczniej jest zapisywać program rozruchowy do MBR tylko wtedy, 10 Chodzi o format czasu ustawiony w zegarze czasu rzeczywistego komputera. Wewnętrznie Linux nadal będzie korzystać z UTC po naniesieniu odpowiedniej korekty na czas odczytany z zegara czasu rzeczywistego — przyp. tłum.
  • 41. Rozdział 2. ¨ Instalowanie Linuksa 71 gdy nie planujesz już uruchamiać systemu Windows (czyli jeżeli instalujesz Linuksa w miejsce Windows), ponieważ po nadpisaniu MBR oryginalny kod rozruchowy Win- dows przepadnie. Możesz go przywrócić przy użyciu Konsoli Odzyskiwania systemu Windows w Windows XP (lub fdisk, we wcześniejszych wersjach), ale jeżeli będziesz miał kłopoty z ponownym uruchomieniem Windowsa, nie pomoże Ci to. Mimo że pro- gramy rozruchowe mogą zostać zainstalowane w taki sposób, aby można było urucha- miać system Windows, zalecałbym umieszczenie programu startowego na dyskietce i pozostawienie bez zmian jego kodu rozruchowego. Jeżeli zdecydujesz się nadpisać MBR, upewnij się, że Windows pojawia się na liście systemów, które można urucho- mić, zanim zainstalujesz program rozruchowy na dysku. Podsumowanie Lista kontrolna W tym rozdziale omówiłem: t sprzęt potrzebny do uruchomienia Linuksa, t dostępne dystrybucje Linuksa, t pakiety Linuksa, t partycjonowanie dysku i organizację systemu plików Linuksa, t programy i dyskietki rozruchowe, t sposoby zdobycia własnej dystrybucji Linuksa. Quiz 1. Jaka jest minimalna ilość pamięci i miejsca na dysku wymagana do komfortowej pracy Linuksa? 2. Ile partycji podstawowych może zostać utworzonych na dysku? 3. Jaka jest minimalna liczba partycji konieczna do uruchomienia Linuksa? 4. Czym jest system z podwójnym rozruchem? 5. Jaka jest różnica między systemami plików ext2 i ext3? 6. Opisz funkcje programu rozruchowego.
  • 42. 72 Linux dla programistów i użytkowników Ćwiczenia 1. Wyszukaj trzy dystrybucje Linuksa, nieomówione w tym rozdziale, i zastanów się, dlaczego ktoś mógłby je wybrać zamiast bardziej popularnych dystrybucji [poziom trudności: średnie]. Projekty 1. Zdobądź dystrybucję Linuksa i ją zainstaluj (chyba się tego spodziewałeś) [poziom trudności: łatwe].