Linux Konfiguracja Administracja i Zastosowania

background image

Linux – konfiguracja, administracja i zastosowania

Piotr Zawadzki

25 lutego 2003 roku

background image

Spis treści

1

Wprowadzenie

6

1.1

Podstawowe własności systemu

. . . . . . . . . . . . . . . . . . . . . . . . .

6

1.2

Rys historyczny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.3

Źródła informacji o systemie . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.4

Źródła oprogramowania

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.5

Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.5.1

Podstawowe wiadomości o dyskach twardych . . . . . . . . . . . . . .

8

1.5.2

Start systemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.5.3

Modułowa budowa jądra . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.5.4

Podstawowe wiadomości o sieciach TCP/IP

. . . . . . . . . . . . . .

12

2

Instalacja

15

2.1

Przygotowanie do instalacji

. . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.2

Mandrake 8.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

2.2.1

Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

2.2.2

Dostrajanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

2.2.3

Błędy i niedoróbki

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

2.3

Mandrake 8.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

2.3.1

Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

2.3.2

Dostrajanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

2.3.3

Błędy i niedoróbki

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

2.4

RedHat 7.1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

2.4.1

Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

2.4.2

Dostrajanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

2.4.3

Błędy i niedoróbki

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

2.5

SuSE 7.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

2.5.1

Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

2.5.2

Dostrajanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31

2.5.3

Błędy i niedoróbki

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

2.6

Wydruki z własnych programów . . . . . . . . . . . . . . . . . . . . . . . . .

34

2

Piotr Zawadzki

background image

SPIS TREŚCI

3

3

Elementy systemu

35

3.1

Użytkownicy sytemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

3.2

Pliki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

3.2.1

Atrybuty plików . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

3.2.2

Dowiązania symboliczne . . . . . . . . . . . . . . . . . . . . . . . . .

36

3.2.3

Kontrola montowania systemów plików . . . . . . . . . . . . . . . . .

37

3.3

Kontrola urządzeń zewnętrznych . . . . . . . . . . . . . . . . . . . . . . . . .

37

3.3.1

Moduły jądra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

3.3.2

Pliki urządzeń . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

3.4

Procesy

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

3.5

Interfejs użytkownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

3.5.1

Logowanie do systemu . . . . . . . . . . . . . . . . . . . . . . . . . .

40

4

Start systemu

41

4.1

Ładowanie jądra sytemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

4.2

Proces init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

4.2.1

Inicjalizacja systemu . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

4.2.2

Zdarzenia wyjątkowe . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

4.2.3

Logowanie do systemu . . . . . . . . . . . . . . . . . . . . . . . . . .

45

4.3

Skrypty startowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

4.3.1

Podstawowa inicjalizacja systemu . . . . . . . . . . . . . . . . . . . .

45

4.3.2

Inicjalizacja zależna od poziomu uruchomienia . . . . . . . . . . . . .

49

5

Usługi sieciowe

50

5.1

Interfejsy sieciowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

5.2

Konfiguracja usług sieciowych . . . . . . . . . . . . . . . . . . . . . . . . . .

52

5.2.1

Usługi dostępne w systemie . . . . . . . . . . . . . . . . . . . . . . .

52

5.3

Poczta elektroniczna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

54

5.4

Udostępnianie plików – FTP . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

5.5

Serwis WWW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

5.6

Sieciowy system plików – NFS . . . . . . . . . . . . . . . . . . . . . . . . . .

57

6

Linux w sieciach LAN

59

6.1

Współpraca z sieciami SMB . . . . . . . . . . . . . . . . . . . . . . . . . . .

59

6.1.1

Serwer SMB – samba . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

6.1.2

Klientci SMB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

63

6.2

Integracja z siecią Novell . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

64

6.2.1

Klient ncpfs

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

64

6.2.2

Serwer mars-nwe . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

4

SPIS TREŚCI

7

Skład tekstów – L

A

TEX

69

7.1

TEX i L

A

TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

7.1.1

Idea działania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

7.1.2

Instalacja w Linuksie . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

7.1.3

Podstawowa konfiguracja . . . . . . . . . . . . . . . . . . . . . . . . .

71

7.1.4

Oprogramowanie wspomagające . . . . . . . . . . . . . . . . . . . . .

71

7.2

Struktura dokumentu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

72

7.2.1

Komendy i otoczenia . . . . . . . . . . . . . . . . . . . . . . . . . . .

73

7.2.2

Klasy dokumentów . . . . . . . . . . . . . . . . . . . . . . . . . . . .

73

7.2.3

Pakiety

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

7.2.4

Skład w języku polskim

. . . . . . . . . . . . . . . . . . . . . . . . .

74

7.2.5

Inkluzja plików . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

75

7.2.6

Podział dokumentu . . . . . . . . . . . . . . . . . . . . . . . . . . . .

75

7.2.7

Podstawowe komendy formatujące . . . . . . . . . . . . . . . . . . . .

76

7.3

Wzory matematematyczne . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78

7.3.1

Wzory wstawione i wystawione . . . . . . . . . . . . . . . . . . . . .

79

7.3.2

Podstawowe komendy . . . . . . . . . . . . . . . . . . . . . . . . . . .

79

7.3.3

AMSL

A

TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

80

7.4

Materiał ruchomy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

82

7.4.1

Tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

82

7.4.2

Rysunki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

84

7.4.3

Pakiet graphicx . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

84

7.4.4

Otoczenie figure . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

85

7.4.5

Pakiet floatflt . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

85

7.4.6

Pakiet psfrag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

86

7.5

Wypisy

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

86

7.5.1

Oznaczanie fragmentów tekstu . . . . . . . . . . . . . . . . . . . . . .

86

7.5.2

Referencje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

87

7.5.3

Spis treści . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

87

7.5.4

Spis literatury . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

87

8

Tworzenie wykresów – gnuplot

90

8.1

Tryby pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

90

8.2

Składnia pliku wejściowego . . . . . . . . . . . . . . . . . . . . . . . . . . . .

90

8.2.1

Komendy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

91

8.2.2

Wyrażenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

92

8.2.3

Funkcje predefiniowane . . . . . . . . . . . . . . . . . . . . . . . . . .

92

8.2.4

Funkcje użytkownika . . . . . . . . . . . . . . . . . . . . . . . . . . .

92

8.3

Urządzenie wyjściowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

93

8.3.1

Wyjście na ekran . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

93

8.3.2

Wyjście do L

A

TEX’a . . . . . . . . . . . . . . . . . . . . . . . . . . . .

94

8.3.3

Wyjście do PSL

A

TEX . . . . . . . . . . . . . . . . . . . . . . . . . . .

94

Piotr Zawadzki

background image

SPIS TREŚCI

5

8.3.4

Wyjście do MetaPost . . . . . . . . . . . . . . . . . . . . . . . . . . .

94

8.3.5

Wyjście do PStricks

. . . . . . . . . . . . . . . . . . . . . . . . . . .

95

8.3.6

Wyjście do pliku graficznego xfig . . . . . . . . . . . . . . . . . . . .

95

8.3.7

Wyjście do postscriptu . . . . . . . . . . . . . . . . . . . . . . . . . .

96

8.4

Tworzenie wykresów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

96

8.4.1

Rysowanie wykresu . . . . . . . . . . . . . . . . . . . . . . . . . . . .

96

8.4.2

Opcje tworzenia wykresów . . . . . . . . . . . . . . . . . . . . . . . .

99

8.4.3

Znakowanie osi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

8.4.4

Uzupełnienia wykresów . . . . . . . . . . . . . . . . . . . . . . . . . . 103

9

Darmowy Matlab czyli octave

106

9.1

Wiadomości wstępne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

9.2

Podstawowe struktury danych . . . . . . . . . . . . . . . . . . . . . . . . . . 107

9.3

Operatory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

9.4

Instrukcje sterujące . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

9.5

Podstawowe funkcje biblioteczne . . . . . . . . . . . . . . . . . . . . . . . . . 109

9.6

Podstawowe przekształcenia algebraiczne . . . . . . . . . . . . . . . . . . . . 109

9.7

Przetwarzanie sygnałów

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

9.8

Funkcje definiowane przez użytkownika . . . . . . . . . . . . . . . . . . . . . 110

9.9

Prezentacja wyników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9.9.1

Interfejs gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

9.9.2

Interfejs Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

10 Linux na komputerze bez HD

111

10.1 Zestaw dyskietek startowych . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

10.1.1 Obraz systemu plików root . . . . . . . . . . . . . . . . . . . . . . . 112
10.1.2 Przygotowanie jądra . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
10.1.3 Nagranie dyskietek . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

10.2 Płyta startowa CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
10.3 System plików root montowany przez NFS . . . . . . . . . . . . . . . . . . . 118

10.3.1 Przygotowanie jądra systemu

. . . . . . . . . . . . . . . . . . . . . . 118

10.3.2 Przygotowanie dyskietki startowej . . . . . . . . . . . . . . . . . . . . 119
10.3.3 Konfiguracja serwera NFS . . . . . . . . . . . . . . . . . . . . . . . . 123

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

Wykład 1

Wprowadzenie

1.1

Podstawowe własności systemu

Linux jest nowoczesnym, wielozadaniowym, wieloużytkownikowym systemem operacyj-

nym podobnym do systemu UNIX. Posiada między innymi:

• prawdziwą wielozadaniowość (preemptive multitasking)

• ochronę pamięci (jeden proces nie może uszkodzić innego procesu ani tym bardziej

systemu)

• zaawansowany system plików (długie nazwy, wielkość do 4TB)

• wbudowaną obsługę wielu protokołów sieciowych (TCP/IP, IPX, SMB, Appletalk,

AX.25)

• wielowątkowość

Pod względem wydajności, szybkości i stabilności śmiało konkuruje z kosztownymi komer-
cyjnymi systemami operacyjnymi. Ponadto, dużą jego zaletą jest pełna dostępność kodu
źródłowego. Bazując swoje rozwiązania na Linuxie nie inwestuje się w zamkniętą technolo-
gię, uzależnioną od łaski i niełaski jednej firmy, lecz w otwarty system, do którego wiele firm
jest w stanie zapewnić wsparcie i doradztwo. Dodatkowym atutem Linuxa jest to, że działa
na wielu platformach sprzętowych: w tej chwili pełne dystrybucje dostępne są na procesory
Intel x86, DEC Alpha (21064 i 21164), SPARC, MIPS, Motorola 680x0 PowerPC, ARM oraz
PA-RISC.

Warto pamiętać o tym, że nazwa Linux dotyczy wyłącznie jądra systemu, zaś jądro

z resztą oprogramowania niezbędnego do pracy systemu określa się mianem dystrybucji.
Bardziej znane dystrybucje to np. RedHat, Mandrake, Slackware.

Linux jest dostępny za darmo, na licencji GPL (General Public Licence). Oznacza to w

skrócie, że można go stosować także do celów komercyjnych, lecz jeżeli chce się go sprzedawać
(ew. tworząc zmodyfikowane wersje), trzeba udostępnić również kod źródłowy. Istotne jest,

6

Piotr Zawadzki

background image

1.2. RYS HISTORYCZNY

7

że to wymaganie nie dotyczy programów pisanych pod Linuxa – a więc można stworzyć
np. system finansowo – księgowy i sprzedawać go jak dowolne inne oprogramowanie.

1.2

Rys historyczny

Linux został stworzony przez Linusa Torvaldsa na bazie publicznie dostępnej wersji syste-

mu UNIX na komputery PC o nazwie MINIX. Pierwsze jądro systemu zostało opublikowane
w sieci wraz z zaproszeniem do współpracy w roku 1991.

Samo jadro systemu, bez programów użytkowych nie nadaje się do pracy. Dopiero uzu-

pełnienie jądra o programy użytkowe tworzy system operacyjny. Pierwsze programy roz-
powszechniane z jądrem systemu zostały zapożyczone z projektu GNU (GNU’s Not Unix)
prowadzonego przez FSF (Free Software Foundation). Od czasu opublikowania Linux rozwija
się bardzo dynamicznie. W skrócie kolejne etapy rozwoju można streścić w następujęcych
punktach

• adaptacja darmowego oprogramowania z innych systemów operacyjnych,

• powstanie projektów których pierwotną platformą jest Linux,

• rozwój oprogramowania komercyjnego.

1.3

Źródła informacji o systemie

. Obok publikacji książkowych oraz czasopism dotyczących Linux’a istnieje wiele materia-

łów rozpowszechnianych elektronicznie. Integracją rozproszonej w ielu miejscach dokumenta-
cji systemu zajmuje się inicjatywa LDP (Linux Documentation Project. Witryna internetową
projektu można odwiedzić łącząc się z adresem http://www.ldp.org/ lub jego polskim „od-
biciem lustrzanym” http://www.ldp.org.pl/. Można tam znaleźć m. in.

• Pliki HOWTO, polskie tłumaczenia – projekt JTZ http://www.jtz.org.pl,

• książki Linux Installation and Getting Started , The Linux System Administrators’

Guide , The Network Administrators’ Guide , The Linux Programmer’s Guide , The
Linux Kernel , Linux Kernel Module Programming Guide

• strony man,

• pliki info,

1.4

Źródła oprogramowania

Źródeł oprogramowania pod Lnux’a jest w internecie bez liku. Poniżej wymienię kilka

najważniejszych

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

8

WYKŁAD 1. WPROWADZENIE

http://www.sunsite.icm.edu.pl/pub/Linux,

http://freshmeat.net/,

http://linux.com/,

http://slashdot.org/,

http://sourceforge.net/.

1.5

Instalacja

Instalacja każdej dystrubucji składa się z następujących etapów:

• przydzielenie przestrzeni dyskowej,

• wybór oprogramowania i jego kopiowanie na dysk,

• ustalenie hasła użytkownika root,

• konfiguracja startu systemu.

Opcjonalnie (choć w zasadzie jest to już kanonem) mogą być wykonane następujące czynności

• lokalizacja systemu (wybór strefy czasowej, języka),

• konfiguracja interfejsu graficznego X Windows.

• konfiguracja usług (np. WWW, FTP) uruchamianych przy starcie systemu.

1.5.1

Podstawowe wiadomości o dyskach twardych

Urządzenia do zapisu imformacji dzielimy na znakowe lub blokowe. W urządzeniach zna-

kowych w jednym cyklu przesyłany jest jeden bajt danych. Do typowych urządzeń znakowych
zaliczyć należy port szeregowe oraz drukarki. Z kolei w urządzeniach blokowych w jednym
cyklu przesyłany jest zbiór znaków. W komputerach PC rozmiar bloku 512 znaków. Dostęp
do danego bloku danych uzyskuje się poprzez podanie jego numeru. Z logicznego punktu
widzenia urządzenie blokowe jest widziane jako zestaw bloków o stałej długości. Do klasycz-
nych urządzeń blokowych należą dyskietki oraz dyski twarde. Bloki danych na urządzeniach
dyskowych nazywane są sektorami. Zazwyczaj dane zapisane na urządzeniach blokowych
zapisane w postaci plików, które z kolei mogą być umieszczane w katalogach. Istnieje wiele
sposobów translacji akcji podejmowanych na katalogach i plikach na akcje podejmowane na
urządzeniu blokowym. Strukturą posredniczącą między iluzją plików i katalogów a rzeczywi-
stym interfejsem zapisu pojedynczych bloków jest system plików. Zadaniem systemu plików
jest więc odpowiednia organizacja danych na urządzeniu. Najbardziej znanymi przykładami
systemów plików są: system oparty FAT (ang. File Allocation Table) stosowany MS DOS

Piotr Zawadzki

background image

1.5. INSTALACJA

9

oraz jego ulepszona wersja pozwalająca na zapis długich nazw, tzw. VFAT stosowany w
systemach Windows.

Systemy operacyjne obsługują jeden lub kilka dla zachowania zgodności z poprzednimi

wersjami systemów plików. Linux jest tutaj chlubnym wyjątkiem. Lista obsługiwanych sys-
temów plików jest bardzo długa: minix, ext, ext2, xiafs, hpfs, msdos, umsdos, vfat, proc,
nfs, iso9660, smbfs, ncpfs, smbfs, affs, ufs, romfs, sysv, xenix, ntfs, reiserfs, ext3. System pli-
ków może być utworzony na całym urządzeniu blokowym (np. dyskietce) lub na jego części
(partycja dysku twardego).

W systemach czerpiących swe korzenie w UNIX’ie obowiązue sztywna struktura katalo-

gów. Oznacza to, że system operacyjny i programy spodziewają się znaleźć w określonych
katalogach określone pliki. Najczęściej miejsca gdzie poszukują plików są stałymi kompilacji
na trwałe „zaszytymi” w program. Drzewo katalogów rozpoczyna się od katalogu głównego
/. W katalogu głównym znajduje się z góry zdefiniowana struktura podkatalogów. Najważ-
niejsze z nich to

boot – jądro systemu,

bin – binaria niezbędne do działania systemu,

sbin – podstawowe narzędzia administtratora,

lib – podstawowe biblioteki,

dev – pliki specjalne urządzeń,

home – katalogi użytkowników systemu,

usr – aplikacje,

var – dane pomocnicze, logi systemowe,

tmp – katalog na pliki tymczasowe.

W Linux’ie nie ma pojęcia „napędów” i przypisanych im liter. Aby uzyskać dostęp do danych
zapisanych na określonym urządzeniu należy skojarzyć je z katalogiem. Proces tworzenia
powiązania urządzenia → katalog nazywamy montowaniem. Realizuje je komenda mount
o następującej składni

mount -t <fs_type> <device_file> <mount_point>
mount -t <fs_type> <file> <mount_point> -o loop

Parametry <fs type>, <device file> i <mount point> oznaczają: identyfikator systemu pli-
ków na urządzeniu, plik specjalny odpowiadający danemu urządzeniu oraz katalog w którym
ma być widoczna zawartośc urządzenia.

Przed instalacją systemu musimy zapoznać się z konwencją nazywania urządzeń w Li-

nux’ie. Dostęp do urządzeń w Linux’ie uzyskujemy przez zapis i/lub odczyt ze specjalnego

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

10

WYKŁAD 1. WPROWADZENIE

pliku umieszczonego w katalogu /dev/. Każde urządzenie ma swój własny plik. Urządzenia
odpowiadające dyskietkom mają przedrostek fd?. Na przykład fd0 odpowiada pierwszej
stacji dysków, fd1 – drugiej, itd. Podobnie sprawa ma się z dyskami twardymi. Urządzenia
odpowiadające dyskom twardym IDE mają przedrostek hd?. Pierwszy dysk to /dev/hda,
drugi – dev/hdb, itd. Dla dysków SCSI przedrostek ma postać sd?. Dostęp do kolejnych
partycji na dysku uzyskujemy uzupełniając nazwę urządzenia dysku numerem partycji. Na
przykład dla dysku /dev/hda pliki specjalne odpowiadające kolejnym partycjom mają po-
stać: /dev/hda1, /dev/hda2, /dev/hda3 itd. Na jednym dysku mogą być utworzone 4 par-
tycje główne (Primary). Gdy 4 partycje są niewystarczające, należy zamiast jednej partycji
głównej należy utworzyć partycję rozszerzoną (Extended ). Pełni ona rolę pojemnika na inne
partcyje. Partycje założone wewnątrz partycji rozszerzonej noszą nazwę partycji logicznych
(Logical ). Przydzielane im są numery większe bądź równe 5.

Każda z partycji dyskowych ma swój typ. Typ partycji to nic innego jak jednobajtowy

identyfikator informujący system operacyjny które partycje powinien podejrzewać, że znaj-
dują się na niej jego pliki. Identyfikator ten jest różnie interpretowany pzrez różne systemy
operacyjne: niektóre odmawiają współpracy z partycjami innych typów niż swoje, inne z
kolei w zasadzie ignorują ten identyfikator. Najważniejsze typy partycji to

6 FAT16 (DOS),

7 HPFS/NTFS,

b Win95 FAT32,

c Win95 FAT32 (LBA),

e Win95 FAT16 (LBA),

82 Linux swap,

83 Linux native,

85 Linux extended

Aby na dysku mógł być zainstalowany Linux niezbędne jest utworzenie co najmniej dwóch
partycji: Linux native i Linux swap. Na partycję Linux native zostaną skopiowane programy,
natomiast partycja Linux swap będzie służyć jako plik wymiany. Oczywiście możliwe jest
utowrzenie większej liczby partycji Linux native i przypisanie im różnych katalogów.

Utworzenie parycji to oczywiście zbyt mało, aby mógł być na niej zainstalowany system

operacyjny. Przed nagraniem skopiowaniem systemu należy partycję sformatować, tj. nagrać
na nią struktury danych związane z konkretnym systemem plików. Obecnie domyślnym syste-
mem plików Linux’a jest ext2 (Extended Filesystem version 2 ), jednak jego pozycja zaczyna
być zagrożona, bowiem do konkurencji zaczynają wkraczać systemy plików z dzienniko-
waniem (Journaling Filesystems). Do najważniejszych konkurentów należą tutaj reiserfs
i ext3. Możliwe jest również tworzenie systemów plików w których dane są szyfrowane ko-
rzystając z cfs (Cryptographic Filesystem).

Piotr Zawadzki

background image

1.5. INSTALACJA

11

1.5.2

Start systemu

Pierwszym programem uruchamianym przez BIOS (Basic Input Output System) jest

procedura POST (Power On self Test ). Po jej wykonaniu ładowany jest pierwszy sektor
z urządzenia wybranego w programie BIOS Setup jako startowe. Jeżeli w przeczytanym
sektorzez znajduje się odpowiedni znacznik, BIOS identyfikuje zawartość sektora jako pro-
gram ładujący i przekazuje mu sterowanie. Na dyskach twardych twardych pierwszy sektor
nazywany jest MBR (Master Boot Record ). Z kolei pierwszy sektor każdej partycji nazywa-
ny jest BR (Boot Record ). Systemy operacyjne spod znaku Windows nagrywają program
którego jedynym zadaniem jest stwierdzenie która z partycji jest zaznaczona jako aktywna,
wczytanie jej pierwszego sektora i przekazanie sterowania programowi tam zawartemu. Z
kolei program zawarty w BR podczas formatowania partycji (dysku C:) został uzupełniony
informacją gdzie na dysku znajduje się jądro systemu. Jego zadaniem jest wczytania jądra
systemu do pamięci operacyjnej i przekazanie mu sterowania.

Start systemu Linux jest możliwy dzięki podmianie programu znjadującemu się MBR lub

BR na inny program ładujący, który potrafi uruchomić jądro Linux’a. Najbardziej znanym
programem ładującym jest LILO (LInux LOader ). Wybierając instalację LILO w MBR
nadpisujemy domyślny program ładujący. W przypadku rezygnacji z Linux’a możemy go
odtworzyć po wystartowaniu DOS’a z dyskietki systemowej komendą

fdisk /MBR

Możliwa jest również bezinwazyjna instalacja LILO. Mianowicie instalujemy LILO BR par-
tycji z Linuxem i zaznaczamy ją jako aktywną. Oryginalny program z MBR podczas startu
systemu załaduje pierwszy sektor z partycji aktywnej, a więc LILO. Deinstalacji Linux’a
przebiega bezboleśnie, wystarczy bowiem deaktywować partycję z Linukx’em i aktywować
partycję z Windows.

1.5.3

Modułowa budowa jądra

Moduły można nazwać inaczej (choć mniej ściśle) sterownikami do różnego rodzaju urzą-

dzeń. Ładowanie modułów można wyłączyć przekazując jądru nomodules jako parametr pod-
czas ładowania systemu. Moduły jądra znajdują się w katalogu /lib/modules/<wersja-jądra>.
Podstawowe komendy obsługi modułów to

lsmod – wyświetlenie listy aktualnie załadowanych modułów,

insmod – dołączenie modułu do działającego jądra systemu,

rmmod – usunięcie modułu z jądra systemu.

Ponieważ między modułami moga istnieć dość skomplikowane zależności wstawianie mo-
dułów przy użyciu insmod może okazać się dość uciążliwe. Do rozwiązania tego problemu
służy komenda modprobe pozwalająca ładować i usuwać moduły z uwzględnieniem zależności
międzymodułowych. Komenda modprobe korzysta z listy zależności umieszczonej w pliku

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

12

WYKŁAD 1. WPROWADZENIE

/lib/modules/<wersja-jądra>/modules.dep

Plik ten tworzony jest komendą depmod która powinna być uruchomiona po każdorazowej

zmianie zawartości katalogów z modułami.

Jądro Linuksa potrafi ładować moduły „w locie”, gdy zajdzie potrzeba skorzystania z da-

nego interfejsu. Do ustanowienia związku między nazwą interfejsu a nazwą sterownika służy
plik /etc/conf.modules. Np. karty sieci Ethernet zainstalowane w systemie maja nazwy
eth0, eth1, eth2, eth2, itd. Jeżeli karta konfigurowana jako pierwsza jest kartą zgodną
z NE2000 w pliku /etc/conf.modules umieszczamy

alias eth0 ne
options ne irq=5 io=0x300

Powyższy wpis informuje jądro, że funkcje pierwszej karty sieciowej realizuje sterownik

ne i podczas ładowania sterownika powinny mu być przekazane parametry z linii options,
tj. karta pracuje na przerwaniu nr 5 i obszar portów IO rozpoczyna się od adresu 0x300.
Jeżeli sterownik jest nie używany przez pewien okres czasu odpowiedni moduł usuwany jest
z obszaru jądra. Moduły załadowane automatycznie mają ustawioną flagę autoclean. Szybsze
usunięcie nie używanych modułów z flagą autoclean realizuje komenda modprobe -r.

1.5.4

Podstawowe wiadomości o sieciach TCP/IP

Protokół IP jest beztsanowym protokołem warstwy sieciowej. Adres komputera w sieciach

IP stanowią 4 bajty. W sieciech IP adres komputera musi być unikalny, stąd adresy są
centralnie przydzielane.

Protokół IP to protokół Internetu (ang. Internet Protocol). Z kolei Internet to sieć szkiele-

towa łącząca sieci komputerowe rozmieszczone na całym świecie. W takich warunkach trudno
sobie wyobrazić centralny przydział adresów IP dla stacji końcowych. Z tego względu sieciom
przyłączonym do Internetu przydzielane są zakresy adresów, zaś sprawa przydziłau adresu
IP do konkretnej stacji jest sprawą administratora sieci lokalnej. Stąd podział adresu IP na
część związaną z siecią i część związaną z adresem hosta (właśnie tą część ustala admini-
strator sieci lokalnej). Zależnie od rozmiaru sieci lokalnej administrator może ubiegać się
o przydział adresu klasy A – 2

24

adresów, klasy B – 2

16

adresów lub klasy C – 2

8

adresów.

O tym czy dany adres sieciowy należy do określonej klasy decyduje kilka najstarszych bitów
pierwszego bajtu adresu IP. Taka organizacja adresów zapewnia łatwe sterowanie ruchem pa-
kietów. Odpowiednie zależności ilustruje Tab. #1 Przykładowe adresy poszczególnych klas
ilustruje Tab. #1 Dla sieci klasy A i B liczba hostów jest olbrzymia (2

24

− 2 i 2

16

− 2,

odpowiednio). Oczywiście zarządzanie tak wielkimi sieciami jest bardzo trudne. Dlatego do-
puszczono „wewnętrzny” podział sieci na podsieci. Koncepcja jest bardzo prosta, pożyczamy
cześć bitów z części adresującej hosta i traktujemy je jako adres sieci. I tak np. jeżeli dla
sieci klasy B pożyczymy jeden bajt, to maska podsieci wyniesie 255.255.255.0. Dzięki takiej
operacji przekształciliśmy sieć klasy B w 2

8

− 2 podsieci klasy C. Musimy odjąć 2 bowiem

podsieć o numerze x.x.0 miałaby adres identyczny z adresem sieci „matki”, zaś bajt o war-
tości 255 zarezerwowany jest na broadcast (rozgłoszenie do wszystkich stacji w podsieci).

Piotr Zawadzki

background image

1.5. INSTALACJA

13

klasa

adr. pocz. (bin)

adr. pocz. (dec)

adr. koń. (bin)

adr. koń. (dec)

A

0 0000000

0

0 1111110

126

loop-back

0 1111111

127

0 1111111

127

B

10 000000

128

10 111111

191

C

110 00000

192

110 11111

223

D

1110 1111

224

1110 1111

239

E

11110 111

240

11110 111

247

Tab. 1.1: Podział przestrzeni adresowej IP na klasy

Klasa

netmask

podział adresu

przykładowy adres hosta

adres sieci

A

255.0.0.0

N.H.H.H

10.0.1.123

10.0.0.0

B

255.255.0.0

N.N.H.H

157.158.1.3

157.158.0.0

C

255.255.255.0

N.N.N.H

200.150.189.31

200.150.189.0

Tab. 1.2: Przykłady adresów IP należących do różnych klas

Ciężar zarządzanie podsieciami spoczywa na właścicielu adresu klasy B. Utworzone podsieci
mają dostęp do internetu za pośrednictwem właściciela adresu B.

Oczywiście, możliwe jest wydzielenie podsieci ustalając podział adresu na część sieciową

i „hostową” wewnątrz z któregoś bajtów. Dla objaśnienia rozważmy podział sieci klasy C
na podsieci. Wydzielmy najstarsze 3 bity ostatniego bajtu na część sieciową. Wówczas ma-
ska sieci wyniesie 255.255.255.224 (ostatni bajt binarnie 11100000). Numery powstałych
w ten sposób podsieci oraz odpowiadający im zakres adresów hostów przedstawia Tab. #1
Wprowadzenie adresu podsieci powoduje, że nie możemy już wnioskować o masce podsie-
ci na podstawie jej numeru IP. Stąd często stosuje się zapis adresów sieci w postaci ¡ad-
res IP¿/¡liczba bitów maski ustawionych na 1¿. Oznacza to, że adresy IP sieci z Tab. #1
możemy zapisać jako 10.0.0.0/8, 157.158.0.0/16, 200.150.189.0/24.

Rozważmy konfigurację piątej z rozważanych podsieci (przypuśćmy, że podsieć skonfigu-

rowano w Instytucie Elektroniki, przydzielona do IE podsieć ma adres 157.158.17.0): adres

maska (bin)

maska (dec)

adr. pocz. (dec)

adr. koń. (dec)

001 00000

32

33

62

010 00000

64

65

95

011 00000

96

97

126

100 00000

128

129

158

101 00000

160

161

190

110 00000

192

193

223

Tab. 1.3: Lista dostępnych podsieci dla maski 255.255.255.224.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

14

WYKŁAD 1. WPROWADZENIE

podsieci – 157.158.17.160, maska podsieci – 255.255.255.224 (lub inaczej adres podsieci –
157.158.17.160/21) adresy hostów – 157.158.17.161÷190, adres rozgłoszeniowy (broadcast) –
(157.158.17.160) + ¬ (255.255.255.244) = 157.158.17.191.

Powyższy przykład ilustruje również „utratę” adresów IP przy podziale na podsieci. Gdy

sieć 157.158.17.0 potraktujemy jako sieć klasy C, to mamy do dyspozycji 2

8

−2 = 254 adresów

IP dla stacji. Tymczasem proste sumowanie poprawnych adresów z Tab. #1 prowadzi do
liczby 180. Oto gdzie tracimy dostępne adresy:

• mamy 6 podsieci a więc tracimy 6 × 2 = 12 adresów na adresy sieci i broadcasty,

• ze względu na to, że nie może być podsieci o numerze 0 tracimy 32 adresy (0 ÷ 31),

• tracimy również adresy powyżej 224 bowiem nie może być podsieci o numerze 11100000

(binarnie) tj. 31 adresów.

Sumując otrzymujemy liczbę 76.

Część adresów IP została wydzielona z puli przydzielanych adresów i żaden host (czy inne

urządzenie sieciowe) podłączone bezpośrednio do internetu nie może mieć takiego adresu IP.
Te wydzielone pule adresów mogą być używane wewnętrznie w sieciach lokalnych jednak nie
mogą być „widziane” z zewnątrz. Adresy wydzielonych sieci to: 10.0.0.0/8, 172.16.0.0/12,
192.168.0.0/16.

Piotr Zawadzki

background image

Wykład 2

Instalacja

W niniejszym rozdziale zamieścimy skrót z instalacji następujących czterech dystrybucji

• RedHat 7.2 (2 płyty zasadnicze + PowerTools),

• Mandrake 8.0 (2 płyty),

• Mandrake 8.1 (3 płyty),

• SuSE 7.2 (7 płyt).

2.1

Przygotowanie do instalacji

Przygotowanie do instalacji wymaga posiadania następujących przygotowań:

• przygotowanie wolnego miejsce na dysku, ile przeznaczamy dla partycji /, ile na swap,

• zgromadzenie podstawowych danych o sprzęcie: mysz, klawiatura, karta graficzna, karta

dźwiękowa, karta sieciowa, modem.

• zdobycie podstawowych parametrów sieci: adres IP, netmask, gateway lub adres serwera

DHCP lub numer tel. do ISP + adres IP serwera nazw,

• do jakich celów ma służyć system: router/firewall, serwer sieciowy, stacja robocza,

• jakie usługi sieciowe ma oferować system: e-mail, ftp, http, nfs, smb, dns,

• wybór interfejsu użytkownika: virtualna konsola i/lub środowisko graficzne (KDE lub

GNOME).

Linux’a da się zainstalować nawet gdy cały dysk komputera zajęty jest przez partycję

Windows. W pierwszym kroku uruchamiamy pod Windows program defrag. Jegozadanie
jest uporzadkowanie danych na dysku i umieszczenie ich w jego początkowej części. Następnie
z płyty z dystrybucją Linux’a przegrywamy i uruchamiamy program fips. Program ten

Piotr Zawadzki

15

background image

16

WYKŁAD 2. INSTALACJA

służy do bezinwazyjnego (tj. bez utraty danych) skrócenia partycji Windows (DOS). Miejsce
odzyskane przez program fips będzie zaznaczone jako wolne podczas instalacji systemu.

Po przygotowaniu miejsca na dysku przystępujemy do instalacji. Jako urządzenie wybie-

ramy CDROM, wkładamy płytę z Linux’em i restartujemy komputer. Gdy nasz komputer
ma antyczny BIOS który nie umożliwia startu z płyty CD, to jedyną radą jest skorzysta-
nie z dyskietek startowych rozprowadzanych w postaci plików z omawianymi dystrybucjami.
Pliki te stanowią obrazy binarne dyskietek, tzn. są to kolejne sektory dyskietki umieszczone
w jednym pliku. Do utworzenia dyskietki z pliku-obrazu służy program rawrite. Zależnie
od dystrybucji konieczne jest utworzenie jednej lub dwóch dyskietek startowych.

Po uruchomieniu systemu z dyskietek lub płyty CD otrzymujemy zaproszenie do in-

