Linux Budowa i działanie systemu

Transkrypt

Linux Budowa i działanie systemu
Linux
Budowa i działanie systemu
System operacyjny Unix - Model warstwowy
systemu
W modelu tym dzieli się system na 4 warstwy: jądro,
biblioteki, powłoka i programy.
Jądro/Kernel
• zawiera m.in. program szeregujący oraz sterowniki urządzeń
• zarządza pamięcią operacyjną
• w nowszych systemach sterowniki rzadziej występujących
urządzeń dostępne są w postaci zewnętrznych modułów,
które moŜna wybiórczo załadować do jądra - dzięki temu jego
rozmiary są mniejsze
• jądro ma bezpośredni dostęp do wszystkich zasobów
komputera
Biblioteki
• zawierają zestawy podprogramów (zwykle napisanych w
języku C), wykonujących róŜne, często stosowane, operacje
(mogą to być np. zestawy funkcji matematycznych,
procedury, umoŜliwiające obsługą monitora czy teŜ operacje
na dysku)
• biblioteki te są zwykle dołączane do programów na etapie
ich konsolidacji (program, np. w języku C, przed
uruchomieniem zostaje poddany kompilacji, a następnie
konsolidacji)
• taka statyczna konsolidacja powoduje, Ŝe dana biblioteka
jest dołączana do kaŜdego z korzystających z niej programów
- nawet wtedy, gdy uruchamiane są one jednocześnie w
systemie; powoduje to znaczną zajętość pamięci operacyjnej
Powłoka
• nazwa pochodzi stąd, Ŝe warstwa ta oddziela wewnętrzna
część systemu operacyjnego od uŜytkownika
• powłoka zawiera interpreter poleceń, który umoŜliwia
komunikację z uŜytkownikiem
(jest to odpowiednik programu command.com z DOS’a)
• interpreter poleceń uruchamia polecenia systemu
operacyjnego oraz programy uŜytkowe
Programy
• procesy uruchamiane przez uŜytkownika
• zarządzane przez program szeregujący jądra
• mogą być przerwane w dowolnym momencie, np. komendą
- kill
• kaŜdy ma przydzielony odpowiedni obszar pamięci i
priorytet
• jeśli proces uŜytkownika próbuje dostać sie do cudzego
obszaru pamięci, zostaje przerwany, a system wyświetla
komunikat: segmentation fault
• bieŜąca zawartość pamięci procesu moŜe zostać zapisana
na dysku w pliku o nazwie core (nazwa od słów core dump,
czyli zrzut pamięci)
• analiza zawartości tego pliku moŜe pomóc programiście w
wykryciu przyczyny wystąpienia błędu
Schemat
blokowy
Struktura katalogów
Rozbudowana struktura katalogów Linuxa jest pogrupowana w
logiczne części. KaŜdy katalog zawiera pliki powiązane ze sobą
logicznie.
Struktura katalogu głównego jest następująca:
/bin - wykonywalne pliki binarne, niezbędne do pracy zarówno w
trybie wielouŜytkownikowym, jak i w awaryjnym trybie jednego
uŜytkownika,
/boot - jądro systemu oraz pliki niezbędne przy jego uruchomieniu,
/dev - pliki urządzeń, stanowiące interfejs do sterowników w
jądrze,
/etc - konfiguracja systemu
/home - katalogi domowe uŜytkowników
/lib - biblioteki systemowe
/lost+found - pliki odnalezione podczas wykonywania testów dysku
/mnt - katalog do którego zwykle mountowane są tymczasowe
systemy plików takie jak dyskietka czy CD-ROM
/proc - pseudosystem plików, odzwierciedlający stan procesów w
systemie,
/root - katalog domowy uŜytkownika root,
/sbin - wykonywalne pliki binarne, niezbędne do pracy systemu
zarówno w trybie wielouŜytkownikowym, jak równieŜ w trybie
jednego uŜytkownika. Zawiera polecenia administracyjne,
/tmp - pliki tymczasowe,
/usr - pliki uŜytkowników, dodatki doinstalowywane do systemu itp.
/var - pliki często zmieniane, np logi czy poczta
/usr/X11R6 - pliki związane z systemem XWindow,
/usr/bin - wykonywalne polecenia systemu Linux potrzebne do pracy w trybie wielouŜytkownikowym,
/usr/dict - słownikowa lista wyrazów angielskich, uŜywana m.in. przy sprawdzaniu jakości hasła uŜytkownika,
/usr/doc - dodatkowa dokumentacja,
/usr/include - pliki nagłówkowe,
/usr/info - dokumentacja dla polecenia info,
/usr/lib - biblioteki systemowe,
/usr/local - struktura katalogów przeznaczona dla potrzeb elementów instalowanych przez administratora systemu,
/usr/man - pliki pomocy kontekstowej man,
/usr/sbin - wykonywalne polecenia administracyjne systemu Linux potrzebne do pracy w trybie wielouŜytkownikowym,
/usr/share - pliki wspólne, generalnie katalog zawiera dodatkowe informacje na temat niektórych poleceń,
/usr/src - źródła do systemu i jądra,
/usr/tmp - pliki tymczasowe.
/var/catman - preformatowane strony pomocy kontekstowej man,
/var/db - bazy danych,
/var/lock - semafory uŜywane do komunikacji międzyprocesowej,
/var/log - logi systemowe,
/var/named - pliki serwera nazw (DNS),
/var/nis - pliki systemu NIS,
/var/run - pliki z danymi dotyczącymi numerów poszczególnych procesów w systemie,
/var/spool - kolejki poczty, wydruków itp.
/var/tmp - pliki tymczasowe.
System plików i prawa dostępu
ext2 (ang. Second Extended File System) – drugi rozszerzony system plików
dla systemu Linux. Ext2 zastąpił rozszerzony system plików ext. Rozpoznanie
uszkodzenia systemu plików (np. po załamaniu się systemu) następuje przy
starcie systemu, co pozwala na automatyczne naprawianie szkód za pomocą
oddzielnego programu (e2fsck), uszkodzone pliki zapisywane są w katalogu
lost+found.
System plików ext2 zawiera mechanizm zapobiegający znacznej fragmentacji
danych, co zdarzało się podczas uŜywania poprzedniej jego wersji.
Ext2 przy domyślnym rozmiarze bloku (4 KB) obsługuje partycje o wielkości do
16384 GB i pojedyncze pliki o wielkości do 2048 GB. Nazwy plików mogą mieć
do 255 znaków długości.
WaŜnym elementem systemu ext2 są wolne pola w strukturach danych – to
dzięki nim między innymi, moŜliwa jest konwersja „w locie” do systemu ext3 –
wykorzystuje on po prostu część z nich do przechowywania swoich danych.
Budowa systemu plików:
blok startowy (boot block) zawiera informacje potrzebne Linuksowi do startu
(uzyskania dostępu do systemu plików)
superblok (superblock) zawiera informacje o strukturze systemu plików
lista i-węzłów (inode list) to lista adresów do tych bloków danych na których
są zapisane rzeczywiste dane pliku. Wyjaśnienie: przed zapisaniem na dysku
twardym plik jest dzielony na części określone przez rozmiar bloku danych. Po
zdefiniowaniu adresów takich bloków w i-węzłach dane moŜna zapisać (lub
potem odczytać).
bloki danych (oraz bloki katalogów czyli data blocks) to części o stałym
rozmiarze przestrzeni dyskowej przygotowane do wprowadzania i odczytu
danych plików (katalogów). JeŜeli plik jest większy od jednego bloku danych, to
jest dzielony i zapisany na powierzchni kilku bloków danych - adresy do takich
bloków są notowane w i-węzłach. Natomiast, gdy wielkość pliku jest mniejsza
niŜ blok danych, to wolna przestrzeń bloku danych marnuje się.
chown – zmiana właściciela
ls -l
# chown root /var/run/httpd.pid
-rw-rw-r-- 1 artur artur 0 Mar 4 13:01 test
chmod <prawa> <nazwa pliku>
u-user a-all g-group o-other
r-read w-write x-execute
chmod a+x test
chmod 706 test
0 to - brak praw dostępu
1 to -x wykonywanie
2 to -w- zapis
3 to -wx zapis i wykonywanie
4 to r- odczyt
5 to r-x odczyt i wykonywanie
6 to rw- odczyt i zapis
7 to rwx odczyt, zapis, wykonywanie
Dowiązania w systemie Linux
Dowiązania często są przyrównywane do skrótów w systemie
Windows. W rzeczywistości posiadają jednak znacznie większe
moŜliwości, np.: tworzenie twardych, symbolicznych dowiązań,
dowiązań do urządzeń, innych systemów etc.
Jest jednak jedno "ale" - polecenie "ln" moŜe być nieobsługiwane
przez niektóre systemy, na innych moŜe być ograniczone...
Linki twarde posiadają te same rozmiary, te same numery iwęzłów. Są to po prostu inne nazwy tego samego pliku(obszaru
dysku). Linki twarde są domyślnym typem dowiązań.
Dowiązania symboliczne pozwalają na stworzenie dowiązań do
pliku, który jest w innym systemie, na innym urządzeniu.
Jako parametr przy wywołaniu "ln" podajemy "-s" np.:
$ ln -s /mnt/hda1/wazne wazne_c
FSCK
fsck (skrót od file system check lub file system consistency
check) - Uniksowy program do sprawdzania integralności systemu
plików.
Zwykle fsck jest uruchamiany podczas bootowania systemu, aby
sprawdzić, czy system plików jest w dobrym stanie. JeŜeli nie jest,
na przykład w wyniku spadku zasilania, fsck próbuje go naprawić.
Na systemach plików, które nie obsługują księgowania, jak na
przykład ext2, moŜe to trwać nawet przez wiele godzin, w
zaleŜności od pojemności partycji. fsck moŜe być teŜ uruchomiony
ręcznie przez administratora systemu, jeŜeli ten uzna, Ŝe to
konieczne. Odpowiednikiem fsck dla Windows jest Scandisk.
UŜytkownicy systemu
root (z ang., dosłownie korzeń) to tradycyjna nazwa uniksowego konta, które
ma pełną kontrolę nad systemem. Z załoŜenia konto root nie powinno być
uŜywane do pracy, do której wystarczyłoby zwykłe konto z ograniczonymi
uprawnieniami. Istotną sprawą jest zabezpieczenie tego konta silnym hasłem i
zabezpieczenie przed nieautoryzowanym dostępem.
Dobrze jest ograniczyć moŜliwość logowania na konto root i uŜywać poleceń su
albo sudo.
logowanie przez ssh blokujemy w Linuksie z mieniając w zbiorze
/etc/ssh/sshd_config parametr PermitRootLogin z "yes" na "no".
Konto root uprawnia do wykonywania takich operacji jak zmiana właściciela
pliku czy otwarcie portu TCP/UDP z numerem poniŜej 1024. W innych
systemach operacyjnych uŜywa się teŜ nazw takich jak toor, superuser,
supervisor, Administrator, czy operator. Nazwa root funkcjonuje, jako określenie
administratora systemu, zarówno w systemach UNIX, jak i pokrewnych
(FreeBSD, GNU/Linux).
UID (ang. User IDentifier)
- jest to identyfikator uŜytkownika w systemie Unix.
Reguły
• root ma UID 0,
• uŜytkownik nobody ma ostatni UID (zazwyczaj 32767),
• UID-y od 1 do 100 są zarezerwowane dla systemu.
Atrybuty uŜytkownika
System przechowuje w pliku /etc/passwd następujące atrybuty
kaŜdego zarejestrowanego uŜytkownika:
nazwa - nazwa jednoznacznie identyfikująca konto uŜytkownika,
identyfikator uŜytkownika UID
- numer jednoznacznie identyfikujący uŜytkownika w systemie,
identyfikator grupy GID - numer grupy, do której naleŜy uŜytkownik,
katalog domowy
- prywatny katalog uŜytkownika, w którym moŜe
bezpiecznie przechowywać swoje pliki, zabezpieczone przed dostępem innych
uŜytkowników,
powłoka logowania
- nazwa interpretera poleceń, który jest uruchamianypo
zalogowaniu uŜytkownika.
Powłoki - shell
Wyświetlenie listy powłok:
# cat /etc/shells
/bin/bash
/bin/csh
/bin/sh
/bin/tcsh
uruchamiamy np.:
csh
wychodzimy:
exit
Drobne obliczenia
z linii komend
echo $[2*3-10]
-4
a=12; b=3
Definiowanie
własnych zmiennych
c=a+b
echo $c
a+b
let c=a+b
echo $c
15
dmc=/home/user1/doc
cd $dmc
Aliasy i skrypty
Wyświetlenie dostępnych aliasów:
# alias
alias cd..=‘cd ..’
alias l=‘ls -al’
...
Definiowanie aliasów:
# alias md=‘mkdir’
# alias l=‘ls -l’
# alias um=‘umount –f /mnt/floppy’
# unalias l
Dodawanie aliasów do pliku bashrc.
TREŚĆ SKRYPTU
#!/bin/sh
TEKST="Hello world!"
LICZBA=12
SUMA=$[$LICZBA+111]
echo Tekst: $TEKST
echo Liczba: $LICZBA
echo Suma: $SUMA
WYNIK SKRYPTU
Tekst: Hello world!
Liczba: 12
Suma: 123
Proces i jego strumienie
WE
dane
PROCES
WY
dane
Błędy
deskryptor 0 – stdin – wejście standardowe
deskryptor 1 – stdout – wyjście standardowe
deskryptor 2 – stderr – wyjście standardowe błędów
Operatory przekierowania
> plik - wyjście std. jest kierowane do pliku a nie na ekran
>> plik - identyczne jak > ale dopisuje do pliku
< plik - jako wejście standartowe (zamiast klawiatury)
zostanie otwarty plik
2 > plik – przekierowanie stderr do pliku
1 > &2 – przekierowuje 1 w to samo miejsce co 2
Przykłady
ls -al >> lista.txt
cat > plik
ls -l /nie_istniejacy_katalog 2> /tmp/cos
Filtrowanie - grep
Podstawowe elementy wyraŜeń regularnych:
Rodzaje
. -dowolny pojedynczy znak;
wieloznaczników
Przykłady:
$ -dopasuj poprzedzające wyraŜenie do końca wiersza;
W większości
przypadków
uŜywane
są dwa wieloznaczniki:
grep 'Ala' plik
-znajduje wyraz
'Ala' w pliku;
^ -dopasuj występujące po operatorze wyraŜenie do początku wiersza;
grep 'A[lg]a' plik -znajduje wyraz 'Ala' lub
'Aga';
pojedyncze
wieloznacznik
lokalny –operator;
zastępujący
* -dopasuj zero lub więcej
wyraŜeń znaku poprzedzający
wystąpienie
grepznaczenia
'A.a'znaku
plikznaku
-znajduje
wyrazy
takie jak 'Ala'
'Aga' itp; stosowany
dowolnego
(do
jego
oznaczania
najczęściej
\ -oznacza ominięcie specjalnego
np:"\*";
jest
znak'^Ala'
zapytania
(?)), wyraz 'Ala' na początku wersu;
grep
plik - znajduje
[ ] -dopasuj dowolny znak
w nawiasie;
[-] -dopasuj dowolny znak z przedziału
[0-9]; plik - znajduje wyraz 'Gogle', 'Google' itd;
grep 'Go*gle'
wieloznacznik ogólny – zastępujący dowolną liczbę dowolnych
[^] -dopasuj znak, który nie znajduje
sie w -nawiasie;
grep '[0-9]'
znajduje
dowolny najczęściej
ciąg znaków zstosowany
zakresu od 0 jest
do 9;znak
znaków
(do jego
oznaczania
gwiazdki (*)).
ls -l | grep student
spowoduje wyświetlenie zawartości tylko tych pozycji katalogu, gdzie znajduje się słowo
"student" (czyli np. będących własnością studenta, posiadających słowo "student" w
nazwie itp).
cat zrodlo.c | grep include
PowyŜsze polecenie wyświetli wszystkie linie pliku zrodlo.c, zawierające ciąg "include"
Komendy shela
Pliki konfiguracyjne /etc
uŜytkownicy
/etc/passwd
zakodowane hasła
/etc/shadow
dyski / partycje
/etc/fstab
zamontowane sys. plików
/etc/mtab
allow (dozwolone)
/etc/hosts.allow
komputery niedopuszczone
/etc/hosts.deny
powłoki
/etc/shells
Demony
Daemon – proces w systemach UNIX
działający w tle bez konieczności
interakcji z uŜytkownikiem.
Zwykle nazwa takiego procesu odpowiada pełnionej funkcji z
dołączoną na końcu literą d, np. automountd, ftpd, httpd, inetd,
lockd, powerd, rlogind, sshd, statd, syslogd, talkd, telnetd, vold,
xntpd,
W systemach MS-DOS/PC-DOS podobną funkcjonalność oferują
programy rezydentne (TSR – Terminate and Stay Resident),
natomiast w Microsoft Windows analogiem jest usługa (service).
Instalacja pakietów
RPM (RPM Package Manager, dawniej Red Hat Package
Manager) to program słuŜący do instalacji i zarządzania
pakietami zawierającymi oprogramowanie, oraz nazwa tych
pakietów (poniewaŜ mają one rozszerzenie .rpm). Pakiety RPM
zawierają skompresowane (we wczesnych wersjach gzipem, w
nowszych bzipem2) archiwum cpio zawierające oprogramowanie.
Zawierają takŜe (w specjalnym pliku .spec) informacje na temat
zawartości, m.in. tzw. zaleŜności (ang. dependencies) - czyli spis
programów lub pakietów, które są wymagane do zainstalowania i
poprawnej pracy pakietu (działa to takŜe w druga stronę - pakiety
później zainstalowane wymagające danego pakietu,
uniemoŜliwiają jego odinstalowanie).
Program ten powstał na potrzeby dystrybucji Red Hat Linux,
aktualnie jest uŜywany równieŜ w innych dystrybucjach (np.
Fedora Core, SUSE, Mandrake, PLD).
Nazwy pakietów
RPM wprowadził ujednolicone nazwy plików. Przykładowy pakiet z GNU Gadu
posiada nazwę gg2-2.2.7-1.athlon.rpm. Nazwa ta składa się z czterech członów
w formacie plik-wersja-wersja_pakietu.architektura.rpm:
gg2 - nazwa programu,
2.2.7 - wersja programu,
1 - wersja pakietu (moŜe istnieć kilka wersji pakietu dla jednej wersji programu),
athlon - architektura (typ procesora) dla której pakiet jest przeznaczony (np.
i386, Athlon, Alpha, PPC).
rpm -q nazwa
- czy taki pakiet jest zainstalowany?
rpm -i --test nazwa.rpm
- testuj
rpm -ivh nazwa.rpm
- instaluj
i – instaluje
v – komunikat h – zaawansowanie
rpm -Uvh nazwa.rpm
- aktualizacja
rpm -e --test nazwa
- deinstaluj
DEB - Pakiety występujące w Debianie
TGZ - archiwa tara; pakiety obecne w Slackware
DEB:
dpkg -i nazwa_pakietu.deb - instalacja
apt-get remove nazwa_pakietu.deb - usunięcie
dpkg --info nazwa_pakietu.deb - wyświetla informacje o pakiecie
dpkg --reconfigure nazwa_pakietu.deb - ponowna konfiguracja pakietu
dpkg --list nazwa_pakietu.deb - wyświatlenie listy pakietów o podanym wzorcu
nazwy
dpkg --unpack nazwa_pakietu - rozpakowanie pakietu
TGZ:
installpkg nazwa_pakietu.tgz - instalacja
removepkg nazwa_pakietu.tgz - usunięcie
Instalacja programów ze źródeł
Rozpakowanie
tar -zxvf gettheport.tar.gz
gunzip plik.tar.gz
bunzip2 plik.tar.bz2
configure sprawdza, czy w systemie zainstalowane są wymagane
biblioteki lub programy, co ustrzeŜe Cię przed błędami kompilacji.
makefile przeprowadza cały proces kompilacji programu. Dzieli się
przewaŜnie na trzy części:
make - sekcja kompilująca źródła
install - sekcja instalująca skompilowane pliki
uninstall - sekcja odinstalowująca pliki zainstalowane
1. Configure
2. Make
3. Make install
Linux to Kernel (jądro systemu) plus ZBIÓR oprogramowania. Nie ma
jednego systemu Linux, a tylko Kernel jest ustandaryzowany. W
przeciwieństwie do znanego powszechnie Windows , Linux działa bez
okienek. Wynika to zreszta z historii systemu, który pierwotnie był dostępny
tylko w wersji tekstowej i wymagał znajomości komend unixowych. Okienka
(np. KDE, Gnome) są są więc dodatkowym oprogramowaniem, tzw.
"nakładką" na powłokę tekstową (shella).
Kolejność czynności podczas startu
systemu:
1. Pierwszy uruchamiany jest program LILO (ew. GRUB)
Dane tam zawarte pozwalają procesorowi na ustawienie
ekranu, uruchomienie właściwego Kernela itp.
2. Zostaje odpalony pierwszy proces Kernela, czyli init. Zawsze
ma on identyfikator procesu PID o wartości 1. Większość
dystrybucji Linuksa uŜywa init w oparciu o parametry zapisane
w pliku /etc/inittab. Proces init odpala proces getty
3. Proces init montuje systemy plików (np. dysk twardy) zgodnie
z danymi w pliku /etc/fstab, a to co zamontował odnotowuje w
pliku /etc/mtab
4. Następnie są czytane skrypty startowe w katalogach
/etc/rc.d/rc?.d/ (będą wówczas włączone demony w ramach
osobnych procesów) oraz plik /etc/rc.d/sysinit .
5. W zaleŜności od widzimisie admina niektóre programy mogą
być uruchomione za pomocą skryptów w katalogu /etc/xinetd/ .
Mamy wówczas do czynienia z pracą programu nie w
osobnym procesie (te zostały włączone podczas startu
systemu za pośrednictwem w/w skryptów /etc/rc.d/rc?.d/*), a
pod kontrolą nadserwera inetd (lub xinetd)
6. Uruchamiany jest skrypt /etc/rc.d/rc.local . W nim moŜemy (na
końcu!) umieszczać odwołania do własnych, autorskich
skryptów (np. uruchomienie połączenia SDI - patrz ostatnie
wiersze pliku).
7. Gdy system zakończy ładowanie np. w 3 levelu (w powłoce
tekstowej), to automatycznie zostanie włączony program login
umoŜliwiający zalogowanie do systemu. Po zalogowaniu
zostaną uruchomione skrypty konfigurujące shella.
8. JeŜeli system odpalił w 3 levelu (w powłoce tekstowej), a
uŜytkownik zechce pracować w okienkach np. KDE, to wielki
finał wykona skrypt /usr/bin/X11/startx (uruchamiany poprzez
wpisanie zlecenia startx i wciśnięcie klawisza ENTER).
1) LILO
LILO to program (bootloader) uruchamiający system Linux. Innym,
choć na razie mniej popularnym bootloaderem jest GRUB. LILO
jest umieszczane standardowo na dyskietce 1,44 lub w MBR
dysku twardego, zaś konfig LILO czyli plik lilo.conf na dysku
twardym, w katalogu /etc.
2) INIT
Gdy program LILO ustawi parametry startowe, nastąpi
uaktywnienie pierwszego procesu Kernela pod nazwą init, którego
opcje są zapisane w pliku /etc/inittab . Oto przykład tego pliku
#(Tu decydujemy, czy załadują się okienka 5 lub czy system
zatrzyma ładowanie na powłoce tekstowej 3. Więcej informacji
umieściłem poniŜej. W naszym przykładzie system wystartuje w
okienkach (5)
id:5:initdefault:
#(wskazanie miejsca połoŜenia pliku rc.sysinit - jest to skrypt
konfigurujący niektóre parametry startowe systemu)
si::sysinit:/etc/rc.d/rc.sysinit
Głównym zadaniem pliku /etc/inittab jest wskazanie poziomu startowego
runlevel w wierszu id:5:initdefault: . Oczywiście moŜemy narzucić inny niŜ 5
poziom. Oto ich lista:
0 - halt, czyli zatrzymaj system (nie ustawiaj tego jako domyślny poziom ;)
1 - system jednouŜytkownikowy (będzie działać tylko pod jednym userem), bez
funkcji sieciowych
2 - wielouŜytkownikowy system (tak jak poziom 3), ale z wyłączoną funkcją
sieciową
3 - wielouŜytkownikowy system z funkcjami sieciowymi
4 - unused (nieuŜywane )
5 - tak jak poziom 3, ale w okienkach (serwer X11)
6 - reboot czyli restart systemu (nie ustawiaj tego jako domyślny poziom ;)
Poziom 0 i 6 jest uŜywany przez system do zwykłego restartu lub zatrzymania,
więc nie powinno się go wpisywać do pliku /etc/inittab w wierszu id:?:initdefault:
. Zobaczysz ten runlevel, gdy wydasz zwykłe zlecenie halt, reboot lub np. init 6,
telinit 6.
3) Skrypty startowe /etc/rc.d/rc?.d/*
w pracowni:
komputery startują w poziomie 3, czyli powłoka tekstowa
a okienka uruchamiamy zleceniem startx.
NaleŜy wiedzieć, Ŝe w zaleŜności od tego czy system załaduje się w powłoce tekstowej,
czy w okienkach (np. KDE) - są wykorzystywane inne pliki autostartu. JeŜeli wybraliśmy
domyślny poziom działania nr 3, to automatycznie zmusiliśmy system, by w czasie startu
odczytał zawartość katalogu /etc/rc.d/rc3.d/ (który działa podobnie jak autostart w
windowsowm menu START- PROGRAMY- AUTOSTART). W przypadku startu systemu
w okienkach (czyli poziomie 5), system odczyta zawartość katalogu /etc/rc.d/rc5.d/ .
Znajdują się w nim linki do plików startowych demonów. Mają one w nazwie literkę S
(czyli plik startowy) lub K (kill - koniec, zabity), nr oznaczający kolejność uruchomienia i
nazwę demona. Skróty te moŜna śmiało ręcznie kasować (zamiast usuwania moŜna
zmienić nazwę, dopisując na początku dolną kreskę "_") lub dodawać w zaleŜności od
potrzeb. Skąd się tam biorą? Ano, podczas instalacji programu np sshd, w katalogu
/etc/rc.d/init.d/ zostanie utworzony plik sshd umoŜliwiający uruchomienie danego
demona. To właśnie do niego jest dowiązany skrót w /etc/rc.d/rc3.d/.
4) Superserwer inetd (xinetd)
Superserwer inetd (xinetd) to narzędzie bardzo przydatne w systemie Linux. Jego zaletą jest
umiejętność nasłuchiwania na wybranych portach i uruchamiania danej usługi w razie
potrzeby. Weźmy przykład: sshd. MoŜna go odpalić jako osobny proces standalone wówczas sshd będzie pracował jako demon i zostanie aktywny CAŁY CZAS, nawet gdy nie
będzie prób nawiązania połączenia. Z punktu widzenia oszczędności zasobami komputera,
to rozrzutne choć umoŜliwiające natychmiastową reakcję rozwiązanie. MoŜna teŜ uruchomić
sshd pod inetd (xinetd) i wówczas nasz superserwer będzie się czaił na porcie 22, a gdy
usłyszy nawoływanie do połączenia - samoczynnie uruchomi nieaktywnego dotychczas
demona sshd. Niestety, wydłuŜa się wówczas czas oczekiwania na uruchomienie i reakcję.
Serwer inetd (xinetd) ustala nr portu pobierając dane z pliku /etc/services. Plik ten zawiera
listę wszystkich usług sieciowych wraz z odpowiadającymi im portami.
Podczas instalowania demonów (np. proftpd, sshd itd.) tworzone są w katalogu /etc/xinetd.d
pliki konfiguracyjne o tytułach zawierających nazwę demona. Po wyedytowaniu dowolnego
pliku, znajdziesz parametr disable (wyłączone). Decyduje on, czy demon będzie
podporządkowany xinetd (opcja no) lub czy włączy się jako jako samodzielny proces (opcja
yes). Demona np. sshd pracującego pod xinetd uruchomimy (po dokonaniu zmian w
katalogu /etc/xinetd.d) resetując superserwer zleceniem:
kilall -HUP xinetd
lub
/etc/rc.d/xinetd restart
5) Skrypt /etc/rc.d/rc.local
Mamy włączony system. Działają demony, interfejsy.
Został ostatni główny skrypt startowy rc.local, w którym
informatycy opiekujący się daną dystrybucją Linuksa
umieszczają ostatnie szlifujące konfigurację zlecenia.
6) Skrypty konfigurujące shella
Proces uruchamiania shella dla danego usera jest skomplikowany. Wspomniałem o tym
na początku strony. Nas interesuje co się dzieje od chwili, gdy program getty zaczyna
proces przygotowania konsoli do uŜycia uruchamiając odpowiednie programy. Program
login pozwolił wpisać nazwę usera i sprawdził hasło.
Z pliku /etc/passwd oraz passwd- jest pobierany rodzaj shella przypisany danemu
userowi (plik /etc/shells zawiera listę wszystkich, dostępnych, systemowych shelli). Po
ustaleniu rodzaju shella (w naszym przypadku bash) jest czytany plik /etc/profile
Następnie ustalana jest zmienna PATH zgodnie z zawartością pliku ~/ .bash_profile
lub jeŜeli go nie ma, to ~/bash_login
lub jeŜeli ich nie ma to ~/.profile
Pozostaje jeszcze plik ~/ bashrc , który współpracuje z plikiem /etc/bashrc
7) Skrypt /usr/bin/X11/startx
Przyjmuję, Ŝe jesteśmy zalogowani w 3 levelu, czyli
działamy w powłoce tekstowej. JeŜeli mamy prawa do
odpowiednich plików, to moŜemy zleceniem startx
uruchomić okienka.
Źródła
Ćwiczenia z systemu Linux, Leszek Madeja, Mikom 1999
http://www.eioba.pl/c150/linux
http://zsk.tech.us.edu.pl/ogloszenia/romanek/5_7.html
http://pl.wikipedia.org/
http://rainbow.mimuw.edu.pl/SO/Linux/