Linux – konfiguracja, administracja i zastosowania
Piotr Zawadzki
25 lutego 2003 roku
Spis treści
6
. . . . . . . . . . . . . . . . . . . . . . . . .
6
Rys historyczny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
Źródła informacji o systemie . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
Podstawowe wiadomości o dyskach twardych . . . . . . . . . . . . . .
8
Start systemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
Modułowa budowa jądra . . . . . . . . . . . . . . . . . . . . . . . . .
11
Podstawowe wiadomości o sieciach TCP/IP
. . . . . . . . . . . . . .
12
15
. . . . . . . . . . . . . . . . . . . . . . . . . . .
15
Mandrake 8.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
Dostrajanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
Mandrake 8.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
Dostrajanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
Dostrajanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
SuSE 7.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
Dostrajanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
Wydruki z własnych programów . . . . . . . . . . . . . . . . . . . . . . . . .
34
2
Piotr Zawadzki
SPIS TREŚCI
3
35
Użytkownicy sytemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
Pliki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
Atrybuty plików . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
Dowiązania symboliczne . . . . . . . . . . . . . . . . . . . . . . . . .
36
Kontrola montowania systemów plików . . . . . . . . . . . . . . . . .
37
Kontrola urządzeń zewnętrznych . . . . . . . . . . . . . . . . . . . . . . . . .
37
Moduły jądra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
Pliki urządzeń . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
Interfejs użytkownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
Logowanie do systemu . . . . . . . . . . . . . . . . . . . . . . . . . .
40
41
Ładowanie jądra sytemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
Proces init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
Inicjalizacja systemu . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
Zdarzenia wyjątkowe . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
Logowanie do systemu . . . . . . . . . . . . . . . . . . . . . . . . . .
45
Skrypty startowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
Podstawowa inicjalizacja systemu . . . . . . . . . . . . . . . . . . . .
45
Inicjalizacja zależna od poziomu uruchomienia . . . . . . . . . . . . .
49
50
Interfejsy sieciowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
Konfiguracja usług sieciowych . . . . . . . . . . . . . . . . . . . . . . . . . .
52
Usługi dostępne w systemie . . . . . . . . . . . . . . . . . . . . . . .
52
Poczta elektroniczna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
Udostępnianie plików – FTP . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
Serwis WWW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
Sieciowy system plików – NFS . . . . . . . . . . . . . . . . . . . . . . . . . .
57
59
Współpraca z sieciami SMB . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
Serwer SMB – samba . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
Klientci SMB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
Integracja z siecią Novell . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
Serwer mars-nwe . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
http://minibo.iele.polsl.gliwice.pl/˜/pz/zajecia/
4
SPIS TREŚCI
69
TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
Idea działania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
Instalacja w Linuksie . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
Podstawowa konfiguracja . . . . . . . . . . . . . . . . . . . . . . . . .
71
Oprogramowanie wspomagające . . . . . . . . . . . . . . . . . . . . .
71
Struktura dokumentu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
Komendy i otoczenia . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
Klasy dokumentów . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
. . . . . . . . . . . . . . . . . . . . . . . . .
74
Inkluzja plików . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
Podział dokumentu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
Podstawowe komendy formatujące . . . . . . . . . . . . . . . . . . . .
76
Wzory matematematyczne . . . . . . . . . . . . . . . . . . . . . . . . . . . .
78
Wzory wstawione i wystawione . . . . . . . . . . . . . . . . . . . . .
79
Podstawowe komendy . . . . . . . . . . . . . . . . . . . . . . . . . . .
79
TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
Materiał ruchomy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
Tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
Rysunki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
Pakiet graphicx . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
Otoczenie figure . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
Pakiet floatflt . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
Pakiet psfrag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
Oznaczanie fragmentów tekstu . . . . . . . . . . . . . . . . . . . . . .
86
Referencje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
Spis treści . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
Spis literatury . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
90
Tryby pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
Składnia pliku wejściowego . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
Komendy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
Wyrażenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
Funkcje predefiniowane . . . . . . . . . . . . . . . . . . . . . . . . . .
92
Funkcje użytkownika . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
Urządzenie wyjściowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
Wyjście na ekran . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
TEX’a . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
TEX . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
Piotr Zawadzki
SPIS TREŚCI
5
Wyjście do MetaPost . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
. . . . . . . . . . . . . . . . . . . . . . . . . . .
95
Wyjście do pliku graficznego xfig . . . . . . . . . . . . . . . . . . . .
95
Wyjście do postscriptu . . . . . . . . . . . . . . . . . . . . . . . . . .
96
Tworzenie wykresów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
Rysowanie wykresu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
Opcje tworzenia wykresów . . . . . . . . . . . . . . . . . . . . . . . .
99
Znakowanie osi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Uzupełnienia wykresów . . . . . . . . . . . . . . . . . . . . . . . . . . 103
106
Wiadomości wstępne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Podstawowe struktury danych . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Operatory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Instrukcje sterujące . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Podstawowe funkcje biblioteczne . . . . . . . . . . . . . . . . . . . . . . . . . 109
Podstawowe przekształcenia algebraiczne . . . . . . . . . . . . . . . . . . . . 109
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Funkcje definiowane przez użytkownika . . . . . . . . . . . . . . . . . . . . . 110
Prezentacja wyników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9.9.1
Interfejs gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Interfejs Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
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/
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
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/
8
WYKŁAD 1. WPROWADZENIE
• http://www.sunsite.icm.edu.pl/pub/Linux,
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
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/
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
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/
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
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/
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
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
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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
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
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/
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
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/
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
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
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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
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
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/
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
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/
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
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/
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
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/
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
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
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
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/
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
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/
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
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/
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
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/
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
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
2π
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/
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
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/
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
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ć
2π
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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
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
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
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/
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
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/
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
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/
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
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/
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
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/
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
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/
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