stalacji. Dalszy przebieg wydarzeń zależy od programu instalacyjnego danej dystrybucji.
Programy instalacyjne nowej generacji najpierw zbierają niezbędne informacje i dopiero gdy
posiadają wszystkie dane przystępują do instalacji. W programach starszej generacji dzia-
łania instalacyjne (np. zakładanie partycji, ich formatowanie) są podejmowane na bieżąco,
tuz po wydaniu odpowiednich zleceń przez użytkownika.

Piotr Zawadzki

background image

2.2. MANDRAKE 8.0

17

2.2

Mandrake 8.0

2.2.1

Instalacja

Program instalacyjnych przygotowuje instalację na bieżąco, np. nowa tablica partycji jest

zapisywana na dysk natychmiast po jej zatwierdzeniu.

1. Język instalacji. Program instalacyjny wspiera język polski. Wybieramy „Polish”.

Język ten będzie równocześnie językiem obowiązującym w systemie.

2. Rodzaj instalacji. Wybieramy „Dla eksperta”. W instalacji typowej brakuje wielu

narzęddzi do samodzielnej kompilacji pakietów.

3. Wybór nośnika. Program instalacyjny zbiera informację o tym z ilu płyt CD będzie

instalowany system.

4. Mysz. Mysz wykrywana jest automatycznie.

5. Klawiatura. Model klawiatury wykrywany jest automatycznie. Mamy do wyboru pol-

ską klawiaturę w układzie programisty lub w układzie maszynistki. Oczywiście wybie-
ramy ten pierwszy.

6. Bezpieczeństwo. Aktywacja mechanizmu filtrowania pakietów IP:

• Wysoki: filtrowane są wszystkie ramki za wyjątkiem DHCP i DNS.

• Średni: zablkowany dostęp do portów poniżej 1024, serwer NFS – port 2049, zdalne

sesje X Windows – port 6000, 6001 itd. , serwer fontów X Windows – port 7100.

• Niski: bez filtrowania ramek.

7. Partycjonowanie dysku. Obszar dysku prezentowany jest w formie graficznej. Klika-

jąc na wolny obszar możemy utworzyć nową partycję. Wybranie już istniejącej partycji
pozwala na zmianę jej parametrów. Możliwy jest również wybór automatycznego re-
partycjonowania dysków. Po naciśnięciu przycisku „Zrobione” nowa tablica partycji
zostaje zapisana na dysk.

• Zakładamy partycję na system plików root („/”). Zalecane przeznaczenie około

2GB przestrzeni dyskowej.

• Zakładamy partycję „swap” o wielkosci 2*RAM, nie więcej niż 128MB.

8. Formatowanie Utworzoną partycję zaznaczamy do sformatowania.

9. Wybór grup pakietów. Komputer biurowy, Korzytsanie z multimediów, Korzystanie

z Internetu, Komputer sieciowy (klient), Konfiguracja, Stacja robocza dla naukowca,
Programowanie, WWW/FTP, Serwer sieciowy, Stacja robocza z KDE. W sumie 1091
MB. Rezygnujemy z samodzielnego wyboru pakietów.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

18

WYKŁAD 2. INSTALACJA

10. Instalacja serwerów Wybór serwerów które mogą stanowić potencjalne zagrożenie

dla bezpieczeństwa systemu powoduje pojawienie się ostrzeżenia.

11. Instalacja pakietów Wybrane pakiety są instalowane na dysk twardy.

12. Dostęp do systemu. Hasło root’a i utworzenie zwykłego użytkownika. Można jedynie

korzystać z systemu NIS (tzw. yellow pages) zarządzania kontami.

13. Interfejs sieciowy. Program sprawdza czy w systemie jest karta ethernet lub modem.

Zależnie od wykrytego sprzętu wybierana jest metoda konfiguracji interfejsu sieciowego.

• Karta ethernet może być skonfigurowana automatycznie jeżeli w sieci lokalnej

znajduje się serwer DHCP lub statycznie. W drugim przypadku następujące pa-
rametry musimy dostać od administratora sieci: numer IP, netmask, hostaname,
domainname, gateway IP, server DNS główny i ew. zapasowe. Zaznaczamy akty-
wację interfejsu przy starcie systemu.

14. Konfiguracja pośredników Dla ograniczenia ruchu w sieci oraz dla ochrony stacji

znajdujących się za ścianą ogniową do komunikacji ze światem zewnętrznym wyko-
rzystywane są tzw. serwery pośrednie („proxy”). Jeżeli w Twojej sieci działają takie
serwery to należy je w tym punkcie podać.

15. Język systemu. Polish

16. Strefa czasowa. Europe/Warsaw

17. Karta dźwiękowa W procesie instalacji karty dźwiękowe wykrywane i konfigurowane

są automatycznie.

18. Konfiguracja drukarki W pierwszym rzędzie musimy podjąć decyzję którego demo-

na wydruku będziemy używać. Do wyboru mamy CUPS („Common Unix Printing
System”) oraz stary i sprawdzony lpd. Zalecam zdecydować się na CUPS. Po zainsta-
lowaniu demona drukowania przeprowadzona jest konfiguracja drukarki. Definiujemy
sposób dostępu (lokalna czy zdalna), nazwę kolejki, typ drukarki oraz metodę wydruku
(tzw. filtr).

19. Konfiguracja usług startowych Proponuje zaznaczyć jedynie: alsa, crond, cups,

harddrake, httpd, ipchains, keytable, kudzu, kheader, netfs, network, numlock, portmap
postfix, random, rawdevices, sshd, syslog, xfs, xinted.

20. Program ładujący. Zawsze tworzymy dyskietkę startową. Instalujemy LILO jeżeli

na komputerze nie ma Windows NT. LILO wgrywamy do MBR lub pierwszego sek-
tora jednej z partycji. Aby program ładujący z pierwszego sektora partycji mógł być
uruchomiony partycja powinna być zaznaczona jako aktywna a w MBR powinieni być
program ładujący z DOS’a lub Windows. Domyślny program ładujący można wgrać
poleceniem DOS’a:

Piotr Zawadzki

background image

2.2. MANDRAKE 8.0

19

fdisk /MBR

Zamiast LILO można użyć innego programu ładującego onazwie GRUB. Mamy również
możliwość wyboru sposobu startu systemu: linux – start w trybie graficznym, linux-
nonfb – start w trybie tekstowym. Proponuję wybrać linux-nonfb jako domyślny.

21. Konfiguracja X Windows. Koniecznie należy znać zakresy częstotliwości odchylania

pionowego i poziomego monitora. Konfigurowane są następujące elementy:

• karta grafiki (automatycznie),

• monitor (automatycznie)

• rodzdzielczość i liczba bitów na piksel,

Zależnie od rodzaju karty mamy możliwość instalacji X serwera w wersji: XFree 3.3.6
lub XFree 3.3.6 z akceleracją sprzetową lub XFree 4.0.3. Rozwiązanie konserwartywne
do instalacja XFree 3.3.6. Poprawność wyboru testujemy.

22. Logowanie Na koniec procesu instalacji podejmujemy decyzję o uruchomieniu progra-

mu XDM (logowanie w trybie graficznym).

2.2.2

Dostrajanie

1. Konfiguracja drukarki. W okienku K→ Konfiguracja→ Drukowanie → QT-CUPS

można zmienić parametry już zdeiniowanych drukarek (a dokładniej kolejek drukowa-
nia). Z kolei w K→ Konfiguracja→ Drukowanie → KUPS można ustawiać nowe kolejki
lub usuwać istniejące.

2. Polskie teksty w graficznym ekranie logowania. W okienku K→ Konfiguracja→

KDE→ System→ Menedżer logowania. wybieramy Country: Polska i czczionki z ko-
dowaniem ISO 8859-2.

3. Konfiguracja czczionki terminala. Uruchamiamy terminal: K→ Terminale→ Ter-

minal. W okienku Settings→ Czczionka→ Definiuj wybieramy biznet-fixed o rozmia-
rze 16. UWAGA! Koniecznie należy kliknąć przycisk domyślne kodowanie. Rozmiar
terminala dostosowujemy poleceniem Settings→ Rozmiar→ 80x25 (ibmpc). Zmiany
zachowujemy poleceniem Settings→ Save settings.

4. Konfiguracja Netscape. Uruchamiamy netscape (K→ Internet→ Netscape Com-

municator). Dodajemy język polski w Edycja→ Ustawienia→ Navigator→ Języki.

5. Doinstalowujemy program Midnight Commander. Wkładamy płytę CD 1 i wy-

konujemy

rpm -Uvh /mnt/cdrom/RedHat/RPMS/mc-*.rpm

Napędu nie trzeba montować bowiem do odczytu dyskietek, napędów ZIP i CD uży-
wany jest mechanizm supermount (patrz plik /etc/fstab). Po instalacji uruchamiamy

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

20

WYKŁAD 2. INSTALACJA

mc i wybieramy ¡F9¿→ Opcje→ Wyświetlanie znaków. Zaznaczamy: Pełne 8 bitowe
oraz Pełne ośmiobitowe wejście.

6. Konfiguracja usług startowych Pod X Windows uruchamiamy program drakxservices.

Zaznaczamy w nim które usługi powinny być aktywowane podczas startu systemu.

7. Łączenie z internetem przez modem Uruchamiamy program K→ Sieć→ Zdalny

dostęp→ Łączenie z internetem Konfigurację programu wykonujemy wybierająć Usta-
wienia. W zakładce Modem wybieramy Testuj modem aby sprawdzić rodzaj modemu.
Zakładka Połączenia służy do konfiguracji połączeń z różnymi dostawcami internetu.

8. Konfiguracja sprzętu Do konfiguracji sprzętu służy program harddrake K→ Kon-

figuracja→ Sprzęt→ HardDrake

9. Aktualizacje i poprawki. Aktualizacje, poprawki i dodatkowe pakiety można znaleźć

pod adresem ftp://ftp.task.gda.pl/pub/linux/Mandrake/

2.2.3

Błędy i niedoróbki

1. Podczas inicjalizacji sieci przez DHCP nie jest aktualizowana nazwa hosta na podsta-

wie wpisu w DNS’ie. Poniższy skrypt należy umieścić w skryptach startowych systemu,
tuż za inicjalizacją sieci (usługa network ).

#!/bin/sh
DEVICE=eth0
IPADDR=‘LANG= LC_ALL= ifconfig $DEVICE | grep ’inet addr’ |

awk -F: ’{ print $2 } ’ | awk ’{ print $1 }’‘

FQHOSTNAME=‘LANG= LC_ALL= host $IPADDR | awk ’{print $5}’‘
HOST=‘echo $FQHOSTNAME | sed ’s/\..*\.//’‘
DOMAIN=‘echo $FQHOSTNAME | sed ’s/^[^\.]*\.//’ | sed ’s/\.$//’‘
echo $IPADDR
echo $FQHOSTNAME
echo $HOST
echo $DOMAIN

hostname $FQHOSTNAME
echo "$HOST" > /etc/HOSTNAME
if ! grep search /etc/resolv.conf >/dev/null 2>&1; then

echo "search $DOMAIN" >> /etc/resolv.conf

fi

2. W skład dystrybucji nie wchodzi program ogonkify rozprowadzany również z pakietem

a2ps. Aby drukować polskie znaki diakrytyczne z Netscape’a należy go skompilować

Piotr Zawadzki

background image

2.2. MANDRAKE 8.0

21

i zainstalować. Strony WWW zawierajace polskie znaki narodowe drukujemy (Plik→
Drukuj) komendą

ogonkify -AT -N | lpr

lub drukujemy do pliku netscape.ps i przetwarzamy go komendą

ogonkify -AT -N netscape.ps > netscape-pl.ps

Wynik konwersji sprawdzamy przeglądarką gv

gv netscape-pl.ps

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

22

WYKŁAD 2. INSTALACJA

2.3

Mandrake 8.1

2.3.1

Instalacja

Program instalacyjnych przygotowuje instalację na bieżąco, np. nowa tablica partycji jest

zapisywana na dysk natychmiast po jej zatwierdzeniu.

1. Język instalacji. Program instalacyjny wspiera język polski. Wybieramy „Polish”.

Język ten będzie równocześnie językiem obowiązującym w systemie.

2. Rodzaj instalacji. Wybieramy „Dla eksperta”. W instalacji typowej brakuje wielu

narzęddzi do samodzielnej kompilacji pakietów.

3. Mysz. Mysz wykrywana jest automatycznie.

4. Klawiatura. Model klawiatury wykrywany jest automatycznie. Mamy do wyboru pol-

ską klawiaturę w układzie programisty lub w układzie maszynistki. Oczywiście wybie-
ramy ten pierwszy.

5. Bezpieczeństwo. Aktywacja mechanizmu filtrowania pakietów IP:

• Wysoki: filtrowane są wszystkie ramki za wyjątkiem DHCP i DNS.

• Średni: zablkowany dostęp do portów poniżej 1024, serwer NFS – port 2049, zdalne

sesje X Windows – port 6000, 6001 itd. , serwer fontów X Windows – port 7100.

• Niski: bez filtrowania ramek.

6. Partycjonowanie dysku. Obszar dysku prezentowany jest w formie graficznej. Klika-

jąc na wolny obszar możemy utworzyć nową partycję. Wybranie już istniejącej partycji
pozwala na zmianę jej parametrów. Możliwy jest również wybór automatycznego re-
partycjonowania dysków. Po naciśnięciu przycisku „Zrobione” nowa tablica partycji
zostaje zapisana na dysk.

• Zakładamy partycję na system plików root („/”). Zalecane przeznaczenie około

2GB przestrzeni dyskowej.

• Zakładamy partycję „swap” o wielkosci 2*RAM, nie więcej niż 128MB.

7. Formatowanie Utworzoną partycję zaznaczamy do sformatowania.

8. Wybór nośnika. Program instalacyjny zbiera informację o tym z ilu płyt CD będzie

instalowany system.

9. Wybór grup pakietów. Komputer biurowy, Korzytsanie z multimediów, Korzystanie

z Internetu, Komputer sieciowy (klient), Konfiguracja, Stacja robocza dla naukowca,
Programowanie, WWW/FTP, Serwer sieciowy, Stacja robocza z KDE. Zaznaczamy
Samodzielny wybór pakietów i sprawdzamy czy zostaną zainstalowane kde-i18n-pl, a2ps,
mc.

Piotr Zawadzki

background image

2.3. MANDRAKE 8.1

23

10. Instalacja serwerów Wybór serwerów które mogą stanowić potencjalne zagrożenie

dla bezpieczeństwa systemu powoduje pojawienie się ostrzeżenia.

11. Instalacja pakietów Wybrane pakiety są instalowane na dysk twardy.

12. Dostęp do systemu. Hasło root’a i utworzenie zwykłego użytkownika. Można korzy-

stać z systemu NIS (tzw. yellow pages) oraz LDAP zarządzania kontami.

13. Interfejs sieciowy. Program sprawdza czy w systemie jest karta ethernet lub modem.

Zależnie od wykrytego sprzętu wybierana jest metoda konfiguracji interfejsu sieciowego.

• Karta ethernet może być skonfigurowana automatycznie jeżeli w sieci lokalnej

znajduje się serwer DHCP lub statycznie. W drugim przypadku następujące pa-
rametry musimy dostać od administratora sieci: numer IP, netmask, hostaname,
domainname, gateway IP, server DNS główny i ew. zapasowe. Zaznaczamy akty-
wację interfejsu przy starcie systemu.

• Jeżeli wykryty zostanie modem zostaną zadane pytania o dostawcę internetu,

użytkownika, hasło oraz sposób aktywacji połączenia.

14. Konfiguracja pośredników Dla ograniczenia ruchu w sieci oraz dla ochrony stacji

znajdujących się za ścianą ogniową do komunikacji ze światem zewnętrznym wyko-
rzystywane są tzw. serwery pośrednie („proxy”). Jeżeli w Twojej sieci działają takie
serwery to należy je w tym punkcie podać.

15. Język systemu. Polish

16. Strefa czasowa. Europe/Warsaw

17. Karta dźwiękowa W procesie instalacji karty dźwiękowe wykrywane i konfigurowane

są automatycznie.

18. Konfiguracja drukarki W pierwszym rzędzie musimy podjąć decyzję którego demo-

na wydruku będziemy używać. Do wyboru mamy CUPS („Common Unix Printing
System”), LPRng oraz PDQ („Print, Don’t Queue”). Wybór ostatniej opcji oznacza,
że nie będzie zainstalowany spooler drukarki. Po zainstalowaniu demona drukowania
przeprowadzona jest konfiguracja drukarki. Definiujemy sposób dostępu (lokalna czy
zdalna), nazwę kolejki, typ drukarki oraz metodę wydruku (tzw. filtr).

19. Konfiguracja usług startowych Proponuje zaznaczyć jedynie: alsa, crond, cups,

harddrake, httpd, ipchains, keytable, kudzu, kheader, netfs, network, numlock, portmap
postfix, random, rawdevices, sshd, syslog, xfs, xinted.

20. Program ładujący. Zawsze tworzymy dyskietkę startową. Instalujemy LILO jeżeli

na komputerze nie ma Windows NT. LILO wgrywamy do MBR lub pierwszego sek-
tora jednej z partycji. Aby program ładujący z pierwszego sektora partycji mógł być

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

24

WYKŁAD 2. INSTALACJA

uruchomiony partycja powinna być zaznaczona jako aktywna a w MBR powinieni być
program ładujący z DOS’a lub Windows. Domyślny program ładujący można wgrać
poleceniem DOS’a:

fdisk /MBR

Zamiast LILO można użyć innego programu ładującego onazwie GRUB. Mamy również
możliwość wyboru sposobu startu systemu: linux – start w trybie graficznym, linux-
nonfb – start w trybie tekstowym. Proponuję wybrać linux-nonfb jako domyślny.

21. Konfiguracja X Windows. Koniecznie należy znać zakresy częstotliwości odchylania

pionowego i poziomego monitora. Konfigurowane są następujące elementy:

• karta grafiki (automatycznie),

• monitor (automatycznie)

• rodzdzielczość i liczba bitów na piksel,

Zależnie od rodzaju karty mamy możliwość instalacji X serwera w wersji: XFree 3.3.6
lub XFree 3.3.6 z akceleracją sprzetową lub XFree 4.0.3. Rozwiązanie konserwartywne
do instalacja XFree 3.3.6. Poprawność wyboru testujemy.

22. Logowanie Na koniec procesu instalacji podejmujemy decyzję o uruchomieniu progra-

mu XDM (logowanie w trybie graficznym).

2.3.2

Dostrajanie

1. Polski język w KDE. Wybieramy K→ Configuration→ KDE→ Personalization →

Country and Language. Ustawiamy język polski oraz kodowanie ISO 8859-2. Aby usta-
wienia zaczęły obowiązywać w KDE musimy się wylogować i zalogować ponownie.

2. Konfiguracja drukarki. W okienku K→ Konfiguracja→ Inne→ Centrum sterowania

Mandrake wybieramy zakładkę Sprzęt→ Drukarka. Pojawi się okienko w którym można
zmienić parametry już zdefiniowanych drukarek (a dokładniej kolejek drukowania) oraz
utworzyć nowe.

3. Konfiguracja Netscape. Uruchamiamy netscape (K→ Internet→ Netscape Commu-

nicator). Dodajemy język polski w Edycja→ Ustawienia→ Navigator→ Języki. Strony
WWW zawierajace polskie znaki narodowe drukujemy (Plik→ Drukuj) komendą

ogonkify -AT -N | lpr

lub drukujemy do pliku netscape.ps i przetwarzamy go komendą

ogonkify -AT -N netscape.ps > netscape-pl.ps

Wynik konwersji sprawdzamy przeglądarką gv

gv netscape-pl.ps

Piotr Zawadzki

background image

2.3. MANDRAKE 8.1

25

4. Doinstalowujemy program Midnight Commander. Wkładamy płytę CD 1 i wy-

konujemy

mount /mnt/cdrom rpm -Uvh /mnt/cdrom/Mandrake/RPMS/mc-*.rpm umount /mnt/cdrom

Po instalacji uruchamiamy mc i wybieramy ¡F9¿→ Opcje→ Wyświetlanie znaków. Za-
znaczamy: Pełne 8 bitowe oraz Pełne ośmiobitowe wejście.

5. Konfiguracja usług startowych Pod X Windows uruchamiamy program drakxservices.

Zaznaczamy w nim które usługi powinny być aktywowane podczas startu systemu.

6. Łączenie z internetem przez modem Uruchamiamy program K→ Sieć→ Zdalny

dostęp→ Łączenie z internetem Konfigurację programu wykonujemy wybierająć Usta-
wienia. W zakładce Modem wybieramy Testuj modem aby sprawdzić rodzaj modemu.
Zakładka Połączenia służy do konfiguracji połączeń z różnymi dostawcami internetu.

7. Konfiguracja sprzętu Do konfiguracji sprzętu służy program harddrake K→ Kon-

figuracja→ Sprzęt→ HardDrake

8. Aktualizacje i poprawki. Aktualizacje, poprawki i dodatkowe pakiety można znaleźć

pod adresem ftp://ftp.task.gda.pl/pub/linux/Mandrake/

2.3.3

Błędy i niedoróbki

1. Podczas inicjalizacji sieci przez DHCP nie jest aktualizowana nazwa hosta na podsta-

wie wpisu w DNS’ie. Poniższy skrypt należy umieścić w skryptach startowych systemu,
tuż za inicjalizacją sieci (usługa network ).

#!/bin/sh
DEVICE=eth0
IPADDR=‘LANG= LC_ALL= ifconfig $DEVICE | grep ’inet addr’ |

awk -F: ’{ print $2 } ’ | awk ’{ print $1 }’‘

FQHOSTNAME=‘LANG= LC_ALL= host $IPADDR | awk ’{print $5}’‘
HOST=‘echo $FQHOSTNAME | sed ’s/\..*\.//’‘
DOMAIN=‘echo $FQHOSTNAME | sed ’s/^[^\.]*\.//’ | sed ’s/\.$//’‘
echo $IPADDR
echo $FQHOSTNAME
echo $HOST
echo $DOMAIN

hostname $FQHOSTNAME
echo "$HOST" > /etc/HOSTNAME
if ! grep search /etc/resolv.conf >/dev/null 2>&1; then

echo "search $DOMAIN" >> /etc/resolv.conf

fi

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

26

WYKŁAD 2. INSTALACJA

2.4

RedHat 7.1

2.4.1

Instalacja

Program instalacyjny zbiera informacje niezbędne do instalacji i po ich ostatecznym

zatwierdzeniu wykonuje czynności instalacyjne.

1. Język instalacji. Program instalacyjny nie wspiera języka polskiego. Wybieramy „En-

glish”.

2. Klawiatura. Model klawiatury wykrywany jest automatycznie, wybieramy polski układ

klawiatury oraz włączone „dead keys”.

3. Mysz. Należy zwrócić uwagę czy wykryta została poprawnie liczba przycisków.

4. Rodzaj instalacji. Wybieramy „Custom System” aby mieć wpływ na grupy instalo-

wanych pakietów.

5. Partycjonowanie dysku. Wybieramy partycjonowanie ręczne („Manually partition

with Disk Druid ”).

• Zakładamy partycję na system plików root („/”). Zalecane przeznaczenie około

2GB przestrzeni dyskowej.

• Zakładamy partycję „swap” o wielkosci 2*RAM, nie więcej niż 128MB.

6. Formatowanie Utworzoną partycję zaznaczamy do sformatowania.

7. Program ładujący. Zawsze tworzymy dyskietkę startową. Instalujemy LILO jeżeli

na komputerze nie ma Windows NT. LILO wgrywamy do MBR lub pierwszego sek-
tora jednej z partycji. Aby program ładujący z pierwszego sektora partycji mógł być
uruchomiony partycja powinna być zaznaczona jako aktywna a w MBR powinieni być
program ładujący z DOS’a lub Windows. Domyślny program ładujący można wgrać
poleceniem DOS’a:

fdisk /MBR

8. Interfejs sieciowy. Karta ethernet jest wykrywana i konfigurowana podczas instalacji.

Połączenia modemowe konfiguruje się po instalacji. Karta ethernet może być skonfigu-
rowana automatycznie jeżeli w sieci lokalnej znajduje się serwer DHCP lub statycznie.
W drugim przypadku następujące parametry musimy dostać od administratora sieci:
numer IP, netmask, hostname, domainname, gateway IP, server DNS główny i ew.
zapasowe. Zaznaczamy aktywację interfejsu przy starcie systemu.

9. Bezpieczeństwo. Aktywacja mechanizmu filtrowania pakietów IP:

• High: filtrowane są wszystkie ramki za wyjątkiem DHCP i DNS.

Piotr Zawadzki

background image

2.4. REDHAT 7.1

27

• Medium: zablkowany dostęp do portów poniżej 1024, serwer NFS – port 2049,

zdalne sesje X Windows – porty 6000, 6001 itd. , serwer fontów X Windows –
port 7100.

• No firewall: bez filtrowania ramek.

Reguły narzucone przez Medium i High można uzupełnić podając w opcji customize
usługi które nie będą odfiltrowane przez firewall.

10. Język systemu. Polish

11. Strefa czasowa. Europe/Warsaw

12. Dostęp do systemu. Hasło root’a i utworzenie zwykłego użytkownika.

13. Zarządzanie kontami użytkowników. Wybieramy wyliczanie skrótów haseł jedno-

kierunkową funkcją MD5. Skróty powinny być przechowywane w pliku /etc/shadow
(włączone „shadow passwords”). Pozostałe usługi dotyczą stacji w dużych sieciach:
NIS, LDAP, Kerberos są metodami centralnego zarządzania kontami użytkowników i
ewentualnego szyfrowanie transmisji.

14. Wybór grup pakietów. Printer, X Windows, KDE, Graphics, Multimedia, Networ-

ked Workstation, DialUp Workstation, Web Server, Development, Authoring/Publishing
w sumie: 1085 MB

15. Konfiguracja X Windows. Koniecznie należy znać zakresy częstotliwości odchylania

pionowego i poziomego monitora. Konfigurowane są następujące elementy:

• karta grafiki,

• monitor,

• rodzdzielczość i liczba bitów na piksel

Poprawność wyboru sprawdzamy przyciskiem „Test settings”

2.4.2

Dostrajanie

1. Konfiguracja drukarki. W okienku K→ System→ Printer Configuration lub Control-

panel→ Printer wprowadzamy nazwę, typ kolejki (drukarka zdalna lub lokalna), oraz
sterownik. Ustawienia sprawdzamy drukując stronę testową. Jeżeli wszystko jest OK
restartujemy demona drukowania (Plik→ Restart lpd) i kończymy konfigurację (Plik→
Save Changes i Plik→ Zakończ).

2. Konfiguracja karty dźwiękowej. Wybieramy Control Panel→ Sound lub w termi-

nalu uruchamiamy sndconfig. Postępujemy wg wskazań programu.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

28

WYKŁAD 2. INSTALACJA

3. Polskie teksty w graficznym ekranie logowania. W okienku K→ Preferencje→

System→ Menedżer logowania. wybieramy Country: Polska i czczionki z kodowaniem
ISO 8859-2.

4. Konfiguracja czczionki terminala. Uruchamiamy terminal: K→ System→ Termi-

nal. W okienku Settings→ Czczionka→ Definiuj wybieramy misc-fixed o rozmiarze 16.
Rozmiar terminala dostosowujemy poleceniem Settings→ Rozmiar→ 80x25 (ibmpc).
Zmiany zachowujemy poleceniem Settings→ Save settings.

5. Konfiguracja Netscape. Uruchamiamy Netscape (K→ Internet→ Netscape Com-

municator). Dodajemy język polski w Edit→ Preferences→ Navigator→ Language.
Strony WWW zawierajace polskie znaki narodowe drukujemy (File→ Print) komendą

ogonkify -AT -N | lpr

lub drukujemy do pliku netscape.ps i przetwarzamy go komendą

ogonkify -AT -N netscape.ps > netscape-pl.ps

Wynik konwersji sprawdzamy przeglądarką gv

gv netscape-pl.ps

6. Doinstalowujemy program Midnight Commander. Wkładamy płytę CD 1 i wy-

konujemy

mount /mnt/cdrom
rpm -Uvh /mnt/cdrom/RedHat/RPMS/mc-*.rpm
umount /mnt/cdrom

Po instalacji uruchamiamy mc i wybieramy ¡F9¿→ Opcje→ Wyświetlanie znaków. Za-
znaczamy: Pełne 8 bitowe oraz Pełne ośmiobitowe wejście.

7. Konfiguracja usług startowych Wybieramy Control Panel→ Services lub urucha-

miamy w terminalu ntsysv Proponuje uruchomić jedynie: crond, gpm, ipchains, key-
table, kudzu, lpd, netfs (eth), network (eth), nfslock (eth), portmap (eth), pppoe (eth),
random, sendmail (eth, dialup), xfs, http. W nawiasach zaznaczono usługi uruchomione
na stacjach z kartami ethernet lub wyposażonymi w modemy.

8. Aktualizacje i poprawki. Aktualizacje, poprawki i dodatkowe pakiety można znaleźć

pod adresem ftp://ftp.task.gda.pl/pub/linux/redhat/linux/

2.4.3

Błędy i niedoróbki

1. W Control Panel→ Kernel pojawia się informacja, że należy zainstalować pakiet ker-

nelcfg. Takiego pakietu nie ma w dystrybucji.

Piotr Zawadzki

background image

2.4. REDHAT 7.1

29

2. Pozycja Control Panel→ Apache nie uruchamia programu do konfiguracji serwera.

Można ją wykonać uruchamiając program apacheconf.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

30

WYKŁAD 2. INSTALACJA

2.5

SuSE 7.2

2.5.1

Instalacja

Instalacja może być wykonana przy użyciu dwóch programów: YaST2 – w trybie graficz-

nym, lub YaST1 – w trybie tekstowym. Program instalacyjny YaST2 najpierw zbiera infor-
macje niezbędne do instalacji. W dowolnym momencie można z niej zrezygnować. Z kolei
YaST1 dokonuje zmian na bieżąco.

1. Tryb instalacji Po restarcie systemu z płyty CD mamy 5 sekund na decyzję czy

instalacja ma być wykonana automatycznie („Installation”) lub z dużą dozą interwencji
użytkownika („Manual installation”). Wybieramy pierwszą możliwość.

2. Język instalacji. W trybie automatycznym program instalacyjny (YaST2) nie wspie-

ra języka polskiego. Wybieramy „English”. Język ten będzie równocześnie językiem
obowiązującym w systemie tuż po instalacji.

3. Klawiatura i strefa czasowa. Wybieramy polski układ klawiatury (jest to układ

programisty) oraz strefę czasową „Europe/Poland ”.

4. Tryb instalacji. Do wyboru mamy instalację całkowicie nowego systemu, aktualizację

już istniejącego oraz start już zainstalowanego systemu. Wybieramy pierwszą możli-
wość.

5. Podział dysku na partycje. Decydujemy się na „Custom partitioning”. W przeciw-

nym razie program instalacyjny sam zagospodaruje dostępną przestrzeń dyskową.

6. Partycjonowanie Nowe partycje tworzymy używając przycisku „Create”. Istniejącym

partycjom możemy przydzielić punkt montowania oraz zaznaczyć je do sformatowania
wybierając przycisk „Edit ”. Do unikalnych opcji programu instalacyjnego niewątpli-
wie należy zaliczyć możliwość utworzenia na partycji systemu plików z katalogowaniem
(ReiserFS ) i/lub jego zaszyfrowanie. Nie jest dozwolone szyfrowanie partycji z syste-
mem plików „/”. Przejście do następnego punktu instalcji nie powoduje jeszcze wpisu
nowej tablicy na dysk.

7. Instalacja pakietów. Instalowane pakiety możemy wybrać wg jednej z pięciu predefi-

niowanych konfiguracji. Wybieramy „Default System” (954 MB). Swój wybór możemy
zmienić korzystając z przycisku „Detailed selection ...”. Oprogramowanie można rów-
nież uzupełnić uruchamiając YaST2 w już działającym systemie.

8. Program ładujący. Jeżeli program instalacyjny wykryje na dysku inny system opera-

cyjny, to proponuje instalację LILO na dyskietce. Domyślną konfigurację LILO można
zmienić wybierając „Custom LILO installation”. LILO wgrywamy do MBR lub pierw-
szego sektora jednej z partycji jeżeli na komputerze nie Windows NT. W przeciwnym
razie LILO wgrywamy na dyskietkę. Aby program ładujący z pierwszego sektora par-
tycji mógł być uruchomiony partycja powinna być zaznaczona jako aktywna a w MBR

Piotr Zawadzki

background image

2.5. SUSE 7.2

31

powinieni być program ładujący z DOS’a lub Windows. Domyślny program ładujący
można wgrać poleceniem DOS’a:

fdisk /MBR

9. Dostęp do systemu. Określamy hasło root’a oraz nazwę i hasło zwykłego użytkow-

nika.

10. Potwierdzenie instalacji. W tym momencie program instalacyjny posiada już wszyst-

kie dane do wykonania instalacji. Przejście do następnego ekranu spowoduje instalację
systemu.

11. Start systemu. Po wgraniu wybranych pakietów zainstalowany system jest urucha-

miany (bez restartu maszyny) w trybie tekstowym.

12. Tryb logowania. Automatycznie uruchamiany jest program postinstalacyjny. W pierw-

szej kolejności musimy zdecydować czy do systemu będziemy się logować w trybie tek-
stowym lub graficznym. Wybieramy otoczenie graficzne. Automatycznie uruchamiany
jest program sax2 do konfiguracji X Windows.

13. Konfiguracja X Windows. W ramce podane są parametry wykrytego sprzętu. Moż-

na je zmienić przyciskiem „Change”. Niestety X Server wybierany jest automatycznie i
nie mamy możliwości jego zmiany. Poprawność ustawień sprawdzamy wybierając przy-
cisk „Test ”. Konfiguracja X Windows kończy proces instalacji. System bez restartu
przechodzi do odpowiedniego trybu działania.

14. Konfiguracja sprzętu W toku instalacji możemy opcjonalnie skonfigurować peryfe-

ria takie jak modem, karta dźwiękowa i drukarka. Konfiguracja tego sprzętu możemy
również wykonać po zakończeniu instalacji uruchamiając program YaST2.

2.5.2

Dostrajanie

1. X Windows Program sax2 konfiguruje serwer XFree 4.0.3 zapisując konfigurację w

/etc/X11/XF86Config. Jeżeli serwer z serii nam nie odpowiada konfigurację XFree
3.3.6 wykonujemy programem sax. Niezbedne pakiety zostaną automatyczne załado-
wane z nośnika. Koniecznie należy znać zakresy częstotliwości odchylania pionowego i
poziomego monitora. Konfigurowane są następujące elementy:

• karta grafiki (automatycznie),

• monitor (automatycznie)

• rodzdzielczość i liczba bitów na piksel,

2. Konfiguracja drukarki. W okienku terminala uruchamiamy yast2 lub wybieramy

K→ SuSE→ System→ Configuration→ YaST2 W sekcji Hardware wybieramy Printer.
Dla drukarki definiujemy nazwę kolejki, sterownik, rozmiar papieru, itd.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

32

WYKŁAD 2. INSTALACJA

3. Konfiguracja modemu. W okienku terminala uruchamiamy yast2 lub wybieramy

K→ SuSE→ System→ Configuration→ YaST2 W sekcji Network/Basic wybieramy
Modem configuration.

4. Konfiguracja karty sieciowej. W okienku terminala uruchamiamy yast2 lub wy-

bieramy K→ SuSE→ System→ Configuration→ YaST2 W sekcji Network/Basic wy-
bieramy Network Card Configuration. Karta ethernet może być skonfigurowana auto-
matycznie jeżeli w sieci lokalnej znajduje się serwer DHCP lub statycznie. W drugim
przypadku następujące parametry musimy dostać od administratora sieci: numer IP,
netmask, hostaname, domainname, gateway IP, server DNS główny i ew. zapasowe.
Zaznaczamy aktywację interfejsu przy starcie systemu.

5. Konfiguracja karty dźwiękowej W okienku terminala uruchamiamy yast2 lub wy-

bieramy K→ SuSE→ System→ Configuration→ YaST2 W sekcji Hardware wybieramy
Sound.

6. Dogrywamy lokalizację KDE. W okienku terminala uruchamiamy yast2 lub wy-

bieramy K→ SuSE→ System→ Configuration→ YaST2 W sekcji Software wybieramy
moduł Install/Remove Software. Ważne aby w momencie uruchomienia modułu pierw-
sza płyta zestawu była włożona do napędu CD. Wybieramy przycisk Search i wpi-
sujemy kde-i18n. Z listy wyświetlonych pakietów zaznaczamy do instalacji (podwójne
klinięcie) kde-i18n-pl. Wybór zatwierdzamy przyciskiem OK.

7. Polska czczionka na konsoli Uruchamiamy program yast2, wybieramy zakładkę

misc, a następnie przycisk RC-Config Editor. Wybieramy zakładkę Base-Administation→
Console→ console font. Jako wartość zmiennej wpisujemy lat2-16.psfu. Nowe ustawie-
nia będą obowiązywały dopiero po restarcie systemu. Aby wymienić font na konsoli w
uruchomionym systemie w terminalu wpisujemy /etc/init.d/kbd restart.

8. Polski język w sytemie. Uruchamiamy program yast2, wybieramy zakładkę misc, a

następnie przycisk RC-Config Editor. Wybieramy zakładkę Base-Administation→ Lo-
calisation. Do zmiennych rc lang i rc lc * wpisujemy wartość pl PL. Jeżeli lokalizacja
systemu ma również obowiązywać dla użytkownika root to do zmiennej root uses lang
również wpisujemy pl PL.

9. KDE po polsku dla root’a. Wybieramy K→ Preferences → Personalization→ Coun-

try and Language. Ustawiamy polski język oraz kodowanie ISO 8859-2. Wylogowujemy
się z KDE.

10. Polskie teksty w graficznym ekranie logowania. W okienku K→ Preferences→

System→ Login Menager. wybieramy Country: Polska i czczionki z kodowaniem ISO
8859-2.

11. Konfiguracja czczionki terminala. Uruchamiamy terminal: K→ Terminale→ Ter-

minal. W okienku Settings→ Czczionka→ Definiuj wybieramy misc-fixed o rozmiarze

Piotr Zawadzki

background image

2.5. SUSE 7.2

33

16 i kodowaniu ISO 8859-2. Rozmiar terminala dostosowujemy poleceniem Settings→
Rozmiar→ 80x25 (ibmpc). Zmiany zachowujemy poleceniem Settings→ Save settings.

12. Konfiguracja Netscape. Uruchamiamy Netscape (K→ SuSE→ Internet→ WWW →

Netscape Communicator). Dodajemy język polski w Edit→ Preferences→ Naviga-
tor→ Languages. Strony WWW zawierajace polskie znaki narodowe drukujemy (Fi-
le→ Print) komendą

ogonkify -AT -N | lpr

lub drukujemy do pliku netscape.ps i przetwarzamy go komendą

ogonkify -AT -N netscape.ps > netscape-pl.ps

Wynik konwersji sprawdzamy przeglądarką gv

gv netscape-pl.ps

13. Aktualizacje i poprawki. Aktualizacje, poprawki i dodatkowe pakiety można znaleźć

pod adresem ftp://ftp.task.gda.pl/pub/linux/SuSE-Linux/i386/

2.5.3

Błędy i niedoróbki

1. Podczas inicjalizacji sieci przez DHCP nie jest aktualizowana nazwa hosta na podsta-

wie wpisu w DNS’ie. Poniższy skrypt należy umieścić w skryptach startowych systemu,
tuż za inicjalizacją sieci.

#!/bin/sh
DEVICE=eth0
IPADDR=‘LANG= LC_ALL= ifconfig $DEVICE | grep ’inet addr’ |

awk -F: ’{ print $2 } ’ | awk ’{ print $1 }’‘

FQHOSTNAME=‘LANG= LC_ALL= host $IPADDR | awk ’{print $5}’‘
HOST=‘echo $FQHOSTNAME | sed ’s/\..*\.//’‘
DOMAIN=‘echo $FQHOSTNAME | sed ’s/^[^\.]*\.//’ | sed ’s/\.$//’‘
echo $IPADDR
echo $FQHOSTNAME
echo $HOST
echo $DOMAIN

hostname $FQHOSTNAME
echo "$HOST" > /etc/HOSTNAME
if ! grep search /etc/resolv.conf >/dev/null 2>&1; then

echo "search $DOMAIN" >> /etc/resolv.conf

fi

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

34

WYKŁAD 2. INSTALACJA

2.6

Wydruki z własnych programów

Najlepiej drukować do postscriptu. Jeżeli korzystamy z polskich fontów (ISO-8859-2) to

najlepiej bezpośrednio dołaczyć je do pliku wynikowego. Musimy dysponować wersją źródło-
wą fontu (pliki z rozszerzeniem *.pfa) Oto fragment programu w C++ generującego wyjście
w postscripcie korzystającego z polskich fontów Courier

#define FONT_NORMAL "Courier"
#define FONT_NORMAL_FILE "cour-iso2.pfa"
#define FONT_BOLD "Courier-Bold"
#define FONT_BOLD_FILE "courb-iso2.pfa"

// wygeneruj nagłówek pliku
cout << "%!PS-Adobe-2.0" << endl ;
copyfile(FONT_NORMAL_FILE,cout) ;
cout << endl ;
copyfile(FONT_BOLD_FILE,cout) ;
cout << endl ;
// wybierz font
cout << "/" << FONT_NORMAL << " findfont 12 scalefont setfont" << endl ;
// teksty
.........
// zmień font
cout << "/" << FONT_BOLD << " findfont 12 scalefont setfont" << endl ;
// teksty
.........

Piotr Zawadzki

background image

Wykład 3

Elementy systemu

3.1

Użytkownicy sytemu

Linux jest systemem wielodostępnym. W jednym czasie może więc z zasobów stacji robo-

czej korzystać wiele osób. Aby osoba mogła uzykać do zasobów musi mieć założone tzw. kon-
to. Konto identyfikowane jest przez nazwę, inaczej określaną mianem użytkownika. Dostęp do
konta uzyskuje się po podaniu właściwego hasła. Z kontem związanych jest szreg informacji
o charakterze administracyjnym. Dla każdego użytkownika (konta) przydzielony jest katalog
domowy. Właściciel konta ma prawo tworzenia, zmieniania i niszczenia plików w tym ka-
talogu. W prawidłowo skonfigurowanym systemie użytkownik nie powinien mieć możliwości
zmiany plików poza swoim katalogiem domowych. Z kontem użytkownika może być związane
ograniczenie wykorzystania przestrzeni dyskowej, tzw. quota.

Użytkownicy systemu mogą mieć różne prawa. Aby ułatwić zarządzanie dostępem do

zasobów systemu wprowadzono pojęcie grupy. Grupa to po prostu podzbiór użytkowników,
która ma pewne szczególne prawa, np. dostęp do stacji CD-ROM. Użytkownik może należeć
do wielu grup. Prawa użytkownika należącego do wielu grup są suma praw przydzielonych
poszczególnym grupom.

Wykaz użytkowników systemu znajduje się w pliku /etc/passwd.

pz:x:501:501:Piotr Zawadzki:/users/pz:/bin/bash

Obok nazwy użytkownika określone są tam: dane identyfikacyjne takie jak nazwisko, telefon,
itp. oraz katalog domowy. W starszych systemach plik ten zawierał również zaszyfrowane
hasła użytkowników. Obecnie praktykuje się umieszczania zaszyfrowanych haseł w pliku
/etc/shadow, do którego dostęp ma jedynie administrator systemu.

pz:p2SxDhYqIK/j2:11592:0:99999:7:0::

W pliku /etc/group zawarte jest przyporządkowanie użytkowników systemu do grup.

Piotr Zawadzki

35

background image

36

WYKŁAD 3. ELEMENTY SYSTEMU

3.2

Pliki

Z punktu widzenia użytkownika systemu przestrzeń dyskowa jest zbiorem plików. Porzą-

dek i hierarchiczną strukturę w zbiorze plików zapewniają katalogi. Kopiowanie, przesuwanie
i usuwanie plików zapewniają komendy cp, mv, rm.

3.2.1

Atrybuty plików

Każdy plik i katalog ma przyporządkowanego użytkownika i grupę. Często mówi się, że

plik należy do użytkownika i grupy. Do zmiany przyporządkowania służy komenda chown.
Każdy plik i katalog ma przydzielone prawa do odczytu, zapisu i wykonania. Osobny zestaw
praw przydzielony jest właścicielowi, grupie oraz pozostałym użytkownikom systemu. Tak
więc prawa do pliku lub katalogu kontrolowane są przez 9 bitów. Prawa dostępu do pliku
ustala się komendą chmod. Znaczenie atrybutu wykonywalności, oraz praw do odczytu i za-
pisu dla zwykłych plików jest oczywiste. Dla katalogów interpretacja praw jest następująca:
atrybut wykonywalności oznacza możliwość przejścia do katalogu (np. komendą cd), prawo
do odczytu oznacza możliwość wylistowania zawartości katalogu (np. komendą ls), a prawo
do zapisu oznacza możliwość tworzenia plików w katalogu (np. komendą touch).

3.2.2

Dowiązania symboliczne

Jak zauważyliśmy na wstępie system plików pozwala na zarządzanie przestrzenią dysko-

wą poprzez pojęcia plików i katalogów. O pliku można w pierwszym przybliżeniu myśleć jak
o dowiązaniu określonej nazwy do fragmentu przestrzeni dysku. W Linuksowych systemach
plików (ext2, ext3, reiserfs) do określonego fragmentu przestrzeni dyskowej można utwo-
rzyć wiele dowiązań, lub inaczej mówiąc, można jej nadać wiele nazw. Poprzez wskazanie do
tego samego fragmentu dysku istnieje ścisły związek między plikami. Związek ten nazywamy
twardym dowiązaniem (ang. hardlink ). Zmiany naniesione w jednym z plików są natychmiast
widoczne w drugim. Kontrola nad danym fragmentem przestrzeni dyskowej jest zachowana
tak długo, jak długo przypisana jest do niego co najmniej jedna nazwa, a kasowanie pliku
polega jedynie na usunięciu dowiązania o ile tylko nie jest to ostatnie wskazanie na plik.
Sama istota dowiązań twrdych wymaga, aby oba powiązane ze sobą pliki należały do tego
samego pliku. Do tworzenia dowiązań twardych służy komenda ln.

Istnieje jeszcze jeden typ dowiązań, tzw. dowiązania symboliczne (ang. symbolic link ). Do-

wiązanie symboliczne realizowane są niejako w wyższej warstwie systemu plików. W pierw-
szym przybliżeniu o dowiązaniu symbolicznym można myśleć jako o wskaźniku do nazwy
pliku. Oznacza to, że utworzenie dowiązania symbolicznego wymaga zużycia dodatkowej
przestrzeni dyskowej (wskaźnik przechowuje co najmniej nazwę pliku który wskazuje). Nie-
wątpliwą zaletą dowiązań symbolicznych jest możliwość rozmieszczenia dowiązań na rozłącz-
nych systemach plików.

Piotr Zawadzki

background image

3.3. KONTROLA URZĄDZEŃ ZEWNĘTRZNYCH

37

3.2.3

Kontrola montowania systemów plików

W Linuksie nie ma pojęcia napędów dysków. Systemy plików umieszczone na urządze-

niach blokowych mogą być integrowane z głównym drzewem katalogów przy użyciu komen-
dy mount. Komenda mount wymaga podania typu systemu plików na urządzeniu, nazwy
urządzenia blokowego oraz katalogu w którym będzie widoczna zawartość katalogu. Jednak
każdorazowe montowanie niezbędnych systemów plików po uruchomieniu systemu byłoby
bardzo uciążliwe. Do automatyzacji procesu montowania systemów plików wykorzystuje się
plik /etc/fstab. W pliku tym zawarte są niezbędne dane do wykonania procesu montowa-
nia uzupełnione szeregiem pożytecznych opcji. W pliku /etc/fstab podaje się m.in. czy na
systemie plików obowiązuje kontrola przydziału przestrzeni dyskowej, czy integralność sys-
temu plików powinna być sprawdzana po nieprawidłowym zakończeniu pracy systemu, czy
wreszczie system plików może być zamontowany przez nieuprzywilejowanego użytkownika.
Montowanie systemów plików określonych w /etc/fstab jest bardzo uproszczone, bowiem
komendzie mount wystarczy przekazać nazwę punktu montowania. Pozostałe są ustalane na
podstawie pliku /etc/fstab.

/dev/hda1 /mnt/windows vfat user,exec,umask=0,codepage=852,iocharset=iso8859-2 0/dev/hda3 swap swap defaults 0 0
/dev/hda5 /users ext2 defaults 1 2
/dev/fd0 /mnt/floppy vfat noauto,owner 0 0

Obok tradycyjnego mechanizmu montowania systemu plików jadro Linuksa wyposażone jest
w mechanizm supermount. Mechanizm ten pozwala na wymianę płyt CD i dyskietek bez
uprzedniego montowania i odmontowania, które to operacje wykonywane są przez jądro gdy
jest to konieczne. Wadą tego podejścia jest wyłączenie buforowania dla tak udostępnionych
systemów plików.

/mnt/cdrom /mnt/cdrom supermount fs=iso9660,dev=/dev/cdrom 0 0
/mnt/zip /mnt/zip supermount user,fs=vfat,dev=/dev/zip 0 0

3.3

Kontrola urządzeń zewnętrznych

Komunikacja z urządzeniem zewnętrznym wymaga wykonania następujących kroków: in-

stalacji sterownika do urządzenia zapewniającego jednolity interfejs dla danej klasy urządzeń
oraz przekazywania i odbierania danych interpretowanych przez sterownik.

3.3.1

Moduły jądra

W starszych wersjach Linuksa sterwonik urządzenia musiał być wkompilowny w jądro.

W praktyce oznaczało to, że w zasadzie po instalacji systemu należało wykonać rekompilację
jądra aby umieścić w nim sterowniki do posiadanego sprzętu i wyrzucić balast zajmujący
pamięć RAM, jakim były sterowniki do pozostałaych urządzeń. Obecnie jądro Linuksa ma
budowę modułową. Oznacza to, że elementy jądra mogą być ładowane i usuwane z pamięci

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

38

WYKŁAD 3. ELEMENTY SYSTEMU

w czasie działania systemu. Do zarządzania modułami służą komendy lsmod, insmod i rmmod.
Moduły jądra są ze wzajemnie ze sobą powiązane i poprawne działanie niektórych modułów
wymaga załadowania innych. Ładowanie modułów komendą insmod nie uwzględnia zależno-
ści międzymodułowych, co powoduje, że użycie w/w komendy jest w niektórych przypadkach
bardzo utrudnione.

Zarządzanie modułami z uwzględnieniem zależności umożliwiają komendy depmod i modprobe.

Pierwsza z nich bada wzjemne zależności i zapisuje je w pliku /lib/modules/<wersja jądra>-
/modules.dep. Zazwyczaj baza danych zawarta w tym pliku jest budowana przy każdora-
zowym starcie systemu. Druga z komend jest odpowiedzialna jest za ładowanie i usuwanie
modułów z pamięci z uwzględnieniem zależności ustalonych przez depmod.

Jądro systemowe zapewnia abstrakcję obsługi wielu typów urządzeń, np. kart sieciowych

Ethernet, strowników SCSI, kart dźwiękowych, kart telewizyjnych. Do obsługi tych urządzeń
jądro korzysta z wewnętrznych nazw tych interfejsów. I tak pierwszej karcie sieciowej odpo-
wiada urządzenie o nazwie eth0, drugiej – eth1, sterownikowi SCSI – scsi hostadapter,
pierwszej karcie dźwiękowej – sound-slot-0, drugiej – sound-slot-1, karcie telewizyjnej –
char-major-81.

alias scsi_hostadapter ncr53c8xx
alias char-major-81 bttv
alias sound-slot-0 opl3sa2
alias synth0 opl3
options opl3 io=0x388
options opl3sa2 isapnp=1

Gdy moduł ładowany jest ręcznie kod zawarty w module informuje jądro do jakiej klasy nale-
ży moduł. Jednak ładowanie ręczne modułów przy każdorazowym starcie systemu może być
uciążliwe. Ponadto załadowane moduły pozostają w pamięci niezależnie od tego czy są uży-
wane czy nie. W Linuksie można zorganizować ładowanie modułów „na żądanie”, tj. moduł
jest ładowany gdy jądro zamierza skorzystać z usług urządzenia danej klasy i usuwany, gdy
pozostaje przez pewien zadany czas w bezczynności. Na przykład gdy jądro chce skomuniko-
wać się z urządzeniem danej klasy to żąda usługi od odpowiadającego urządzniu interfejsu,
np. aby wysłać ramke do sieci Ethernet, żąda odpowiedniej usługi od interfejsu eth0. Jednak
konkretny sterownik zapewniający obsługę urządzenia zależny jest od konkretnych rozwiązań
sprzętowych. Stad istnieje wiele sterowników obsługujących różny sprzęt a zapewniających
jednolity interfejs dla jądra systemowego. Do ustalenia związku między abstrakcyjnym inter-
fejsem urządzenia danej klasy a konkretnym sterownikiem służy plik /etc/modules.conf.
Inaczej mówiąc, w pliku tym znajduje się informacja który moduł odpowiedzialny jest za
obsługę danego interfejsu jądra. System wyposażony w taką informację może ładować da-
ny sterownik tylko gdy z niego korzysta. Sterowniki nie używane mogą być automatycznie
usunięte z pamięci.

Piotr Zawadzki

background image

3.4. PROCESY

39

3.3.2

Pliki urządzeń

Z punkyu widzenia jądra sterwnik realizuje określonu interfejs. Zgdonie z filozofią sys-

temu, w którym virtualnie wszystko jest plikiem, komunikacja programów z urządzeniami
zewnętrznymi odbywa się poprzez pliki. Każdemu urzązdeniu przypisany jest odpowied-
ni plik. Jeżeli następuje próba zapisu lub odczytu z pliku urządzenia, zadaniem jądra jest
sprawdzenie czy dane moze być obsłużone i ewentualne załadowanie sterownika na podstawie
zawartości /etc/modules.conf.

Pliki specjalne odpowiedzialne za obsługę urządzeń znajdują się w katalogu /dev. Naj-

ważniejszym podziałem jest podział na urządzenia blokowe i znakowe. W każdej z tych grup
urządzenia identyfikowane są przez dwa bajtowe numery: główny (ang. major ) i pomocniczy
(ang. minor ). Pierwszy z numerów identyfikuje typ urządzenia (karta sieciowa, karta dźwię-
kowa, itd.) lub inaczej mówiąc rodzaj interfejsu, drugi zaś jest numerem kolejnym urządzenia
w danej klasie. Przypisanie numerów do klas urządzeń można znaleźć w pliku /usr/src/-
linux/Documentation/devices.txt. Pliki urządzeń tworzy się komendą mknod.

3.4

Procesy

Linux jest systemem wielozadaniowym, tzn. może w nim pracować wiele programów jed-

nocześnie. Sytem operacyjny każdemu programowi przydziela chroniony obszar pamięci (inny
proces nie ma dostępu do tego obszaru pamięci) oraz część czasu procesora. W terminologii
UN*X’a każdy uruchomiony program nazywamy procesem. Uruchomienie procesu odbywa
się zawsze za pośrednictwem innego procesu. Proces odpowiedzialny za uruchomienie dane-
go procesu nazywany jest procesem przodkiem, natomiast proces uruchomiony – procesem
potomnym. Każdy proces w systemie ma przydzielony swój identyfikator, tzw. PID. Prawa
procesu w systemie są co najwyżej takie, jak prawa użytkownika który go uruchomił. Aby
proces miał większe prawa, a dokładniej prawa właściciela lub grupy posiadającej plik z pro-
gramem, plik ten musi mieć ustawiony atrybut SUID i/lub GUID. Mimo iż istnienie progra-
mów z takimi strybutami jest w systemie niezbędne, to stanowią one potencjalne zagrożenie
dla bezpieczeństwa systemu. Inteligentne wykorzystanie błędów w programach z atrybuta-
mi SUID i GUID może być użyte do powiększenia swoich praw w systemie, w szczególnym
przypadku – uzyskania przywilejów administratora. Procesy uruchomione w systemie spraw-
dzamy komendą ps, a podział czasu procesrora pomiędzy procesy podaje komenda top.

Z procesem można komunikować się wysyłając do niego sygnały (UN*X’owy odpowiednik

przewań). Do wysyłania sygnałów służy komenda kill, Aby zatrzymać działanie procesu
należy wysłać do niego sygnał SIGTERM lub SIGKILL.

3.5

Interfejs użytkownika

Komplet klawiatura, mysz, monitor mogą być w Linuksie używane jednocześnie do pro-

wadzenia wielu sesji. Jest to możliwe dzięki koncepcji konsoli wirtualnej. Konsola wirtualna

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

40

WYKŁAD 3. ELEMENTY SYSTEMU

moze być obsługiwana w trybie tekstowym lub graficznym. Zdarzenia wejścia/wyjścia obsłu-
giwane są przez konsolę bieżącą. Przełączanie między konsolami w trybie tekstowym wyko-
nujemy klawiszami ¡Ctrl¿ ¡Fx¿ gdzie x oznacza numer konsoli. Liczba konsoli tekstowych jest
konfigurowalna. Dystrybucje Linuksa zazwyczaj są skonfigurowane na 6 konsoli tekstowych.
Pozostałe konsole tj. o numerach większych od 6, mogą być wykorzystywane jako konsole
graficzne. Konsola inicjowana jest do trybu graficznego przez system X Window. Przełą-
czanie między konsolami w trybie graficznym realizuje kombinacja klawiszy ¡Ctrl¿¡Alt¿¡Fx¿
gdzie ponownie x oznacza numer konsoli. Powyższa kombinacja pozowala również na prze-
łączanie się między trybem tekstowym i graficznym.

3.5.1

Logowanie do systemu

Logowanie do systemu może odbywać się w trybie tekstowym (na konsolach od 1 do 6)

lub w trybie graficznym na konsoli 7. konfigurację konsoli omówimy bardziej szczegółowo
podczas omawiania programu init.

Po zalogowaniu w trybie tekstowym użytkownik wydaje korzystając z interfejsu powłoki.

Powłoka jest UN*X’owym odpowiednikiem programu DOS’owego command.com. Jednak w
Linuksie mamy do wyboru kilka różnych powłok, z których najbardziej popularne to bash
i tcsh. Linuksowe powłoki wyposażone są język programowania (specyficzny dla danej po-
włoki) pozwalający na realizację działań warunkowych, pętli, itp.

Zarządzanie plikami z poziomu powłoki jest dość uciążliwe, dlatego dobrze jest skorzystać

z programu mc. Jest to program bardzo podobny w idei działania do programu Norton
Commander.

Pracując w trybie tekstowym możemy w dowolnym momencie uruchomić graficzny inter-

fejs użytkownika komendą startx. Graficzny interfejs realizuje serwer X Windows realizowa-
ny w ramach projektu XFree86. Sam serwer jest jedynie obszarem ekranu na którym różne
programy mogą umieszczać dane. Środowisko okienkowe, tj. przesuwanie, zamykanie reali-
zuje następna warstwa oprogramowania nazywana zarządcą okien (ang. Window Manager ).
Istnieje wiele programów pełniących funkcje zarządcy okien. Najważniejsze z nich to Win-
dowMaker, fvwm, AfterStep. Obok zarządców okien powstały dwa projekty, których zada-
niem jest stworzenie graficznego środowiska pracy, obejmujące programy pocztowe, zarządcę
plików, przeglądarkę WWW, programy typu PIM (ang. Personal Information Management ).
Projekty te to GNOME i KDE rozprowadzone obecenie z większością dystrybucji.

Graficzny zarządca logowania XDM (lub jeden z odpowiedników KDM, GDM)

Piotr Zawadzki

background image

Wykład 4

Start systemu

4.1

Ładowanie jądra sytemu

Najczęstszą metodą bootowania Linuksa jest korzystanie z LILO (ang. LInux LOader).

LILO jest programem który pozwala na wybór systemu opracyjnego podczas startu systemu.

Po włączeniu zasilania i rozpoznaniu zainstalowanych urządzeń BIOS usiłuje uruchomić

program ładujący (wg. wskazań ustawionych w SETUP). Zazwyczej urządzeniem z które-
go będzie ładowany program ładujący jest pierwszy dysk na pierwszym kontrolerze (choć
wiele BIOS’ów pozwala obecnie na wybór innego dysku), czyli w terminologii Linuksowej
/dev/hda. Najpierw kontrola przekazywana jest do programu zawartego w pierwszym sek-
torze urządzenia z którego następuje start. Pierwszy sektor na dysku twardym nosi nazwę
Master Boot Record (MBR). W przypadku systemów operacyjnych producenta „wiodącego”
na rynku oprogramowania program z MBR przekazuje kontrolę do programu zawartego w
pierwszym sektorze (tzw. boot sector) partycji oznaczonej jako aktywna (ew. bootable).

LILO może być zainstalowane zarówno w MBR, jak i pierwszym sektorze aktywnej par-

tycji. Decyzja o miejscu instalacji jest podejmowana w czasie wstępnej konfiguracji systemu.
Ewentualne zmiany mogą być zawsze wprowadzone ręcznie w pliku /etc/lilo.conf lub przy
użyciu programu konfiguracyjnego zależnego od dytsrybucji (np. linuxconf w dystrybucji
RedHat). Należy pamiętać, że plik /etc/lilo.conf nie jest plikiem konfiguracyjnym progra-
mu ładującego, a jedynie opisem jak program ładujący ma być skonfigurowany w systemie.
Do utworzenia i/lub aktualizacji opcji programu ładującego służy komenda /sbin/lilo. Po
jakiejkolwiek zmianie /etc/lilo.conf należy więc uruchomić /sbin/lilo. Przykładowy
plik konfiguracyjny dla lilo zamieszczono poniżej

boot = /dev/hda
prompt
timeout = 500
read-only
default = linux
image = /boot/vmlinuz-2.2.14-5.0

label = linux

Piotr Zawadzki

41

background image

42

WYKŁAD 4. START SYSTEMU

root = /dev/hda6

other = /dev/hda3

label = win

Opcja boot definiuje gdzie będzie zainstalowany program ładujący. Ustawienie /dev/hda

oznacza MBR pierwszego dysku na pierwszym kontrolerze. Przykładowe inne dozwolone
ustawienie to /dev/hda1 oznaczające pierwszy sektor pierwszej partycji. Opcja prompt ozna-
cza, że zostanie wyświetlone zaproszenie do wyboru systemu operacyjnego w postaci LILO:.
Opcja timeout określa czas (w milisekundach) na reakcję użytkownika po wyświetleniu za-
proszenia. Przy braku reakcji zostanie uruchomiony system zdefiniowany opcją default. Opcja
read-only ma wpływ jedynie na proces ładowania Linuksa, i oznacza, że podczas startu sys-
temu jądro powinno zamontować system plików „/” w trybie tylko do odczytu

1

. Dlasza część

pliku podzielona jest na tzw. sekcje. Sekcja zaczyna się słowem image lub other i kończy po-
czątkiem następnej sekcji lub końcem pliku. Sekcja image definiuje lokalizację jądra systemu
orza jego etykietę podawaną podczas wyboru. Następnie podawana jest lista parametrów
przekazanych do jądra systemu przy jego uruchomieniu. W podanym przykładzie opcja ro-
ot definiuje system plików który będzie zamontowany jako /. Parametry przekazywane do
jądra można zmienić podczas startu systemu w linii wyboru systemu operacyjnego np. aby
partycja /dev/hdc7 była używana jako system plików / musimy wpisać

LILO: linux root=/dev/hdc7

Sekcja other definuje etykietę do uruchomienia systemu operacyjnego innego niż Linux,

oraz partycję z której zostanie uruchomiony program ładujący dany system. Oczywiście
sekcji other i image może być wiele. Opis wszystkich możliwych parametrów jądra znajduje
się w pliku kernel-parameters.txt w katalogu /usr/src/linux/Documentation

2

4.2

Proces init

Jądro po załadowaniu się do pamięci, rozpoznaniu zainstalowanego sprzętu i zamonto-

waniu partycji „/” jako read-only uruchamia proces init. init jest przodkiem wszystkich
procesów uruchomionych w systemie. Jest to zarazem jedyny proces który nie ma przod-
ka. Proces init ma zawsze PID = 1. Plikiem konfiguracyjnym procesu init jest plik
/etc/inittab. Start systemu odbywa się poprzez interpretację właśnie tego pliku. Tak więc
plik /etc/inittab jest odpowiednikiem pliku CONFIG.SYS z systemów operacyjnych pewne-
go „wiodącego” na rynku producenta. Proces init może uruchomić system w kilku trybach
(tzw. poziomach uruchomienia, ang. runlevel ). Tryby mają oznaczenia cyfrowe od 0 do 6.
Tryby pracy 0,1 i 6 są zarezerwowane: 0 – zatrzymanie systemu (tzn. aby zatrzymać system
musimy zarządać od init uruchomienia systemu w trybie 0), 1 – praca w trybie jednego
użytkownika, 6 – ponowne uruchomienie (reboot) systemu. Pozostałe tryby wykorzystywane
są różnie w zależności od dystrybucji.

1

Dopiero w po sprawdzeniu systemu plików jest on montowany w trybie do odczytu i zapisu.

2

Należy wcześniej zainstalować pakiet kernel-doc.

Piotr Zawadzki

background image

4.2. PROCES INIT

43

Składnia pliku /etc/inittab opisana jest na stronie pomocy (man inittab). Elementy

pliku /etc/inittab mają następującą składnię

id:runlevels:action:process

gdzie id jest dowolnym dwuliterowym identyfikatorem, runlevels listą poziomów uru-

chomienia w których dany element pliku jest aktywny (np. wpis 0123 oznacza, że dany
element będzie aktywny w poziomach uruchomienia 0, 1, 2 i 3), action opisuje jakie ma
podejmować xinit przy wykonywaniu programu wymienionego w polu process. Dozwolone
wartości pola action to

initdefault Ustawienie typowego poziomu uruchomienia. Pole process jest ignorowane,

natomiast w polu runlevels powinien występować oznaczenie tylko jednego poziomu
uruchomienia.

respawn Wymieniony proces jest uruchamiany i init przetwarza plik konfiguracyjny nie

czekając na zakończenie jego działania. Gdy proces zakończy swoje działanie jest au-
tomatycznie uruchamiany ponownie.

wait Proces zostanie uruchomiony jeden raz i przetwarzanie pliku /etc/inittab zostanie

wstrzymane dopóki proces nie zakończy swojego działania.

once Proces jest uruchamiany jeden raz. Po uruchomieniu procesu przetwarzanie /etc/inittab

jest kontynuowane.

boot Proces jest uruchamiany tylko podczas startu systemu. Pole zawierające poziomy uru-

chomienia jest ignorowane, proces nie jest uruchamiany podczas zmiany poziomu uru-
chomienia działającego systemu.

bootwait Podobnie jak boot, z tym, że przetwarzanie /etc/inittab jest wznawiane po

zakończeniu procesu.

sysinit To samo co bootwait.

ctlraltdel proces jest wykonywany gdy naciśnięte zostaną „trzy magiczne klawisze”.

powerfail Proces jest wykonywany gdy system otrzyma sygnał od UPS o braku zasilania.

powerok Proces jest wykonywany gdy po krótkotrwałym braku zasilania zostaje ono przy-

wrócone.

Dalej przeanalizujemy zawartość /etc/inittab z dystrybucji RedHat 6.2. W systemie Re-
dHat oprócz trybów zarezerwowanych wykorzystywane są następujące poziomy uruchomie-
nia:

2 tryb wielodostępny z wyłączonym NFS,

3 tryb 2 + NFS,

5 tryb 3 + grafczny interfejs logowania.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

44

WYKŁAD 4. START SYSTEMU

4.2.1

Inicjalizacja systemu

Przedstawione niżej elementy pliku /etc/initab są odpowiedzialne za podstawową in-

cjalizację sytemu.

id:5:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
ud::once:/sbin/update

Widzimy, że w podanym przykładzie standardowy tryb uruchomienia to 5. Następnie

uruchamiany jest proces /etc/rc.d/rc.sysinit (odpowiednik AUTOEXEC.BAT). Pro-
ces init czeka, aż rc.sysinit skończy się wykonywać. Następnie wykonywany jest skrypt
/etc/rc.d/rc odpowiedzilany za konfigurację usług specyficznych dla danego poziomu uru-
chomienia. Numer poziomu uruchomienia przekazywany jest do /etc/rc.d/rc jako parametr.
Ostatnim elementem podstawowej konfiguracji jest uruchomienie demonów (programów re-
zydentnych) odpowiedzialnych za zapisywanie buforów dyskowych. Funkcjonalnie, działanie
/sbin/update jest bardzo podobne do działania programu SmartDrive.

4.2.2

Zdarzenia wyjątkowe

Przez zdarzenia wyjątkowe rozumiemy tutaj zdarzenia, które wystepują stosunkowo rzad-

ko i wymagają szybkiej reakcji systemu. Takim zdarzeniom odpowiadają następujące war-
tości pola action: ctrlaltdel. powerfail, powerok.

ca::ctrlaltdel:/sbin/shutdown -t3 -r now
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

Jak widać reakcja na wszystkie te zdarzenia wymaga skorzystania z komendy shutdown.

Znaczenie poszczególnych opcji mażna znaleźć na stronie pomocy (man shutdown). Znaczenie
komend odpowiadających poszczególnym kluczom jest następujące

ctrlaltdel natychmiast ururuchom ponownie komputer.

powerfail poczekaj 2 minuty i zamknij system. Użytkownikom systemu wyślij komunikat

o zaniku mocy.

powerfail zrezygnuj z zamknięcia systemu.

Ostatnie dwa zdarzenia mogą wystąpić w systemie który jest przyłączony do UPS. Komu-
nikację z UPS zapewnia demon powerd.

Piotr Zawadzki

background image

4.3. SKRYPTY STARTOWE

45

4.2.3

Logowanie do systemu

Do systemu możemy logować się zarówno w trybie tekstowym jak i graficznym.

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
x:5:respawn:/etc/X11/prefdm -nodaemon

Obsługę konsol tekstowych realizuje program mingetty

3

. Program rezerwuje odpowied-

nie urządzenie /dev/tty? odpowiadające konsoli tekstowej, wyświetla na niej plik /etc/issue
i uruchamia program login odpowiedzialny za uwierzytelnienie użytkownika. W podanym
przykładzie inicjowanych jest 6 konsol tekstowych (id = 1 ÷ 6 uruchamianych w poziomach
uruchomienia 2 ÷ 5.

Graficzny interfejs logowania zarówno z lokalnej konsoli, jak i poprzez sieć mogą reali-

zować następujące programy: xdm (XFree86), gdm (GNOME), kdm (KDE). W omawianym
przykładzie uruchamiany jest skrypt /etc/X11/prefdm. Zadaniem tego skryptu jest wybór
i uruchomienie preferowanego w danym systemie menedżera logowania. Preferencje ustalane
są na podstawie zawartości pliku /etc/sysconfig/desktop (patrz rozdział ??).

4.3

Skrypty startowe

W systemie RedHat 6.2 inicjalizacja systemu wzorowana UNIX System V. Pliki startowe

systemu znajdują się w katalogu /etc/rc.d, przy czym

• za konfigurację niezależną od poziomu uruchomienia odpowiedzialne są pliki rc.*,

• skrtypty startowe poszczególnych usług znajdują się w podkatalogu init.d,

• usługi które mają być uruchomione dla danego poziomu uruchomienia są określone

w podkatalogach rc?.d przez umieszczenie dowiązania symbolicznego do odpowied-
niego skryptu z katalogu init.d.

4.3.1

Podstawowa inicjalizacja systemu

Za podstawową konfigurację systemu RedHat 6.2 odpowiedzialny jest skrypt /etc/rc.sysinit.

Oto lista zadań które są realizowane przez ten skrypt.

1. Odczytanie podstawowych parametrów konfiguracyjnych sieci z pliku /etc/sysconfig/network.

3

Logowanie do systemu z terminala podłączonego do portu szeregowego obsługuje program mgetty

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

46

WYKŁAD 4. START SYSTEMU

2. Załadowanie i wykonanie funkcji pomocniczych dla procesu startu systemu z pliku

/etc/rc.d/ init.d/functions. Konfiguracja bootowania systemu znajduje się w pli-
ku /etc/sysconfig/init,

3. Zamontowanie systemu plików proc zapewniającego dostęp do bieżącej konfiguracji

jądra systemu.

4. Ustawienie parametrów jądra systemu poleceniem sysctl na podstawie pliku konfigu-

racyjnego /etc/sysctl.conf. Zazwyczaj ustawiane parametry dotyczą trybu współ-
pracy jądra sytemu z siecią.

5. Na podstawie pliku /etc/sysconfig/clock ustawiany jest zegar systemowy zgodnie

z zadeklarowaną strefą czasową.

6. Inicjowana jest mapa klawiatury. Jeżeli istnieje plik

/etc/sysconfig/console/default.kmap

to jest przyjmowany jako prawidłowa mapa klawiatury. W przeciwnym razie mapa
klawiatury ustalana jest na podstawie zawartości pliku /etc/sysconfig/keyboard.
Dostępne mapy klawiatur można sprawdzić w katalogu /usr/lib/kbd/keymaps/ . Ak-
tywację wybranej mapy klawiatury realizuje komenda loadkeys.

7. Załadowanie fontu ekranowego realizowane jest komendą setsysfont. Nazwę fontu

definiujemy w pliku /etc/sysconfig/i18n przez przypisanie nazwy fontu do zmiennej
SYSFONT. W celu otrzymania nazwy pliku zawartość zmiennej SYSFONT uzupełniana jest
o rozszerzenia *.psf.gz lub *.gz. Plik o tak wygenerowanej nazwie poszukiwany jest
w katalogach

/etc/sysconfig/console/
/usr/lib/kbd/consolefonts/

8. Aktywowanie partycji wymiany.

9. Ustanowienie nazwy hosta.

10. Ustanowienie domeny NIS (ang. Network Information System) jeżeli została skonfigu-

rowana.

11. Następnie sprawdzany jest system plików na urządzeniu zamontowanym jako /. Spraw-

dzenie jest wykonywane komendą fsck (Linuksowy odpowiednik ScanDisk). Opcje dla
komendy ustalane są na podstawie:

• zawartości pliku /fsckoptions, plik zazwyczaj nie istnieje,

Piotr Zawadzki

background image

4.3. SKRYPTY STARTOWE

47

• trybu startu systemu (szeregowy lub kolorowy tj. z wyświetlanymi napisami OK,

FAILED, itp.).

W przypadku poważnych błędów w strukturze plików uruchamiana jest konsola su-
perużytkownika z prośbą o uruchomienie fsck w trybie iteraktywnym. Dla systemów
z aktywnym limitowanym przydziałem przestrzeni dyskowej (ang. quota) wystąpienie
błędów które można było usunąć automatycznie powoduje ustawienie flagi mówiącej
o konieczności sprawdzenia miejsca na dysku zajmowanego przez każdego z użytkowni-
ków. Istnienie pliku /fastboot dezaktywuje sprawdzanie poprawności struktury sys-
temu plików.

12. Inicjacja kart ISA PnP. Incjację kart PnP można wyłączyć przekazując jądru para-

metr nopnp. Do inicjacji kart PnP używana jest komenda isapnp która standardowo
korzysta z pliku konfiguracyjnego /etc/isapnp.conf. Plik konfiguracyjny w dystry-
bucji RedHat jast zazwyczaj tworzony automatycznie. Ręczne utworzenie takiego pliku
jest również możliwe przy użyciu komendy isapnpdump która tworzy plik zawierają-
cy wszelkie możliwe ustawienia kart PnP w systemie. tak wygenerowany plik musimy
poddać edycji wybierając dla każdej z kart bezkonfliktowy przydział przerwań (IRQ),
zakresów portów wejścia i wyjścia (IO ports) oraz kanałów bezpośredniego dostępu do
pamięci (DMA). Plik wygenerowany przez isapnpdump jest bogato komentowany, stąd
stosunkowo łatwo wybrać właściwą konfigurację. Szczegółowy opis składni pliku kon-
figuracyjnego isapnp znajduje się na odpowiedniej stronie podręcznika systemowego
(man isapnp.conf).

13. Przemontowanie systemu plików / do trybu do odczytu i zapisu, oraz aktualizacja pliku

/etc/mtab zawierającego listę aktualnie zamontowanych systemów plików.

14. Sprawdzenie, jeżeli to konieczne, ile miejsca zajmują pliki poszczególnych użytkowni-

ków.

15. Wpisanie nazwy hosta do pliku /etc/HOSTNAME.

16. Statyczne załadowanie modułów jądra obsługujących dźwięk, tj. interfejsy audio, mi-

di. W celu znalezienia nazw modułów obsługujących dane interfejsy przeszukiwany jest
plik /etc/modules. Poszukiwane są tzw. aliasy dla nazw sound-slot-0 (audio pierw-
szej karty dźwiękowej) oraz midi. W ten sposób zidentyfikowane moduły są ładowane
przy użyciu modprobe.

17. Odtworzenie ustawień mixera realizowane jest tylko gdy spełnione są wszystkie trzy

warunki: interfejs audio jest aktywny, istnieje plik /etc/.aumixrc oraz komenda która
z niego korzysta, tj. aumix-minimal.

18. Deaktywacja automatycznego ładowania modułów gdy użytkownik ustawił podczas

startu systemu parametr nomodules.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

48

WYKŁAD 4. START SYSTEMU

19. Wykonanie pliku /etc/rc.d/rc.modules (jeżeli istnieje!). W pliku tym powinny znaj-

dować się komendy ładujące statycznie moduły zdefiniowane przez administratora sys-
temu. Statyczne ładowanie modułów ma sens jedynie gdy chcemy uniknąć narzutu
związanego z dynamicznym ładowaniem.

20. Aktywacja urządzeń RAID, tj. kilku urzadzeń blokowych połączonych w jeden logiczny

system plików (prawdopodobnie z włączonym mirrorowaniem). Informacje nt. róznych
trybów pracy urządzeń RAID można znaleźć pod adresem http://ostenfeld.dk/˜jakob/Software-
RAID.HOWTO Interfejs do urządzeń RAID zapewnia sterownik md.

21. Sprawdzenie lokalnych systemów plików wymienionych w /etc/fstab.

22. Zamontowanie pozostałych lokalnych systemów plików (na podstawie zawartości /etc/fstab)

oraz sprawdzenie obszaru dyskowego zajmowanego przez poszczególnych użytkowników
(gdy przy sprawdzaniu systemu plików wystąpily błędy). Istnienie pliku /fastboot
dezaktywuje sprawdzanie poprawności struktury systemu plików.

23. Jeżeli istnieje plik /.unconfigured przeprowadzana jest konfiguracja systemu obej-

mująca ustawienie: hasła użytkownika root (passwd), parametrów sieci (netconfig),
strefy czasowej (timeconfig), metody uwierzytelniania użytkowników (authconfig),
usług uruchamianych podczas startu (ntsysv),

24. Włączenie mechanizmu limitowania przydziału przestrzeni dyskowej (quota).

25. Usunięcie plików przechowujących informacje między kolejnymi restartami systemu

np. /fastboot.

26. Inicjalizacja plików /var/utmp i /var/wtmp. Pliki te zawierają informację kto i kiedy

zalogował się w systemie (komendy who i last).

27. Inicjalizacja katalogów /var/run oraz /var/lock. Usługi uruchamianie przez skrypty

z init.d zapisują identyfikatory procesów (PID) w katalogu /var/run. Dzieki temu
zatrzymanie usługi jest łatwe, bowiem odpowiedni PID niezbędny dla komendy kill
jest już zapisany w pliku. Jeżeli jakiś proces korzysta z zasobu do którego dostęp
mogą mieć inne procesy, a chcialby mieć ten zasób na wyłączność tworzy w katalogu
/var/lock plik zamykający (ang. lock file). Gdy odpowiedni plik istnieje zasób jest
niedostępny dla innych procesów.

28. Oczyszczenie katalogu /tmp z plików pozostawianych przez XSerwer i PostgreSQL.

29. Inicjalizacja portów szeregowych. Inicjalizacja portów szeregowych powinna znajdo-

wać się w pliku /etc/rc.d/rc.serial. Specjalna inicjalizacja portów szeregowych ma
sens jedynie gdy w komputerze mamy zainstalowaną kartę wieloportową, ew. więcej
niż jeden modem wewnętrzny.

30. Instalacja obsługi streamera, jeżeli jest zainstalowany w systemie.

Piotr Zawadzki

background image

4.3. SKRYPTY STARTOWE

49

31. Utworzenie pliku /boot/kernel.h informującego czy jądro wspiera przetwarzanie rów-

noległe (SMP=1) czy też obsługuje tylko jeden procesor (UP=1).

32. Utworzenie odpowiednich linków symbolicznych w katalogu /boot wiążących pliki

System.map-<numer jądra> z plikiem System.map.

33. Zapis logu bootowania jądra do pliku /var/log/dmesg.

34. Uruchomienie programu getkey w celu sprawdzenia czy wybrano interaktywny tryb

startu systemu.

4.3.2

Inicjalizacja zależna od poziomu uruchomienia

Po zakończeniu wykonywania rc.sysinit proces init uruchamia skrypt /etc/rc.d/rc

przekazując mu jako parametr wartość poziomu uruchomienia. Na podstawie numeru pozio-
mu uruchomienia skrypt rc ustala położenie katalogu zawierającego dowiązania symboliczne
do plików kontrolujących działanie poszczególnych usług (tj. plików z katalogu init.d).

Jako pierwsze wykonywane są dowiązania o nazwach K<numer><nazwa usługi>. Pole nu-

mer jest dwucyfrowe i zapewnia kolejność wykonywania komend. Dla plików zatrzymujących
najpierw wykonywane są pliki o numerach większych. Przed zatrzymaniem usługi sprawdza-
ne jest czy usługa działa (tj. czy istnieje odpowiedni plik w katalogu /var/lock/subsys.
Żądanie zatrzymania usługi jest ignorowane jeżeli odpowiedni plik nie istnieje.

Następnie uruchamiane są skrypty o nazwach S<numer><nazwa usługi>. Tym razem

jako pierwsze wykonywane są pliki z mniejszymi numerami. Przed uruchomieniem usługi
sprawdzane jest czy istnieje plik o odpowiedniej nazwie w katalogu /var/lock/subsys).
Żądanie usługi usługi jest ignorowane jeżeli odpowiedni plik istnieje. Ponadto, w trybie in-
teraktywnym, przed uruchomieniem każdej usługi użytkownik proszony jest o potwierdzenie
jej uruchomienia. Jako ostatni (ma bowiem numer 99) uruchamiana jest usługa local. Jest to
link symboliczny do pliku /etc/rc.d/rc.local co oznacza, że zawartość tego pliku będzie
wykonana jako ostatni element inicjalizacji systemu. W pliku tym znajdują się komendy
aktualizujące pliki /etc/issue i /etc/issue.net. Zawartość tych plików jest wyświetla-
na przed zaproszeniem do zalogowania (słowo login). Plik /etc/issue wyświetlany jest na
konsoli, natomiast /etc/issue.net gdy staramy się uzyskać dostęp do systemu poprzez sieć.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

Wykład 5

Usługi sieciowe

5.1

Interfejsy sieciowe

Podstawowe polecenia służące do konfiguracji i sprawdzania poprawności działania inter-

fejsów sieciowych w systemie to

ifconfig

– służące do aktywizacji, wyłączania oraz sprawdzania stanu interfejsów siecio-

wych,

arp – związane z kartami sieciowymi Ethernet i wyświetlające tablicę translacji adresów IP

na adresy sprzętowe.

netstat – służące do wyświetlania listy aktywnych połączeń,

route – pozwalające na sprawdzenie i ustawienie tablicy routowania.

Z urządzeniem sieciowym jest związana nazwa typu interfejsu zapewnianego przez urzą-

dzenie oraz numer kolejny interfejsu danego typu. Na przykład nazwą interfejsu do sieci
Ethernet jest eth, i kolejne karty sieciowe identyfikowane przez system będą miały nazwy
eth0, eth1, itd. Nazwy interfejsów sieciowych są wbudowane w jądro i nie można ich znaleźć
w katalogu /dev/. Najważniejsze interfejsy to

lo – interfejs urządzenia zapętlającego (ang. loopback device). Jest to interfejs do urządzenia

logiczne (tzn. nie jest wymagany żadna dodatkowa karta w systemie) którego działanie
polega na tym, że wszystkie dane wysłane na interfejs są „zawracane” i mogą być z tego
interfejsu odczytane.

eth<n>

– interfejsy kart do sieci Ethernet, przy czym <n> oznacza numer kolejny karty

sieciowej.

ppp<n> – połączenia PPP.

50

Piotr Zawadzki

background image

5.1. INTERFEJSY SIECIOWE

51

Pierwszym krokiem konfiguracji interfejsu jest załadowanie modułu obsługujacego dany

interfejs. Dla kart sieciowych Ethernet zazwyczaj będziemy mieli skonfigurowane ładowanie
sterownika w razie konieczności. Tak więc w pliku /etc/conf.modules przykładowy wpis
będzie miał postać

alias eth0 ne
options ne irq=5 io=0x300
alias eth1 ne2k-pci

Obsługa kart na magistrali ISA wymaga podania przerwania i portu na którym pracu-

je karta, natomiast karty PCI konfigurują się same. Moduły obsługujące różne typy kart
sieciowych znajdują się w katalogu /lib/modules/<wersja jądra/net/.

Konfiguracja interfejsów sieciowych jest zazwyczaj przeprowadzana w jednym z pierw-

szych skryptów uruchomieniowych systemu. W dystrybucji RedHat zadanie to realizuje
skrypt

/etc/rc.d/init.d/network

W dalszej części tego punktu szczegółowo omówimy jego działanie.
Konfiguracja podstawowych ustawień sieciowych dotyczących całego systemu znajduje się

w pliku /etc/sysconfig/network. W szczególności powinno się tam znajdować ustawienie
zmiennej

NETWORKING=yes

decydujące czy interfejsy sieciowe w systemie będą konfigurowane. Ponadto w pliku

znajdują się definicje nazwy hosta, adresu standardowo używanej bramy oraz nazwa in-
terfejsu który może się z tą bramą komunikować. Za konfigurację poszczególnych interfej-
sów sieciowych odpowiedzialne są skrytpy z katalogu /etc/sysconfig/network-scripts.
Jeżeli w pliku znajdują się wyłącznie wartości parametrów to nazwa rozpoczyna się od
przedrostka ifcfg. Natomiast jeżeli skrypty zawierają dedykowane komendy do „podnie-
sienia” lub „opuszczenia” interfejsu to ich nazwy zaczynają się od przedrostków ifup oraz
ifdown, odpowiednio. Skrypty konfigurujące poszczególne usługi tworzone są przez programy
konfigurujące sieć, tj. netconfig, linuxconf, netcfg. Skrypt /etc/rc.d/init.d/network
sprawdza zainstalowane interfejsy sieciowe i komendą ifup uaktywnia dany interfejs. Skrypt
/sbin/ifup jest dość złożony i nie będziemy go szczegółowo omawiać. Warto jednak zapa-
miętać fakt, że napis

Delaying <nazwa_urządzenia> initialization.

wyświetlony podczas aktywizacji sieci oznacza niepowodzenie konfiguracji danego in-

terfejsu. Jeżeli system obsługuje więcej niż jedną sieć i chemy zbudować odpowiednią ta-
blicę routingu adresy sieci oraz bram do nich prowadzących powinniśmy podać w pliku
/etc/sysconfig/static-routes. Oczywiście najlepiej użyć do tego celu programu konfi-
gurującego linuxconf.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

52

WYKŁAD 5. USŁUGI SIECIOWE

Jeżeli ktoś ma ochotę na „ręczną” konfigurację interfejsów sieciowych to nieoceniona tu

będzie lektura książki Linux Network Administrator Guide rozprowadzanej w formie elektro-
nicznej w ramach projektu Linux Documentation Project. Książka powinna być więc dostępna
na jakimkolwiek kompletnym serwerze z Linuksem, np. ftp://ftp.task.gda.pl/pub/linux/LDP/.

5.2

Konfiguracja usług sieciowych

Aplikacje w internecie pracują wg modelu klient-serwer. Warstwę transportową między

dwoma aplikacjami realizuje protokół TCP lub UDP. Protokół TCP obejmuje mechanizmy
odtwarzania kolejności odbieranych ramek

1

oraz mechanizmy retransmisji zgubionych lub

błędnych danych. W protokole UDP sama aplikacja musi zapewnić mechanizmy kontroli
błędów.

5.2.1

Usługi dostępne w systemie

Wykaz typowych protokołów internetowych znajduje się w pliku /etc/protocols. Znaj-

dziemy tam m.in.:

# Internet (IP) protocols
ip 0 IP # internet protocol, pseudo protocol number
icmp 1 ICMP # internet control message protocol
tcp 6 TCP # transmission control protocol
udp 17 UDP # user datagram protocol

W protokołach warstwy transportowej każda aplikacja komunikująca się poprzez sieć jest

identyfikowana przez numer IP komputera oraz numer portu na którym nasłuchuje i/lub
nadaje. Przestrzeń portów dla protokołów TCP i UDP jest rozdzielna. Serwery (demony)
nasłuchują na określonych portach czy nie ma jakiegoś żądania obsługi, natomiast klienci
łączą się z serwerami informując je o swoich potrzebach. W zasadzie istnieje dowolność
przypisania usług do portów. Jednak w celu standaryzacji i zmniejszenia zamieszania używa
się tzw. dobrze znany portów (ang. well-known ports). Wykaz zawierający przypisanie usług
do portów znajduje się w pliku /etc/services

ftp-data 20/tcp
ftp 21/tcp
fsp 21/udp fspd
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp # SSH Remote Login Protocol
telnet 23/tcp
smtp 25/tcp mail
www 80/tcp http # WorldWideWeb HTTP

1

kolejność po stronie odbiorczej może być inna niż po stronie nadawczej np. na skutek wielodrogowości

Piotr Zawadzki

background image

5.2. KONFIGURACJA USŁUG SIECIOWYCH

53

www 80/udp # HyperText Transfer Protocol
pop-2 109/tcp postoffice # POP version 2
pop-2 109/udp
pop-3 110/tcp # POP version 3
pop-3 110/udp
imap2 143/tcp # Interim Mail Access Proto v2
imap2 143/udp
ipx 213/tcp # IPX
ipx 213/udp
imap3 220/tcp # Interactive Mail Access
imap3 220/udp # Protocol v3

Typowy komputer UNIX-owy jest serwerem wielu usług. W pierwotnej konfiguracji do

każdej usługi uruchomiony był demon, którego jedynym zadaniem był nasłuch na określonym
porcie. Aby oddzielić operację nasłuchu od właściwej obsługi oraz zmniejszyć ilość urucho-
mionych demonów (a tym samym obciążenie systemu i zajętość RAM) wprowadzono demona
inetd (Internet Daemon). Jedynym zadaniem tego demona jest nasłuch na określonym ze-
stawie portów i w przypadku wykrycia próby połączenia na pewien port – uruchomienie
odwiedniego programu usługi. Plik konfiguracyjny tego demona to /etc/inetd.conf, a jego
składnia wygląda następująco

# /etc/inetd.conf:

see inetd(8) for further informations.

#
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
#:STANDARD: These are standard services.
ftp stream tcp nowait root /usr/sbin/in.ftpd
telnet stream tcp nowait root /usr/sbin/in.telnetd

Zazwyczaj demon obsługujacy daną usługę może pracować samodzielnie lub być uru-

chomiony przez inetd. Tryb działania musi być dla obu przypadków nieco inny bowiem
przy uruchumieniu z inetd demon nie musi wykonywać nasłuchu. Aby poinformować ser-
wer w jakim trybie ma działać często wykorzystuje się mechanizm dowiązań symbolicznych
(komenda ln -s), powodując że program serwera będzie istniał w systemie pod dwoma na-
zwami. Przyjęto konwencję, że demony przeznaczone do uruchomienia z inetd mają nazwę
ropoczynającą się od in.* (np. in.telnetd, in.smtp). Dzięki takiej konwencji nazewnictwa
demon może podjąć decyzję w jakim trybie należy pracować sprawdzając wartość argv[0].

Często chcemy ograniczyć dostępność usług do określonej klasy klientów (np. komputerów

z sieci lokalnej). W przedstawionej wyżej konfiguracji inetd każda usługa musiałaby posia-
dać mechanizm kontroli kto ma przyzwolenie do korzystania z niej. Konfiguracja systemu
byłaby bardzo uciążliwa ze względu na olbrzymią liczbę plików do edycji. W celu rozwiąza-
nia powyższego problemu wprowadzono TCP Wrappers, czyli pakiet do autoryzacji klientów
sieciowych. Gdy przychodzi żądanie obsługi, zamiast oryginalnego serwera uruchamiany jest
program tcpd. Gdy klient przejdzie autoryzację z wynikiem pozytywnym uruchamiany jest

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

54

WYKŁAD 5. USŁUGI SIECIOWE

demon danej usługi sieciowej. Program do uruchomienia po pozytywnej autoryzacji podaje
się tcpd jako argument z linii komend. Plik /etc/inetd.conf po wprowadzeniu ww zmian
wygląda następująco

# /etc/inetd.conf:

see inetd(8) for further informations.

#
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
#:STANDARD: These are standard services.
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd
telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd

Autoryzacja klienta odbywa się na podstawie dwóch plików konfiguracyjnych /etc/hosts.allow

i /etc/hosts.deny. Każdy plik zawiera linie w formacie

lista_demonów : lista_klientów [ : komenda_shella ]

gdzie nawiasy [ ] oznaczają opcjonalny składnik. Pola lista demonów i lista klientów

mogą być zastąpione maskami. Dokładny opis składni omawianych plików opisany jest w
stronie manuala hosts access(5). Algorytm autoryzacji przebiega jak następuje

1. Najpierw sprawdzany jest plik hosts.allow. Jeżeli klient zostanie dopasowany do ma-

sek to dostęp do usługi zostaje mu przydzielony.

2. Następnie sprawdzany jest hosts.deny. Jeżeli klient zostanie dopasowany to zostaje

odrzucony.

3. Jeżeli klient nie został znaleziony w żadnym z plików to dostęp zostaje mu przydzielony.

Najczęściej spotykane są dwa schematy konfiguracji

Defensywny W pliku hosts.deny znajduje się wpis ALL:ALL, a w pliku hosts.allow są

wpisane komputery dopuszczone do obsługi.

Otwarty Plik hosts.allow jest pusty a w pliku hosts.deny znajdują się wpisy komputerów

nie dopuszczonych do usług.

5.3

Poczta elektroniczna

Do obsługi poczty elektronicznej wykorzystywane są dwa zasadnicze typy programów:

MTA (Mail Transfer Agent) czyli serwer pocztowy, oraz MUA (Mail User Agent) czyli klient.
Z pocztą elekroniczną związane są trzy protokoły

SMTP Simple Mail Transfer Protocol używany jest do komunikacji między dwoma MTA

oraz między MUA i MTA. Protokołowi SMTP przydzielony jest standardowo port 25.

Piotr Zawadzki

background image

5.3. POCZTA ELEKTRONICZNA

55

POP Post Office Protocol przeznaczony do komunikacji między MUA i MTA. Powszechnie

używana wersja tego protokołu to POP3. Przydzielono jej port 110.

IMAP Interactive Mail Access Protocol pełni te same funkcje co POP. Standardowo serwer

IMAP nasłuchuje na porcie 220.

Oba protokoły POP i IMAP służą jedynie do ściągana poczty ze skrzynek odbiorczych,
zarządzania folderami itp., jeżeli znajdują się one na innym komputerze niż uruchomiony
program pocztowy (MUA).

Aby wysłać pocztę klient ma dwie możliwości: skorzystać z usług lokalnego MTA i zlecić

mu zadanie wysłania (użycie komendy sendmail) lub z usług lokalnego lub zdalnego serwera
SMTP. Aby klienci mogli korzystać z usług zdalnego serwera SMTP do rozsyłania poczty,
to musi on być skonfigurowany jako tzw. relay.

Linux może pracować jako serwer SMTP, POP i IMAP. Najbardziej popularne serwery

SMTP to sendmail, smail oraz qmail. Każdy z tych serwerów ma swoje pliki konfiguracyjne
o specyficznej składni. Ogólnie mówiąc poprawna konfiguracja poczty jest zadaniem złożo-
nym. Na szczęście pakiety dystrybucyjne z MTA zawierają konfigurację która działa dobrze
w olbrzymiej większości przypadków. Plik konfiguracyjny sendmail to /etc/sendmail.cf.
Pliki konfiguracyjne smail znajdują się w katalogu /etc/smail/.

Programów pełniących rolę MUA jest mnóstwo. Pracują one w trybie tekstowym (mail,

mailx, pine) jak również w środowisku okienkowym (xfmail, kmail).

Pierwotnie poczta elektroniczna służyła jedynie do przesyłania wiadomości tekstowych.

W toku postępującej informatyzacji społeczeństwa pojawiła się potrzeba uzupełnienia tekstu
o informację graficzną i dźwiękową – powstał standard MIME (Multimedia Internet Mail
Extensions). Dzięki niemu nadawca i odbiorca mogą między sobą wymieniać dane binarne
zawierające grafikę i dźwięk nawet gdy posługują się różnymi programami pocztowymi. Istota
standardu polega na poprzedzeniu przesyłanych danych nagłówkiem informującym o ich
rodzaju.

W Linuxie do konfiguracji MIME służą dwa pliki: /etc/mime.types oraz /etc/mailcap.

Użytkownik może rozszerzyć zawartość tych plików tworząc w swoim katalogu domowym pliki
.mime.types i/lub .mailcap. Plik mime.types zawiera zestawienie typów MIME które mogą
być przesyłane oraz odpowiadających im rozszerzeń nazw plików. Oto wyciąg z tego pliku

application/pdf pdf
application/pgp-signature pgp
application/postscript ps ai eps
application/x-compress z Z
application/x-gzip gz
application/zip zip

audio/midi mid midi
audio/x-wav wav

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

56

WYKŁAD 5. USŁUGI SIECIOWE

image/gif gif
image/jpeg jpeg jpg jpe
image/png png
image/tiff tiff tif

text/html html htm
text/plain txt

Plik mime.types jest używany przez program nadawcy do określenia odpowiedniego na-

główka na podstawie nazwy pliku dołączanego do wiadomości. Odbiorca korzysta z pliku
mailcap który jest zestawieniem typu MIME z aplikacją go obsługującą. Więcej nt. składni
tego pliku można się dowiedzieć studiując stronę manuala mailcap(5). Warto zwócić uwa-
gę, że z pliku mailcap nie korzystają wszyscy klienci (np. Netscape) i utrzymują oni własne
tablice o znaczeniu podobnym do mailcap.

5.4

Udostępnianie plików – FTP

Pierwotną dla UNIX-a metodą udostępniania plików jest FTP –File Transfer Protocol.

Uruchamianie demona ftpd odbywa się zazwyczaj przez inetd. Tam też można podać szereg
opcji kontrolujących jego działanie. Więcej informacji na ich temat można uzyskać ze strony
manuala ftpd(8). Pliki kontrolujące działanie demona FTP to

/etc/nologin Jeżeli ten plik istnieje demon wyswietla go i przerywa połączenie.

/etc/ftpwelcome Ten plik jest wyświetlany przed zapytaniem o nazwę użytkownika.

/etc/motd Ten plik jest wyświetlany po udanym zalogowaniu.

.message Jeżeli ten plik jest w katalogu do którego użytkownik wykonał cd to jego zawartość

zostanie wyświetlona.

/etc/ftpchroot Ten plik zawiera listę użytkowników dla których należy po zalogowaniu

wykonać komendę chroot, tzn. uniemożliwić przejście do katalogów powyżej katalogu
domowego użytkownika. Aby serwis działał poprawnie, w katalogu domowym użyt-
kownika powinny być podkatalogi bin, etc, lib itd. z zawartością identyczną jak dla
użytkownika ftp.

/etc/ftpusers Ten plik zawiera listę użytkowników którzy nie mogą korzystać z serwisu

FTP.

5.5

Serwis WWW

Mimo iż istnieje wiele serwerów HTTP, to tak naprawdę liczy się obecnie tylko apache.

Zazwyczaj ze wzgledu na wydajność serwera WWW, demona apache uruchamia się w try-
bie standalone, tzn. nie przez inetd. Standardowo apache nasłuchuje na porcie 80. Pliki

Piotr Zawadzki

background image

5.6. SIECIOWY SYSTEM PLIKÓW – NFS

57

konfiguracyjne znajdują się w katalogu /etc/apache/. Najważniejsze z nich to httpd.conf,
srm.conf, access.conf. Plik httpd.conf konfiguruje działanie serwera. Większość dostęp-
nych opcji jest w nim wymieniona, a opcje nie używane – wykomentowane. Na szczególną
uwagę zasługuje możliwość zadeklarowania przetwarzania fragmentów plików HTML przez
tzw. moduły (coś w rodzaju plug-inów, tylko że po stronie serwera). Dzięki modułom może-
my w stronach HTML umieszczać komendy do wykonania przez serwer (np. dostęp do bazy
danych) i uzyskiwać dynamicznie generowane strony WWW. Istnieją moduły implementują-
ce całe języki programowania ( eperl, php3) dzięki którym można organizować w elegancki
sposób interfejs WWW do wielu usług. Plik srm.conf definiuje jak przetwarzane są różne
żądania obsługi, m.in. główny katalog serwera, przypisanie ikon do różnych typów plików. Z
kolei access.conf, jak sama nazwa wskazuje, kontroluje kto i do jakich części wystawionej
informacji ma dostęp.

5.6

Sieciowy system plików – NFS

NFS (Network File System) to coś pośredniego między lokalnym systemem plików a

usługą FTP. Instalacja i konfiguracja klienta i serwera NFS jest bardzo dobrze opisana w
NFS-HOWTO. Klientem NFS jest obecnie po prostu jądro systemu z wkompilowaną lub załado-
waną jako moduł obsługą NFS. Aby zamontować pewien katalog (/usr/local/dosapp) wy-
stawiony przez serwer NFS (minibo.iele.polsl.gliwice.pl) w katalogu lokalnym (/mnt/dosapp)
musimy wydać komendę

mount -t nfs minibo.iele.polsl.gliwice.pl:/usr/local/dosapp /mnt/dosapp

Następujący wpis w /etc/fstab

minibo.iele.polsl.gliwice.pl:/usr/local/dosapp /mnt/dosapp nfs hard,intr 0 0

pozwoli zamontować to samo co poprzednio komendą

mount /mnt/dosapp

Konfiguracja serwera to nieco bardziej złożone zadanie. Po pierwsze NFS oparty jest na

standardzie RPC (Remote Procedure Call) przez co wymagane jest uruchomienie demona
mapowania portów portmap ze standardu UNIX-owego na standard RPC. Programy pra-
cujące zgodnie z RPC zgłaszają żadania obsługi do portmap. Podobnie jak przy demonach
uruchamianych z inetd przyjęto konwencję nazewniczą polegającą na poprzedzeniu nazw
programów korzystających z RPC nagłówkiem rpc.*. Serwis NFS jest zapewniany przez
dwa demony: rpc.mountd i rpc.nfsd. Pierwszy odpowiedzialny jest za obsługę montowania
i odmontowania, drugi za operacje na plikach. Wykaz zamontowanych systemów plików znaj-
duje się /etc/rmtab. Oba demony określają na podstawie pliku /etc/exports czy klient
ma autoryzację dostępu do żądanego katalogu. Ogólnie w pliku tym znajduje się tabela ka-
talogów które mogą być zamontowane poprzez sieć. Z każdym eksportowanym

2

katalogiem

2

stąd nazwa pliku

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

58

WYKŁAD 5. USŁUGI SIECIOWE

związana jest lista komputerów oraz praw z jakimi dane katalogi mogą być montowane. W
nazwach komputerów można używać tzw. wildcards aby jednym wpisem objąć szerszą li-
stę hostów. Kontynując poprzedni przykład na serwerze minibo w /etc/exports powinien
zanjdować się wpis

/usr/local/dosapp *.iele.polsl.gliwice.pl(ro)

aby wszystkie komputery z domeny iele.polsl.gliwice.pl miały dostęp read-only do
plików z exportowanego katalogu. Więcej informacji nt. składni omawianego pliku można
uzyskać studiując stronę manuala exports(5)

Piotr Zawadzki

background image

Wykład 6

Linux w sieciach LAN

Na rynku sieci lokalalnych liczą się obecnie dwaj producenci: Microsoft i Novell. Systemy

operacyjne MS Windows (WfW, 95, 98, NT) używają protokołu SMB (ang. Session Message
Block) do współdzielenia plików i drukarek. W sieciach SMB dowolna stacja przyłączona do
sieci może pełnić zarówno rolę serwera jak i klienta. Linux również może być skonfigurowany
jako klient i/lub serwer SMB.

Sieciowy system operacyjny Novell NetWare wykorzystuje protokoły IPX/SPX

1

. W sie-

ciach Novell istnieje wyraźny rozdział na serwer pracujący pod kontrolą systemu NetWare
i stację kliencką, która pracuje pod kontrolą innego systemu operacyjnego (DOS, Windows,
OS2) i jest wyposażona w oprogramowanie pozwalające na korzystanie z zasobów serwera.
Podobnie jak w przypadku sieci SMB, Linux może pełnić rolę klienta sieci Novell i/lub ser-
wera NetWare. Co prawda najwyższa wersja NetWare emulowana pod Linuksem to 3.11, ale
nie zmienia to faktu, że wykorzystanie Linuksa jako serwer NetWare to najlepszy sposób na
zaoszczędzenie pieniędzy. Emulator serwera NetWare jest dostępny publicznie bez żadnych
opłat licencyjnych.

6.1

Współpraca z sieciami SMB

Protokół SMB jest również nazywany NetBIOS lub LAN Manager. SMB może praco-

wać wykorzystując NetBEUI, IPX/SPX lub TCP/IP. Serwery i klienci Linuksowi korzystają
z TCP/IP. Jeżeli z serwera SMB na Linuxie korzystają klienci MS to najlepiej nie instalować
na nich (lub wyinstalować) protokoły IPX/SPX

2

oraz NetBEUI. W SMB usługi identyfi-

kowane są poprzez nazwę oraz typ usługi. Serwer zgłasza udostępniane usługi do WINS

3

(ang. Windows Internet Name Service).

Do poprawnego działania sieci SMB potrzebne są 3 składniki: serwer nazw, serwer usług

i klienci. Linux może występować we wszystkich wymienionych rolach.

1

do wersji 4 włącznie. Poźniejsze jako protokół standardowy wykorzystują TCP/IP.

2

Chyba, że mamy również sieć Novell

3

Odpowiednik DNS z TCP/IP

Piotr Zawadzki

59

background image

60

WYKŁAD 6. LINUX W SIECIACH LAN

6.1.1

Serwer SMB – samba

W pakiecie samba znajdują się demony obsługujące sieć SMB. Za obsługę zapytań do

WINS odpowiada demon nmbd. Z kolei żądania udostępniania zasobów obsługiwane są przez
smbd.

Oba demony mogą być uruchomione jako samodzielne demony lub poprzez demon inetd.

W tym drugim przypadku wpisy inetd.conf wyglądają następująco

netbios-ssn stream tcp nowait root /usr/sbin/tcpd /usr/sbin/smbd
netbios-ns dgram udp wait root

/usr/sbin/tcpd /usr/sbin/nmbd -a

Plik konfiguracyjny serwera to /etc/smb.conf. Prawie zawsze po instalacji i wstępnej

konfiguracji musimy ten plik poddać edycji aby dopasować system do naszych potrzeb. In-
stalowana wersja smb.conf obejmuje wiele opcji które są dobrze opisane. Szczegółowy opis
składni można znaleźć na stronie manuala smb.conf(5). Plik konfiguracyjny podzielony jest
na sekcje (nazwa sekcji to tekst w nawiasach kwadratowych). Istnieją trzy sekcje specjalne

globals definiująca ogólne własności serwera,

printers określająca ogólne parametry udostępniania drukarek,

homes podająca sposób udostępnienia katalogów domowych użytkowników systemu.

oraz sekcje o dowolnych nazwach ustalanych przez administratora. Nazwa sekcji jest w tym
przypadku nazwą usługi. W każdej sekcji ustala się parametry/właściwości danej usługi.
Każdy dostępny parametr ma swoją nazwę i typ. Typy wartości to ciąg znaków (bez cudzy-
słowów) oraz typ logiczny ustawiany jako 0/1 lub yes/no lub true/false. Istnieją dwa typy
usług: plikowe i drukarkowe. Standardowo sekcja jest typu plikowego, jednak ustawienie
printable=yes zmienia jej typ na usługę/sekcję drukarkową. Ustawienie tej opcji zezwala
na zapis plików do druku w katalogu usługi.

Sekcja global

Typowe ustawienia w sekcji global są następujące

[global]

printing = bsd
printcap name = /etc/printcap
load printers = yes
guest account = nobody
invalid users = root

; "security = user" is always a good idea. This will require a Unix account
; in this server for every user accessing the server.

security = user

Piotr Zawadzki

background image

6.1. WSPÓŁPRACA Z SIECIAMI SMB

61

; Change this for the workgroup your Samba server will part of

workgroup = WORKGROUP

server string = %h server (Samba %v)

; This socket options really speed up Samba under Linux, according to my
; own tests. SO_SNDBUF and SO_RCVBUF added by suggestion from

socket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=4096 SO_RCVBUF=4096

; Passwords are encrypted by default. This way the latest Windows 95 and NT
; clients can connect to the Samba server with no problems.

encrypt passwords = yes

; It’s always a good idea to use a WINS server. If you want this server
; to be the WINS server for your network change the following parameter
; to "yes". Otherwise leave it as "no" and specify your WINS server
;

below (note: only one Samba server can be the WINS server).

; Read BROWSING.txt for more details.

wins support = no

; If this server is not the WINS server then specify who is it and uncomment
; next line.
;

wins server = 172.16.0.10

; Please read BROWSING.txt and set the next four parameters according
; to your network setup. There is no valid default so they are commented
; out.
;

os level = 0 ; Wfg - 0 Win95 - 1; NT - 32

;

domain master = no

;

local master = no

;

preferred master = no

; This will prevent nmbd to search for NetBIOS names through DNS.

dns proxy = no

; Name mangling options

preserve case = yes
short preserve case = yes

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

62

WYKŁAD 6. LINUX W SIECIACH LAN

Sekcja printers

W tej sekcji udostępniamy użytkownikom drukraki dostępne w systemie. Jeżeli drukraka

nie jest postscriptowa to dobrze jest ją udostępnić na dwa sposoby

raw printer tzn. komenda lpr drukuje kopiuje plik na drukarkę bez żadnego przetwarzania,

postscript – plik do drukowania (postscriptowy) przepuszczany jest przez ghostscript.

W pierwszym przypadku na stacji klienta musi być zainstalowany sterownik do drukarki
przyłączonej do serwera, w drugim – sterownik do w zasadzie dowolnej drukarki postscripto-
wej ewentualnie sterownik do „czystego” postscriptu. Druga konfiguracja jest bardziej uni-
wersalna – wymiana drukarki na serwerze nie wymaga rekonfiguracji klientów. Niestety jest
też bardziej wymagająca gdy idzie o zasoby serwera, bowiem intensywna praca ghostscripta
może zająć sporo czasu procesora.

[printers]

comment = All Printers
browseable = no
path = /tmp
printable = yes
public = no
writable = no
create mode = 0700

Sekcja homes

Sekcja homes pozwala na udostępnienie katalogów domowych użytkowników. Jeżeli klient

żąda udostępnienia usługi i nie jest ona jawnie zadeklarowana (w pliku smb.conf) i jest
zadeklarowana sekcja homes to serwer przyjmuje, że żądana usługa jest nazwą katalogu
domowego użytkownika.

[homes]

comment = Home Directories
browseable = no

; By default, the home directories are exported read only. Change next
; parameter to "no" if you want to be able to write to them.

read only = yes

; File creation mask is set to 0700 for security reasons. If you want to
; create files with group=rw permissions, set next parameter to 0775.

create mask = 0700

; Directory creation mask is set to 0700 for security reasons. If you want to

Piotr Zawadzki

background image

6.1. WSPÓŁPRACA Z SIECIAMI SMB

63

; create dirs. with group=rw permissions, set next parameter to 0775.

directory mask = 0700

Sekcja CDROM

Przy użyciu samby można udostępniać również dowolne katalogi. Typowym przykładem

jest publiczne udostępnienie zawartości napędu CD. Dzięki opcjom preexec i postexec
montowanie następuje automatycznie przy próbie odczytu. Gdy serwer nie korzysta z napędu
katalog cdrom zostaje odmontowany.

[cdrom]

comment = Samba server’s CD-ROM
writable = no
locking = no
path = /cdrom
public = yes

;
; The next two parameters show how to auto-mount a CD-ROM when the
; cdrom share is accesed. For this to work /etc/fstab must contain
; an entry like this:
;
;

/dev/scd0

/cdrom

iso9660 defaults,noauto,ro,user

0 0

;
; The CD-ROM gets unmounted automatically after the connection to the
;
; If you don’t want to use auto-mounting/unmounting make sure the CD
; is mounted on /cdrom
;

preexec = /bin/mount /cdrom
postexec = /bin/umount /cdrom

Minitorowanie pracy serwera

Informacje o stanie serwera uzyskamy wydając komendę smbstatus. Wiele o jego pracy

można dowiedzieć się z logów w /var/samba/ oraz /var/log/smb, /var/log/nmb.

6.1.2

Klientci SMB

Klient uzyskuje dostęp do usługi podając nazwę serwera i usługi na serwerze w następują-

cym formacie \\<nazwa serwera>\<nazwa usługi> (np. \\MINIBO\CDROM) Nazwa serwera
(MINIBO) jest poprzedzona dwoma znakami \. Nazwa usługi oddzielona jest jednym znakiem
\.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

64

WYKŁAD 6. LINUX W SIECIACH LAN

Klienci samby

W pakiecie samba-client znajdują się klienci SMB usługi plikowej (smbclient) oraz

usługi drukrakowej smbprint

4

) Klient usługi plikowej smbclient to program a’la ftp do

transmisji plików między serwerem a klientem. Zadaniem smbprint jest umożliwienie korzy-
stania w Linuxie z drukarek udostępnionych przez komputery MS-Win.

Korzystając z obu programów należy im oczywiście jako parametr z linii komend podać

nazwę usługi. I tu należy pamiętać, że znak \ jest znakiem zastrzeżonym w shellu i pracuje
jako tzw. escape char. Tak więc aby przekazać jeden \ musimy użyć sekwencji \\. Ostatecznie,
aby zażądać dostępu do \\MINIBO\CDROM musimy wydać komendę

smbclient \\\\MINIBO\\CDROM

Inną metodą korzystania z usług plikowych serwerów SMB jest wykorzystanie komend

smbmount i smbumount. Dzięki nim pliki udostępniane przez serwery SMB mogą być monto-
wane do dowolnych katalogów i używane dalej jak lokalny system plików.

6.2

Integracja z siecią Novell

Oczywiście aby Linux współdziałał z NetWare jądro systemu musi wspierać protokół

IPX/SPX i musi on być poprawnie skonfigurowany komendą ipx configure. Komenda ta
(i kilka innych) znajduje się w pakiecie ipxutils dystrybucji RedHat. Współpracę z sie-
ciami IPX można skonfigurować np. przy użyciu linuxconf. Jeżeli wysztko jest poprawnie
skonfigurowane to w katalogu /proc/net/ znajdują się pliki ipx interface, ipx route, ipx
zawierające informacje o bieżącym stanie sieci IPX.

6.2.1

Klient ncpfs

Pakiet ncpfs zapewnia komendy do korzystania z usług serwera NetWare. Zapewniony

mamy dostęp między innymi do plików (ncpmount i ncpumount) i drukarek (nprint) obsłu-
giwanych przez serwer. Listę dostępnych serwerów w sieci lokalnej możemy ustalić komendą
slist a stan kolejek do drukowania – pserwer. Lista dostępnych komend jest długa. Infor-
macje o tym jakie komendy są w pakiecie uzyskamy komendą rpm -ql ncpfs | less. Inte-
resujące nas komendy znajdują się /usr/bin/. Wszystkie z nich mają swoją stronę manuala.
Ponieważ dostęp do wszystkich usług NetWare wymaga podania hasła to przy korzystaniu z
użytków ncpfs musimy je dość często wprowadzać. Aby ułatwić sobie życie można w swoim
katalogu domowym utworzyć plik .nwclient zawierający m.in. nazwę serwera, nazwę użyt-
kownika i hasło. Ponieważ hasło musi być podane tekstem jawnym, to plik powinien być
tylko do odczytu i zapisu przez właściciela (600)

5

. Do montowania systemu plików z serwera

NetWare może być przydatny następujący skrypt

4

Niestety nie jest on dostępny we wszystkich binarnych dystrubucjach samby.

5

To i tak nie zabezpiecza nas przed root-em. Jeżeli nie ufamy administratorowi systemu to nie możemy

umieszczać hasła w tym pliku

Piotr Zawadzki

background image

6.2. INTEGRACJA Z SIECIĄ NOVELL

65

#!/bin/sh
# Montuje w podkatalogu o nazwie $1 katalogu domowego użytkownika
# serwer NetWare o nazwie $1. Logowanie na serwerze NetWare
# jako $2. $2 przyjmowane jest domyślnie jako $USER

# Poprawna linia komend
if [ $# -lt 1 -o $# -gt 2 ] ; then
echo "Usage: ‘basename $0‘ <servername> [ <logname> ] "
exit
fi

# Poprawne argumenty wejściowe
SERVER=$1
LOGNAME=$USER
if [ ! -d $HOME/$SERVER ] ; then
echo "Błąd! Katalog $HOME/$SERVER nie istnieje."
echo "Utwórz katalog (np. komendą mkdir) i ponownie uruchom ‘basename $0‘"
sleep 10
exit
fi
if [ $# -eq 2 ] ; then
LOGNAME=$2
fi

# Montowanie
if ( cat /etc/mtab | grep $HOME/$SERVER &> /dev/null ) ; then
echo "już zamontowane, sprawdź w katalogu $HOME/$SERVER!" ;
sleep 10
else
if ( ncpmount -S $SERVER -U $LOGNAME $HOME/$SERVER 2> /dev/null ) ; then
echo "zamontowane"
else
echo "Błąd podczas logowania na serwerze $SERVER jako $LOGNAME"
sleep 10
fi
fi

Skrypt do odmontowania systemu plików z serwera NetWare wygląda następująco

#!/bin/sh
SERVER=$1
if ( cat /etc/mtab | grep $HOME/boss &> /dev/null ) ; then
echo "Odmontowuję serwer $SERVER z katalogu $HOME/$SERVER!" ;

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

66

WYKŁAD 6. LINUX W SIECIACH LAN

ncpumount $HOME/$SERVER
sleep 10
else
echo "Serwer $SERVER nie jest podmontowany"
sleep 10
fi

6.2.2

Serwer mars-nwe

Pakiet mars-nwe zapewnia, że stacja na której go uruchomiono jest z funckjonalnego

punktu widzenia równoważna serwerowi Novell NetWare 3.11. Usługi zgodne z usługami
serwera NetWare zapewniają 3 demony: nwserv, nwbind, ncpserv. Odpowiednie pliki kon-
figuracyjne to

/etc/nwserv.conf
/etc/nwserv.stations

Przykładowe pliki konfiguracyjne zamieszczone w dystrybucji RedHat są bogato komen-

towane i zawierają szczegółowy opis dostępnych opcji. Poniżej opisane zostaną tylko najważ-
niejsze z nich.

Plik nwserv.conf podzielony jest na sekcje definiujące poszczególne elementy serwera.

Sekcja pierwsza definiuje odwzorowanie katalogów linuksa na nazwy volumenów widzianych
przez stacje klienckie. Sekcja ta jest obowiązkowa i co najmniej volumen SYS powinien być
zdefiniowany.

# Section 1: volumes (required)
# Linux-directory

mars_nwe-volume

map.exe

DOS-Drive

# /var/mars-nwe/sys

------->

SYS

------------->

W:

# Syntax:
# 1

VOLUMENAME

DIRECTORY

OPTIONS

1

SYS

/var/mars_nwe/sys

rk

1 CDROM

/mnt/cdrom

kmr

1 HOME

~

k

Sekcja nr 3 definiuje adres sieci IPX którą będzie obsługiwał emulator. Jeżeli w sieci

lokalnej pracuje inny serwer / emulator NetWare, to muszą one mieć różne adresy sieci.
W przeciwnym razie sieć NetWare będzie zachowywać się niestabilnie. Adresy sieciowe ser-
werów można sprawdzić wydając polecenie slist. Wpis auto oznacza, że za adres sieci IPX
zostanie przyjety numer IP stacji na której uruchomiony jest mars-nwe.

# Section 3: Number of the internal network (required)
# Syntax:
# 3

INTERNAL_NET

[NODE]

3

auto

1

Piotr Zawadzki

background image

6.2. INTEGRACJA Z SIECIĄ NOVELL

67

W sekcji 4 definiujemy interfejsy biorace udział w wymianie pakietów z sieciami IPX. Dla

każdego interfejsu możemy podać typ ramki używany w sieci lub pozwolić na jego detekcję

# Section 4: IPX-devices (strongly recommended)
# Syntax:
# 4

NET_NUMBER

DEVICE

FRAME

TICKS

4

0x0

*

AUTO

1

# automatic setup

4

0x10

eth0

802.3

1

# manual setup

W sekcji 5 określamy czy tablica routowania ramek IPX powinna być przechowywana

pomiędzy kolejnymi uruchomieniami serwera.

# Section 5: Saving of ipx-routes (required)
# Syntax:
# 5

SAVE_FLAG

5

0

Sekcja 7 kontroluje sposób obsługi haseł. Hasła użytkowników mars-nwe przechowywane

są w linuksie w postaci zaszyfrowanej. W tej sekcji określamy kto jest odpowiedzialny za szy-
frowanie hasła. Oczywiście bezpieczniej jest gdy hasło szyfruje klient i przez sieć przesyłany
jest szyfrogram.

# Section 7: password handling of DOS-clients (required)
# Syntax:
# 7

FLAG

7

0

Gdy na stacji klienckiej ładujemy sterowniki NetWare jest ona automatycznie przyłącza-

na do sieci. Ze stacji widoczne są podstawowe programy sieciowe np. login. Programy te
znajdują się na dysku sieciowym, oznaczonym najczęściej literą F:. W sekcji 10 określamy
jakie prawa będzie miał użytkownik po stronie linuksa na którego konto wykonywane będą
komendy wydane ze stacji klienckiej z której nie wykonano jeszcze logowania. Zazwyczaj
będą to prawa użytkownika nobody.

# Section 10: UID and GID with minimal rights
# Syntax:
# 10

GID

# 11

UID

10

99

11

99

Sekcja 12 definiuje odwzorowanie konta administratora NetWare na nazwę konta linukso-

wego. Zazwyczaj, w celu poprawienia bezpieczeństwa po stronie linuksa definiuje się specjalne
konto administratora i właściciela mars-nwe.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

68

WYKŁAD 6. LINUX W SIECIACH LAN

# Section 12: supervisor-login (required)
# Syntax:
# 12

NW_LOGIN

LINUX_LOGIN

[PASSWORD]

12

SUPERVISOR

adm

*

W sekcji 13 można zdefiniować odwzorowanie nazwy konta użytkownika NetWare na

konto linuksowe.

# Section 13: user-logins (optional)
# See section 12 for a description of the syntax.
# Syntax:
# 13

NW_LOGIN

LINUX_LOGIN

[PASSWORD]

13

PZAWAD

pz

Jeżeli użytkowników jest wielu mapowanie każdego konta z osobna w pliku konfiguracyj-

nym jest dość uciążliwe. Dlatego w sekcji 15 można zdefiniować automatyczne odwzorowanie
nazw użytkowników NetWare w użytkowników linuksa.

# Section 15: automatic mapping of logins (decision required)
# Syntax:
# 15

FLAG

DEFAULT_PASSWORD

15

99

top-secret

W sekcji 21 definiujemy kolejki zadań do drukowania.

# Section 21: print queues (optional)
# Syntax:
# 21

QUEUE_NAME

QUEUE_DIR

PRINT_COMMAND

21

LASER

SYS:/PRINT/L

lpr -Plaser

21

OCTOPUSS

SYS:/PRINT/O

lpr -Php_deskjet

Piotr Zawadzki

background image

Wykład 7

Skład tekstów – L

A

TEX

W Linuksie istnieje wiele narzędzi do składu dokumentów. Można je podzielić na dwie

zasadnicze klasy: pełnoekranowe procesory tekstu (np. StarOffice, KOffice) lub języki pro-
gramowania składu dokumentów. Sztandarowym przykładem narzędzi drugiej klasy jest do-
stępny publicznie system składu dokumentów TEX opracowany przez D.E. Knutha. Dla
osób pragnących korzystać z możliwości TEX’a i pracować jednocześnie w trybie (prawie)
WYSIWYG Linuks oferuje nakładki LyX i KLyX. Ta ostatnia dostosowana jest do pracy
w środowisku KDE.

7.1

TEX i L

A

TEX

Postać źródłowa TEX’a została „zamrożona” i TEX jako taki nie jest obecnie rozwija-

ny. Usuwane są jedynie błędy i za znalezienie danych wejściowych które powodują błędne
działanie systemu składu jest wyznaczona symboliczna nagroda pieniężna. Taka polityka
ma zapewnić niezmienność w czasie i przenaszalność dokumentów składanych przy użyciu
TEX’a.

TEX jest językiem programowania składu dokumentu, natomiast L

A

TEX jest zbiorem makr

znacznie ułatwiających życie użytkownikowi. Wzajemna relacja między TEX’em i L

A

TEX’em

jest mniej więcej taka jak między asemblerem i językiem programowania wysokiego poziomu.
Dalej omówimy skład dokumentu z wykorzystaniem komend L

A

TEX’a. Osoby pragnące kon-

trolować proces składu w języku TEX odsyłam do bogatej literatury na ten temat dostępnej
w Internecie, np. Gentle Introduction To TEX.

7.1.1

Idea działania

L

A

TEX, podobnie jak TEX i inne programy wchodzące w skład systemu składu dokumentów

działa w trybie wsadowym. Jego zadaniem jest interpretacja komend zawartych w pliku
wejściowym i wygenerowanie pliku wyjściowego zgodnie ze ściśle określonymi regułami.

Pierwszym etapem składu jest przetworzenie pliku zawierającego komendy kontrolujące

skład przy użyciu programu latex. Zwyczajowo pliki zawierające tekst dokumentu i ko-

Piotr Zawadzki

69

background image

70

WYKŁAD 7. SKŁAD TEKSTÓW – L

A

TEX

Rys. 7.1: Schemat procesu składu.

mendy kontrolne mają rozszerzenie *.tex. Zadanie L

A

TEX’a polega na podzieleniu treści

dokumentu na prostokątne wycinki tzw. boksy i „ładne” ich rozmieszczenie w dokumencie.
Dzięki takiej filozofii użytkownik może skupić się na logicznym aspekcie układu dokumentu,
bowiem za tzw. formatowanie odpowiada L

A

TEX. Gdy układ zaproponowany przez L

A

TEX’a

nam nie odpowiada, możemy użyć komend wymuszających określony sposób formatowania.

Wynikiem przetwarzania pliku z dokumentem jest plik DVI (Device Independent ) za-

wierający złożony dokument w postaci niezależnej od sprzętu. Zwyczajowo plik ten ma roz-
szerzenie *.dvi. Plik DVI zawiera jedynie informację o rozmiarach boksów oraz odnośniki
do ich zawartości. Za wypełnienie boksów treścią odpowiedzialne są programy konwersji pli-
ków DVI na postać zrozumiałą przez dane urządzenie drukujące. Najczęściej wykorzystywane
konwertery to

dvilj – konwerter na drukarki laserowe kontrolowane językiem PCL,
xdvi – przeglądarka plików DVI pod X Windows,
dvips – konwerter do postscriptu.

Praca z L

A

TEX’em przebiega wg następującego schematu (Rys. 7.1) Specjalnego komenta-

rza wymaga skład dokumentów z dołączonymi plikami graficznymi, których L

A

TEX sam nie

obsługuje. W procesie składu L

A

TEX wymaga jedynie informacji o wymiarach rysunku w ce-

lu rezerwacji odpowiedniego obszaru na stronie, natomiast za wypełnienie zarezerwowanego
miejsca odpowiada konwerter pliku DVI.

W toku przetwarzania dokumentu wiele rzeczy odbywa się automatycznie, np. przy uru-

chomieniu L

A

TEX’a może nastąpić generacja plików metrycznych fontów (zawierających roz-

miary boksów dla poszczególnych znaków), a przy uruchumieniu konwertera może nastąpić
generacja obrazów bitmapowych znaków fontu dla rozdzielczości urządzenia wyjściowego.

7.1.2

Instalacja w Linuksie

TEX jest dostępny publicznie i rozprowadzany w dystrybucjach. Istnieje wiele dystryby-

cji TEX’a na różne systemy operacyjne (np. emTEX dla DOS, MikTEX dla Windows NT).
Najbardziej popularną dystrybucją na systemy UNIX jest teTEX.

W dystrybucji RedHat TEX i programy okołoTEX’owe są rozprowadzane jako rodzina

pakietów tetex*.rpm. Część z nich jest opcjonalna. Zalecane jest jednak zainstalowanie
dokumentacji z opcjonalnego pakietu tetex-doc*.rpm) która dla początkujących użytkow-
ników może się okazać bardzo pomocna. W zasadzie niezbędne do korzystania z TEX’a są
również: interpreter postscriptu Ghostscript oraz przeglądarka plików postscriptowych gv.

Piotr Zawadzki

background image

7.1. TEX I L

A

TEX

71

7.1.3

Podstawowa konfiguracja

W większości dystrybucji Linuksa instalacja TEX’a jest dostępna jako jedna z opcji pro-

gramu instalacyjnego. Po instalacji TEX jest w zasadzie gotowy do działania, jednak nie
jest standardowo przystosowany do składu polskich dokumentów. Dalej omówimy czynności
wstępne jakie należy wykonać aby zainstalowany TEX był w pełni funkcjonalny.

Konfiguracja dvips

Program dvips jest standardowo skonfigurowany tak, aby wyjściowy plik postscripto-

wy był kopiowany na standardową drukarkę. Jeżeli takie zachowanie nam nie odpowiada
(a pewno nie, bowiem przed wydrukiem najczęściej chcielibyśmy zobaczyć wynik składu)
w pliku

/usr/share/texmf/dvips/config/config.ps

musimy wykomentować (poprzedzić znakiem %) linię zawierającą.

o | lpr

Polskie wzorce dzielenia wyrazów

L

A

TEX jest wyposażony w tablice dzielenia polskich wyrazów, lecz nie jest ona stan-

dardowo ładowana. Aby to zmienić uruchamiamy program texconfig i wybieramy opcję
hyphen→latex. Zostanie uruchomiony edytor vi z plikiem konfiguracyjnym wyboru tablic
dzielenia wyrazów. Musimy wyszukać w tym pliku napis polish i usunąć znak komentarza.
Podstawowe komendy edytora vi:

x – kasowanie znaku pod kursorem,
i – przejście w tryb dopisywania znaków,

<ESC> – zakończenie trybu dopisywania znaków,
:wq – zapisanie pliku i zakończenie pracy edytora,
:q! – zakończenie pracy z pominięciem dokonanych zmian.

7.1.4

Oprogramowanie wspomagające

Jak już wspomnieliśmy L

A

TEX jest tylko kompilatorem pewnego specyficznego języka kon-

trolującego rozmieszczenie elementów dokumentu na stronie. Do komfortowej pracy z L

A

TEX’em

potrzebne są programy pomocnicze.

Edytor tekstowy

Do edycji plików wejściowych L

A

TEX’a możemy korzystać z dowolnego edytora tekstowego.

Jednak praca z edytorem wyposażonym w podświetlanie składni L

A

TEX’a będzie znacznie

łatwiejsza. Edytory które można polecić to: kwrite, gvim, xemacs wyposażony w rozszerzenie
auctex.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

72

WYKŁAD 7. SKŁAD TEKSTÓW – L

A

TEX

Edytory grafiki

L

A

TEX jest wyposażony w komendy do tworzenia grafiki. Niestety wynik działania tych

komend należy uznać za niezadowalający. Dlatego grafikę którą chcemy umieścić w doku-
mencie musimy stworzyć przy użyciu programu zewnętrznego w stosunku do systemu składu.
Istnieją dwa zasadniczo różne rodzaje grafik z jakimi będziemy mieli do czynienia: grafika
wektorowa i grafika rastrowa.

Grafikę wektorową dołączamy do dokumentu w formacie Encapsulated Postscript (*.eps)

stanowiącym swoistą modyfikacją postscriptu. Do tworzenia grafiki wektorowej najlepiej użyć
programu xfig z odpowiednią opcją eksportowania

1

. Inny program który tworzy grafiki

wektorowe to KIllustrator.

Podstawowe programy do tworzenia i/lub modyfikacji grafiki rastrowej to Gimp, Image-

Magick (uruchamiany komendą display) oraz xv. Zrzuty ekranowe można wykonywać przy
użyciu ksnapshot lub xv.

Programy obsługujące grafikę rastrową zazwyczaj pozwalają na zapis obrazu w posta-

ci EPS. Jednak ze względu na fakt, że EPS jest formatem tekstowym rozmiary plików z tak
zapisaną grafiką są nieproporcjonalnie duże. Formatem rastrowym obsługiwanym dvips

2

jest BMP. Niestety wadą tego podejścia jest konieczność podania fizycznych wymiarów ry-
sunku w treści dokumentu L

A

TEX’a, podczas gdy w przypadku plików EPS wymiary grafiki

ustalane są automatycznie na podstawie zawartości pliku.

Wykresy

Trzecią klasą aplikacji pomocnych przy tworzeniu dokumentów są programy tworzące

wykresy na podstawie danych liczbowych. Programów realizujących powyższe zadanie jest
wiele. Warunkiem koniecznym jaki musi spełniać program do tworzenia wykresów jest moż-
liwość umieszczenia wykresu w pliku EPS. Niewątpliwie najczęściej używanym programem
jest gnuplot.

7.2

Struktura dokumentu

Plik przetwarzany przez L

A

TEX’a składa się z dwóch zasadniczych elementów: preambuły

oraz treści dokumentu. W preambule dokumentu wstawiamy komendy globalne, odnoszące
do całokształtu procesu składu tekstu. Natomiast w treści dokumentu umieszczamy komen-
dy o znaczeniu lokalnym lub zmieniające postać dokumentu od momentu ich wystąpienia.
Preambuła rozpoczyna się poczatkiem przetwarzanego pliku kończy w momencie rozpoczęcia
treści dokumentu. Treść dokumentu zawarta jest między komendami (patrz punkt 7.2.1)

\begin{document}
treść dokumentu

1

W wersji RedHat 6.2 program opcja eksportowania nie działa poprawnie. Aby usunąć usterkę należy

uaktualnić pakiet transfig

2

Pamiętamy, że za obsługę grafiki odpowiedzialne są konwertery plików DVI

Piotr Zawadzki

background image

7.2. STRUKTURA DOKUMENTU

73

\end{document}

Zarówno preambuła jak i treść dokumentu mogą zawierać komendy włączania dodatkowych

plików (patrz punkt 7.2.5)

7.2.1

Komendy i otoczenia

Składnia komendy ma następującą postać

\Nazwa[jeden parametr opcjonalny]{pierwszy parametr}{drugi parametr}itd.

Nazwę komendy zawsze poprzedza \. Obowiązkowe parametry komendy zawarte są między

nawiasami klamrowymi. Komenda w L

A

TEX’u może pobierać jeden parametr opcjonalny.

Parametr opcjonalny zawarty jest w nawiasach kwadratowych.

Działanie komend formatujących tekst możemy ograniczyć do określonego fragmentu

tekstu stosując nawiasy klamrowe

tekst zwykły {\ZmieńFontNaPogrubiony tekst pogrubiomy} tekst zwykły

Innym sposobem wyboru sposobu formatowania jest zastosowanie otoczenia (ang. envi-

ronment ).

tekst zwykły
\begin{NazwaOtoczenia}[parametr opcjonalny]
tekst zmieniony
\end{NazwaOtoczenia}
tekst zwykły

7.2.2

Klasy dokumentów

Pierwszą komendą preambuły jest wybór klasy documentu

\documentclass[a4paper,12pt, twoside, twocolumn]{report}

Obowiązkowym parametrem komendy jest nazwa klasy documentu. Dozwolone klasy to

article, report i book. W nawiasach kwadratowych możemy podać listę opcji dla danego
typu dokumentu: rozmiar papieru (wartość domyślna – letter), rozmiar fontu podstawowego
w punktach drukarskich tj. 1/72 częściach cala (wartość domyślna – 10pt), skład jedno-
lub dwustronny (wartość domyślna – skład jednostronny), skład jedno- lub dwukolumnowy
(wartość domyślna – skład jednokolumnowy).

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

74

WYKŁAD 7. SKŁAD TEKSTÓW – L

A

TEX

7.2.3

Pakiety

L

A

TEX może być uzupełniony o dodatkowe możliwości poprzez dodanie modułów reali-

zujących okreśłone zadania formatujące. Zestawy komend pozwalające na realizację zadań
rozszerzających funkcje L

A

TEX’a rozprowadzane są w tzw. pakietach. Pakiety mogą być do-

łączane wyłącznie w preambule. Komenda włączenia pakietu ma następującą postać

\usepackage[dvips]{graphicx,epsfig}

Komenda usepackage w nawiasach klamrowych przyjmuje listę nazw pakietów a w nawia-

sach kwadratowych listę opcji kontrolujących ich działanie.

Zestaw używanych pakietów zależy od upodobań użytkownika. W miarę komfortową

pracę uzyskujemy korzystając z następujących rozszerzeń

\usepackage[nointlimits]{amsmath}
\usepackage{geometry}
\usepackage{fancyheadings}
\usepackage[dvips]{graphicx}
\usepackage{psfrag}
\usepackage[rflt]{floatflt}
\usepackage{indentfirst}
\usepackage{tabularx}

amsmath – rozszerzenie możliwości składu wzorów matematycznych,
geometry – wygodna kontrola układu strony, tj. marginesów, wielkości obszaru na nagłowki,

itp.,

fancyheadings – kontrola treści nagłówków,
graphicx – wstawianie plików graficznych,
psfrag – podmiana tekstów we wstawionych plikach graficznych,
floatflt – umieszczanie rysunków „oblanych” przez tekst,
indentfirst – wcięcie pierwszego akapitu danego podrozdziału,
tabularx – rozszerzone możliwości składu tabel.

7.2.4

Skład w języku polskim

Skład w języku polskim możemy uzyskać przy pomocy dwóch pakietów rozszerzających

możliwości L

A

TEX’a: pakietu babel lub pakietu polski. Pakiet babel służy do składu do-

kumentów wielojęzycznych i pozwala na zmianę języka wewnątrz treści dokumentu. Pakiet
polski jest dostosowany wyłącznie do składu tekstów w języku polskim. Dzięki swojej spe-
cjalizacji pakiet polski lepiej implementuje konwencje typograficzne dla języka polskiego.
Postać komend pozwalających na skład w języku polskim jest następująca

\usepackage[T1]{fontenc}
\usepackage{polski}
\usepackage[latin2]{inputenc}

Piotr Zawadzki

background image

7.2. STRUKTURA DOKUMENTU

75

Pakiet fontenc powoduje wybór fontów o rozszerzonym zestawie znaków do składu doku-

mentu, natomiast pakiet inputenc pozwala na wybór konwencji kodowania polskich znaków
w pliku źródłowym. Podana opcja latin2 oznacza kodowanie zgodne z normą ISO 8859-
2. Dozwolony jest również wybór kodowania stosowanego w DOS-ie (cp852) lub Windows
(cp1250). Na koniec należy nadmienić, że pakiet polski nie jest w stanie zapewnić pełnej
zgodności utworzonego dokumentu z polskimi konwencjami typograficznymi. Temat polskich
zwyczajów i tradycji drukarskich jest dobrze opisany w publikacji ????

7.2.5

Inkluzja plików

Dla większych dokumentów korzystne jest podzielenie pliku wejściowego na mniejsze czę-

ści (np. dla książki każdy rozdział może być umieszczony w innym pliku). Podział dokumentu
umożliwiają komendy wstawiania plików: input i include. Są one w zasadzie równoważne

3

.

Przykładowy dokument złozony z wielu plików ma postać

\input preamble
\begin{document}
\include{rozdz1}
\include{rozdz2}
\end{document}

Dokument składa się z przedstawionego pliku oraz plików preamble.tex, rozdz1.tex

i rozdz2.tex.

7.2.6

Podział dokumentu

Składnia komend podziału wygląda następująco

\KomendaPodziału[tekst krótki]{tekst długi}
\KomendaPodziału*{tekts długi}

Podział dokumentu tworzą następujące komendy

\part
\chapter \section \subsection
\subsubsection \paragraph \subparagraph

Rozkaz part dozwolony jest tylko w klasie book, a rozkaz chapter dozwolony jest w klasach

book i report. Pozostałe komendy podziału dozwolone są we wszystkich klasach. Z każdym
typem komendy podziału związany jest licznik, który jest zwiększany przy kolejnym wy-
stąpieniu komendy podziału na tym samym poziomie zagłębienia i zerowany gdy wystąpi
nadrzędna komenda podziału (tj chapter zeruje licznik section, section zeruje licznik
subsection, itd.) Standardowo numerowane są komendy do trzeciego poziomu zagłębienia,
lecz zachowanie to może być zmienione rozkazem

3

Różnica tkwi w możliwości wykorzystania komendy includeonly w preabule dokumentu w celu wyłą-

czenia inkluzji niektórych plików.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

76

WYKŁAD 7. SKŁAD TEKSTÓW – L

A

TEX

\setcounter{\secnumdepth}{wartość nie większa niż 5}

wydanym w preambule dokumentu.

Komenda podziału jako argument obowiązkowy przyjmuje tytuł danej części. Jeżeli da-

ny poziom podziału jest numerowany to tytuł części jest umieszczany w spisie treści i/lub
nagłówku. Jeżeli występuje argument opcjonalny to jego treść zostanie umieszczona w spisie
treści i nagłówku zamiast parametru obowiązkowego.

Komendy podziału występują również w wersji z *. Części wydzielone tymi komendami

nie są numerowane a ich tytuły nie są umieszcane w spisie treści i nagłówkach strony.

Specjalną komendą podziału jest pusta linia. Jest ona interpretowana identycznie jak

rozkaz par i oznacza ropoczęcie nowego akapitu.

Podział dokumentu na strony możemy wymusić komendami pagebreak i newpage. W pierw-

szym przypadku L

A

TEX stara się rozmieścić tekst na złamanej stronie tak aby zapełnić możli-

wie dużą jej powierzchnię. W składzie dwukolumnowym opisane komendy służą do zakończe-
nia szpalty i zakończenie strony musimy wymuszać rozkazami clearpage i cleardoublepage

7.2.7

Podstawowe komendy formatujące

Odstępy

L

A

TEXpo kropce kończącej zdanie dodaje odstęp większy niż odstęp między słowami.

Dla L

A

TEX’a koniec zdania następuje po kropce występującej bezpośrednio po małej lite-

rze. W przypadku gdy kropka występuje wewnątrz zdania należy podjąć odpowiednie kroki
zaradcze. Najlepiej po kropce umieścić tzw. „twardą spację” (znak ). Prawidłowo wprowa-
dzony tekst prof. Bylejaki wygląda następująco

prof.~Bylejaki

W przypadku gdy duża litera kończy zdanie prawidłowy wpis wygląda następująco

Zgubiłem telefon GSM\@.

W tekście odstępy możemy również wymuszać rozkazami

\hspace{odstęp}
\vspace{odstęp}

gdzie odstęp jest fizyczną miarą długości. Dozwolone jednostki to pt – punkty drukarskie,

in – cale, cm – centymetry, mm – milimetry, em – szerokość litery m bieżącego fontu, x –
szerokosć litery x bieżącego fontu. Przykładowe komendy podano poniżej

\hspace{4.3em}
\vspace{12pt}

Piotr Zawadzki

background image

7.2. STRUKTURA DOKUMENTU

77

Cudzysłowy

W tekście cytowany tekst umieszczamy w cudzysłowach. Jednak użycie znaku " do te-

go celu nie jest zalecane. Cytowania zgodne z angielską i polską konwencją typograficzną
uzyskujemy stosując

‘‘cudzysłów angielski’’
,,cudzysłów polski’’

To jest “cudzysłów angielski”, a to – „cudzysłów polski”.

Wyróżnienia

Do wyróżnienia tekstu możemy korzystać z dwóch równorzędnych funkcjonalnie form

tekst zwykły {\em tekst wyróżniony} tekst zwykły
tekst zwykły \emph{tekst wyróżniony} tekst zwykły

Wyróżniony tekst będzie złożony kursywą.

Wyliczenia

Do budowania wyliczeń stosujemy następujące otoczenia

\begin{itemize}
\item pierwszy element,
\item drugi element,
\item trzeci element.
\end{itemize}
\begin{enumerate}
\item Pierwszy element.
\item Drugi element.
\item Trzeci element.
\end{enumerate}
\begin{description}
\item[pierwszy] to jest pierwszy element,
\item[drugi]

to jest drugi element,

\item[trzeci] to jest trzeci element.
\end{description}

We wszystkich otoczeniach elementy wyliczenia wybierane są rozkazem item. Zależnie od

typu wyliczenia element jest oznaczony w tekście „kropką”, kolejnym numerem arabskim lub
krótkim tekstem złożonym pismem pogrubionym. Wyliczenia mogą być dowolnie zagnież-
dżane, lecz nie mogą się przenikać. Dobór znaków wyróżnienia i/lub soposbu numeracji dla
zagnieżdżonych itemize i enumerate następuje automatycznie.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

78

WYKŁAD 7. SKŁAD TEKSTÓW – L

A

TEX

Zmiana wielkości i kroju pisma

Zmianę kroju pisma realizują następujące komendy

rm

Roman

it

kursywa

sc

Small Caps

bf

pogrubione

sl

pochyłe

sf

Bez szeryfów

tt

maszynowe

Dostępne rozmiary pisma

4

tiny

drobniutkie

scriptsize

bardzo małe

footnotesize

notki

small

małe

normalsize

podstawowe

large

duże

Large

większe

LARGE

wielkie

huge

olbrzymie

Huge

Gigant

Wyrównywanie tekstu

Akapity L

A

TEX standardowo wyrównuje do lewej i prawej strony (justuje). Jeżeli chcemy

zmienić to zachowanie korzystamy z jednego z trzech otoczeń

akapit zwykły \par
\begin{center} akapit

wycentrowany \end{center}

akapit zwykły \par
\begin{flushleft} akapit wyrównany do lewej strony \end{flushleft}
akapit zwykły \par
\begin{flushright}akapit wyrównany do prawej strony \end{flushright}
akapit zwykły \par

Rozkazy lokalne pozwalające osiągnąć ten sam efekt są zaprezentowane niżej

akapit zwykły \par
{\centering akapit

wycentrowany} \par

akapit zwykły \par
{\raggedright akapit wyrównany do lewej strony} \par
akapit zwykły \par
{\raggedleft akapit wyrównany do prawej strony} \par
akapit zwykły \par

7.3

Wzory matematematyczne

Olbrzymią przewagą TEX’a nad innymi procesorami tekstu jest możliwość porządnego

składu wzorów matematycznych. Składanie wzorów musi odbywać się w tzw. trybie mate-

4

rzeczywista wielkość liter zależy od rozmiaru fontu podstawowego

Piotr Zawadzki

background image

7.3. WZORY MATEMATEMATYCZNE

79

matycznym. Złożony wzór może być wstawiony bezpośrednio w otaczający tekst lub wysta-
wiony, tj. złożony w osobnej linii (liniach).

7.3.1

Wzory wstawione i wystawione

Wzory wstawione uzyskujemy komendą

tekst zwykły $wzór$ tekst zwykły

natomiast wzory wystawione

tekst zwykły
$$
wzór
$$
tekst zwykły
\begin{equation}
wzór
\end{equation}

Otoczenie equation zapewnia automatyczną numeracje wzorów.

7.3.2

Podstawowe komendy

Greckie litery uzyskiwane są w trybie matematycznym komendami odpowiadającymi

ich angielskim nazwom, tj. α –\alpha, β –\beta, itd. oraz Γ –\Gamma, ∆ –\Delta, itd.
Najważniejsze symbole matematyczne: ± –\pm, ∓ –\mp, × –\times, ÷ –\div, · –\cdot, ∗ –
\ast, ? –\star, ⊕ –\oplus, –\ominus, ⊗ –\otimes, ¬ –\le, ­ –\ge, 6= –\neq, –\ll,
–\gg, ≈ –\approx, ⊥ –\perp, k –\parallel,

P

–\sum,

R

–\int,

Q

–\prod. ∂ –\partial.

W L

A

TEX’u istnieją również predefiniowane rozkazy tworzące symbole funkcji: arc cos –

\arccos, ln –\ln, log –\log, itd.

W trybie matematycznym zachodzi często konieczność opatrywania symboli indeksami

dolnymi i/lub górnymi. Poniższy przykład ilustruje dostawianie indeksów do zwykłego sym-
bolu oraz symbolu całki

A^{2}_{i}
\int \limits_{0}^{2 \pi}

A

2
i

Z

0

Ułamki tworzy rozkaz frac a pierwiastki rozkaz sqrt. Zamiast frac możemy uzywać rozkazu
cfrac z pakietu AMSL

A

TEXktóry nie zmniejsza licznika i/lub mianownika w miarę zagłębiania

się ułamka

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

80

WYKŁAD 7. SKŁAD TEKSTÓW – L

A

TEX

\sqrt[3]{x^2 + y^2}
\frac{ x + y}{c + d}
\frac{ x + \frac{1}{x}}{y + \frac{1}{y}}
\cfrac{ x + \cfrac{1}{x}}{y + \cfrac{1}{y}}

3

q

x

2

+ y

2

x + y

c + d

x +

1
x

y +

1
y

x +

1

x

y +

1

y

Możliwe jest również składanie wzorów zawierających nawiasy o wielkości dopasowanej do obej-
mowanego symbolu. Odpowiednie symbole ograniczające występują w parach lewy – prawy

\left( \right)

\left[ \right]

\left| \right|

\left\{ \right\}

Liczba nawiasów left danego typu musi zgadzać się z liczbą nawiasów right w jednej linii

równania. Gdy istnieje potrzeba kontynuowania otwartego nawiasu w kilku liniach równania
stosujemy rozkazy right. i left. zamykające i otwierające nawiasy dowolnego typu bez
wygenerowania reprezentacji graficznej symbolu

a \left( \cfrac{x}{a+b} \right. \\
\left. + \frac{c}[d} \right)

a

x

a + b

+

c

d

7.3.3

AMSL

A

TEX

AMSL

A

TEX zapewnia dodatkowe otoczenia do umieszczania równań długich oraz do gru-

powania kilku równań. Najważniejsze z nich to align, gather, multline.

\begin{multline}
długie równanie, pierwsza linia \\
długie równanie, druga linia \\
...
długie równanie, ostatnia linia
\end{multline}
\begin{gather}
wzór 1 \\
wzór 2 \\
...

Piotr Zawadzki

background image

7.3. WZORY MATEMATEMATYCZNE

81

wzór ostatni
\end{gather}
\begin{align}
lewa 1 & = prawa 1 \\
lewa 2 & = prawa 2 \\
...
ostatnia lewa & = ostatnia prawa \\
\end{align}

W otoczeniu align wyrównanie wzorów następuje w miejscu wystąpienia znaku &. Dozwo-

lone jest użycie kilku punktów wyrównywania, tj. kilku znaków & w jednej linii równania.

Bardzo pomocne przy numerowaniu równań jest otoczenie subequations. Wewnątrz tego

otoczenia wzory numerowane są numerem arabskim i literami łacińskimi. Jest to konwencja
często stosowana do numerowania wzorów ściśle ze sobą związanych.

\begin{multline}
a+b+c+\ldots+z = 1 + 2 + \ldots + N \\
= 2 \pi \int\limits_{0}^{1} \cfrac{1}[x} dx
\end{multline}
\begin{subequations}
\begin{align}

x_1 & = a + b + c \\
x_2 & = a - b

\end{align}
\begin{gather}

x_1

= a + b + c\\

x_2

= a - b

\end{gather}
\end{subequations}

a + b + c + . . . + z = 1 + 2 + . . . + N

= 2π

1

Z

0

1

x

dx (7.1)

x

1

= a + b + c

(7.2a)

x

2

= a − b

(7.2b)

x

1

= a + b + c

(7.2c)

x

2

= a − b

(7.2d)

O wielu dalszych udogodnieniach realizowanych przez AMSL

A

TEX można dowiedzieć się stu-

diując dołączona do pakietu dokumentację.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

82

WYKŁAD 7. SKŁAD TEKSTÓW – L

A

TEX

7.4

Materiał ruchomy

Materiał ruchomy to taki fragment dokumentu co do którego L

A

TEX ma pewna swobodę

w znalezieniu mu miejsca na stronie. Dwa takie elementy to otoczenie table wewnątrz
którego umieszczane są zazwyczaj tabele oraz figure zawierające rysunki.

7.4.1

Tabele

Przykład otoczenia table zamieszczono poniżej

\begin{table}[htbp]
tutaj komendy tworzące tabelę
\caption{Podpis tabeli}
\label{TabelaProbna}
\end{table}

Parametr opcjonalny określa gdzie L

A

TEX ma próbować umieścić tabelę. Odpowiednie litery

argumentu oznaczają: h – w miejscu wystąpienia, t – na górze stony, b – na dole strony, p – na
osobnej stronie zawierającej tylko obiekty ruchome. Kolejność występowania liter decyduje
o kolejności działań L

A

TEX’a. Parametr nie musi zawierać wszystkich wymieniony liter. Na

przykład wpis tb oznacza, że wszystkie tabele mają być umieszczane na górze strony, a gdy
z jakiś powodów taki skład jest niemożliwy – na dole strony. Inne warianty nie są wówczas
brane pod uwagę.

Rozkaz caption nadaje tabeli podpis oraz numer. Jeżeli do tabeli chcemy odwoływać

się w tekście musimy opatrzeć ją etykietą przy użyciu rozkazu label. Rozkaz label musi
wystąpić po rozkazie caption.

Wewnątrz otoczenia table możemy oczywiście stosować komendy formatujące, np. cen-

trowanie, zmiana fontu, itp.

Do wypełnienia wnętrza tabel służą dwa otoczenia tabular i tabularx.

Otoczenie tabular

Składnia otoczenia tabular jest następująca

\begin{tabular}[pozycja]{kolumny}
element 1,1 & element 1,2 & ... & element 1,N \\
element 2,1 & element 2,2 & ... & element 2,N \\
.............................................. \\
element N,1 & element N,2 & ... & element N,N \\

Opcjonalny parametr pozycja określa położenie tabeli względem tekstu poprzedzające-

go tabelę i ma znaczenie tylko gdy tabular wystepuje samodzielnie, bez otoczenia table.
Dozwolone wartości parametru to: t – najwyższy wiersz tablicy na poziomie otaczające-
go tekstu, b – najniższy wiersz tablicy na poziomie otaczającego tekstu. Brak parametru
oznacza, że tabela bedzie wycentrowana w pionie względem sąsiadującego tekstu.

Piotr Zawadzki

background image

7.4. MATERIAŁ RUCHOMY

83

Parametr kolumny określa ilość i sposób formatowania kolumn tabeli. Formatowanie da-

nej kolumny określa jedna litera, należy podać tyle liter ile jest kolumn. Dozwolone typy
kolumn to: l – zawartość wyrównana do lewej strony, r – zawartość wyrównana do prawej
strony, c – zawartość jest wycentrowana, p{szer} – zawartość jest składana w akapitach
o szerokości szer. Między opisami formatowania kolumn można umieścić informacje o spo-
sobie rozdziału kolumn. Wpis | tworzy pionową kreskę, a wpis || podwójną pionową kreskę.

Elementy każdego wiersza tabeli oddzielone są znakiem &. Liczba elementów wiersza

musi być identyczna z liczbą kolumn zadeklarowaną parametrem kolumny. Z kolei wiersze
kończą się znakami \\. Do tworzenia poziomych kresek służy komenda hline. Może ona
występować bezpośrednio przed pierwszym wierszem (kreska na nagłówkami tabeli) lub bez-
pośrednio po rozkazie kończącym wiersz. Podwójną kreskę uzyskujemy dwoma rozkazami
hline wystepującymi bezpośrednio po sobie.

Do „sklejenia” kilku elementów tablicy w jeden, bez naruszenia warunku zgodności liczby

kolumn z liczbą elementów w wierszu należy używać komendy multicolumn o następującej
składni

\multicolumn{liczba}{formatowanie}{tekst}

Parametr liczba oznacza liczbę sklejanych kolumn, formatowanie – sposób formatowa-

nia nowo powstałej komórki tabeli o składni identycznej jak parametr kolumny otoczenia
tabular, tekst – jest zawartością komórki.

Poniżej zamieszono przykładowe otoczenie tabular i wynik jego składu

\begin{tabular}{|l|r||c|p{2cm}|}
\hline
nagłówek 1 & nagłówek 2 & nagłówek 3 & nagłówek 4 \\
\hline \hline
element 1,1 & element 1,2 & element 1,3 & element 1,4 \\
element 2,1 & długi element 2,2 & bardzo długi element & wzór też może być $\int\limits_{0}^{2\pi} g(x) dx$ \\
\hline
\multicolumn{2}{|c||}{elementy 3,1 i 3,2} & element 3, 3& element N,N \\
\hline
\end{tabular}

nagłówek 1

nagłówek 2

nagłówek 3

nagłówek 4

element 1,1

element 1,2

element 1,3

element
1,4

element 2,1

długi element 2,2

bardzo długi element

wzór

też

może

być

R

0

g(x)dx

elementy 3,1 i 3,2

element 3, 3

element
N,N

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

84

WYKŁAD 7. SKŁAD TEKSTÓW – L

A

TEX

Pakiet tabularx

Otoczenie tabularx również służy do składania tabel. Różnica polega na tym, że tabularx

składa tabelkę w obszarze o określonej szerokości. Aby zapewnić rozrastanie się tabeli do za-
danego wymiaru wprowadzono nowy typ kolumny o nazwie X która rośnie do zapewnienia
odpowiedniej szerokości. Jeżeli w specyfikacji podamy kilka kolumn typu X to nadmiar szero-
kości zostanie podzielony równomiernie pomiędzy te kolumny. Kolumny typu X są składane
jak kolumny typu p, z tą różnicą, że szerokość wyznaczana jest automatycznie. Poniższy
przykład ilustruje użycie tabularx

\begin{tabularx}{0.8\textwidth}{|X|l|l|}
\hline

& \multicolumn{1}{c|}{LAN} & \multicolumn{1}{c|}{ATM} \\

\hline
metoda przesyłania ramek & bezpołączeniowa & połączeniewa \\
\hline
korzystanie z~rozgłoszeń & tak & nie \\
\hline
\end{tabularx}

LAN

ATM

metoda przesyłania ramek

bezpołączeniowa

połączeniewa

korzystanie z rozgłoszeń

tak

nie

W otoczeniu tabularx pierwszy parametr specyfikuje szerokość tabeli. Możemy ją zadać
podając wymiar bezwzględny lub uzależnić od innej miary długości. W przykładzie tabela
będzie miała szerokość 0.8 szerokości szpalty. Zademonstrowano również użycie multicolumn
do zmiany formatowania pojedynczej komórki tabeli.

7.4.2

Rysunki

Zewnętrzną grafikę możemy wstawiać do dokumentu w postaci bitmapy w formacie BMP

lub w postaci wektorowej w formacie EPS.

7.4.3

Pakiet graphicx

Pakiet graphicx zapewnia komendę includegraphics do włączania plików graficznych.

Składnia komendy jest następująca

\includegraphics[wymiar]{plik}

Parametr wymiar może określać skalowanie rysunku względem wymiarów określonych w pli-

ku (tylko grafika wektorowa). Może również określać szerokość i/lub wysokość rysunku. Jeżeli
podamy tylko jeden z wymiarów drugi zostanie dobrany automatycznie. Ponieważ w pliku
BMP nie ma informacji o wymiarach rysunku, przy ich włączaniu musimy podać jego sze-
rokość i wysokość. Poniżej podano przykładowe komendy dołączania grafiki

Piotr Zawadzki

background image

7.4. MATERIAŁ RUCHOMY

85

\includegraphics{rysunek}
\includegraphics[scale=0.7]{rysunek}
\includegraphics[width=5cm]{rysunek}
\includegraphics[width=5cm, height=3cm]{rysunek.bmp}

7.4.4

Otoczenie figure

Działanie otoczenia figure jest analogiczne do działania otoczenia table.

\begin{figure}[htb]
\includegraphics{rysunek}
\caption{Mój pierwszy rysunek.}
\label{MojRysunek}
\end{figure}

L

A

TEX umieszcza rysunek zgodnie ze wskazówkami zawartymi w parametrze otoczenia. Ko-

menda caption zapewnia rysunkowi podpis a komenda label etykietę dzięki której do ry-
sunku możemy odwoływać się w treści dokumentu.

7.4.5

Pakiet floatflt

Pakiet floatflt służy do tworzenia rysunków „oblanych” tekstem. Zachowanie komend

pakietu kontroluje opcja umiejscawania rysunków

\usepackage[miejsce]{floatflt}

Dozwolone wartości zmiennej miejsce to rflt, lflt, vflt. Do wklejania rysunku służy

otoczenie floatingfigure

\begin{floatingfigure}{60mm}
\includegraphics{rysunek2}
\caption{Ilustracja użycia floatingfigure.}
\label{MojDrugiRysunek}
\end{floatingfigure}

Jako parametr otoczenia musimy podać szerokość jaka ma być zarezerowana na rysunek.

Wymiar pionowy zostanie ustalony automatycznie. Otoczenie floatingfigure nie powinno
być mieszane z otoczeniem figure.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

86

WYKŁAD 7. SKŁAD TEKSTÓW – L

A

TEX

7.4.6

Pakiet psfrag

Pakiet psfrag służy do wymiany tekstu zawartego w pliku EPS na tekst złożnony przez

L

A

TEX’a. Zamianę realizuje komenda

\psfrag{tekst z rysunku}{tekst z Latex’a}

Rozkaz psfrag umożliwia umieszczenie na rysunku tekstów których nie zapewnia program

graficzny, np. wzorów matematycznych, liter greckich, itp. Użycie psfrag ilustruje poniższy
przykład

\begin{figure}
\psfrag{A}{A}
\psfrag{a}{$\alpha$}
\psfrag{calka}{$\int\limits_{0}^{2\pi} f(x) dx$}
\includegraphics{rysunekztekstem}
\end{figure}

oryginał

podmieniony tekst

7.5

Wypisy

L

A

TEX może wykonać automatycznie następujące spisy: treści, tabel, rysunków, literatury

oraz skorowidz nazw.

7.5.1

Oznaczanie fragmentów tekstu

Poprzez wykorzystanie mechanizmu etykiet możliwe jest w L

A

TEX’u odwoływanie się do

elementów tekstu numerowanych automatycznie. Element do którego chcemy się odwołać
oznaczamy etykietą wykorzystując rozkaz

\label{etykieta}

Typ oznaczanego elementu (równanie, rysunek, tabela) ustalany jest automatycznie na pod-

stawie otoczenia wewnątrz którego znajduje się etykieta. Nie jest mozliwe nadawanie etykiet
zawierających polskie znaki narodowe.

Piotr Zawadzki

background image

7.5. WYPISY

87

7.5.2

Referencje

W tekście możemy odwołać się poprzez jego numer rozkazem

\ref{etykieta}

lub podać odwołanie do strony na której znajduje się dany element rozkazem

\pageref{etykieta}

AMSL

A

TEX zapewnia specjalny rozkaz do odwoływania się do równań

\eqref{etykieta równania}

7.5.3

Spis treści

Spis treści wstawiony jest do dokumentu w miejscu wystąpienia rozkazu tableofcontents.

W spisie umieszczane są elementy podziału do poziomu zagłębienia określonego wydaną
w preambule komendą

\setcounter{tocdepth}{numer}

gdzie numer określa poziom zagłębienia.

7.5.4

Spis literatury

Spis literatury możemy wykonać ręcznie przy użyciu otoczenia thebibliography lub

automatycznie z wykorzystaniem programu BIBTEX i bazy danych pozycji literaturowych.
W obu przypadkach do pozyji odwołujemy się w tekście rozkazem

\cite{etykieta}

gdzie etykieta jest nadana danej pozycji literaturowej w spisie literatury.

Otoczenie thebibliography

Poniżej zamieszczony fragment kodu ilustruje użycie otoczenia thebibliography

\begin{thebibliography}{10}
\bibitem{atm-cmLANE1}
H.~L. Truong, W.~W. {Ellington~Jr.}, J.-Y. {Le~Boudec}, and A.~X. Meier, ,,Lan

emulation on atm network,’’ {\em IEEE Communications Magazine}, pp.~73--85, 5
1995.

\bibitem{atm-cmLANE2}
Y.~T. Hou, L.~Tassiulas, and H.~J. Chao, ,,Overview of implementing atm-based

enterprise local area network for desktop multimedia computing,’’ {\em IEEE
Communications Magazine}, pp.~70--76, 4 1996.

\end{thebibliography}

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

88

WYKŁAD 7. SKŁAD TEKSTÓW – L

A

TEX

Parametr otoczenia rezerwuje szerokość pola na nawiasy kwadratowe z numerem pozycji.

O szerokości pola decyduje liczba cyfr parametru. Wewnątrz otoczenia umieszczamy kolejne
pozycje literaturowe rozkazem bibitem podając mu jako argument etykietę pozycji. Odpo-
wiednie wpisy w spisie musimy samodzielnie formatować.

Program BibTEX

Przy pisaniu większej ilości publikacji ręczne umieszczanie spisów literatury jest dość

uciążliwe. Wynika to z faktu, że różne wydawnictwa mają różne wymagania jeśli idzie o for-
matowanie pozycji. Uciążliwy jest również fakt częstego wpisywania tych samych pozycji
literaturowych w różnych dokumentach.

Na przeciw tym problemom wychodzi program BibTEX. Program pracuje wykorzystu-

jąc bazę danych stworzoną przez użytkownika. Format wpisów do bazy ilustruje poniższy
przykład

@ARTICLE{atm-cmLANE1,

author = {Hong Linh Truong and William W. {Ellington~Jr.} and

Jean-Yves {Le~Boudec} and Andreas X. Meier},

title = {LAN Emulation on ATM Network},
journal = {IEEE Communications Magazine},
year = {1995},
month = {5},
pages = "73--85",

}
@BOOK{atm-ginsburg,

author = "David Ginsburg",
title = "ATM~-- solutions for enterprise networking",
publisher = "Addison-Wesley",
address = "Harlow, England",
year = "1996",

}

Wpisy w bazie określają typ pozycji literaturowej, etykietę, autora, tytuł i inne parametry

zależne od rodzaju publikacji. Wykaz dostępnych typów oraz pól rekordów można znaleźć
w dokumentacji programu.

Aby skorzystać z pozycji literaturowych wpisanych w bazie danych w tekście dokumentu

umieszczamy następujące rozkazy

\bibliographystyle{ieeetr}
\bibliography{atm}

Rozkaz bibliographystyle określa sposób formatowania wypisów pozycji literaturowych

zależnie od ich typu (artykuł, książka, itp). Dostępne rodzaje formatowania można sprawdzić
w katalogu

Piotr Zawadzki

background image

7.5. WYPISY

89

/usr/share/texmf/bibtex/bst/

Nazwa rodzaju formatowania jest nazwą pliku z pominiętym rozszerzeniem *.bst. Rozkaz

bibliography określa nazwę pliku (rozszerzenie *.bib) zawierającego spis publikacji.

Wykonanie spisu literatury wymaga wykonania dwóch kompilacji dokumentu. W pierw-

szym przebiegu L

A

TEX umieszcza w pliku (plikach) z rozszerzeniem *.aux informacje o ety-

kietach pozycji do których nastapiły odwołania. Teraz powinniśmy uruchomić program
BIBTEX. Na podstawie etykiet zebranych w pliku *.aux generuje on sformatowany spis lite-
ratury umieszczając go w pliku *.bbl. Przy kolejnym uruchomieniu L

A

TEX’a do dokumentu

wstawiany jest już gotowy spis literatury.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

Wykład 8

Tworzenie wykresów – gnuplot

Program gnuplot jest interaktywnym, sterowanym poleceniami z linii komend progra-

mem do tworzenia wykresów funkcji i danych. gnuplot może pracować zarówno w trybie
wsadowym, jak i interaktywnym. Co więcej oba tryby pracy mogą być łączone.

8.1

Tryby pracy

Arumenty w linii komend dla polecenia gnuplot są traktowane jako nazwy plików z ko-

mendami do interpretacji przez gnuplota. Pliki przetwarzane są w kolejności wystąpienia,
od lewej do prawej. Po przetworzeniu ostatniego pliku program kończy działanie. Specjalna
nazwa pliku w postaci znaku minus -- oznacza plik standardowego wejścia. Jeżeli w linii
komend nie podamy argumentów, program uruchomi się w trybie interaktywnym.

Przykłady:

• sesja interaktywna

gnuplot

• przetworzenie dwóch plików w trybie wsadowym

gnuplot plik1 plik2

• sesja interaktywna poprzedzona przetworzeniem pliku plik1 po której zakończeniu prze-

twarzany jest plik2
gnuplot plik1 - plik2

8.2

Składnia pliku wejściowego

W opisie składni komend będziemy używać następującej konwencji; w nawiasy klamro-

we {} ujęte będą parametry opcjonalne, znakiem | oddzielone będą wzajemnie wykluczające
się alternatywy, elementy w nawiasach <> oznaczają elementy za które powinny być wsta-
wione odpowiednie wartości.

Nazwy komend mogą być dowolnie skracane, jednak tak aby nie było wątpliwości o którą

90

Piotr Zawadzki

background image

8.2. SKŁADNIA PLIKU WEJŚCIOWEGO

91

komendę chodzi

1

. Jeżeli w linii występuje wiele komend muszą być one oddzielone średnikiem.

Komendy gnuplota bardzo często mają wiele opcji. Opcje muszą pojawiać się we właści-

wym porządku, choć dowolne z nich mogą być opuszczone, tzn. dozwolone są wywołania

komenda a b c
komenda a c

natomiast wywołanie

komenda c a

jest niedozwolone. Jedno polecenie dla gnuplota może zajmować wiele linii. Każda kontynu-
owana linia powinna być zakończona znakiem odwrotnego ukośnika (ang. backslash \). Przy
tworzeniu komend gnuplota obowiązują następujące reguły

• separatorem dla opcji komend jest znak odstępu,
• jeżeli parametrem jest lista elementów, to elementy listy oddzielone są przecinkiem,
• przedziały wartości zawarte są w nawiasach kwadratowych [ ]
• ciąg znaków musi być umieszczony w cudzysłowach (podwójnych " lub pojedynczych ’),
• w nawiasach klamrowych umieszczamy liczby zespolone {2, 3} = 2 + j3,
• komentarz rozpoczyna się znakiem # i kończy końcem linii.

8.2.1

Komendy

W tym punkcie omówimy najważniejsze komendy programu.

Komenda quit

Komendy exit lub quit kończą działanie programu.

Komenda save

Przy użyciu komendy save możliwe jest zapisanie do pliku: funkcji zdefiniowanych przez

użytkownika, wartości zmiennych oraz opcji tworzenia wykresu wraz z ostatnią komendą
plot (patrz punkt 8.2.1).

Składnia

save

{<opcja>} ’<plik>’

Parametr <opcja> moze przyjmować wartości: functions, variables lub set. Bez podanej opcji
zachowywane są wszystkie elementy.

Przykłady

save ’work.gnu’
save functions ’func.dat’
save var ’var.dat’
save set ’options.dat’

1

Wyjątkiem jest komenda quit służąca do zakończenia pracy z programem.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

92

WYKŁAD 8. TWORZENIE WYKRESÓW – GNUPLOT

Komenda plot

Komenda plot jest podstawową komendą programu. Jej szczegółowe omówienie znajduje

się w punkcie 8.2.1.

Komenda replot

Komenda replot służy do potórnego narysowania wykresu po zmianie opcji lub zmianie

urządzenia wyjściowego.

Komenda set i show

Komenda set służy do zmiany opcji tworzenia wykresu. Wiele opcji omówonio w punk-

cie 8.4 poświęconym tworzeniu wykresów. Komenda show służy do sprawdzania ustawień
poszczególnych opcji. Specjalna wersja show all powoduje wyświetlenie wszystkich opcji.

8.2.2

Wyrażenia

W wyrażeniach arytmetycznych mogą występować trzy typy danych: liczby całkowite,

liczby rzeczywiste i liczby zespolone. Typ liczby okeślany jest na podstawie jej formatu, tzn.
jeżeli nie występuje w liczbie kropka lub wykładnik, to jest to liczba całkowita (np. 1, -10),
w przeciwnym razie jest to liczba rzeczywista (np. 1.0, -1e1). Jeżeli w wyrażeniu występują
liczby całkowite i rzeczywiste, to liczby całkowite są „promowane” do liczb rzeczywistych.
Zasadnicza różnica między arytmetyką liczb całkowitych i rzeczywistych tkwi w dzieleniu,
w którym dla liczb całkowitych „obcinana” jest część ułamkowa tj. 3/2 = 1 a 3.0/2 = 1.5.

Liczby zespolone podajemy jako parę liczb w nawiasach klamrowych, np. {3, 2} = 3 + j2.

Liczby zespolone zawsze mają współczynniki rzeczywiste, niezależnie od ich postaci. W wy-
rażeniach z liczbami zespolonymi liczby rzeczywiste „promowane” są do liczb zespolonych.

8.2.3

Funkcje predefiniowane

Gnuplot wyposażony jest w szeroki zbiór funkcji predefiniowanych, począwszy od zwy-

kłych funkcji trygonometrycznych aż po funkcje Bessela i Neumanna. W zasadzie wszyst-
kie funkcje akceptują argumety w postaci cakowitej, rzeczywistej i zespolonej. Standardowo
funkcje trygonometryczne akceptują argumenty w radianach, lecz można to zmienić opcją
set angles.

8.2.4

Funkcje użytkownika

Gnuplot pozwala na definiowanie funkcji użytkownika, przyjmujących co najmniej jeden

i co najwyżej pięć parametrów. Składnia definicji wygląda następująco

<func-name>( <dummy1> {,<dummy2>} ... {,<dummy5>} ) = <expression>

Piotr Zawadzki

background image

8.3. URZĄDZENIE WYJŚCIOWE

93

Można również definiować zmienne globalne. Definicja zmiennej ma następującą składnię

<variable-name> = <constant-expression>

Przykłady:

w = 2

# zmienna o wartości całkowitej

q = tan(pi/2 - 0.1) # zmienna o wartości rzeczywistej
sinc(x) = sin(pi*x)/(pi*x) # funkcja użytkownika sinc
delta(t) = (t == 0) # delta Diraca
ramp(t) = (t > 0) ? 1 : 0

#

funkcja Heaviside’a

comb(n,k) = n!/(k!*(n-k)!) # symbol n po k

8.3

Urządzenie wyjściowe

Gnuplot dostosowuje możliwości graficzne do typu urządzenia wyjściowego. Za obsługę

urządzenia danego typu odpowiedzialny jest sterownik zwany terminalem. Do ustawienia
typu terminala służy komenda set

set terminal {<terminal-type>}
show terminal

Aby sprawdzić dostępne terminale wydajemy komendę set terminal bez podania typu.
W odpowiedzi uzyskamy listę obsługiwanych terminali.

Komendy wysyłane przez typ terminala do urządzenia rysującego są wysyłane do pliku

wyjścia standardowego. Mogą być one jednak przekierowane do innego pliku komendą

set output {"<filename>"}
show output

Wywołanie set output bez nazwy pliku przywraca wysyłanie danych do pliku wyjścia stan-
dardowego.

Wiele typów terminali ma dodatkowe opcje kontrolujące ich tryb pracy. Odpowiednie

opcje podajemy po nazwie terminala oddzielone od siebie znakami odstępu. Najważniejsze
terminale to: fig, latex, mp, postscript, pslatex, pstricks, x11.

8.3.1

Wyjście na ekran

Wyjście na ekran konsoli graficznej X-Windows uzykujemy komendą

set terminal x11 {reset} {<n>}

Jest to terminal ustawiany jako domyślny, a więc o ile wcześniej nie zmienimy typu terminala
to powyższej komendy nie musimy wydawać. Jeżeli ustawimy parametr reset to komenda
spowoduje zamknięcie wszystkich okien z wykresami. Parametr <n> określa numer okna
w októrym będzie odbywać się rysowanie.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

94

WYKŁAD 8. TWORZENIE WYKRESÓW – GNUPLOT

8.3.2

Wyjście do L

A

TEX’a

Ustwienie typu terminala jako L

A

TEXpowoduje, że do uzyskania wykresu zostaną użyte

komendy modu graficznego programu L

A

TEX. Składnia jest następująca

set terminal latex | emtex {courier | roman | default} {<fontsize>}

Jeżeli nie ustawimy typu i rozmiaru fontu, to zostaną one „odziedziczone” po dokumencie
do którego wstawiono rysunek. Niewątpliwą zaletą terminala jest możliwość uzykania opi-
sów fontem identycznem jak w dokumencie. Ponadto możliwe jest używanie w opisach trybu
matematycznego, a tym samym wstawiania wzorów i greckich liter. Tekst dodatkowy tzn. ty-
tuły, etykiety itp. mogą być odpowiednio ustawiane (centrowane,wyrównywane od góry, itp)
względem określonego punktu na wykresie. Do uzyskania odpowiednich efektów korzystamy
z komend zapewnianych przez L

A

TEX’a lub bezpośrednio przez terminal.

Jeżeli do dokumentu L

A

TEX’a dołączamy rysynek stworzony przez omawiany typ terminala

to w preambule musimy dołączyć pakiet latexsym.

Niewątpliwą wadą terminala L

A

TEX jest poleganie na komendach graficznych L

A

TEX’a,

którego możliwości w tym zakresie należy uznać za skromne.

8.3.3

Wyjście do PSL

A

TEX

Terminal stara się połączyć najlepsze cechy dwóch światów: języka składu L

A

TEX i jezyka

opisu strony Postscript. Ustawienie tego terminala uzyskujemy komendą

set terminal pslatex {<color>} {<dashed>} {<rotate>} {auxfile} {<font_size>}

Znaczenie opcji jest następujące:

<color> przyjmuje wartości color lub monochrome,
<rotate> wartość rotate oznacza, że opis osi y ma być obrócony o 90

0

, norotate oznacza

brak obrotu,

<dashed> flaga oznaczająca rozróżnianie typów linii poprzez ich rózne „kreskowanie”
auxfile brak tej opcji powoduje, że komendy L

A

TEX’a i rysunek w postscripcie zostaną

umieszczone w jednym pliku. Jeżeli opcja występuje zostaną wygenerowane dwa pliki:
plik postscriptowy oraz plik z komendami składu dokumentu zawierający komendy in-
kluzji pliku postscriptowego.

<font size> rozmiar fontu użytego do składu rysunku.

Podobnie jak w terminalu latex możemy pozycjonować tekst.

8.3.4

Wyjście do MetaPost

Terminal mp tworzy plik wejściowy dla programu MetaPost. Przetworzenie tego pliku

tworzy plik EPS który może być następnie dołączony do dokumentu. W utworzonym pliku
wykorzystywane są fonty L

A

TEX’a i obejrzenie go bez wstawienia do dokumentu nie jest

możliwe. Składnia komendy ustawiającej ten terminal jest następująca

Piotr Zawadzki

background image

8.3. URZĄDZENIE WYJŚCIOWE

95

set term mp {<color>} {<dashed>} {notex} {mag <magsize>} {"<name>"} {<size>}

Znaczenie opcji jest następujące:

<color> przyjmuje wartości color lub monochrome,
<dashed> flaga oznaczająca rozróżnianie typów linii poprzez ich rózne „kreskowanie”: solid –

linie ciągłe, dashed – linie kreskowane.

notex wyłącza możliwość korzystania z komend składu w opisach osi i etykietach,
mag skalowanie wszystkich napisów,
name nazwa fontu do opisów,
size i jego rozmiar.

Przykłady:

# sesja gnuplot
set terminal mp mono "cmtt12" 12 # wybór terminala
set output "figure.mp" # wybór pliku wyjściowego
<komendy to utworzenia rysunku>
quit
> mp figure.mp > figure.eps
# LaTeX
\usepackage{graphics}
\includegraphics{figure}

8.3.5

Wyjście do PStricks

Terminal PStricks jest przeznaczony do użycia z pakietem pstricks z L

A

TEX’a. Jego

działanie jest bardzo podobne do terminali latex i pslatex. Różnica polega jedynie na
zestawie komend używanych do sporządzenia rysunku. Składnia ustawienia terminala jest
następująca

set terminal pstricks {hacktext | nohacktext} {unit | nounit}

8.3.6

Wyjście do pliku graficznego xfig

Terminal fig generuje wykres w formacie zrozumiałym przez program graficzny xfig.

Składnia wyboru terminala jest następująca

set terminal fig {monochrome | color} {small | big}

{pointsmax <max_points>} {landscape | portrait}
{metric | inches} {fontsize <fsize>}
{size <xsize> <ysize>} {thickness <units>} {depth <layer>}

Znaczenie opcji rozumie każdy kto sporządził choć kilka rysunków programem xfig. Możliwa
jest kontrola grubości linii oraz warstwy w której znajduje się dana linia wykresu poprzez
zwiększenie wartości linetype o 100 i 1000, odpowiednio. Przykłady:

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

96

WYKŁAD 8. TWORZENIE WYKRESÓW – GNUPLOT

set terminal fig monochrome small pointsmax 1000

# defaults

set output "test.fig"

8.3.7

Wyjście do postscriptu

Terminal postscriptowy tworzy wykres w języku opisu strony. Składnia ustawienia ter-

minala jest następująca

set terminal postscript {<mode>} {enhanced | noenhanced}

{color | monochrome} {solid | dashed}
{<duplexing>}
{"<fontname>"} {<fontsize>}

Opcje wywołania mają następujęce znaczenie

<mode> – może przyjmować wartości: landscape, portrait, eps. Tylko pliki EPS mogą być

importowane przez inne aplikacje bowiem są opatrzone informacją o rozmiarze rysunku.

enhanced pozwala na umieszczanie indeksów górnych i dolnych w opisach przy pomocy skład-

ni TEXopodobnej. Litery greckie oraz symbole w tym trybie można uzyskać zmienia-
jąc font na Symbol i wybierając odpowiedni znak fontu, np. {/Symbol = 20G} ≡ Γ,
{/Symbol\245} ≡ ∞.

<duplexing> pozwala na skorzystanie z możliwości niektórych drukarek postscriptowych do

jednoczesnego druku po obu stronach kartki.

Pozostałe parametry mają znaczenie takie jak zwykle. Przykłady:

set terminal postscript eps enhanced dashed
set output "test.eps"

Terminal postscriptowy wyposażony jest w bogaty zbiór znaczników punktów i rodzajów
linii.

8.4

Tworzenie wykresów

Do rysowanie wykresów służą dwie komendy: plot tworzy wykresy krzywych natomiast

splot służy do kreślenia powierzchni. Komenda replot służy do powtórnego wykonania
ostatnio wydanej komendy plot i splot. Dalej będziemy zajmować się wyłącznie kreśleniem
krzywych.

8.4.1

Rysowanie wykresu

Składnia komendy plot jest następująca:

plot {<ranges>}

{<function> | {"<datafile>" {datafile-modifiers}}}
{axes <axes>} {<title-spec>} {with <style>}

Piotr Zawadzki

background image

8.4. TWORZENIE WYKRESÓW

97

Wykresy kilku krzywych zadajemy oddzielając opisy krzywych przecinkiem. Dalej omówimy
kolejne elmenty komendy.

Opcja <ranges>

Parametr <ranges> ma następującą składnię

[minX:maxX] { [minY:maxY] }

tj. w nawiasach kwadratowych znajdują się przedziały wartości rzędnych i odciętych dla
których ma być sporządzony wykres.

Plik z danymi

Plik z danymi można wykreślić podając nazwę pliku oraz modyfikatory określające sposób

interpretacji danych z pliku. Składnia modyfikatorów jest następująca

{datafile-modifiers} = {index <index list>}

{every <every list>}
{using <using list>}
{smooth <option>}

Modyfikator index

Gnuplot akceputuje pliki z wieloma seriami danych. Jeżeli w pliku

znajdują się jedna za drugą dwie puste linie, to gnuplot traktuje dane po przerwie tak jakby
znajdowały się w innym pliku. Do wyboru serii danych z tak skonstrowanego pliku służy
komenda index.

Jedna pusta linia służy dokreślania nieciągłości. Punkty znajdujące się przed i po pustej

linii nie są łączone.

Składnia modyfikatora jest następująca

<index list> = <m>{{:<n>}:<p>}

Indeks <m> wybiera zbiór danych o numerze <m>, <m>:<n> wybiera serie danych o numerach
od <m> do <n>, natomiast <m>:<n>:<p> – serie danych o numerach od <m> do <n> z krokiem
<p>.

Modyfikator every

Ten modyfikator pozwala na okresowy wybór linii (rekordów) z po-

szczególnych serii danych. Składnia:

every {<point_incr>} {:{<block_incr>} {:{<start_point>}

{:{<start_block>} {:{<end_point>} {:<end_block>}}}}}

W powyższym opisie point odpowiada jednemu rekordowi danych, natomiast block serii
(blokowi) danych. Numery bloków i rekordów rozpoczynają się od 0. Przykłady:

every :::3::3

# czwarty blok

every :::::9

# pierwsze 10 bloków

every 2

# punkty o~parzystych numerach

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

98

WYKŁAD 8. TWORZENIE WYKRESÓW – GNUPLOT

Modyfikator using

Najczęściej używanym modyfikatorem jest using. Określa on które

kolumny (pola rekordów) będą wyświetlane.

using {<entry> {:<entry>}} {’format’}

Pola <entry> zawierają numery kolumn lub wyrażenia z ich które będą wyliczane z danych
danego rekordu. Do pól rekordu możemy się odwołać poprzedzając jego numer znakiem $.
Pole format jest ciągiem znaków określającym format danych w jakim będą odczytywane
z pliku. Format określa się tak jak w funkcji scanf języka C. Przykłady:

using 1:($2+$3)

# suma kolumn 2 i 3 względem kolumny 1

using 1:($3>10 ? $2 : 1/0)

W ostanim przykładzie wybrane są wartości z kolumny 2, pod warunkiem, że odpowiednia
wartośc z kolumny 3 jest większa od 10. W przeciwnym razie rekord jest pomijany (war-
tość 1/0 jest nieokreślona)

Modyfikator smooth

Modyfikator zmusza gnuplota do wykonania rożnego rodzaju pro-

cedur interpolacji i aproksymacji dla wyświetlanych danych. Składnia jest następująca

smooth {unique | csplines | acsplines | bezier | sbezier}

unique szereguje monotonicznie dane na osi rzędnych. Pozostałe opcje wykorzystują punkty
danych do wyznaczenia współczynników opsisujacych krzywe interpolujące i aproksymujące.

Opcja axes

Słowo kluczowe axes jest używane do określenia która skala ma być używana do skalo-

wania danej krzywej. Istnieją 4 możliwe ustawienia: x1y1 – osie dolna i lewa, x1y2 – osie
dolna i prawa, x2y1 – osie górna i lewa, x2y2 – osie górna i prawa. Przykłady:

plot ’data.1’ using 1:2 axes x1y1, \

’data.1’ using 3:4 axes x2y2

Opcja title

Opcja title przypisuje danej krzywej tekst opisu który będzie ewentualnie wykorzystany

w legendzie (patrz punkt 8.4.4). Przykład:

plot x # zmienna x z opisem x
plot x notitle # zmienna x bez opisu
plot x**2 title "x^2" # kwadrat zmiennej x z odpowiednim opisem

Piotr Zawadzki

background image

8.4. TWORZENIE WYKRESÓW

99

Modyfikator with

Przy użyciu with określamy jakie będą rysowane poszczególne pukty, tzn. jako punkty

izolowane, punkty łączone odcinkami lub same linie łączące. Składnia:

with <style> { {linestyle | ls <line_style>}

| {{linetype | lt <line_type>}

{linewidth | lw <line_width>}
{pointtype | pt <point_type>}
{pointsize | ps <point_size>}} }

style wybiera rodzaj prezentacji danych. Dozwolone wartości to: lines, points, linespoints,
impulses, dots, steps, fsteps, histeps, errorbars, xerrorbars, yerrorbars, xyerrorbars, boxes,
boxerrorbars, boxxyerrorbars, financebars, candlesticks lub vector.

Standardowo kolejne rysowane krzywe otrzymują inny typ linii (kolor, kreskowanie) oraz

inny sposób oznaczania punktów. Automatycznie ustawienia mogą być zmienione. Argumen-
ty opcji linestyle>, linetype>, itd. są liczbami których znaczenie zależy od typu terminala.
Terminal wspiera co najmniej sześć różnych typów punktów i zazwyczaj możliwość zmiany
grubości linii danego wykresu. Przykłady:

plot sin(x) with impulses
plot ’data.1’ using 1:2 with linesp lt 1 pt 3, \

’data.2’ using 1:3 with linesp lt 1 pt 4

8.4.2

Opcje tworzenia wykresów

Oprócz parametrów podanych bezpośrednio w komendzie plot tworzenie wykresu kon-

troluje wiele opcji ustawianych komendą set. Dalej omówimy najważniejsze z tych komend.

Skalowanie osi

Automatyczne skalowanie osi kontroluje komenda o następującej składni

set autoscale {<axes>{min|max}}
set noautoscale {<axes>{min|max}}
show autoscale

Wpis <axes> kontroluje osie który dane ustawienie dotyczy. Dozwolone wpisy to x, y, z,
x2, y2 lub xy. Jeżeli podany jest wpis min lub max to automatyczne (lub nieautomatyczne)
będzie dotyczyło tego końca osi. Przykłady:

set autoscale xy
set autoscale x2
set autoscale y2min

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

100

WYKŁAD 8. TWORZENIE WYKRESÓW – GNUPLOT

Ramka otaczająca wykres

Opcje o następującej składni kontrolują rysowane ramki (tzn. osi) wokół wykresu.

set border {<integer> { {linestyle | ls <line_style>}

| {linetype | lt <line_type> }

{linewidth | lw <line_width>} } }

set noborder
show border

Stała <integer> koduje którego boku ramki będą dotyczyły dane ustawienia: dół – 1, lewy –
2, góra – 4, prawy – 8. Odpowiednie wartości mogą być sumowane aby wybrać żądane boki,
co oznacza, że chcąc wybrać wszystkie boki ustawiamy 31.

Pozostałe opcjonalne parametry mają takie samo znaczenie jak w komendzie plot. Przy-

kład:

set noxtics; set noytics; set x2tics; set y2tics; set border 12

Globalne ustawienie sposobu rysowania danych

Jest to globalne ustawienie rodzaju wykresu. Można ustawić inny typ dla danych z pli-

ku i inny dla funkcji, uzyskując prostą mozliwość innej prezentacji danych pomiarowych
i teoretycznych. Składnia jest następująca

set data style <style>
show data style

set function style <style>
show function style

Znaczenie opcji <style> jest identyczne jak w komendzie plot.

8.4.3

Znakowanie osi

Opcje znakowania osi pozwalają na umieszczenie na osiach lub ramce wykresu znaczników

odpowiadających wartościom wyliczonym ze skalowania. Sposób umieszczania znaczników
kontroluje komenda

set xtics {axis | border} {{no}mirror} {{no}rotate}

{

autofreq

| <incr>
| <start>, <incr> {,<end>}
| ({"<label>"} <pos> {,{"<label>"} <pos>}...) }

set noxtics
show xtics

Piotr Zawadzki

background image

8.4. TWORZENIE WYKRESÓW

101

Taka sama składnia dotyczy ytics, x2tics, y2tics. Opcja axis lub border powoduje usta-
wienie znaczników wzdłuż osi lub ramek wykresu, odpowiednio. Opcja rotate powoduje ob-
rót opisów pionowych o 90

0

. gnuplot automatycznie wyznacza położenie znaczników na osi.

Jeżeli wartości automatyczne nam nie odpowiadają możemy narzucić częstotliowść znacz-
ników (opcje <incr>, <start>, <end>) lub nawet umieścić znacznik w dowolnym punkcie
osi.

Drobna skala

Drobne oznaczenia osi możemy włączyć lub wyłączyć komendą

set mxtics {<freq> | default}
set nomxtics
show mxtics

Parametr <freq> określa liczbę podprzedziałów na które zostanie podzielona odległość mię-
dzy głównymi znacznikami podziału (xtics).

Taka sama składnia dotychy pozotsałych osi, tj. zamiast mxtics możemy użyć mytics,

mx2tics i my2tics.

Siatka na wykresie

Rysowanie siatki kontroluje komenda o następującej składni

set grid {{no}{m}xtics} {{no}{m}ytics} {{no}{m}x2tics} {{no}{m}y2tics}

{ {ls <major_linestyle>} | {lt <major_linetype>} {lw <major_linewidth>}
{ , {ls <minor_linestyle>} | {lt <minor_linetype>} {lw <minor_linewidth>} } }

set nogrid
show grid

Opcje *tics włączają lub wyłączają rysowanie linii siatki przy odpowiednich znacznikach
skalowania. Oczywiście, rysowanie odpowiednich znaczników musi być aktywne. Pozostałe
opcje kontrolują rodzaj linii jaką rysowana jest siatka. Ich znaczenie jest identyczne jak
w komendzie plot

Skala logarytmiczna osi

Logarytmiczną skalę na osiach wybieramy komendą

set logscale <axes> <base>
set nologscale <axes>
show logscale

<axes> jest przyjmuje wartości: x, y, xy, x2, y2. Gdy nie podamy podstawy <base> przyj-
mowana jest wartość 10. Przykłady:

set logscale xy
set logscale y 2

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

102

WYKŁAD 8. TWORZENIE WYKRESÓW – GNUPLOT

Marginesy

Gnuplot zazwyczaj dobrze wyznacza marginesy, tj rozmiar „pudełka” w którym mieści

się wykres wraz z opisami. Jeżeli ustawienia standardowe nam nie odpowiadają zmieniamy
je komendami

set bmargin {<margin>}
set lmargin {<margin>}
set rmargin {<margin>}
set tmargin {<margin>}
show margin

Odpowiednie rozmiary podajemy jako wielokrotności rozmiaru liter w danym kroju pisma.

Rozmiar rysunku

Skalowanie rysunku wykonuje komenda

set size {{no}square | ratio <r> | noratio} {<xscale>,<yscale>}
show size

Parametry <xscale> i <yscale> określają skalowanie rozmiarów poziomych i pionowych
rysunku. Podanie parametru ratio <r> spowoduje umieszcenie w obszarze wyznaczonym
przez poziome i pionowe skalowanie rysunku o maksymalnych rozmiarach którego rozmiar
pionowy jest <r> razy większy od poziomego. square jest synonimem ratio 1. Przykłady:

set size 1,1 # domyślny rozmiar wykresu
set size ratio 2 # dwa razy wyższy niż szerokość wykresu

Tytuł rysunku

Gnuplot pozwala na określenie tytułu wykresu (umieszczonego standardowo nad górną

osią)

set title {"<title-text>"} {<xoff>}{,<yoff>} {"<font>,{<size>}"}
show title

Pramatery pozwalają na przesunięcie tytułu o określoną liczbę znaków Przykład

set title ,-1 # przesuwa ttuł o jeden znak w dół

Piotr Zawadzki

background image

8.4. TWORZENIE WYKRESÓW

103

Etykiety osi

Do utworzenia etykiet osi służy komenda

set xlabel {"<label>"} {<xoff>}{,<yoff>} {"<font>{,<size>}"}
show xlabel

gdzie zamiast xlabel można wstawić również x2label, ylabel, y2label. Podobnie jak przy
podawaniu tytułu mamy możliwość przesuwania opisów oraz wyboru rozmiaru fontu. Opisy
poziomych osi są centrowane, natomiast sposób umieszczenia opisów osi pionowych zależy
od możliwości terminala.

Zakresy osi

Oprócz skalowania osi w komendzie plot możemy je wykonać komendami set

set xrange [{{<min>}:{<max>}}] {{no}reverse}
show xrange

gdzie xrange możemy zastąpić yrange, x2range, y2range. Opcja reverse służy do zmiany
monotoniczności osi (większe po lewej). Przykłady:

set xrange [-10:10] # skalowanie standardowe
set yrange [10:-10] # oś y odwrócona
set x2range [*:]

# skalowanie x2min, wartość x2max bez zmian

8.4.4

Uzupełnienia wykresów

Wykresy mogą być uzupełnione dodatkowymi opisami umieszczonymi w dowolnym jego

miejscu. Na dopiski składają się strzałki, legenda oraz dowolna etykieta. Położenie elementów
na wykresie określa dwójka liczb podana w jednym z 4 układów współrzędnych

{<system>} <x>, {<system>} <y>

Nazwy układu współrzędnych (<system>) są następujące first, second, graph lub screen.
Standardowym układem współrzędnych jest first. W układzie first położenie punktu
określają skale na osiach x i y, w układzie second o położeniu decydują skale x2 i y2.
W układzie graph lewy dolny róg ma współrzędne 0,0 a prawy górny – 1,1. Układ screen
tym rózni się od graph że brany jest pod uwagę jest nie tylko wykres ale również jego opisy,
tzn. cały obszar zajęty przez rysunek.

Dodawanie „strzałek”

Dodawanie strzałek kontroluje komenda

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

104

WYKŁAD 8. TWORZENIE WYKRESÓW – GNUPLOT

set arrow {<tag>} {from <position>} {to <position>} {{no}head}

{ {linestyle | ls <line_style>}

| {linetype | lt <line_type>}

{linewidth | lw <line_width} }

set noarrow {<tag>}
show arrow

<tag> jest numerem strzałki który pozwala na zmianę jej niektórych parametrów już po jej
utworzeniu. Parametr <position> jest współrzędną punktu podaną w jednym z 4 układów
współrzędnych. Rodzaj i grubość linii kontrolujemy jak w komendzie plot. Przykłady:

set arrow to 1,2 ls 5 # strzałka od początku układu
set arrow 3 from graph 0,0 to -5,5
set arrow 3 to 1,1 nohead lw 2
set arrow from 3, graph 0 to 3, graph 1 nohead # pionowa linia x=3

Legenda

Legendę czyli opis poszczególnych krzywych umieszczamy komendą

set key {

left | right | top | bottom | outside | below

| <position>}

{Left | Right} {{no}reverse}
{samplen <sample_length>} {spacing <vertical_spacing>}
{width <width_increment>}
{title "<text>"}
{{no}box { {linestyle | ls <line_style>}

| {linetype | lt <line_type>}

{linewidth | lw <line_width>}}}

set nokey
show key

Rodzaje linii i odpowiadające im opisy identyfikowane są na podstawie parametrów komendy
plot. Położenie legendy kontroluje pierwsza opcja. Możemy go umieścić w jednym z rogów
wykresu, wewnątrz lub na zewnątrz, poniżej wykresu lub w dowolnym punkcie. Druga z opcji
(Left lub Right) kontroluje wyrównywanie opisów. samplelen kontroluje długość próbki
linii, natomiast spacing pionowe odstępy między elementami legendy. Parametr width kon-
troluje ilość pustego miejsca dodawanego wokół opisów i ma znaczenie jedynie gdy określimy
parametr box wymuszający otoczenie legendy ramką. Znaczenie pozostałych opcji jest oczy-
wiste. Przykłady

set nokey

# wyłączenie legendy

set key left bottom Left title ’Legend’ box 3

Piotr Zawadzki

background image

8.4. TWORZENIE WYKRESÓW

105

Etykiety

Etykieta jest dowolnym tekstem umieszczonym w dowolnym miejscu na wykresie. Skład-

nia komendy jest następująca

set label {<tag>} {"<label_text>"} {at <position>}

{<justification>} {{no}rotate} {font "<name><,size>"}

set nolabel {<tag>}
show label

Prametrem wymagającym objaśnienia jest <justification>. Może on przyjmować nastę-
pujące wartości: left, right lub center. Jeżeli parametr rotate jest podany, tekst etykiety
zostanie obrócony o 90 stopni.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

Wykład 9

Darmowy Matlab czyli octave

Octave jest wsadowym lub interaktywnym interpreterem języka wysokiego poziomu prze-

znaczonego głównie do obliczeń numerycznych. Języka rozumiany przez Octave jest w 99 %
zgodny z językiem komercyjnego programu MATLAB. Octave jest rozpowszechniane na li-
cencji GPL. Octave może być wykorzystane do prowadzenia obliczeń na skalarach i macier-
zach zespolonych i rzeczywistych. Octave potrafi rozwiązywać układy równań nieliniowych,
układy równań różniczkowych, całkować po przedziałach skończonych i nieskończonych. Do
graficznej reprezentacji danych wykorzytywany jest program gnuplot, dzięki któremu moż-
liwe jest tworzenie wykresów 2D i 3D. Sercem Octave jest zbiór numerycznych bibliotek for-
tranowskich (LAPACK, LINPACK, BLAS, ODEPACK) opakowanych w klasy języka C++.

Interakcyjny interfejs użytkownika obsługuje biblioteka readline dzięki której możliwe

jest przywoływnie poprzednio wydanych komend, w tym również wydanych w poprzednich
sesjach.

9.1

Wiadomości wstępne

Octave może pracować w trybie interaktywnym (octave) oraz w trybie wsadowym (octave

-f <plik>). Innym sposobem przetworzenia pliku przez octave jest nadanie mu praw wyko-
nywalności i zadeklarowanie octave jako standardowego interpretera

#!/usr/bin/octave -qf
<komendy>
<do>
<przetworzenia>

Działanie octave kończy komenda quit lub exit.
Do uzyskania popmocy służy komenda help:

help – wykaz dostępnych komend,
help <komenda> – opis komendy,
help -i – wywołanie systemu pomocy info,
help -i <komendy> – wyszukanie opisu komendy w systemie pomocy info.

106

Piotr Zawadzki

background image

9.2. PODSTAWOWE STRUKTURY DANYCH

107

Wygodnym sposobem orzystania z dokumentacji Octave jest uruchomienie systemu pomocy
KDE (kdehelp) i wpisanie w linijce poleceń

info:(octave)

Octave przetwarza plik wejściowy linia po linii. Znakiem kontynuacji linii jest znak od-

wrotnego ukośnika \. Linie rzpoczynające się znakami % i # są pomijane i traktowane jako
komentarz. Każda linia zawiera jedno lub więcej wyrażeń. Wyniki wyrażeń są zapisywane na
plik wyjścia standardowego. Jeżeli nie chcemy aby wynik danego wyrażenia był wyświetlony
musimy zakończyć je średnikiem.

9.2

Podstawowe struktury danych

W octave zmienne tworzone są dynamicznie w trakcie interpretowania pliku. Typ zmien-

nej ustalany jest na podatwie wpisywanej wartości. Wartości wyrażeń mogą być skalarami
rzeczywistymi i zespolonymi, wektorami i macierzami o elementach rzeczywistych i zespolo-
nych. Części urojone wyróżniamy mnożąn je przez predefiniowane stałe i lub j. I tak liczbę
2 + 3j możemy zapisać jako

2+j*3
2+i*3

Macierze podajemy podając listę elementów ograniczoną nawiasami kwadratowymi. Ele-

menty w wierszu oddzielamu znakiem odstępu lub przecinkiem, natomiast wiersze oddziela-
my znakiem średnika.

a = [ 1 2 3 ; 4 5 6 ; 7 8 9]
b = [ 1 2 3 4 5 6]
c = [ 1 ; 2 ; 3 ; 4 ; 5 ; 6 ]

Do elementów wektorów i macierzy odwołujemy się podając w nawiasach okrągłych in-

deks ewentualnie przedział indeksów (dolny : gorny lub dolny : krok : gorny). Jeżeli w zakre-
sie indeksów zotanie pominiety indeks dolny do jako domyślna wartość przyjmowana jest 1.
Domyślną wartością indeksu górnego jest numer ostatniego elementu struktury.

b(3) b(2:6) b(1:2:6) b(:3) b(:)

9.3

Operatory

Obok typowych operatorów arytmetycznych działających na elementach skalarnych i ma-

cierzowych istnieją w Octave specjalane operatory do realizacji właściwych tylko macierzom

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

108

WYKŁAD 9. DARMOWY MATLAB CZYLI OCTAVE

oraz operacji na odpowiadających sobie elementach struktur danych.

x

0

x

sprzężenie hermitowskie

(9.1)

x.

0

x

T

transpozycja

(9.2)

x/y

y

−1

x

dzielenie w „prawo”

(9.3)

x\y

x

−1

y

dzielenie w „lewo”

(9.4)

x. ∗ y

x

ij

· y

ij

mnożenie poelementowe

(9.5)

x./y

x

ij

/y

ij

dzielenie poelementowe

(9.6)

x .^ y

x

y

ij

ij

potęgowanie poelementowe

(9.7)

9.4

Instrukcje sterujące

for id = expr

instrukcje

endfor

while (warunek)

instrukcje

endwhile

if (warunek)

instrukcje

elseif (warunek)

instrukcje

else

instrukcje

endif

Piotr Zawadzki

background image

9.5. PODSTAWOWE FUNKCJE BIBLIOTECZNE

109

9.5

Podstawowe funkcje biblioteczne

funkcja

opis

rows (a)

liczba wierszy macierzy a

columns (a)

liczba kolumn macierzy a

sum (a)

suma elementów w kolumnach macierzy a

prod (a)

iloczyn elementów w kolumnach macierzy a

min (a, b, . . .)

wartość najmniejszego argumentu

max (a, b, . . .)

wartość największego elementu

rem (x, y)

reszta z dzielenia x/y

reshape (a, m, n)

przestaw elementy tak aby a miała wymiar m × n

diag (v, k)

utwórz macierz diagonalną o wymiarach jak v, na
diagonali wstaw wartość k

linspace (b, l, n)

utwórz wektor złożony z n równomiernie rozłożonych
elementów od b do l włącznie

logspace (b, l, n)

utwórz wektor złożony z n logarytmicznie równo-
miernie rozłożonych elementów o wartościach od 10

b

do 10

l

włącznie

eye (m, n)

macierz jednostkowa m × n

ones (m, n)

macierz m × n wypełniona jedynkami

zeros (m, n)

macierz zerowa m × n

9.6

Podstawowe przekształcenia algebraiczne

funkcja

opis

det (a)

wyznacznik a

eig (a)

wartości i wektory własne a

expm (a)

wartość e

a

, przy czym a jest macierzą

inverse (a)

wartość a

−1

rank (a)

rząd macierzy a

9.7

Przetwarzanie sygnałów

funkcja

opis

fft (a)

szybka transformata Fouriera

ifft (a)

odwrotna szybka transformata Fouriera

fftconv (a, b, n)

splot wektorów a i b, opcjonalnie n określa liczbę punk-
tów FFT

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

110

WYKŁAD 9. DARMOWY MATLAB CZYLI OCTAVE

9.8

Funkcje definiowane przez użytkownika

function [listawynikow] = nazwa f unkcji (lista argumetow)

% opis fukncji
instrukcje

endfunction

9.9

Prezentacja wyników

9.9.1

Interfejs gnuplot

Składnia komendy jest następująca

gplot [ranges] expr [using] [title] [style]
gdzie
ranges określa zakres danych
expr

wyrażenie do wyświetlenia

using określa kolumny z których będą pobrane wyniki
title

tytuł rysunku

style

styl linii

t=linspace(0,2*pi) ; f1=sin(2*t) ; f2=sin(3*t) ;
F1=[t’,f1’] ; F2=[t’,f2’] ;
gplot F1 title "sin(2t)" with lines, F2 title "sin(3t)" with linespoints

Ponadto pozostałe opcje tworzenia rysunku można ustawić komendami gset i sprawdzić
gshow. Składnia obu tych komend jest identyczna jak komend set i show programu gnuplot.

9.9.2

Interfejs Matlab

funkcja

opis

plot (args)

osie skalowane liniowo

semilogx (args)

oś x skalowana logarytmicznie

semilogy (args)

oś y skalowana logarytmicznie

loglog (args)

obie osie skalowane logarytmicznie

bar (args)

wykres słupkowy

title (string)

tytuł rysunku

xlabel (string)

opis osi x

ylabel (string)

opis osi y

grid (on|of f )

siatka

Piotr Zawadzki

background image

Wykład 10

Linux na komputerze bez HD

W rozdziale opiszemy sopsób uruchamiania Linux’a na komputerach bez dysku twardego.

Start Linux’a składa się z następujących etapów:

• umieszczenie jądra w pamięci RAM,
• uruchomienie jądra,
• jądro montuje system plików / (root),
• jądro przekazuje sterowanie procesowi init
• proces init realizuje start systemu wg zawartości pliku /etc/inittab.

Z powyższego opisu wynika, że w zamontowanym systemie plików muszą znaleźć się wszystkie
biblioteki i programy niezbędne do uruchomienia procesu init i poleceń z pliku /etc/inittab.

Proces startu systemu możemy zorganizować na kilka sposobów (nie licząc tradycyjnego

startu z dysku twardego)

• przygotować zestaw dyskietek i umieścić system plików w pamięci RAM,
• sporządzić płytę startową CD i umieścić na niej system plików tylko do odczytu, i korzy-

stać RAMDISK i/lub dyskietki do zapisu,

• sporządzić dyskietkę startową i zamontować system plików przez sieć korzystając NFS,
• wyposażyć kartę sieciową w odpowienie oprogramowanie (zainstalować EPROM) pozwa-

lące na jej zainicjopwanie poprzez BOOTP, odczyt i uruchomienie jądra poprzez sieć
korzystając z TFTP, a następnie zamontować system plików poprzez NFS.

Realizacja ostaniej opcji silnie zależy od karty sieciowej i nie będziemy jej szczegółowo oma-
wiać. Szczegółowy opis procesu przygotowania karty sieciowej, serwerów BOOTP i TFTP
można znaleźć w dokumencie Diskless-HOWTO.

Na koniec pewne ważne spostrzeżenie. Linux dobrze pracuje na komputerach z dużą

pamięcią RAM. Gdy w systemie jest mało pamięci RAM, jako środka zastępczego używa się
pamięci wymiany (swap). Niestety, gdy stacja nie ma dysku twardego, w zasadzie nie mamy
do dyspozycji nośnika pozwalajacego na zorganizowanie pliku wymiany. Stąd bezdyskowa
stacja końcowa musi mieć nieco więcej RAM niż stacja z dyskiem twardym. Rozsądnym
minimum wydaje się tu być 8 MB, choć oczywiście granica ta zależna jest od zastosowań.

Piotr Zawadzki

111

background image

112

WYKŁAD 10. LINUX NA KOMPUTERZE BEZ HD

10.1

Zestaw dyskietek startowych

Proces wczytania jądra z dyskietki można zorganizować na dwa sposoby:

• zapisać jądro na dyskietce sektor po sektorze poleceniem dd,
• założyć na dyskietce system plików zawierający jądro i założyć na niej LILO.

Każdy ze sposobów ma swoje zalety i wady. Pierwszy sposób jest bardzo prosty, lecz wymaga
aby wszystkie parametry uruchomienia jądra były umieszczone (wkompilowane lub ustawio-
ne poleceniem rdev) w nim na stałe. W drugim sposobie proces przygotowania dyskietki jest
nieco bardziej złożony, w zamian za co uzyskujemy możliwość przekazywania jądru poleceń
z linii startu LILO.

Zestaw dyskietek startowych musi zawierać system plików zawierający biblioteki i po-

lecenia niezbędne do startu systemu oraz programy specyficzne dla danego zestawu. Jeżeli
skompresowany obraz systemu plików jest stosunkowo mały, możemy go umieścić na tej
samej dyskietce co jądro. Jeżeli oba elementy są zbyt duże do startu systemu musimy sko-
rzystać z dwóch dyskietek. Co prawda w dokumentacji jest napisane, że dyskietki mogą być
sformatowane na 1.76 MB, lecz mnie nie udało się uruchomić systemu z takiego zestawu,
mimo prób wykonanych na kilku komputerach.

10.1.1

Obraz systemu plików root

Utworzenie obrazu systemu plików root z niezbędnym oprogramowaniem składa się z na-

stępujących kroków

• wybór modułów, poleceń i bibliotek niezbędnych do startu systemu,
• wybór poleceń i bibliotek zależnych od zastosowań,
• utworzenie skompresowanego obrazu systemu plików.

Elementy obowiązkowe

System plików powinien zawierać

• podstawowe katalogi:/dev, /proc, /bin, /etc, /lib, /usr, /tmp,
• podstawowe pliki urządzeń: /dev/tty*, /dev/fd0, /dev/ram0, itd.,
• podstawowe oprogramowanie: sh, ls, cp, mv, itd.,
• podtsawowe pliki konfiguracyjne: inittab, rc, fstab, etc.,

Aby zgromadzić wszytskie elementy niezbędne do utworzenia systemu plików tworzymy

katalog rootdisk. Tworzymy w nim strukturę podkatalogów jak opisano wyżej. W katalogu
rootdisk/dev/ umieszczamy pliki obsługujące niezbędne urządzenia. Do tego celu najpro-
ściej użyć komendy

cp -a /dev/<urządzenie> rootdisk/dev/

Nie należy zapomnieć o utworzeniu katalogu /dev/pts.

Minimalną zawartość katalogu etc najłatwiej ustalić restartując komputer a następnie

wydając polecenie

Piotr Zawadzki

background image

10.1. ZESTAW DYSKIETEK STARTOWYCH

113

ls -ltru /etc/*

W odpowiedzi otzrymamy listę plików do których odwoływał się system podczas startu.
Pliki które na pewno muszą sie znaleźć w katalogu etc to: inittab, rc.d/rc, fstab, passwd,
shadow, group, gshadow, termcap. Plik termcap jest duży, warto go odchudzić pozostawiając
jedynie terminale console, linux, vt100.

Jak wiemy za start systemu odpowiedzialne jest polecenie init. Jego działanie polega

na interpretacji instrukcji zawartych w pliku /etc/inittab. Aby start systemu przebiegał
poprawnie system musi mieć dostęp do wszystkich poleceń zawartych w tym pliku oraz
do bibliotek dynamicznych wykorzystywanych przez te polecenia. Ponieważ skompresowany
obraz systemu plików może zajmować co najwyżej 1.4 MB (ok. 6 MB przed kompresją),
musimy bardzo oszczędnie dobierać polecenia startowe, lub mówiąc inaczej, musimy zorga-
nizować start systemu „dla ubogich”. Zawartość niemal minimalnego startu zamieszczono
na wydruku poniżej

id:2:initdefault:
si::sysinit:/etc/rc
2:2:respawn:/sbin/mingetty tty2
3:2:respawn:/sbin/mingetty tty3
ca::ctrlaltdel:/sbin/shutdown -r now
ud::once:/sbin/update
rb:6:wait:reboot -f

Przy czym skrypt startowy /etc/rc ma postać

#!/bin/sh
TERM=linux
/bin/mount -av
/bin/hostname <tu nazwa hosta>
# Część odpowiedzialna za polskie znaki
. /etc/sysconfig/i18n
. /etc/sysconfig/keyboard
/bin/loadkeys $KEYTABLE
/sbin/setsysfont

Plik fstab musi opisywać montowanie partycji root na urządzeniu /dev/ram

/dev/ram0

/

ext2

defaults

/dev/fd0 /mnt

ext2

noauto

/proc

/proc

proc

defaults

W katalogach bin i sbin umieszczamy podstawowe programy. Minimum to program po-

włoki (lepiej użyć czegoś mniejszego od bash’a), mount, umount oraz programy wymienione
podczas startu systemu. Programy których używamy będą skompilowane w formacie ELF,
tzn. będą korzystać z bibliotek ładowanych dynamicznie. Aby sprawdzić jakich bibliotek
wymaga dany program wydajemy polecenie

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

114

WYKŁAD 10. LINUX NA KOMPUTERZE BEZ HD

ldd <nazwa_programu>

Na przykład obowiązkowy program bin/login wymaga wyjątkowo wielu bibliotek

> ldd /bin/login

libcrypt.so.1 => /lib/libcrypt.so.1 (0x4001a000)
libpam.so.0 => /lib/libpam.so.0 (0x40047000)
libdl.so.2 => /lib/libdl.so.2 (0x4004f000)
libpam_misc.so.0 => /lib/libpam_misc.so.0 (0x40053000)
libc.so.6 => /lib/libc.so.6 (0x40057000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Wszystkie biblioteki umieszczamy w odpowiednich katalogach.

Dodatkowego komentarza wymaga instalacja wsparcia dla PAM (ang. Pluggable Authen-

tication Modules) i NSS (ang. Name Service Switch).

Usługa PAM zapewnia usługi autoryzacji do systemu. Programy korzystające z PAM

(np. program login) całą procedurę autoryzacji zlecają bibliotece libpam. Biblioteka prze-
prowadza autoryzację wg scenariusza zdefionwanego w plikach konfiguracyjnych biblioteki
(katalog /etc/pam.d). Scenariusz autoryzacji opisuje plik tekstowy o nazwie identycznej
z nazwą usługi i umieszczony w ww. katalogu. Jeżeli nie ma pliku konfiguracyjnego dla danej
usługi używany jest scenariusz z pliku other. Minimalna zawartość katalogu /etc/pam.d to
dwa pliki: login i other Pliki te najlepiej skopiować z systemu na którym pracujemy.

W starej bibliotece libc znajdują się funkcje służące wzajemnej zamiany nazwy kom-

putera na numer IP. Do definicji działania tej usługi służył plik /etc/hosts.conf (patrz
Network Administrator Guide, rozdział 6). Biblioteka glibc (vel libc6) zawiera następcę tej
usługi o nazwie NSS. Do konfiguracji tej usługi służy plik /etc/nsswitch.conf. Jeżeli plik
ten będzie nieobecny, nie będziemy mogli się zalogować w systemie. „Bezpieczna” zawartość
/etc/nsswitch.conf ma postać

passwd:

files

shadow:

files

group:

files

hosts:

files

services:

files

networks:

files

protocols:

files

rpc:

files

ethers:

files

netmasks:

files

bootparams: files
automount:

files

aliases:

files

netgroup:

files

publickey:

files

Piotr Zawadzki

background image

10.1. ZESTAW DYSKIETEK STARTOWYCH

115

Jeżeli planujemy korzystać z modułów to na obrazie systemu plików muszą się znaleźć

narzędzia: insmod, lsmod, rmmod. W katalogu lib/modules/<wersja> musimy umieścić pliki
modułów. Do automatycznego ładowania modułów będą dodatkowo wymagane modprobe,
depmod oraz plik /etc/conf.modules.

Skompresowany obraz systemu plików

Aby drzewo katalogów przetworzyć na skompresowany obraz systemu plików musimy

wykonać następujące kroki:

• utworzyć pusty plik o rozmiarze zezwalajacym na umieszczenie w nim zebranego opro-

gramowania wraz ze strukturą systemu plików,

• utworzyć na nim system plików,
• przekopiować zebrane oprogramowanie,
• skompresować plik.

Zadania te realizuje poniższy skrypt

#!/bin/sh
dd if=/dev/zero of=rootfs bs=1k count=5120
mke2fs -F -q -m 0 -i 2000 rootfs
mount -t ext2 rootfs rootmnt -o loop
cp -a rootdisk.big/* rootmnt/
umount rootmnt
(dd if=rootfs bs=1k | gzip -v9 > rootfs.gz) &> /dev/null

gdzie rootfs jest plikiem w którym umieścimy system plików i oprogramowanie, rootdisk
jest katalogiem z wybranym oprogramowaniem, rootmnt jest pustym katalogiem do którego
montujemy system plików utworzony rootfs. Rozmiar pliku rootfs (tutaj 5120 bloków
o rozmiarze 1 kB) zależy od wyboru oprogramowania. Ograniczeniem jest tutaj rozmiar
pliku po kompresji, bowiem musi się on zmieścić na dyskietce 1.4 MB.

10.1.2

Przygotowanie jądra

Aby możliwy był start systemu z systemu plików umieszczonego w pamięci RAM do jądra

na stałe musi być wkompilowana obsługa ramdysku oraz systemu plików ext2. W pierwszym
podejściu pozostałe elementy konfiguracji najlepiej pozostawić nie zmienione. Standardowa
konfiguracja jądra dla dystrybucji RedHat 6.2 znajduje się w pliku ???. Po kompilacji jądra
(polecenie make bzImage) i ew. modułów plik zawierający jądro znajduje się w pliku

/usr/src/linux/???

10.1.3

Nagranie dyskietek

Jeżeli skompresowane jądro i skompresowany obraz systemu plików mieszą się na jed-

nej dyskietce, możemy otworzyć jedną dyskietkę startową boot/root. W przeciwnym razie

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

116

WYKŁAD 10. LINUX NA KOMPUTERZE BEZ HD

bity

opis

0-10

Odległość od początku nośnika (w blokach 1k) gdzie zaczyna się
RAMDISK

11-13

nieużywane

14

flaga czy RAMDYSK ma być ładowany

15

flaga czy ma być wyświetlona zachęta przed załadowaniem sys-
temu plików

Tab. 10.1: Znaczenie bitów ramdisk word.

uruchamianie systemu będzie dwuetapowe, w pierwszym kroku załadowane zostanie jądro
z dyskietki boot a następnie do pamięci RAM wgrany system plików z dyskietki root

Utworzenie dyskietki boot

Dyskietka boot może być wyposażona LILO, oraz zawierać system ext2 z jądrem. Druga,

mniej pracochłonna wersja polega na bezpośrednim wgraniu jądra na dyskietkę.

Dyskietka bez LILO

Z jądra zawartego w pliku bzImage tworzymy dyskietkę boot na-

stępującym skryptem

#!/bin/sh
dd if=bzImage of=/dev/fd0 bs=1k
rdev /dev/fd0 /dev/fd0
rdev -R /dev/fd0 0
rdev -r /dev/fd0 49152

Pierwsza z komend rdev informuje jądro że system plików root znajduje się na urządzeniu
/dev/fd0, druga przełącza system plików w tryb do odczytu i zapisu (standardowo jądro
montuje root w trybie tylko do odczytu), trzecia informuje o położeniu i sposobie odczy-
tu obrazu systemu plików. Tajemnicza liczba 49152 to tzw. ramdisk word . Jest to liczba
16 bitowa której wartość ustalana jest na podstawie Tab. #1 Dla wersji dwudyskietkowej
musimy ustawić bity 14 i 15 – 49152 = 2

14

+ 2

15

.

Dyskietka z LILO

Najpierw formatujemy dyskietkę i tworzymy na niej system plików

o rozmiarze o 50 kB przekrajaczjącym rozmiar jądra.

mke2fs -i 8192 -m 0 /dev/fd0 <rozmiar>

W utworzonym systemie plików kasujemy lost+found, tworzymy katalogi boot, dev. W ka-
talogu dev tworzymy urządzenia null i fd0, a katalogu głównego tworzonego systemu plików
kopiujemy jądro.

Piotr Zawadzki

background image

10.1. ZESTAW DYSKIETEK STARTOWYCH

117

mount -t ext2 /dev/fd0 /mnt/floppy
rm -rf /mnt/floppy/lost+found
mkdir /mnt/floppy/{boot,dev}
cp -R /dev/{null,fd0} /mnt/floppy/dev
cp bzImage /mnt/floppy/

W obrazie jądra modyfikujemy ramdisk word

rdev -r /mnt/floppy/bzImage 49152

Na tak przygotowanej dyskietce zainstalujemy LILO. W tym celu tworzymy plik konfigura-
cyjny fdlilo.conf

boot

=/dev/fd0

install

=/boot/boot.b

map

=/boot/map

read-write
backup

=/dev/null

compact
image

= bzImage

label

= Bootdisk

root

=/dev/fd0

Plik fdlilo.conf oraz boot loader kopiujemy na dyskietkę a następnie instalujemy na niej
LILO

1

cp fdlilo.conf /mnt/floppy/
cp /boot/boot.b /mnt/floppy/boot
lilo -v -C bdlilo.conf -r /mnt/floppy

LILO powinno się zainstalować bezbłędnie a w katalogu /mnt/floppy powinien pojawić się
plik map. Teraz katalog /mnt/floppy możemy odmontować. Dyskietka startowa z LILO jest
gotowa.

Utworzenie dyskietki root

Jeżeli posiadamy skompresowany obraz systemu plików, utworzenie samodzielnej dyskiet-

ki root jest bardzo proste

dd if=rootfs.gz of=/dev/fd0 bs=1k

1

Przed tą operacją dobrze sporządzić dyskietkę startową na wypadek nadpisania właściwego LILO wsku-

tek błędów literowych.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

118

WYKŁAD 10. LINUX NA KOMPUTERZE BEZ HD

Utworzenie dyskietki boot/root

Tworzenie dyskietki boot/root różni się tylko w szczegółach od wersji dwudyskietko-

wej

• obraz systemu plików root powinien być skopiowany za jądrem w wersji bez LILO, lub

za systemem plików z jądrem w wersji z LILO,

• należy ustawić odpowiednią wartość ramdisk word.

Przyjmując, że rozmiar jądra (lub systemu plików z jądrem) zawiera zmienna rozmiar w blo-
kach 1 k obie operacje realizują komendy

dd if=rootfs.gz of=/dev/fd0 bs=1k seek=<rozmiar>
rdev -r /mnt/floppy/bzImage <rozmiar+16384 (2^14)>

10.2

Płyta startowa CD

10.3

System plików root montowany przez NFS

Gdy system plików ma być montowany poprzez sieć musimy rozwiązać następujące pro-

blemy:

• jądro musi poprawnie zidentyfikować kartę sieciową,
• interfejs sieciowy musi zostać poinformowany o parametrach sieci IP (numer IP, maska

posieci),

• jądro musi zostać poinformowane o położeniu serwera NFS z którego będzie zamontowany

system plików root

Oczywiście do poprawnego działania systemu konieczna jest również poprawna konfigura-
cja serwera NFS, tj. odpowiednia struktura eksportowanych (montowalnych poprzez sieć)
katalogów.

10.3.1

Przygotowanie jądra systemu

Minimalne zmiany jakich musimy dokonać w standardowym jądrze to zezwolenie na

autokonfigurację parametrów sieci przez jądro

Networking options

IP Kernel autoconfiguration

yes

BOOTP

yes

RARP

yes

oraz wkompilowanie na stałe klienta NFS (standardowo jako moduł) oraz montowania sys-
temu pliów root przez NFS

Network File Sytems

NFS File System

yes

Root File System on NFS

yes

Piotr Zawadzki

background image

10.3. SYSTEM PLIKÓW ROOT MONTOWANY PRZEZ NFS

119

Również sterownik karty sieciowej musi być wkompilowany w jądro na stałe. Z pewnością

możemy wkompilować sterowniki do kart PCI oraz sterownik dummy

Network device support

Dummy net driver support

yes

Ethernet (10 or 100 Mbit)

EISA, VLB, PCI and onboard controllers

yes

<zaznaczamy wszystko>

yes

Jeżeli w systemach mamy karty ISA, to również dołączamy na stałe do jądra odpo-

wiadające im sterowniki. Kernel informujemy o przerwaniach i portach IO karty używając
parametru startu

ether=<irq>,<io>,<device>
ether=5,0x300,eth0

Dla kart ISA PnP sprawa jest dość trudna. Co prawda w jądro wbudowana jest obsługa

urządzeń PnP, lecz ich inicjalizacja odbywa się po zamontowaniu systemu plików root na
podstawie pliku /etc/isapnp.conf. W zasadzie jedyną możliowścią jest zainicjowanie karty
sterownikiem DOS’owym (jeżeli taki w ogóle jest) i załadowanie jądra programem loadlin
z odpowiednim parametrem ether informującym jądro o przerwaniu i portach IO karty. Tym
przypadkiem nie będziemy się dalej zajmować.

Jądro kompilujemy komendą

make dep ; make bzImage

10.3.2

Przygotowanie dyskietki startowej

Opisany tutaj sposób przygotowania dyskietki startowej ma następujące własności

• możliwe jest przekazanie parametrów do jądra na podczas tsartu systemu,
• przygotowanie predefiniowanych wersji staru dla różnych stacji,
• łatwa modyfikacja w celu przystosowania startu do „nietypowych stacji”.

Proces startu systemu będzie kontrolowany przez LILO, przy czym wykorzystamy mecha-
nizm initrd do ładowania modułów przed zamontowaniem systemu plików root.

Mechanizm initrd

Mechanizm initrd zapewnia załadowanie systemu plików do pamięci RAM, czyli jest

to po prostu RAM dysk, za którego ładowanie odpowiedzialne jest LILO a nie jądro sys-
temu. System plików initrd jest typu ext2 i zawiera normalną strukturę katalogów bin,
dev, lib, itd. Po starcie części stałej jądra initrd montowany jest tymczasowo jako root
i uruchamiany jest plik /linuxrc. W pliku tym muszą znaleźć się komendy ładujące mo-
duły specyficzne dla danej stacji a wymagane do jej działania przed zamontowaniem syste-
mu plików root. W systemie plików initrd muszą znaleźć się podstawowe pliki urządzeń:

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

120

WYKŁAD 10. LINUX NA KOMPUTERZE BEZ HD

console, ram, systty, tty1, tty2, null; powłoka sash

2

oraz komenda ładująca moduły

insmod. Obie aplikacje (tj. sash insmod) powinny być zlinkowane statycznie, dzięki cze-
mu unikniemy umieszczania na initrd biblioteki libc. Oprócz obowiązkowych plików na
initrd umieszczamy moduły specyficzne dla danej stacji. Przy ładowaniu modułów należy
sprawdzić ich zależności w pliku /lib/modules/<wersja>/modules.dep. Na przykład wpis
dla karty NE2000 (moduł ne.o) ma postać

/lib/modules/2.2.14-5.0/net/ne.o: /lib/modules/2.2.14-5.0/net/8390.o

co oznacza, że do poprawnego działania sterownika ne.o wymagany jest moduł 8390.o. Plik
/linuxrc musi więc odzwierciedlać prawidłową sekwencję ładowania modułów.

Zakładając, że pliki potrzebne do utworzenia systemu plików znajdują się w katalogu

initrd utworzenie skompresowanego obrazu systemu plików przygotowanego do załadowania
przez LILO realizuje skrypt

#!/bin/sh
dd if=/dev/zero of=initrdfs bs=1k count=2048
mke2fs -F -m 0 -i 2048 initrdfs
mount -t ext2 initrdfs /mnt/floppy -o loop
cp -a initrd/* /mnt/floppy/
umount /mnt/floppy/
gzip -v9 initrdfs

Plikiem wyjściowym jest initrdfs.gz który będziemy ładowany do pamięci RAM przez
LILO.

Konfiguracja LILO

Konfiguracja LILO jest bardzo podobna do konfiguracji używanej przy zwykłych dys-

kietkach startowych. Zasadnicza różnica polega na wymuszeniu załadowania systemu plików
initrd oraz poinformowania jądra o tym gdzie ma szukać właściwego systemu plików root
oraz jaka jest konfiguracja sieci TCP/IP.

Konfiguracja sieci

Konfiguracji sieci na poziomie jądra możemy dokonać inicjując zmien-

ną ip postaci

ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>

Znaczenie poszczególnych elementów jest następujące

<client-ip>

– IP address of the client. If empty, the address will either be determined by

RARP or BOOTP. What protocol is used de- pends on what has been enabled during
kernel configuration and on the ¡autoconf¿ parameter. If this parameter is not empty,
neither RARP nor BOOTP will be used.

2

sash jest specjalną powłoką z wbudowanym zestawem komend dd, gzip, itd. Więcej informacji można

uzyskać ze strony podręcznika systemowego.

Piotr Zawadzki

background image

10.3. SYSTEM PLIKÓW ROOT MONTOWANY PRZEZ NFS

121

<server-ip> – IP address of the NFS server. If RARP is used to determine the client address

and this parameter is NOT empty only replies from the specified server are accepted. To
use different RARP and NFS server, specify your RARP server here (or leave it blank),
and specify your NFS server in the ‘nfsroot’ parameter (see above). If this entry is blank
the address of the server is used which answered the RARP or BOOTP request.

<gw-ip> – IP address of a gateway if the server is on a different subnet. If this entry is empty

no gateway is used and the server is assumed to be on the local network, unless a value
has been received by BOOTP.

<netmask>

– Netmask for local network interface. If this is empty, the netmask is derived

from the client IP address assuming classful addressing, unless overridden in BOOTP
reply.

<hostname> – Name of the client. If empty, the client IP address is used in ASCII notation,

or the value received by BOOTP.

<device> – Name of network device to use. If this is empty, all devices are used for RARP

and BOOTP requests, and the first one we receive a reply on is configured. If you have
only one device, you can safely leave this blank.

<autoconf>

– Method to use for autoconfiguration. If this is either ’rarp’ or ’bootp’, the

specified protocol is used. If the value is ’both’ or empty, both protocols are used so far
as they have been enabled during kernel configura- tion. ’off’ means no autoconfiguration.
The ¡autoconf¿ parameter can appear alone as the value to the ‘ip’ parameter (without
all the ’:’ characters before) in which case auto- configuration is used.

System plików root

Jądro informujemy, że system plików root ma być odczytany z urzą-

dzenia /dev/nfs. Nie jest to oczywiście plik odpowiadający jakiemuś urządzeniu, a jedynie
informacja dla jądra, że system plików ma być pobrany poprzez sieć.

Drugim elementem konfiguracji jest poinformowanie jądra na którym serwerze i w ja-

kim katalogu znajduje się katalog który ma być zamontowany jako root. Do realizacji tego
elementu konfiguracji służy zmienna nfsroot o następującej postaci

nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]

Znaczenie poszczególnych opcji jest następujące

<server-ip>

– Specifies the IP address of the NFS server. If this field is not given, the

default address as determined by the ‘ip’ variable (see below) is used. One use of this
parameter is for example to allow using different servers for RARP and NFS. Usually
you can leave this blank.

<root-dir> – Name of the directory on the server to mount as root. If there is a ”%s” token

in the string, the token will be replaced by the ASCII-representation of the client’s IP
address.

<nfs-options> – Standard NFS options. All options are separated by commas. If the options

field is not given, the following defaults will be used:
port = as given by server portmap daemon
rsize = 1024

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

122

WYKŁAD 10. LINUX NA KOMPUTERZE BEZ HD

wsize = 1024
timeo = 7
retrans = 3
acregmin = 3
acregmax = 60
acdirmin = 30
acdirmax = 60
flags = hard, nointr, noposix, cto, ac

Plik konfiguracyjny LILO

Przykładowy plik nfslilo.conf ma postać

boot=/dev/fd0
install=/boot/boot.b
map=/boot/map
timeout=50
prompt
backup=/dev/null
compact
default=nfsauto

image=/boot/bzImage
label=nfsauto
initrd=/boot/initrdfs.gz
read-write
root=/dev/nfs
append="ip=bootp nfsroot=157.158.17.48:/clients/157.158.17.53"

image=/boot/bzImage
label=nfsmanual
initrd=/boot/initrdfs.gz
read-write
root=/dev/nfs
append="ip=157.158.17.53:157.158.17.48:157.158.17.1:255.255.255.0:::

nfsroot=157.158.17.48:/clients/157.158.17.53"

Przygotowanie dyskietki

Przygotowanie dyskietki startowej składa się z następujących

kroków

• stworzenie obrazu initrd,
• utworzenie systemu plików ext2 na dyskietce,
• umieszczenie odpowiednich plików na dyskietce,
• instalacja LILO na dyskietce.

Kroki te realizuje następujący skrypt

Piotr Zawadzki

background image

10.3. SYSTEM PLIKÓW ROOT MONTOWANY PRZEZ NFS

123

10.3.3

Konfiguracja serwera NFS

Przy konfiguracji serwera NFS stosowane są dwie różne filozofie

• pliki do odczytu i zapisu przez stację umieszczamy w ramdysku, a z serwera exportujemy

katalog root tylko do odczytu,

• na serwerze przydzielamy każdej stacji osobno katalog z prawami do odczytu i zapisu

oraz eksportujemy pliki do przeznaczone tylko do odczytu.

Pierwsze podejście ma tą zaletę, że nie jest zużywana przestrzeń dyskowa serwera niezależnie
od ilości stacji. Wadą jest utrudniona realizacja konfiguracji specyficznej dla każdej stacji.
Podejście to nadaje się więc dobrze do realizacji dostępu w sieciach złożonych z jednakowych
komputerów. W drugiej metodzie na każdą stację po stronie serwera należy przydzielić prze-
strzeń dyskową każdej stacji do odczytu i zapisu. Dzięki temu łatwo zmieniać konfigurację
każdej stacji z osobna. Szczególnej uwagi wymaga jednak zarządzanie hasłami użytkowników,
bowiem w zasadzie powinny one być zmieniane tylko na serwerze. W dalszej części omówimy
właśnie to podejście. Start stacji zrealizujemy wg następującego schematu

• po starcie jądro montuje root specyficzny dla danej stacji,
• tak wcześnie jak tylko to możliwe montowane są katalogi wspólne dla wszystkich stacji
• wykonywana jest procedura startu wspólna dla wszystkich stacji.

Katalogi wydzielone dla każdej stacji

Strukturę katalogów specyficzną dla każdej stacji zbudujemy w katalogu /clients umiesz-

czając katalog root każdej stacji w podkatalogu o jej nazwie tj.

/clients/<nazwa>

Stacje bez nadanej nazwy identyfikowane są przez numer IP. Dalej będziemy omawiali kon-
figurację dla stacji o nazwie pc17-36.

Struktura katalogów

W katalogu każdej stacji umieszczamy podkatalogi: bin, dev, etc,

home, lib, mnt, proc, sbin, server, tmp, usr, var.

mkdir /clients/pc17-36/{bin,dev,etc,home,lib,mnt,proc,sbin,server,tmp,usr}

Katalog dev

Każda stacja powinna dysponować swoimi plikami urządzeń. Najprostszym

sposobem jest ich skopiowanie z serwera.

cp -a /dev/* /clients/pc17-36/dev/

Katalog ten zajmuje ok. 1.5 MB. Gdy przestrzeń dyskowa jest cenna, można poświęcić trochę
czasu i skasować pliki niepotrzebne dla stacji. Zyskujemy 1 k na jeden plik urządzenia.

http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/

background image

124

WYKŁAD 10. LINUX NA KOMPUTERZE BEZ HD

Niezbędne binaria

Obowiązkowo musimy skopiować binaria procesu init. Wymagany

również będzie program powłoki (np. ash) oraz program mount.

cp /sbin/init /clients/pc17-36/sbin/
cp /bin/mount /clients/pc17-36/bin/
cp /bin/ash

/clients/pc17-36/bin/

I to w zasadzie wszystko, bowiem montowanie zasobów serwera wykonamy zaraz na początku
procesu rozruchu stacji i wszystkie inne binaria będą już dostępne z serwera.

Biblioteki

Binaria na stacji będą wymagały do poprawnego działania co najmniej dwóch

bibliotek: libc.so.6 i ld-linux.so.2. Najłatwiej oczywiście skopiować biblioteki z serwera
do katalogu stacji. Jednak istnieje bardziej eleganckie rozwiązanie, korzystające z mechani-
zmu linków (tym razem twardych, nie symbolicznych)

ln /lib/ld-2.1.3.so /clients/pc17-36/lib/
ln /lib/ld-linux.so.2 /clients/pc17-36/lib/
ln /lib/libc-2.1.3.so /clients/pc17-36/lib/
ln /lib/libc.so.6 /clients/pc17-36/lib/

Katalog var

Stacja wymaga dostępu w trybie do zapisu do część podkatalogów var tj.

podkatalogów run, lock, spool, log. Pozostałe podkatalogi bedą wspólne dla wszystkich
stacji. Realizujemy je jako link symboliczny do katalogu ../server/var.

cp -a /var/run /var/lock /var/spool /clients/pc17-36/var/
mkdir /clients/pc17-36/var/log
mkdir /clients/pc17-36/server/var
for i in catman lib
do
ln -s ../server/var/$i /clients/pc17-36/var/$i
done

Katalogi wspólne

Piotr Zawadzki


Document Outline


Wyszukiwarka

Podobne podstrony:
Konfiguracja i Administracja sieci Linux PROJEKT
Linux, Konfiguracja
ENG LINUX System Administrators Nieznany
04 Linux Konfiguracja serwera poczty elekrtonicznej POSTFIX
03 Linux Konfiguracja serwera FTP PROFTPD
Linux Newbie Administrator Guid Nieznany
02 Linux Konfiguracja serwera WWW APACHE
Unix i Linux Przewodnik administratora systemów Wydanie IV
Unix i Linux Przewodnik administratora systemow Wydanie IV unlip4
Unix i Linux Przewodnik administratora systemow Wydanie IV unlip4
Unix i Linux Podrecznik administratora systemow Wydanie IV unlip4
rh133 red hat linux system administration
Unix i Linux Przewodnik administratora systemow Wydanie IV unlip4
LINUX konfiguracja interfejsu
Unix i Linux Przewodnik administratora systemow Wydanie IV
Linux Newbie Administrator Guide

więcej podobnych podstron