LPIC-1 - Kaku konspekt 2011, 1. osa

From ICO wiki
Revision as of 18:13, 20 April 2011 by Kaido (talk | contribs)
Jump to navigationJump to search

ETTEVAATUST! SELLE LEHE NÄPPIMINE ON HETKEL VÄGA POOLELI!!!

NB! Tegemist on Kaku personaalsete märkmetega eksamiteks valmistumise ajast, aluseks on Roderick W. Smithi raamat LPIC-1: Linux Professional Institute Certification Study Guide.

Diskleimer: otseseid vastuseid päris eksamiküsimustele on eksamireeglite järgi keelatud levitada. Seetõttu neid ka siit konspektist ei leia.


LPI-101

Käsurida

Käsukestad:

  • bash
  • csh
  • tcsh
  • ksh
  • zsh

/bin/sh - sümlink soovitavale kestale

Sisekäsud:

  • cd
  • cwd
  • echo
  • exec
  • time
  • set
  • exit/logout

NB! exec-iga programmi x-terminalist käivitades suletakse lõpetamisel ka xterm!

Mõned sisekäsud on dubleeritud väliskäskudeks - sel juhul on prioriteet sisekäsul, kui pole lisatud täit kataloogiteed väliskäsuni


Käskude tabuleerimine (tab completion)

.history - kättesaadav terminalis üles-noole abil


Bashi kiirklahvid on võetud Emacsilt:

  • Ctrl-A - rea algus (Home)
  • Ctrl-E - rea lõpp (End)
  • Ctrl-B - märk vasakule (<-)
  • Ctrl-F - märk paremale (->)
  • Ctrl-Left - sõna vasakule (Esc-B)
  • Ctrl-Right - sõna paremale (Esc-F)
  • Ctrl-D - kustutus paremalt (Del)
  • Ctrl-K - kustutus kursorist rea lõpuni
  • BkSp - kustutus vasakule
  • Ctrl-X + BkSp - kustutus kursorist rea alguseni
  • Ctrl-T - vahetab kursori all oleva sümboli eelmisega
  • Esc-T - vahetab kursori all oleva sõna eelmisega
  • Esc-U - muudab kursorist sõna lõpuni suurtähtedeks
  • Esc-L - muudab kursorist sõna lõpuni väiketähtedeks
  • Esc-C - muudab kursorialuse tähe suurtäheks
  • Ctrl-X + Ctrl-E - käivitab editori (määratud $EDITOR või $FCEDIT -muutujas). Varuvariant: Emacs

history sisaldab enamasti 500 viimast käsku; history -c puhastab

Kasutaja sätted: ~/.bashrc, ~/.profile

Süsteemsed: /etc/bash.bashrc, /etc/profile


Keskkonnamuutujad

Näide:

  • $ NNTPSERVER=news.abigisp.com
  • $ export NNTPSERVER

Võib ka kokku panna: $ export NNTPSERVER=news.abigisp.com

env - kuvab kõik muutujad!

man <käsk> - saab anda ka manuaali sektsiooni:

man 5 passwd - passwd-käsu manuaali 5. sektsioon (peatükk)

man vs info


Suunamised

Standardsed vood (enamasti käsitletakse programmides samaväärselt andmefailidega):

  • stdin - tüüpiliselt klaver
  • stdout - tüüpiliselt kuvar
  • stderr - tüüpiliselt kuvar

S/V suunamine:

  • käsk > fail.txt
  • käsk > käsk
  • > - loob stdout-i infost uue faili (olemasolev kirjutatakse üle)
  • >> - lisab stdout-i info olemasolevale failile (kui pole olemas, luuakse)
  • 2> - loob stderr-i infost uue faili (olemasolev kirjutatakse üle)
  • 2>> - lisab stderr-i info olemasolevale failile (kui pole olemas, luuakse)
  • &> loob stdout-i JA stderr-i infost uue faili (olemasolev kirjutatakse üle)
  • < - kasutab määratud faili stdin-ina
  • << - järgnevate ridade teksti kasutatakse stdin-ina
  • <> - kasutab määratud faili NII stdin-i KUI stdout-ina

/dev/null - eimiski. N: whine 2> /dev/null - whine'i kõik veateated visatakse ära

<< - nimet. ka "here document" (here doc) - enamasti ainult skriptides, mitte käsureal!

N: proge << blah jääb kuulama:

aaa - läheb proge sisendisse
bbb - see ka
ccc - see ka
ddd - see ka
blah - lõpetab ära

Ctrl-D - EOF-sümbol!

tee - suunab stdout-i lisaks ka mainitud failidesse. Enamasti skriptikäsk.

N: ls | tee blabla.txt - ls kuvab nagu tavaliselt, kuid lisaks läheb ka faili (nagu ls ja ls > blabla.txt koos!)


Toru:

esimene | teine


Backtick:

Kasutatakse "käsk käsus" loomiseks:

$ rm `find ./ -name “*~”` - kustutab kõik ~-lõpulised failid

xargs - saadab argumendid edasi:

$ find ./ -name “*~” | xargs rm - find'i argumendid söödetakse rm-käsku (rm esimene~ , rm teine~ , rm kolmas~ jne )


Tekstifiltrid:

cat - faili kuvamine või failide sidumine

cat esimene teine > kolmas

argumendid: -E - näita realõpusümbolit ($) -n - nummerdab read -b - nummerdab mittetühjad read -s - asendab tühjade ridade plokid üheainsa tühja reaga -T - näitab tabulatsioone (ˇI) -v - näitab mittetrükitavaid sümboleid

tac - cat tagurpidi, kuvab read vastupidises järjekorras


join - ühendab failid väljade kaupa. N:

fail nimed.txt: 1. Jüri 2. Mari 3. Peeter 4. Elmar

fail pikkus.txt: 1. 198 2. 166 3. 180 4. 178

Kokku: 1. Jüri 198 2. Mari 166 3. Peeter 180 4. Elmar 178

Saab määrata ka erinevaid võtmevälju: -1 n - esimeses failis on võtmeväljaks n-es väli -2 m - teises... jne


paste - ühendab failid rida-realt: 1. Jüri 198 ...


NB! sed jt tekstivahendid ei muuda algset faili, vaid saadavad muudetud tulemuse kas stout-i (kuvarile) või faili!

expand - asendab Tab-id tühikutega. Vaikimisi 8, väärtust saab lisada parameetriga expand -t number unexpand - vastupidine od (octal dump) - algselt mõeldud failide kuvamiseks kaheksandsüsteemis, aga suudab kuvada ka kuueteistkümnend- ja kümnendsüsteemi, ASCIId jmm.

sort

  • -f (--ignore-case) - ei erista suur- ja väiketähti
  • -M (--month-sort) - sorteerib ingliskeelsete kolmetäheliste kuunimede järgi (JAN...DEC)
  • -n (--numeric-sort) - arvude järgi
  • -r (--reverse-sort) - tagurpidi
  • -k väli (--key-field=) - võtmeväli (vaikimisi esimene). Saab panna ka kaks välja


split - jagab faili kaheks või enamaks failiks. Ette antakse väljundfaili nimi - komponendid luuakse kujul nimiaa,nimiab,nimiac ...

  • -b maht (--byte-size=) - komponentide maht baitides (märgipealt => viimane rida enamasti poolik)
  • -C maht (--line-bytes=) - maht ilma ridu poolitamata (kui aga rida on pikem kui etteantud suurus, poolitub ikkagi)
  • -l maht (--lines=) - komponentide ridade arv

N: $ split -l 2 listing1.1.txt numbers (väljund: numbersaa,numbersab ... kahe rea kaupa)


tr - tähtede asendamine - esimesena toodud hulga tähed asendatakse teise omadega

N: $ tr BCJ bc < listing1.1.txt - sisendfailis asendatakse B b-ga, C c-ga ja J samuti c-ga (viimane saadaolev märk teises hulgas)

erikuju: tr -d HULK - hulga elemendid kustutatakse tekstist


(IDEE TULEVASE ÕPETAMISE JAOKS - TASUB TEHA N.Ö. TELEFONIMÄNGU - ÕPETAJA ANNAB ESIMESELE ÕPILASELE ÜLESANDE "LEIA KÄSK, MIS...", SEE LAHENDAB JA ANNAB OMAKORDA JÄRGMISELE ÜLESANDE)


uniq - eemaldab topeltread N: $ sort shakespeare.txt | uniq be is not or question that the to

(eemaldati üks 'to' ja üks 'be')


Failiformaatimiskäsud:

fmt - silub tekstifaili. Eeldab, et lõigud on eraldatud vähemalt 2 tühja rea või siis tabuleeritud. Vaikimisi reapikkus 75 märki nl - ridade nummerdamine (nagu cat -b, aga võimsam). pr - trükkimiseks ettevalmistamine (näit. päiste ja jaluste lisamine; mitu veergu jne). Peamiselt kasutatakse kombineeritud käskudes: N: cat kiviajamull.txt | pr --columns=2 > blabla.txt

NB! pr on loodud eeskätt 80-ndate printereid silmas pidades. Ta on kasulik tänini, kuid uuemaid võimalusi (PostScript jpt) toetab paremini GNU Enscript


Failikuvamiskäsud:

cat - vt eespool head - kuvab stout-i faili alguse. Vaikimisi 10 esimest rida, saab määrata ka baitide (-c) või ridade (-n) arvu tail - sama, kuid lõpust. Kasulik logide jälgimisel (värskeimad sissekanded). Lisavõimalused:

 * -f - jääb jälgima ja kuvab lisanduvad read
 * -pid=nr - lõpetab -f-iga alustatud jälgimise, kui protsess nr lõpetab töö

less - tõsisem failikuvaja. Enamasti ei kasutata käsuahelates (liiga interaktiivne), v.a. viimase käsuna

 * /sõna - otsing ettepoole. ainult / annab interaktiivse. n edasi, N tagasi
 * ?sõna - sama tahapoole
 * gNR - reale minek. N: g65
 * h - abiinfo
 * q - välja

Kokkuvõtvad käsud:

cut - võimaldab filtreerida failist infot mingite tingimuste (baitide, märkide, väljade) järgi:

  • -b - baidid
  • -c - märgid
  • -f - väljad

Väärtused võivad olla konkreetsed (4), vahemikud (2-4) ja avatud vahemikud (-2, 4- - kuidas määratakse negatiivseid arve?)

N: $ ifconfig eth0 | grep HWaddr | cut -d “ “ -f 11 - kuvab MAC-aadressi

wc - sõnaloend. Võimaldab lugeda ka ridu (-l), sõnu (-w), baite (-b) ja märke (-c).

N: 65 372 2672 kiviajamull.txt - 65 rida, 372 sõna, 2672 baiti/märki.


Regulaaravaldised:

  • Kantsulud - variandid. N: b[aeiou]g - bag, beg, big, bog, bug
  • kriips - vahemik. N: a[2-4]z - a2z, a3z, a4z
  • punkt - suvaline märk (peale reaalgussümboli). N: a.z - a2z, abz, aQz
  • katus (karee) - reaalgus
  • dollar - realõpp
  • tärn - 0-n sümbolit
  • pluss - 1-n sümbolit
  • küsimärk - 0-1 sümbol
  • kaigas - üks kahest. N: liha|kala
  • tavasulud - alamavaldis nagu matemaatikas
  • kurakaldkriips - paosümbol eelmiste sümbolite tavakasutuseks. N: kakupesa\.net


grep - paindlik otsinguvahend. Üldkuju: grep [valikud] regulaaravaldis [failid]

  • -c - ridade lugemine kuvamise asemel
  • -f failinimi - loeb regulaaravaldise failist
  • -i - ei erista suur- ja väiketähti
  • -r - rekursiivne otsing alamkataloogidest (võib aga ka rgrep-i kasutada)
  • -E - kasutab laiendatud regulaaravaldist (vaikimisi on tavakujul; võib aga ka egrep'i kasutada)
  N: grep -E “(twain\.example\.com|bronto\.pangaea\.edu).*127” /etc/* - otsib /etc-st ridu, kus on üks kahest domeeninimest ja seejärel number 127
  NB! Siin ja mõnel muul juhul kasutatakse jutumärke, et kest ei tõlgendaks avaldise osi enda käskudena!


sed - käsurearedaktor. Muudab faili ja saadab selle stdout'i. Kaks põhikuju: sed [valikud] -f skriptifail [sisendfail] sed [valikud] skriptifail [sisendfail]

N: $ sed ‘s/2011/2012/‘ cal-2011.txt > cal-2012.txt - asendab aastanumbri ja teeb järgmise aasta kalendri


Esmane kontrolltulemus: 17 20-st.


==

2. PEATÜKK

==

Pakihaldurid:

RPM (RPM Package Manager, varem Redhat Package Manager)

Paki üldkuju: packagename-a.b.c-x.arch.rpm (a.b.c - versioon, x - build; arch - arhitektuur, v.a. lähtekoodipakil src)

Ideaalis peaks iga pakk töötama kõigil RPM-distrodel. Reaalselt ei pruugi, kuna

  • iga distro paigaldab erinevad RPM-i utiliidid
  • ühe versiooni pakil võivad olla sõltuvused, mida teises pole
  • sõltuvused võivad olla distroti eri nimedega
  • pakkides olevad failid võivad distroti veidi erineda
  • pakkides olevad skriptid ei pruugi ühilduda

RPM üldine süntaks: rpm [operation][options] [package-files|package-names]

Põhioperatsioonid:

  • -i - paigaldab paki, sama nimega pakki ei tohi varem olla
  • -U - uuendab olemasolevat või paigaldab, kui veel pole
  • -F - uuendab ainult siis, kui vanem versioon on olemas
  • -q - päring paki kohta
  • -V - paki kontroll
  • -e - eemaldab paki
  • -b - (vana) lähtekoodi ja konfi olemasolul ehitab binaarpaki; alates rpm 4.2-st teeb seda rpmbuild
  • --rebuild - sama
  • --rebuilddb - loob RPM-i andmebaasi uuesti, parandab vead

Põhivalikud: Valik Käsud Kirjeldus ..........................................................

--root dir Kõik Määrab konkreetse kataloogi juurkataloogiks --force -i, -U, -F Sundpaigaldus (ka ülekirjutamise korral) -h, --hash -i, -U, -F Näitab käsu täitmise edenemist #-sümbolite reaga -v -i, -U, -F Kasutatakse koos -h-ga näitamaks iga paki kohta ühtmoodi #-de rida (-Uvh) --nodeps -i, -U, -F, -e Eirab sõltuvusi (ohtlik!) --test -i, -U, -F Kontrollib kõike nagu päris paigalduses, aga reaalselt ei paigalda --prefix path -i, -U, -F Määrab paigalduskataloogi (toimib vaid osade pakkidega) -a, --all -q, -V Kontrollib kõiki pakke -f file, --file file -q, -V Kontrollib faili omanikuks olevat pakki -p package-file -q Päring eemaldatud faili kohta -i -q Kuvab paki info -R, --requires -q Kuvab sõltuvused (pakid ja failid) -l, --list -q Kuvab pakis olevad failid

NB! Osa operatsioone tahavad paki nime (lühem), teised aga paki täis-failinime (pikem)!


rpm -qi - põhjalikum info paki kohta.


Andmete eraldamine RPMist

RPM on muudetud cpio-fail (vt http://en.wikipedia.org/wiki/Cpio).

rpm2cpio -utiliit saadab väljundi stdout'i, seega tuleb suunata:

rpm2cpio samba-server-3.0.25b-4.5mdv2008.0.src.rpm > samba-server-3.0.25b-4.5mdv2008.0.cpio

seejärel cpio-fail lahti pakkida: $ cpio -i --make-directories < samba-server-3.0.25b-4.5mdv2008.0.cpio -i pakib lahti, --make-directories loob vajalikud alamkataloogid

Võib ka ühe käsuga: $ rpm2cpio samba-server-3.0.25b-4.5mdv2008.0.src.rpm | cpio -i --make-directories

NB! Mitte pakkida olemasoleva failisüsteemi selga! Alati peaks looma eraldi alamkataloogi - pakk võib sisaldada /etc, /usr jt hierarhiaid

Debiani alien suudab rpm-i teha lisaks deb-ile ka tarballiks!


Yum

Üldkuju: yum [valikud] [käsk] [pakid]

Põhikäsud:

  • install - paigaldab pakid ja nende sõltuvused
  • update - uuendab valitud pakid - ilma argumendita paneb paika kõik uuendused
  • check-update - näitab võimalikke uuendusi
  • erase, remove - eemaldab
  • upgrade - sama mis update --obsoletes, sobib versiooniuuenduseks
  • list - paki info
  • provides, whatprovides - konkreetse teenuse pakid. N: yum whatprovides apache
  • search - otsing
  • info - paki info (vrdl info-käsk)
  • clean - puhvri puhastamine, aeg-ajalt soovitatav
  • resolvedep - etteantud sõltuvusega pakid
  • localinstall - kohaliku rpm-i paigaldus, sõltuvused tulevad yum'i varamutest
  • localupdate - vt eelmist
  • deplist - sõltuvuste loend
  • shell - yum'i käsukest


NB! yum'i kasutamine on lihtsam kui tavalise rpm'i puhul, kuid süsteemi haldamine antakse rohkem distro koostaja kätte!

yumdownloader - laeb soovitud paki alla aktiivsesse kataloogi


RPM'i ja yum'i konf

RPM-i põhikonf: /usr/lib/rpm/rpmrc (ei ole /etc all!). Seda ei tohiks muuta - tulekski luua kas globaalne /etc/rpmrc või kasutajapõhine ~/.rpmrc

Peamine point on lisada arhitektuurivõtmeid: optflags: athlon -O2 -g -march=i686

Yum: /etc/yum.conf + /etc/yum.repos.d/ -varamute konfid

Red Hati/Fedora põhilised lisavaramud:

Asjalik teenus: http://rpmfind.net

Deb/dpkg

Debian, Ubuntu, Xandros, Mepis, Libranet...

Üldkuju: dpkg [options][action] [package-files|package-name]

Põhikäsud:

  • -i, --install paigaldus
  • --configure konfib paigaldatud paki
  • -r, --remove eemaldab paki, jätab konfifailid alles
  • -P, --purge eemaldab paki koos konfiga
  • -p, --print-avail info paigaldatud paki kohta
  • -I, --info info paigaldamata paki kohta
  • -l <muster>, --list loetelu pakkidest, mille nimes esineb <muster>
  • -L, --listfiles loetelu pakiga seotud paigaldatud failidest
  • -S <muster>, --search otsing mustri järgi
  • -C, --audit poolikute pakkide otsing, annab soovitusi

Võtmed:

  • --root=dir Kõik Määrab juurkataloogi (kasulik erakorralise remondi puhul)
  • -B, --auto-deconfigure -r Deaktiveerib pakid, mis sõltuvad eemaldatavast pakist
  • --force-things Mõned Sunnib tegevusi
  • --ignore-depends=package -i, -r Eirab sõltuvusi
  • --no-act -i, -r Kontrollib sõltuvusi ilma reaalset operatsiooni sooritamata
  • --recursive -i Rekursioon läbi alamkataloogide
  • -G -i Ei paigalda pakki, mille uuem versioon on juba paigaldatud
  • -E, --skip-same-version -i Ei paigalda pakki, mille sama versioon on juba paigaldatud

Mõnel juhul eeldatakse paki-, mõnel failinime. Install ja info tahavad faili, eemaldamine pakki.


apt-cache - mitmesugune info paki kohta:

  • apt-cache showpkg pakinimi -
  • apt-cache stats - pakistatistika.

Näide: kakk@aragorn:~$ sudo apt-cache stats [sudo] password for kakk: Pakettide nimesid kokku: 42027 (841k) Total package structures: 42027 (2 354k)

 Tavapakette: 32271
 Puhtalt virtuaalseid pakette: 530
 Üksikuid virtuaalseid pakette: 3059
 Kombineeritud virtuaalseid pakette: 293
 Puudu: 5874

Kokku erinevaid versioone: 34394 (2 476k) Erinevaid kirjeldusi kokku: 34394 (825k) Sõltuvusi kokku: 222752 (6 237k) Versioonide/failide seoseid kokku: 38085 (914k) Kirjelduste/failide seoseid kokku: 34394 (825k) Total Provides mappings: 6341 (127k) Total globbed strings: 183 (2 517) Total dependency version space: 1 091k Lõtkukohti kokku: 53,4k Total space accounted for: 12,2M

  • apt-cache unmet - puuduvad sõltuvused
  • apt-cache depends pakinimi - konkreetse paki sõltuvused
  • apt-cache pkgnames sa - sa-ga algavad pakinimed


Apt-get


Apti allikaid ei tasu suvaliselt lisada :)

Põhikäsud:

  • update loeb sources.listi varamute uuendused
  • upgrade uuendab
  • dselect-upgrade uuendab dselecti järel tegemata jäänud asjad*
  • dist-upgrade nagu upgrade, aga parema konfliktikontrolliga (distrouuendus)
  • install paigaldab paki
  • remove eemaldab
  • source tõmbab lähtekoodipaki (failinime järgi!)
  • check kontrollib pakiandmebaasi
  • clean puhastab puhvri
  • autoclean puhastab puhvri vaid vanadest failidest, mida enam kasutada ei saa

Valikud:

-d, --download-only upgrade, dselect-upgrade, Laeb pakid alla, kuid ei paigalda

               		      install, source 				

-f, --fix-broken install, remove Üritab lahendada sõltuvused -m, --ignore-missing või upgrade, dselect-upgrade, Eirab pakke, mille lähtekood pole saadaval --fix-missing install, remove, source -q, --quiet Kõik Ei näita osasid väljundeid (-qq on veel vaiksem!) -s, --simulate, --just-print, Kõik Simuleerib tegevust (reaalselt ei tee) --dry-run, --recon või --no-act -y, --yes või --assume-yes Kõik Vastab küsimustele "jah" (skriptides kasutamiseks) -b, --compile või --build source Laeb lähtekoodipaki alla ja kompileerib selle --no-upgrade install Ei uuenda pakki, kui vanem versioon on juba olemas

Apt - sama jutt kui RPMiga: kontroll nihkub pakendaja kätte!


dselect, aptitude - pakibrauserid (aptitude töötab apt-geti analoogina, kui anda pakid ette, ilma parameetriteta läheb interaktiivsesse režiimi). Graafiline analoog on Synaptic.

aptitude - full-upgrade vs safe-upgrade, viimane on konservatiivsem


dpkg-reconfigure - paki ümberkonfimine

Debiani pakk koosneb eri failidest! lähtekoodi tarball, kontrollfail ja .dsc-signatuurifail (ehtsuse kontroll)


Pakihaldurite konfimine

dpkg konf: /etc/dpkg/dpkg.cfg või kohalik ~/.dpkg.cfg

apt: /etc/apt/sources.list (ja repod /etc/sources.list.d); apt'i enda konf: /etc/apt/apt.conf (Ubuntul /etc/apt/apt.conf.d/ all eri failid eri rakendustele)


Alien

Nõuab nii RPMi kui DPKG paigaldamist

Üldkuju: alien [options] file[...] Tähtsaimad valikud: --to-deb, --to-rpm, --to-slp ja --to-tgz (3. on Stampede Linuxi pakett, suht vananenud, 2002 lõpetas töö) Näited:

  1. alien --to-rpm someprogram-1.2.3-4_i386.deb - rpm-iks
  2. alien --install binary-tarball.tar.gz - installib ja lisab Debiani andmebaasi nagu .deb-i


Pakikonfliktid

Peamised põhjused:

  • puuduvad teegid/utiliidid
  • mitteühilduvad teegid/utiliidid
  • topelt failid - mingi paki failid on teise pakiga juba paigaldatud ja ei ühildu
  • mitteklappivad nimed

RPM-i puhul saab jõuga:

  1. rpm -i apackage.rpm --nodeps
  2. rpm -i apackage.rpm --force

DPKG puhul --ignore-depends=package, --force-depends või --force-conflicts -parameetrid

Vahel aitab sõltuvuspakkide uuendamine

Vahel võib paki ümber ehitada: # rpmbuild --rebuild packagename-version.src.rpm

Vahel saab leida paki alternatiivversiooni

Vahel (serveritarkvara puhul) on vaja muuta käivitusskripte: /etc/rc.d/rc.local või /etc/rc.d/boot.local




Jagatud teegid

näiteks libc/glibc, qt, gtk+

glibc põhifail on ajalooliselt jäänud /lib/libc.so.6, tänapäeval on enamasti sümlink (Ubuntu 10.10 puhul samasse libc-2.12.1.so peale)

Põhimõtteliselt saaks teeke ka staatiliselt linkida, aga tulemus oleks suur ja paindumatu (uuendamine eeldaks relinki). Linux kasutab dünaamilist teegisüsteemi sarnaselt Windowsi DLL-idega. Linuxis on vastavad laiendid:

  • jagatud teek - .so või .so.versioon (n: .so.6)
  • staatiline teek - .a

Jagatud teegi miinused:

  • mõningane jõudluskadu, kui teine programm juba sama teeki kasutab
  • teegi muutmine võib tekitada ühilduvusprobleeme seda kasutavate programmidega
  • programm ei pruugi teeki leida
  • sõltuvustepusa
  • teegi probleem (N: kettaviga) tekitab kogu süsteemile hirmsa kolaka

Teekide leidmine - nime ja/või kataloogitee järgi

Põhiline konf: /etc/ld.so.conf . Ubuntul on seal rida "include /etc/ld.so.conf.d/*.conf" - kõik conf-failid seal laetakse, nagu nad oleks juba ld.so.conf'is sees

Gentoos tuleb redigeerida /etc/env.d/ kataloogis olevaid konfifaile ja seejärel anda käsk env-update.

Lisaks seal määratule on alati kättesaadavad ka /lib ja /usr/lib sisu


Teekide asukohti saab määrata ka LD_LIBRARY_PATH -keskkonnamuutujaga:

$ export LD_LIBRARY_PATH=/usr/local/testlib:/opt/newlib


Teekide nimekonflikti või asukohajama puhul võib aidata sümlink: # ln -s biglib.so.5.2 biglib.so.5 (vahel tuleb peale seda anda ldconfig-käsk)

ldd programminimi - kuvab kõik teegid, mida programm kasutab:

kakk@aragorn:~$ ldd /usr/bin/xbiff linux-vdso.so.1 => (0x00007fff3a7ff000) libXaw.so.7 => /usr/lib/libXaw.so.7 (0x00007f4941c22000) libXt.so.6 => /usr/lib/libXt.so.6 (0x00007f49419bd000) ...

ldconfig - laeb teekide puhvri uuesti (vajalik peale muutusi). Nii RPM kui DPKG teevad seda automaatselt. Saab ka eri parameetreid kasutada.


Protsessihaldus


Kerneliprotsess - uname:

Põhiparameetrid:

  • -n, --nodename - hostinime kuvamine
  • -s, --kernel-name - kerneli nimi (enamasti Linux)
  • -v, --kernel-version - kerneli versioon (algselt kuvas kompileerimise aega)
  • -r, --kernel-release - kerneli väljalase
  • -m, --machine - arvuti info (enamasti arhitektuur: x86_64)
  • -p, --processor - prose info (enamasti näitab paljudel juhtudel unknown)
  • -i, --hardware-platform - riistvaraplatvorm (enamasti unknown)
  • -o, --operating-system - OS (GNU/Linux)
  • -a, --all - kogu saadaolev info (kõik kokku)


ps - protsessikäsk. Hirmus hulk parameetreid, kolm klassi:

  • Unix98 valikud - ühetähelised, võib grupeerida, algavad ÜHE kriipsuga (-)
  • BSD valikud - ühetähelised, võib grupeerida, algavad ILMA kriipsuta
  • GNU pikad valikud - mitmetähelised, ei grupeerita, algavad KAHE kriipsuga (--)

PS_PERSONALITY keskkonnamuutuja määrab PS-i käitumise: posix, old, linux, bsd, sun, digital jt

Peamised Linuxi ps-käsud:

  • ps - konkreetse terminali kõik protsessid
  • abiinfo - ps --help
  • kuva kõik protsessid - ps -A või ps -e
  • kuva kõik aktiivse kasutaja protsessid - ps -x
  • kuva kõik konkreetse kasutaja protsessid: ps -u kasutaja, ps U kasutaja või ps --user kasutaja (võib olla kasutajanimi või ID)
  • täiendav info: -f, -l, j, l, u ja v võtmed
  • protsesside hierarhia: -H, -f ja --forest -võtmed
  • lai väljund (üle 80 märgi): -w ja w


Näidatav info:

  • kasutajanimi
  • protsessi ID
  • ülemprotsessi (vanema) ID
  • TTY (terminal)
  • protsessori ajakasutus
  • protsessori prioriteet
  • mälukasutus
  • käivituskäsk

NB! init "adopteerib" orbudeks jäänud (ülemprotsess lõppenud) protsessid!


top

ps-i dünaamiline variant. Tavaliselt kasutatakse interaktiivselt ilma argumentideta, aga saab ka anda parameetreid

Eriti kasulik on protsessoriaja jälgimine (load average)


jobs - jooksva sessiooniga seotud protsessid. Kasulik vahel PID leidmiseks


Tausta- ja esiplaaniprotsessid

Ctrl-Z peatab terminalis jooksva protsessi ja vabastab terminali fg jätkab uuesti (kui mitu on peatatud, siis fg number) bg jätkab taustal käsk & käivitab taustal


nice

Määrab protsessi prioriteetsuse: nice [argument] [command [command-arguments]]

Näide:

$ nice -12 number-crunch data.txt - käivitab number-crunch'i, andmed võetakse data.txt'ist

Tavaprioriteet on 0. vahemik on -20-st 19-ni, negatiivsed on kõrgema prioriteediga. Prioriteetseid protsesse (alla 0) saab käivitada vaid root, madalamaid prioriteete iga kasutaja (N: wine puhul oli -5). Kasutaja saab muuta vaid oma protsesside prioriteete ja ainult madalamaks!

Töö käigus saab prioriteeti muuta: renice priority [[-p] pids] [[-g] pgrps] [[-u] users] N: # renice 7 16580 -u pdavison tbaker - protsess 16580 ja kõik kahe kasutaja protsessid saavad prioriteedi 7.


Protsessi tapmine

kill - võib olla nii sise- kui väliskäsk, viimase jaoks tuleks anda koos teega /bin/kill

Üldkuju: kill -s signaal PID

Signaalide loetelu: kill -l

signaali võib anda nii nime kui numbri järgi. Enamlevinud:

  • 1 - SIGHUP, tapab interaktiivsed programmid
  • 9 - SIGKILL, räige kohene surm ilma shutdown'ita
  • 15 - SIGTERM, pehmem, üritab failid sulgeda jne. Vaikimisi valik!

lühikuju: kill -signaalilõpp PID (ilma SIGita: HUP, KILL, TERM jne)

Root saab killida kõike, muud ainult omi protsesse

nohup programm [valikud] - käivitab nii, et SIGHUPiga tappa ei saa (eiratakse)

killall - nime järgi killimine. -i parameeter küsib: kakk@aragorn:~$ killall -i firefox-bin Kill firefox-bin(8074) ? (y/N) y kakk@aragorn:~$

NB!!! Mõnes muus Unixis tapab killall KÕIK SELLE KASUTAJA PROTSESSID!!! Ettevaatust...


Riistvara



BIOS - EEPROM ehk taaskasutatav püsimälu (flash memory) POST - power-on self test

POST => riistvaratest => alglaaduri laadimine andmekandjalt => alglaaduri käivitus => OS käivitus

Apple'il on BIOSi asemel OpenFirmware (PowerPC) või EFI (Intel Macs)

BIOS setup - F1, F2, F10, Esc, Del vmm klahv

Arvuti käivitus ilma klaverita - kbd check BIOSist välja lülitada!


Katkestused (IRQ)

i386 puhul 0-15, x86_64 jt puhul on neid veel

0 System timer Reserved for internal use. 1 Keyboard Reserved for keyboard use only. 2 Cascade for IRQs 8–15 The original x86 IRQ-handling circuit can manage just 8 IRQs; 2 are tied together to handle 16 IRQs,

       	                but IRQ 2 must be used to handle IRQs 8–15.

3 Second RS-232 serial port May also be shared by a fourth RS-232 serial port. ( COM2: in Windows) 4 First RS-232 serial port May also be shared by a third RS-232 serial port. ( COM1: in Windows) 5 Sound card or second paral

 lel port (LPT2: in Windows)

6 Floppy disk controller Reserved for the first floppy disk controller. 7 First parallel port (LPT1: in Windows) 8 Real-time clock Reserved for system clock use only. 9 Open interrupt 10 Open interrupt 11 Open interrupt 12 PS/2 mouse 13 Math coprocessor Reserved for internal use. 14 Primary ATA controller The controller for ATA devices such as hard drives;

                      		  typically /dev/hda and /dev/hdb under Linux.

15 Secondary ATA controller The controller for more ATA devices; typically /dev/hdc and /dev/hdd under Linux.


Põhiline konfliktiallikas on 5 - helikaardid ja teine paralleelport!

Linuxis näitab cat /proc/interrupts


/proc - virtuaalne failisüsteem: mitte päris failid, vaid failisüsteemina esitatav kerneli info (riistvara, protsessid jne). Paljud utiliidid kasutavad seda, kuid cat'iga vmm moel saab ka otse vaadata.


I/O aadressid:


Linux Device Windows Name Typical IRQ I/O Address /dev/ttyS0 COM1 4 0x03f8 /dev/ttyS1 COM2 3 0x02f8 /dev/ttyS2 COM3 4 0x03e8 /dev/ttyS3 COM4 3 0x02e8 /dev/lp0 LPT1 7 0x0378-0x037f /dev/lp1 LPT2 5 0x0278-0x027f /dev/fd0 A: 6 0x03f0-0x03f7 /dev/fd1 B: 6 0x0370-0x0377

Vahel kasutatakse vananenud tähistust /dev/cuax - seega /dev/cua0 = /dev/ttyS0

cat /proc/ioports


DMA (Direct Memory Addressing)

cat /proc/dma


CHS geomeetria vs dünaamiline

cold vs hot plug

Hotplug-seadmed => /sys (sysfs)


HAL (Hardware Abstraction Layer) daemon - jooksev info saadaolevate välisseadmete kohta

D-Bus (Desktop Bus) daemon - ditto

udev - virtuaalne failisüsteem /dev all, mõeldud hotplug-seadmetele

NB! RS-232 (COM) ja paralleelpordi (LPT) seadmed on tegelikult coldplugged - tegelikult peaks reboodi tegema!


PCI konfiks: lspci ja setpci

-v Increases verbosity of output. This option may be doubled (-vv) or tripled (-vvv) to produce yet more output. -n Displays information in numeric codes rather than translating the codes to manufacturer and device names. -nn Displays both the manufacturer and device names and their associated numeric codes. -x Displays the PCI configuration space for each device as a hexa- decimal dump. This is an extremely advanced option. Tripling (-xxx) or quadrupling (-xxxx) this option displays information about more devices -b Shows IRQ numbers and other data as seen by devices rather than as seen by the kernel. -t Displays a tree view depicting the relationship between devices. -s [[[[domain]:] Displays only devices that match the listed specification. This bus]:][slot][.[func]] can be used to trim the results of the output. -d [vendor]:[device] Shows data on the specified device. -i file Uses the specified file to map vendor and device IDs to names.

      (The default is /usr/share/misc/pci.ids.)

-m Dumps data in a machine-readable form, intended for use by scripts. A single -m uses a backward-compatible format, whereas doubling (-mm) uses a newer format. -D Displays PCI domain numbers. These numbers normally aren’t displayed. -M Performs a scan in bus-mapping mode, which can reveal devices hidden behind a misconfigured PCI bridge. This is an advanced option that can be used only by root. --version Displays version information.



Kerneli moodulid


lsmod - kuvab ainult moodulite info, mitte aga draivereid, mis on otse kernelisse kompileeritud!

  1. insmod /lib/modules/2.6.26/kernel/drivers/block/floppy.ko

NB! Täisnimi koos kataloogiteega!


modprobe - laeb mooduli koos sõltuvustega

  1. modprobe floppy

Põhivalikud:

  • -v, --verbose - kuvab lisainfot
  • -C failinimi - kohandatud konfifail (vaikimisi /etc/modprobe.conf)
  • -n, --dry-run - simuleeritud moodulilisamine (reaalselt ei lisa)
  • -r, --remove - eemaldab mooduli koos sõltuvustega (v.a. juhul, kui sõltuvused on teiste poolt kasutuses)
  • -f, --force - jõuga lisamine
  • --show-depends - näitab mooduli sõltuvusi
  • -l, --list - näitab saadaolevaid mooduleid

rmmod - mooduli eemaldamine

Põhivalikud:

  • -v, --verbose - kuvab lisainfot
  • -f, --force - jõuga eemaldamine
  • -w, --wait - kui moodul on kasutuses, ei anna veateadet, vaid ootab kasutuse lõppemist


USB

USB 1.0 ja 1.1 - kuni 127 seadet, 12Mbps USB 2.0 - kuni 480Mbps

lsusb

Uuemal ajal on USB seadmed ühendatud /proc/bus/usb/001, 002, 003 jne


Kõvakettad

(P)ATA - paralleelkaabel, 40 või 80 juhet SATA - jadakaabel, 7 juhet?

ATA puhul hda on 1. kontrolleri master, hdb 1. kontrolleri slave, hdc 2. kontrolleri master ja hdd 2. kontrolleri slave (vahepealt võib mõni puududa)

Uuemal ajal võidakse ka ATA kettaid tähistada nagu SCSI omi (sda)

Välised USB- ja Firewire (IEEE1394) kettad - nagu SCSI


Partitsioonid


NB! Enamikku andmekandjaid käsitletakse võrdväärselt kõvaketastega (USB ja ZIP kettad). Ei partitsioneerita plaate, MO-kettaid ja flopisid!

fdisk -l /dev/hdx (vastav nr) näitab reeglina, kas on partitsioneeritav või ei

Enamik PC-sid kasutab x86 partitsioneerimist, osa AMD64 ja Inteli Macid aga GUID GPT (Globally Unique Identifier Partition Table) süsteemi


GPT partitsioone on kindlam töödelda GNU Parted'iga, mitte fdiskiga

LVM - ei kuulu otseselt programmi. Aga konkreetne soovitus: kui kasutada, tuleb jätta /boot (või / koos buudiga) väljapoole LVM-i (nagu Kakupesas!)


Jaotisteskeem

Swap (not mounted) 1.5–2 times sys- Serves as an adjunct to system RAM; is

                    tem RAM size 	slow, but enables the computer to run more

or larger programs. /home 200MB–1000GB Holds users’ data files. Isolating it on a sepa- (or more) rate partition preserves user data during a system upgrade. Size depends on the num- ber of users and their data storage needs. /boot 20–200MB Holds critical boot files. Creating it as a sepa- rate partition lets you circumvent limitations of older BIOSs and boot loaders on hard disks over 8GB. /usr 500MB–10GB Holds most Linux program and data files;

                			this is sometimes the largest partition,

although /home is larger on systems with many users or if users store large data files. /usr/local 100MB–3GB Holds Linux program and data files that are unique to this installation, particularly those

               		     that you compile yourself.

/opt 100MB–5GB Holds Linux program and data files that are associated with third-party packages, espe- cially commercial ones. /var 100MB–500GB Holds miscellaneous files associated with the day-to-day functioning of a computer. These files are often transient in nature. Most often split off as a separate partition when the system functions as a server that uses the /var directory for server-related files like mail queues. /tmp 100MB–20GB Holds temporary files created by ordinary users. /mnt N/A Not a separate partition; rather, it or its subdirectories are used as mount points for removable media like floppies or CD-ROMs. /media N/A Holds subdirectories that may be used as mount points for removable media, much like /mnt or its subdirectories



Failisüsteemi loomine kettale: # mkfs -t ext3 /dev/hda6

NB! mõnel juhul tasub reserveeritud ruum (žurnaali jaoks; ca 5% kettast) ära jätta - lisada -m 0 -võti.


Saaleala tegemine:

  1. mkswap /dev/hda7
  2. swapon /dev/hda7

Püsiva jaoks tuleb /etc/fstab'is ära kirjeldada!


Diagnostika

dumpe2fs -h <jaotis> N: dumpe2fs -h /dev/sda1 tune2fs debugfs


fsck / e2fsck

Põhivalikud:

  • fsck -A - kõik /etc/fstab-is kirjas olevad failisüsteemid
  • fsck -C - progressinäidik
  • fsck -V - rohkem juttu
  • fsck -N - simulatsioon (ilma reaalse tegevuseta)

Tavaliselt võib jooksutada lihtsalt fsck <failisüsteem>


df - ketta täituvus

hea võti - -h näitab kordseid ühikuid:

kakk@aragorn:~$ df -h Failisüsteem Size Used Avail Use% Haagitud /dev/sda2 16G 12G 3,1G 80% / none 2,0G 288K 2,0G 1% /dev none 2,0G 172K 2,0G 1% /dev/shm none 2,0G 308K 2,0G 1% /var/run none 2,0G 0 2,0G 0% /var/lock /dev/sda3 212G 118G 84G 59% /home //zerblat/kaido$/ 347G 324G 23G 94% /media/itk_kodu //zerblat/Avalik$/ 347G 324G 23G 94% /media/itk_avalik /home/kakk/.Private 212G 118G 84G 59% /home/kakk kakk@aragorn:~$

-a näitab kõiki (ka /proc jt) -T kuvab failisüsteemi tüübi

Võib anda ette ka failisüsteemi või konkreetse kataloogi


du - kettakasutus

Võtmed:

  • -c - kogusumma


Failisüsteemide haakimine

mount

Võtmed:

  • -a - kõik fstab'is kirjas olevad
  • -r - ainult lugemiseks
  • -w (või -o rw) - lugemiseks-kirjutamiseks
  • -t tüüp - failisüsteemi tüüp


Lihtne kuju: # mount /dev/sdb7 /mnt/shared

Haakimise hetkeseis: /etc/mtab (erinevalt fstab'ist pole konfifail ja seda ei näpita!)

Parameetreid:

  • loop - lubab faili haakida kui partitsiooni: mount -t vfat -o loop image.img /mnt/image
  • auto vs noauto - kas haagitakse buudil või ei (eemaldatavaid kettaid ei tasu)
  • user vs nouser - kas kõik kasutajad või vaid root
  • ro vs rw - read-only vs read-write
  • umask väärtus - failisüsteemidele, mis muidu ei toeta Unixi õigustesüsteemi. N: umask 027 => vaikimisi õigused 750, 022 => 755 jne.

user vs users vs owner:

  • user - iga kasutaja võib külge haakida, lahti haakida võib vaid sama kasutaja
  • users - igaüks võib kinni-lahti haakida
  • owner - ainult omanik


umount

  • -a kõik NB!!! mitte fstab'i, vaid mtab'i järgi!
  • -f sunnib
  • -r kui ei õnnestu, haagib uuesti read-only'na


NB! Andmete reaalne kettale kirjutamine võib puhvri tõttu toimuda viivitusega - alati tuleb kettad enne eemaldamist lahti ühendada!


fstab

kaks viimast veergu:

  • dumpi lipp - tänapäeval pea alati 0 (dumpi enam ei kasutata, muidu oleks 1)
  • fsck kontroll buudi ajal - 0-ei kontrollita, 1-esmane kontroll (root part), 2-teised kontrollitavad

CIFS-faili õigused: nagu läpakas EIK ketastega, fstab'is on parameeter credentials=/etc/creds (ja mitte otsene nimi/parool)!

/etc/creds sel juhul (root-readable only!): username=hschmidt password=yiW7t9Td


Failihaldus



Failiõigused: avabiti väärtused - - tavafail d - kataloog l - sümlink p - nimega toru s - sokkel b - blokiseade (ketas) c - märgiseade (jada- või rööppordid)


loabitid (käivad kõige ees: ntx 0750; 4750; 6750 jne):

  • SUID - set user ID: programm jookseb mitte käivitaja, vaid omaniku õigustes. N: käivitan tavakasutajana fdiski, kui seal on SUID peale pandud

N: rwsr-xr-x (s-täht sees). Väärtus: 4

  • SGID - sama grupiga. N: wxr-sr-x. Väärtus: 2
  • sticky - faile saab kustutada vaid nende omanik, kataloogi omanik või root. Kirjutatakse x-i kohale: rwxr-xr-t. Väärtus: 1

SUID ja SGID on suured turvariskid!


Sümbolkuju:

  • ugoa - user, group, other, all
  • + - = - add, remove, set
  • rwxXstugo - read,write,execute,exec2,suid/sgid,sticky,user,group,other

Näide:

Command Initial Permissions End Permissions chmod a+x bigprogram rw-r--r-- rwxr-xr-x chmod ug=rw report.tex r-------- rw-rw---- chmod o-rwx bigprogram rwxrwxr-x rwxrwx--- chmod g=u report.tex rw-r--r-- rw-rw-r-- chmod g-w,o-rw report.tex rw-rw-rw- rw-r-----


Umask:

Kataloogid: 777 - mask = õigused (022 => 755) Failid: 666 - mask = õigused (022 => 644)

Tegelikult bitikaupa lahutamine, mitte tavaline: kataloogi puhul 027 => 640 ja 277 => 400)

umask ja newgrp -käsud


chattr - ainult Linuxi failisüsteemides, täiendavad õigused:

  • -a - append, kirjutada saab ainult lisades (mitte üle)
  • -c - compress, automaatne jooksev kinni-lahtipakkimine
  • -i - immutable, ei saa muuta, ümber nimetada, kustutada, linkida (isegi root mitte - bitt tuleb enne maha võtta!)
  • -j - journal (kui failisüstemem toetab) - faili žurnaalimine (kergem taastada, ent aeglane)
  • -s - secure delete - püsikustutus (nullidega ülekirjutus)
  • -t - no tail-merging - faili ei ümardata üle blokkide
  • -A - no access time update - faili viimase vaatamise atribuuti ei uuendata


Kettakvoodid:

2.4 kernelid - v1 2.6 - v2


fstab'i rida:

/dev/hdc5 /home ext3 usrquota,grpquota 1 1

Sisselülitamine (RH): chkconfig quota on


Otsing


find - name - perm - size - gid - uid

Peamiselt root-kasutaja tööriist - ei sõida üle failiõigustest!

locate kasutab andmebaasi (vt updatedb!), kiirem ja lihtsam slocate - turvalisem, ei näita tavakasutajale asju, mida ei peaks näitama


whereis - ainult kindlad süsteemsed kohad, mõeldud käskude leidmiseks:

$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.bz2


which - väga nõrk otsing ainult kasutaja kataloogitee raames, tagastab leitud faili kogu kataloogitee: $ which xterm /usr/bin/xterm

type - kas sise- või väliskäsk, alias vmms:

$ type type type is a shell builtin $ type cat cat is /bin/cat $ type ls ls is aliased to `ls --color’


tar - t-võti on --list!

kvootide nägemine: repquota -a


Buudiprotsess


LILO: /etc/lilo.conf (NB! peale muudatusi tuleb lilo-käsk anda)

Nii LILO kui GRUBi puhul: kui kernel tehakse ise, tuleb see konfi ise sisse kirjutada! Alati tasub vana image alles jätta, kuni pole selge, kas uus töötab


Single-user mode: linux 1, linux s, linux S või linux single

GRUB: /boot/grub/menu.lst või /boot/grub/grub.conf


buuditeated: dmesg (vt ka /var/log/dmesg)

buudiprotsessi etapid:

1. poweron, BIOS 2. BIOS kontrollib riistvara, otsib buutsektori 3. alglaadur 4. käivitub kernel 5. /sbin/init 6. muud käivitusprogrammid


Käivitustasemed: 0 - üleminekutase (sisuliselt shutdown) 1 - single user 2 - Debianil (Ubuntul ka!) full multiuser w/ X, graph login. teistel defineerimata 3 - enamasti full multi user text mode 4 - enamasti defineerimata 5 - enamasti 3 + graafiline keskkond 6 - reboot


Muidu on default level /etc/inittab-is. Ubuntul vaikimisi pole!

Runleveli sättimise vahendid: chkconfig, ntsysv, rc-update ja update-rc.d (Ubuntul on viimane!)

Check: runlevel-käsk : N näitab, et level pole viimase buudiga muutunud


Vahetamine: init level (N: init 3) telinit - kindlam ja suuremate võimalustega


Shutdown

  1. shutdown now - otsekohe level 1 peale
  2. shutdown -h +15 “system going down for maintenance” 15 minuti pärast (saab ka kellaaja panna: 06:00)

katkestus: # shutdown -c “never mind”

-h - halt - peatab, ei lülita välja -H - Halt - peatab, enamasti lülitab välja -r - reboot -P - poweroff

reboot ja poweroff on tänapäeva halti sümlingid!


vi redaktor

Kolm režiimi:

  • käsurežiim: ühetähelised käsud (N: a, i ja R viivad kõik sisestusrežiimi - R on overwrite!)
  • failirežiim: koolon + kaks tähte
  • sisestusrežiim: Esc viib tagasi käsurežiimi

Kui ei tea, kus oled, viib Esc alati tagasi käsurežiimi!

Salvestus: :w Salvesta ja välja: :wq Välja ilma salvestuseta: :q!


================================================================================================

LPI-102

================================================================================================

X

Kolm peamist varianti:

  • XFree86 - 2004. aastani peamine Linuxi akenduskeskkond
  • X.org - 2004. aastast Linuxi peamine keskkond (XFree86 litsentsimuudatuste tõttu)
  • Accelerated-X - omandvaraline X versioon (http://www.xig.com)

XFree86 ja X.org'i erinevus - fontide asukoht ja konfifaili nimi...


XFree86 ja X.org-i konfivahendid:

X server ise - konfikäsud vastavalt:

  • XFree86 -configure
  • Xorg -configure

Selle tulemusena luuakse kas:

  • /root/XF86Config.new või
  • /root/xorg.conf.new

NB! X ei tohi töötada, vaja on tekstirežiimi!

Distrospetsiifilised vahendid:

  • system-config-display (RH)
  • yast, yast2 (Suse)

Vananenud:

  • xf86cfg
  • xorgcfg

Veel varasemaid (varem kui XFree86 v 3.3.6):

  • xf86config, Xconfigurator, XF86Setup


Põhiline konf:

  • X.org - fail xorg.conf; enamasti /etc/X11 all, aga võib olla ka /etc vmm kohas
  • XFree86 v4 - XF86Config-4 või ka XF86Config, /etc/X11 või /etc
  • XFree86 v3 - XF86Config, /etc/X11 või /etc

Konfifail on kõigil sama ülesehitusega ja koosneb sektsioonidest. N klaveri sektsioon: Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbModel" "pc105" Option "XkbLayout" "et" Option "AutoRepeat" "500 200" EndSection

Üldiselt suht sarnane kõigil. Erandina ei ole XFree86 3.3.6 ja vanemates:

  • Option-klauslit - selle asemel on vastavad väärtused esimeses positsioonis (AutoRepeat "500 200")
  • ServerLayout-sektsiooni
  • Identifier- ja Driver- klausleid

X-i parandamistsükkel: 1. Reeglina ei saa torkida töötavat X-i. Aitab telinit 3 (RH) või /etc/init.d/gdm stop (Debian ja lapsed) 2. Teha muudatused 3. Lasta X prooviks käima startx-käsuga. Kui korras, siis telinit 5 või /etc/init.d/gdm start

Protsessi mahatapmine: Ctrl-Alt-Bksp või grep-kill:

  1. ps ax | grep X

1375 ? S 6:32 /etc/X11/X -auth /etc/X11/xdm/authdir/

  1. kill 1375

X-i torkimisel tasub fokuseerida tähelepanu ükshaaval eri seadmetele ja vastavatele konfi sektsioonidele.

NB! sektsioonide järjekord ei loe!!!

Tüüpilised sektsioonid XF4 ja Xo puhul:

  • Module
  • InputDevice
  • Monitor
  • Device
  • Screen
  • ServerLayout

NB! XF4 ja Xo kasutavad hiire ja klaveri jaoks kaht InputDevice-sektsiooni, XF3 kasutas hiire jaoks Pointer-sektsiooni


Module - riistvaradraiverid (kernelimoodulid): Section “Module” Load “dbe” Load “extmod” Load “fbdevhw” Load “glx” # 3D Load “record” Load “freetype” # TrueType fonts Load “type1” # Adobe Type 1 fonts Load “dri” # 3D EndSection

Üldiselt ei tasu mooduleid eriti torkida (ainus selge juhus on 3D töölesaamine!)

InputDevice 1 - klaver:

Section “InputDevice” Identifier “Keyboard0” # tegelikult ei oma identifikaatori kuju otsest tähendust - sisuliselt 1. klaviatuur Driver “kbd” Option “XkbModel” “pc105” Option “XkbLayout” “et” Option “AutoRepeat” “500 200” # klahvikordusmehhanism rakendub 500 ms (0,5sek) pärast ja järgnevad kordused 200ms intervalliga (5x sekundis) EndSection

NB! Kordustegurit tasub muuta siiski kasutajalähedasemate vahenditega (nagu Accessibility)


InputDevice 2 - hiir:

Section “InputDevice” Identifier “Mouse0” Driver “mouse” Option “Protocol” “IMPS/2” Option “Device” “/dev/input/mice” Option “Emulate3Buttons” “no” # kas keskmist hiirenuppu saab asendada kahe nupu koosklõpsuga Option “ZAxisMapping” “4 5” # 4. ja 5. nupp - sisuliselt tähendavad hiireratta kerimist üles ja alla! EndSection

Tähtis - Device võib olla:

  • /dev/input/mice
  • /dev/mouse # enamasti sümlink
  • /dev/psaux # PS2 hiir
  • /dev/usb/usbmouse # vanad USB hiired
  • /dev/ttyS0 # vanaaegne jadapordihiir
  • /dev/ttyS1 # sama teises pordis

Tähtis - Protocol võib olla:

  • IMPS/2 # tänapäeval levinud - enamik rattaga hiiri
  • ExplorerPS/2 # see ka - NB! PS/2 võib tähistada nii riist- kui tarkvaraprotokolli, viimast kasutavad ka paljud USB-hiired!)
  • PS/2 # vanem PS/2
  • Microsoft
  • Logitech
  • Auto # X üritab ise protokolli ära arvata, enamasti edukalt!


Monitor - nägu:

Section “Monitor” Identifier “Monitor0” ModelName “VisionMaster Pro 450” HorizSync 27.0-115.0 # kilohertsides! VertRefresh 50.0-160.0 # hertsides! # kohandatud graafikarežiim 1360x1024 Modeline “1360x1024” 197.8 1360 1370 1480 1752 1024 1031 1046 1072 -HSync -VSync EndSection

Identifier ja ModelName eriti ei loe - sync ja refresh on aga väga olulised, määrates reso ja refresh rate'i.

Mõned utiliidid võimaldavad valida väärtused (N: 1024x768@75) ja arvutavad siis vastavad väärtused, kuid käsitsi saab täpsemini (vaata manuaalist!).

Vanad monitorid võivad katki minna, uued suudavad liiga kõrgeid väärtusi eirata!

Modeline on keerukas väärtustekomplekt, niisama torkida ei maksa. XF3 ja varem pani igaks juhuks hirmsa hunniku monitore nõnda kirja

XF4 ja Xo kasutavad Data Display Channelit (DDC), mis võimaldavad -configure käsuga Modeline'i arvutada (monitor teatab ise vastavad väärtused). Seetõttu on konfifailid enamasti märksa lühemad.


Device - videokaart:

Section “Device” Identifier “Videocard0” Driver “nv” VendorName “nVidia” BoardName “GeForce 6100” VideoRam 131072 # kilobaitides => 128MB EndSection

Driver "nv" Draiverid asuvad kataloogis /usr/X11R6/lib/modules/drivers/ , enamikul on nime järel _drv.o (N: nv_drv.o). Identifier, VendorName ja BoardName on jällegi lugeja jaoks. VideoRam pole enamasti vajalik, harva peab määrama.


Screen - video lahutusvõime ja värvigamma


Section “Screen” Identifier “Screen0” Device “Videocard0” Monitor “Monitor0” DefaultDepth 24 SubSection “Display” Depth 24 Modes “1024x768” “1024x600” “800x600” “640x480” EndSubSection SubSection “Display” Depth 8 Modes “1024x768” “800x600” “640x480” EndSubSection EndSection

Kaks võimalikku komplekti, vaikimisi väärtuse määrab DefaultDepth (XF3-s oli DefaultColorDepth).

Vajatava põhimälu valem: R = xres × yres × bpp ÷ 8,388,608 N: R = 1280 × 1024 × 24 ÷ 8,388,608 = 3.75MB


ServerLayout - koondinfo:

Section “ServerLayout” Identifier “single head configuration” Screen “Screen0” 0 0 InputDevice “Mouse0” “CorePointer” InputDevice “Keyboard0” “CoreKeyboard” EndSection


xdpyinfo - pikk joru tehnilist infot monitor jõudluse kohta. Vaikimisi kuvab kõik laiendused, täpsustamiseks xdpyinfo -ext laiendus xwininfo - info mingi akna kohta (tuleb klõpsata). Parameetrid:

  • -id id, -name name - akna ID või nime järgi
  • -root - juuraken (töölaud)


Kirjastiilid


Tuumstiilid saab kirjutada X-i konfi, vahepeal (XF3 aja lõpus) kasutati ka X-ist sõltumatut fondiserverit (tänaseks teeb jälle põhitöö ära X).

Põhiliigid:

  • rasterkirjastiilid (bitmap) - hulk piksleid sees-väljas. Miinusena on vajadus optimeerida konkreetsele resole ja erinev suurus eri resodega (kuvar vs printer). Eri suuruste jaoks on eri failid (vältimaks skaleerimise vajadust)
  • skaleeruvad (scalable) e. joonkirjastiilid (outline) - koosneb maatriksise paigutatud sirg- ja kõverjoontest. Parem skaleeruvus, aga mitte universaalne, samuti vajab rohkem prosejõudu

Joonkirjastiilide põhitüübid:

  • Adobe Postscript Type 1 (harilikult lihtsalt Type 1)
  • Apple TrueType - uuem, XF3 ei toetanud (sai lisada fondiserveri abil)


Tuumstiilid - need, mida haldab X ise. Asukohad:

  • XFree86 (traditsiooniliselt) - /usr/X11R6/lib/X11/fonts/
  • X.org-X11 - /usr/share/fonts või /usr/share/X11/fonts

Väliseid stiile võib panna ka mujale, näiteks /opt/fonts või /usr/local/fonts alla.

Installifailid:

  • Type 1 - .pfa või .pfb
  • TrueType - .ttf

Windowsi, OS2 ja paljude muude süsteemide stiile saab Linuxis otse kasutada, Maci "suitcase"-konteinereid ei saa. Teisendamiseks on rida utiliite (näiteks FontForge)

Peale fondifailide kopeerimist vastavasse kataloogi tuleb sinna luua paar vajalikku faili. Lihtsam on teha seda käskudega

  • mkfontscale - loob fonts.scale faili, toetab mõlemat tüüpi (T1 jaoks on ka type1inst ja TTF jaoks ttmkfdir)
  • mkfontdir - loob fonts.dir -faili

Seejärel tuleb luua X-i konfifaili vastav sektsioon:

Section “Files” FontPath “/usr/share/fonts/100dpi:unscaled” FontPath “/usr/share/fonts/Type1” FontPath “/usr/share/fonts/truetype” FontPath “/usr/share/fonts/URW” FontPath “/usr/share/fonts/Speedo” FontPath “/usr/share/fonts/100dpi” EndSection

NB! Järjekord loeb - kui sama stiil esineb mitmes kohas, kasutatakse eespool olevat!

unscaled lubab rasterfonte kasutada vaid siis, kui nende suurus klapib

Testimiseks on lihtsaim võimalus X-i restart. Võib aga ka proovida: $ xset fp+ fondikataloog $ xset fp rehash

fp+ lisab nimekirja lõppu, +fp algusse!


Fondiserver - otseselt pole enam vajalik, aga sobib tsentraalseks kirjastiilijaotuseks paljudele masinatele: Section “Files” FontPath “unix:/7100” # kohalik fondiserver - võib olla ka kujul "unix:/~1" FontPath “tcp/fount.pangaea.edu:7100” # eemalasuv fondiserver EndSection


Fondifailid paigaldatakse samamoodi kui eespool, serveri konf asub /etc/X11/fs/config -failis.

catalogue = /usr/share/fonts/100dpi:unscaled, /usr/share/fonts/Type1, /usr/share/fonts/truetype, /usr/share/fonts/URW, /usr/share/fonts/Speedo, /usr/share/fonts/100dpi

NB! Eraldatakse komadega!!

Testimine: etc/init.d/xfs restart ja ka X-i taaskäivitus (või rehash, vt eespool).



Tänapäevane viis - Xft

X-i tuumfontidel ja fondiserveril on samad probleemid:

  • raske ühildada kuvari- ja printerikuju
  • serveripõhisus: failid võivad asuda füüsiliselt mujal (võib tekkida jama printimise korraldamisega)
  • Vähe tuge uuematele tüpograafiavõtetele (eeskätt printimisprobleem)
  • ei toeta silumist (antialiast) ehk hallide pikslite kasutamist lisaks valgetele ja mustadele


Xft põhineb FreeType -teegil ja on tänastes Linuxites teine kasutatav süsteem X-i tuumfontide kõrval.

Saab kasutada eelnevate süsteemide fondikatalooge - vt failis /etc/fonts/local.conf read <dir>/font/directory</dir>

Pärast muudatusi tuleb anda käsk fc-cache - idee poolest sarnane mkfontdir jms-ga


Graafiline sisselogimine


X Display Manager Control Protocol (XDMCP) - haldab nii eemalt kui kohalikke sisselogimisi

Kolm peamist XDMCP serverit: XDM, GDM, KDM


XDMCP serveri käivitab init-protsess, kas /etc/inittab'i või mõne selle alamfaili või siis SysV startup-skriptide abil

Enamasti ongi runlevel 3 ja 5 vahe ainult XDMCP serveri käivitamises

Vaikimisi runlevel inittab'is: rida id:5:initdefault:

Debiani perekond ja Gentoo aga ei kasuta runleveleid (kõigil tasemetel kas käivitatakse XDMCP või ei käivitata), vaid SysV skripte.

Ajutine käivitamine/peatamine - xdm/kdm/gdm start/stop. Püsivamalt aga tuleb redigeerida /etc/init.d/ all vastavaid skripte


XDM

kõige lihtsam, võimaldab sisse logida, kuid mitte keskkonda valida (seda tuleb teha login-failide abil)! konf /etc/X11/xdm/xdm-config. NB! Vaikimisi on remote login keelatud - DisplayManager.requestPort: 0 . Lubamiseks tuleb panna 0 asemele 177 (traditsioooniline XDMCP port).

Kui remote login on lubatud, tuleb konfida /etc/X11/xdm/Xaccess -fail. Vaikimisi on kõik lahti:

  • && Igaüks võib ühenduda
  • CHOOSER BROADCAST && igaüks võib valida kohaliku süsteemi, millega ühenduda


  • .pangaea.edu && kogu domeen võib ühenduda

tux.example.com && võib ühenduda (aga mitte süsteemi valida, vt järgmist)

  • .pangaea.edu CHOOSER BROADCAST && võib valida kohaliku süsteemi

Veel valikuid on failis /etc/X11/xdm/Xresources (näiteks saab määrata tervitusteksti)


KDM

Baseerub XDM-il, mitmed konfivariandid on samad. Probleem on konfifaili ebastabiilne asukoht eri süsteemides - /etc/X11/kdm, /etc/kde/kdm, /usr/share/kde4/config/kdm/kdmrc (otsinguvahendid abiks). Võimaldab valida ka sessiooni. Tihti ka täiendav konfifail kdmrc. Remote login tuleb eraldi lubada (enable=yes).


GDM

Sarnaneb XDM-iga vähem kui KDM, ei kasuta sama tüüpi konfi. Põhikonf enamasti /etc/X11/gdm -kataloogis, peamine fail gdm.conf. Nagu KDM-i puhul tuleb remote login eraldi lubada (enable=yes), Konfikäsk gdmconfig (root-tase). Võimaldab sessiooni valikut ja ka arvuti sulgemist. Erinevus: esmalt küsib kasutajanime ja alles siis parooli (XDM ja KDM näitavad mõlemat välja koos).


X-i kaugligipääs

X on klient-server süsteem - ekraanipilti võib saata teise arvutisse või jooksutada X-i rakendusi eemalt. Tavaolukorras töötavad X-i server ja klient samas masinas - klientideks on rakendused nagu Evolution, OO.o, gnome-terminal, Firefox jt. Kaugligipääsu korral töötab X-i server kasutaja arvutis, rakendused aga eemalolevas masinas. Mõnevõrra sobib paralleel veebilehitsejaga (tarkvara enda arvutis, veebilehed mujal - X-i server täidab siin veebiserveri rolli).


VEEBISERVER <=============> X-I KLIENT JA VEEBIKLIENT <==================> X-I SERVER

Majutab veebilehti Jooksutab kasutaja tarkvara Näitab pilti ja võtab vastu sisendit (klaver, hiir)


Harilikult vastab X vaikimisi ainult kohalikele pöördumistele (turvakaalutlus). Väljast ligipääs tuleb eraldi konfida, aga turvalisust tuleb jälgida.


Näide: karu on server, kass on klient (aga hea kuvari ja klaveriga, parem töökeskkond).

1. Logida kassi ja käivitada X (kui juba ei tööta) 2. Avada terminal 3. Terminalist käsk xhost +karu . Annab õiguse kasutada kassi karu terminalina, s.t. kass lubab kuvada karult tulevat infot ekraanil 4. logida kassist karusse (SSH, telnet) 5. karus anda käsk export DISPLAY=kass:0.0 (bashi puhul; tcsh puhul setenv export'i asemel). Karu saadab nüüd ekraanipildi kassi. 6. käivitada vajalik programm, nt Firefox. Firefox jookseb karus, aga pilt ja juhtimine toimub kassist. 7. Peale töö lõppu programmid kinni, karust logout ja kassi terminalis käsk xhost -karu.


Variant on kasutada kogu ühenduse jaoks SSH tunnelit - aeglasem, aga turvalisem. Tuleb kas a) kasutada ssh-ga karusse logimisel -X võtit või b) lisada kliendi faili /etc/ssh_config säte ForwardX11=yes

Lisaks peab olema serveri /etc/ssd_config -is X11Forwarding=yes !!

Enamasti on tänapäeva distrodes ka X-i konfist võrguühendused maha keeratud. Sisselülitamiseks:

  • GDM vanemad versioonid: /etc/X11/gdm/gdm.conf, DisallowTCP false'iks
  • GDM uuemad: /etc/gdm/gdm.schemas:
  <schema>
     <key>security/DisallowTCP</key>
     <signature>b</signature>
     <default>true</default>  && false'iks
   </schema>

XDM: /etc/X11/xdm/XServers: :0-ga algaval real võtta lõpust ära -nolisten tcp KDM: /etc/X11/kdm/XServers, sama

OpenSUSE on erijuht: failis /etc/sysconfig/displaymanager panna DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN väärtuseks "yes".

Kui X käivitatakse startx-iga tekstirežiimist, tuleks muuta startx-skripti (/usr/bin/ ja võtta -nolisten tcp maha

Peale seda kõike tuleb X taaskäivitada. Veel üks võimalus X-i rakendusi eemalt käivitada on VNC.


X-i ligipääsetavus

Mitmed asjad klaveri ja hiire sätete all. Debounce keys - väldib mitut tahtmatut vajutust järjest


GOK, fonts, kontrastse teema valimine, ekraaniluup (gnome-magnifier/Orca, KMag)

Kõne: Orca, Emacspeak

BRLTTY: tekstirežiimis töötab üsna otse. z


i18n

/etc/localtime - väga väheseid konfis kasutatavaid mitte-tekstifaile. Vahel on sümlink /usr/share/zoneinfo vastavale failile, vahel on see kopeeritud sealt ära.

date-käsk:

kakk@aragorn:~$ date E apr 18 01:09:49 EEST 2011

Ajavööndid vt http://www.timeanddate.com/library/abbreviations/timezones/

Muutmiseks tuleb linkida või kopeerida /etc/localtime asemele näiteks /usr/share/zoneinfo/Europe/Tallinn


Lisaks kasutatakse ka ajavööndifaili:

  • /etc/timezone - Debian ja sugulased
  • /etc/sysconfig/clock - Red Hat ja sugulased

Mõnes distros ka utiliidid nagu tzsetup, tzselect, tzconfig (Ubuntus on viimane ebasoovitav, teine võimaldab vööndit valida).


Locale ehk riigiinfo

Üldkuju: [language[_territory][.codeset][@modifier]]

Kodeeringud:

  • ASCII 7bit (enamasti 8-bitiste baitidena)
  • ISO 8859 (kasutab 8 bitti tähestiku laiendamiseks 128 märgini), regionaalsed alamtähestikud
  • Unicode/UTF-8 - ASCII + 0-3 lisabaiti


locale-käsk:

kakk@aragorn:~$ locale LANG=et_EE.UTF-8 LANGUAGE=et_EE:en LC_CTYPE="et_EE.UTF-8" LC_NUMERIC="et_EE.UTF-8" LC_TIME="et_EE.UTF-8" LC_COLLATE="et_EE.UTF-8" LC_MONETARY="et_EE.UTF-8" LC_MESSAGES="et_EE.UTF-8" LC_PAPER="et_EE.UTF-8" LC_NAME="et_EE.UTF-8" LC_ADDRESS="et_EE.UTF-8" LC_TELEPHONE="et_EE.UTF-8" LC_MEASUREMENT="et_EE.UTF-8" LC_IDENTIFICATION="et_EE.UTF-8" LC_ALL= kakk@aragorn:~$

locale -a näitab kõiki süsteemis olemasolevaid

Ajutine muutmine: $ export LANG=en_GB.UTF-8 $ export LC_ALL=en_GB.UTF-8

Püsivalt tasub panna ~/.bashrc või /etc/profile -faili.


X-i konfis on XkbLayout-parameeter - sinna käib sisuliselt seesama locale

LANG=C - eirab locale'sid

iconv - tõlgib kooditabelite vahel: iconv -f encoding [-t encoding] [inputfile]... iconv --list näitab kõiki

N: $ iconv -f iso-8859-1 -t UTF-8 umlautfile.txt > umlautfile-utf8.txt


Printimine


Üldine süsteem: rakendus väljastab PostScripti, see saadetakse GhostScripti abil printerile. Printerijärjekorda haldab enamasti CUPS. Alternatiivid

  • LPD
  • LPRng

Käsud suht samad, printeri konfimine aga erinev

Üldine printerikäsk - lpr (võib kasutada ka rakendustes). Printerijärjekord asub tüüpiliselt kataloogis /var/spool/cups

Unixi/Linuxi printimine on võrgupõhine, printimistöid võib saata nii eemalt kui kohalikust masinast. CUPS on muidu serverirakendus, kuid printimistööde mujale saatmisel töötab ka kliendina.

Printeridraiverid kuuluvad GhostScripti koosseisu. Windowsis suhtleb rakendus otse draiveriga, Unixis tehakse PS ja saadetakse printerijärjekorda.

Kallimad printerid suudavad otse PSi vastu võtta, odavamatel on vaja GhostScripti tõlgiks vahele - võtab PS-i, interpreteerib seda ja väljastab tulemuse vastavale printerile sobiva bitmapina. GS peamine miinus on väljundfaili suur maht

Kiire printimise jaoks tuleb valida PS-i toetav printer (keeruline värviliste tindikate osas - mõnel on peal PSi Windowsi analoogid, mille tarkvaraga aga pole Linuxis midagi teha).

Ilma PS toeta printeri puhul saadetakse töö printerijärjekorda, kus tark filter (smart filter) näeb seda ja laseb enne printerisse saatmist läbi GS-i.

Printeriprotsessid käivitatakse reeglina buudiprotsessis (/etc/rc.d, /etc/init.d või /etc/rc?.d kaudu - ? on vastav runlevel).


CUPSi konf

etc/cups/printers.conf - printerite fail:

  1. Printer configuration file for CUPS v1.4.4
  2. Written by cupsd
  3. DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING

<DefaultPrinter HP-LaserJet-1320> Info ITK printer Location 221 koridoris MakeModel HP LaserJet 1320 series Postscript (recommended) DeviceURI hp:/net/hp_LaserJet_1320_series?ip=192.168.2.63 State Idle StateTime 1301394578 Type 8425540 Filter application/vnd.cups-raw 0 - Filter application/vnd.cups-command 0 commandtops Filter application/vnd.cups-postscript 0 - Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy retry-job </Printer>

Täiendavad printeridefinitsioonidega failid asuvad /etc/cups/ppd -kataloogis!

CUPSi võrguprintimise protokoll: IPP (Internet Printing Protocol)

CUPSi enda konf: /etc/cups/cupsd.conf. Sarnaneb ülesehituselt Apache'i konfiga:

<Location /printers> Order Deny,Allow && vaikimisi keelatud, ekstra lubamine Deny from All && vaikimisi kõik kinni BrowseAllow from 127.0.0.1 && lubame konkreetseid asju... BrowseAllow from 192.168.1.0/24 BrowseAllow from @LOCAL Allow from 127.0.0.1 Allow from 192.168.1.0/24 Allow from @LOCAL </Location>

Browsing On - printerite autdetect võrgus, kasulik suurte, kiirelt muutuvate printeritega võrgu korral

Printeridefinitsioone saab distrost endast, Foomaticust, Gutenprintist, CUPSi DDK-st ja vahel ka printeritootjatelt


CUPSi IPP-protokoll on nii sarnane HTTP-ga, et sinna saab ligi veebilehitsejaga: http://localhost:631

CUPSi häälestamisel peavad USB printerid olema ühendatud ja töötama! Kui ei, tuleb panna tööle ja CUPS taaskäivitada

Võrguprinteri korral võib minna vaja asukohta: lpd://printserv/brother (protokoll, arvuti, printer)

CUPSi ei tohiks üle võrgu häälestada - ühendus on krüptimata!!


Võrguprinterid

Samba:

Üldkuju: smb://username:password@SERVER/SHARE

vrdl EIK ketaste ühendamisega:

zerblat/Avalik$ /media/itk_avalik cifs credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0 //zerblat/kaido$ /media/itk_kodu cifs credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0

LPD: lpd://hostname/queue IPP: ipp://hostname/queue

Võimaluse korral protokollide eelistusjärjekord: IPP, LPD, SMB/CIFS


Printerijärjekorra haldamine

Käsud: lpr, lpq, lprm ja lpc. Kõigile saab lisada -P parameetri konkreetse järjekorra määramiseks (kui on mitu)


lpr: -Pqueue (NB! vanades süsteemides ei tohi tühikut vahel olla!) - järjekord -r - kustutab algse faili peale printimist -h - ei lisa trükipäist -j, -C, -T jobname - konkreetse töö valimine printerijärjekorrast -m username - saadab peale printimist kasutajale e-kirja -# nr - koopiate arv

N: $ lpr -Plexmark -m ljones report.txt && report läheb lexmarki järjekorda, peale printimist saab ljones meili.

mpage - mitu lehte vähendatuna samale paberile. N: $ mpage -Plexmark report.ps. Võib määrata ka lehtede arvu, -1, -2, -4, -8


lpq - järjekorra vaatamine

$ lpq -Php4000 hp4000 is ready and printing Rank Owner Job File(s) active rodsmit 1630 file:/// Total Size 90112 bytes

lprm - töö eemaldamine:

  • lprm nr - vastava numbriga (vt eelmist!) töö eemaldamine
  • lprm - - kõik selle kasutaja tööd

lpc - juhtimiskäsk, kuid selle asemel soovitatakse kasutada CUPSi veebiliidest


ADMINISTREERIMINE


Kasutajahaldus

Kasutajanimed - suhteliselt vaba märgivalik. Tühik võib probleeme tekitada, punkt ja allkriips üldiselt OK. Nimi peab algama tähega! Max pikkus 32 märki, aga paljud utiliidid lõikavad üle 8 märgi puhul saba maha - tihti ei soovitata üle selle panna. Tõstutundlikkus. Grupid - peamiselt õiguste baasil loodud kasutajarühmad. /etc/group, /etc/passwd. Grupi vahetamine - newgrp -käsk (failidel ka chown ja chgrp)

UID ja GID . 0-99 reserveeritakse süsteemile, 0 on root. Mõni distro alustab 500-st, mõni 1000-st. Reeglina vabanenud ID-sid ei taaskasutata.

GID 100 on tihti users-grupp, vaikimisi grupp.

UID 0 mõnel teisel kontol on selge sissetungi märk (root-õigused).


Kasutaja lisamine:

useradd [-c comment] [-d home-dir] [-e expire-date] [-f inactive-days]➦ [-g default-group] [-G group[,...]] [-m [-k skeleton-dir] | -M]➦ [-p password] [-s shell] [-u UID [-o]] [-r] [-n] username

Expire-date - alati YYYY-MM-DD, vahel ka muud variandid lisaks -f loob konto, mis pika kasutamatuse korral kinni läheb (päevades; vaikimisi -1 ehk mitte kunagi)

Kontoinfo läheb /etc/login.defs-i


passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]

-k - korjab ära aegunud kontod -l - lukustab konto (kirjutab krüpteeritud parooli ette hüüumärgi) -u - lukust lahti (lisades -f eemaldab parooli) -d - eemaldab parooli -S - parooli info (kas on, krüpteeringu tüüp)


usermod - suht sarnane useradd'iga. Erisused: -m (koos -d-ga) - tõstab kasutaja failid uude kodukataloogi -l - kasutaja ringinimetamine: usermod kakk -l puravik -L, -U - nagu -l ja -u passwd'is

Faile ei tohiks liigutada, kui nende omanik on sisse logitud!!


Konto aegumise muutmine:

chage [-l] [-m mindays] [-M maxdays] [-d lastday] [-I inactivedays] [-E expiredate] [-W warndays] username


-l - seisu kuvamine -m - paroolivahetuse min. periood (tihedamini ei saa) -M - max (harvemini ei saa) -d - viimase paroolivahetuse päeva seadmine -I - passiivsusperiood päevades kuni lukustumiseni -E - aegumise kuupäev -W - hoiatuse kestus päevades enne aegumist


/etc/passwd

sally:x:529:100:Sally Jones:/home/sally:/bin/bash

kasutaja, parool (x märgib variparoole /etc/shadow's), UID, peamine GID, kommentaar (siin täisnimi), kodukataloog, kest

kestaks võib panna /bin/false - ei saa sisse logida, kuid võivad näiteks meili lugeda (POP, IMAP). Võib ka sürri teha - nt /bin/shutdown ...


/etc/shadow

sally:E/moFkeT5UnTQ:14069:0:-1:7:-1:-1:

kasutaja, krüpteeritud parool, viimane paroolivahetus (14069 - Unixi päeva number), päevi võimaliku paroolivahetuseni, päevi kohustusliku paroolivahetuseni, hoiatusega päevade arv, aegumise ja kustumise vahe päevades, aegumistähtaeg (Unixi päeva number), reservlipp

Võimalik rootkräki viis, kui admini parool on kadunud: recoveryga üles, kopeerida ruudu parooliväljale mõne teise kasutaja paroolihash, kelle parool on teada, tavaline boot ja selle parooliga sisse. Võib ka hashi kustutada, aga paroolita root on väga ohtlik asi...


/etc/shadow on harilikult root ja 600 -õigustega, /etc/passwd aga root ja 644.

Võrgulogimissüsteemid nagu LDAP on omaette teema, aga nad kasutavad /etc/nsswitch.conf'i ja /etc/pam.d/ -kataloogi.


userdel -r kustutab koos failidega -f kustutab ka sisselogitud kasutaja -h help

Kasutaja kustutamisel tuleks otsida ka mujal olevaid faile (# find / -uid 529).


groupadd

groupadd [-g GID [-o]] [-r] [-f] groupname -g - etteantud GID -r - alla 500 numbriga grupp -f - jõuga (ka eksisteeriva korral)

enamasti piisab groupadd kasutaja -st


groupmod:

groupmod [-g GID [-o]] [-n newgroupname] oldgroupname


gpasswd:

gpasswd [-a user] [-d user] [-R] [-r] [-A user[,...]] [-M user[,...]] group -a - lisab gruppi -d - eemaldab -R - keelab newgrp'i -A - määrab kasutaja grupi adminiks


/etc/group:

project1:x:501:sally,sam,ellen,george

parool on krüptitud (/etc/gshadow)

groupdel - vt userdel


Keskkonnakohandused /etc/profile, /etc/bash.bashrc, ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.profile

vt keskkonnainfot env | less

/etc/skel - vaikimisi kodukataloogi jupid



Logimine

syslogd - üldine logideemon klogd - kerneli logideemon

Võivad olla ka muud - syslog-ng, rsyslogd, metalog - Ubuntul on rsyslog!

konf /etc/syslog.conf

Üldkuju: facility.priority action

Facility: auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, syslog, user, uucp, local0-local7.

Priority: debug, info, notice, warning (varem warn), err (varem error), crit, alert, emerg (varem panic)

alert - alert või tõsisem =alert - ainult alert !alert - alla selle

  • - kõik

action - enamasti failinimi, tüüpiliselt /var/log all - väga tihti kas messages, syslog või secure


Näide: kern.* /var/log/kernel && kogu kerneli jutt logisse kern.crit @logger.pangaea.edu && crit teise masinasse kern.crit /dev/console && crit kohalikule peamonitorile kern.info;kern.!err /var/log/kernel-info && infost err-ini logisse



Käsitsi logimine

Vahel on vaja ise teha või skripti panna

logger [-isd] [-f file] [-p pri] [-t tag] [-u socket] [message ...] -i - logib ka loggeri enda PID -s - saadab väljundi stderr'i -d - logib datagrammidena (profifeatuur) -f fail - logifail (ettevaatust mahuga!) -p prioriteet - prioriteedi määramine (vt eespool) -t tag - logi märgendamine nimega (vaikimisi 'logger') -u sokkel - kindla võrgusokli määramine (profifeatuur) sõnum (Ctrl-D lõpetab) - jooksva sisendi logimine

N:

$ logger shutting down for system maintenance Tulemus (ilmselt /var/log/messages): Jul 29 14:09:50 nessus logger: shutting down for system maintenance


Logide rotatsioon


logrotate , /etc/logrotate.conf, /etc/logrotate.d/

Konfinäide:

  1. Rotate logs weekly

weekly

  1. Keep 4 weeks of old logs

rotate 4

  1. Create new log files after rotation

create

  1. Compress old log files

compress

  1. Refer to files for individual packages

include /etc/logrotate.d

  1. Set miscellaneous options

notifempty nomail noolddir

  1. Rotate wtmp, which isn’t handled by a specific program

/var/log/wtmp { monthly create 0664 root utmp rotate 1 }

/etc/logrotate.d/ - iga logitava programmi konfid. Valikuid: - dateext - vaikimisi on messages.1, messages.2 jne. Saab panna kujule messages-20091005 (05.10.09) - compresscmd - vaikimisi gzip, võib panna näiteks bzip2. Täiendavad parameetrid võib lisada compressoption'iga - create vs copytruncate - viimane kopeerib vana logi ja siis teeb vana faili tühjaks (töötab mõne tarkvaraga paremini) - daily, weekly, monthly - intervallid - size - lubatud suurus. N: size 100k - kui logi saab 100k suuruseks, toimub rotatsioon - rotate number - mitu koopiat säilitatakse. N: rotate 2 - algne tühjaks, senine .1-ks, senine .1 .2-ks, .2 kustutatakse. - mail aadr - meilib kustutatava (väljaroteeruva) logi sellele aadressile. Vastand: nomail - prerotate, postrotate - skriptid, mis täidetakse vahetult enne ja peale rotatsiooni


Logide lugemine

  • otse - less
  • otsing - grep
  • algus/lõpp - head/tail
  • monitoorimine - tail -f /var/log/messages


Ajahaldus

Enamasti UTC

Käsitsi seadmine: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

Riistvarakella sättimine: hwclock . Valikud: -r, --show - näitab aega : E 18 apr 2011 11:37:29 EEST -0.437870 sekundit --set ja --date=newdate - aja seadmine --systohc - riistvara sätitakse tarkvara järgi --hctosys - vastupidi --utc, --localtime - vastavalt kumbki


NTP

stratum - erinevad kihid kellaajaedastamise hierarhias /var/lib/ntp/ntp.drift (vahel /etc all)

NTP serveri leidmine:

  • ISP
  • distro
  • avalik NTP-de list
  • pool.ntp.org

masinas deemonipõhine, distropõhine paigaldatakse kohe automaatselt käivituvana. /etc/ntp.conf:

server clock.example.com server ntp.pangaea.edu server time.luna.edu


Ühekordne sünkimine: # ntpdate clock.example.com


Cron

Kataloogid /var/spool/cron /etc/cron.d, fail /etc/crontab

system jobs user jobs


System:

02 4 * * * root run-parts /etc/cron.daily && jooksutab kõiki /etc/cron.daily skripte iga päev kell 4.02

- minutid (0–59) - tunnid (0–23) - kuupäev (1–31) - kuu (1–12) - nädalapäev (0–7; pühapäev on nii 0 kui 7) - konto (root) - käsk (run-parts /etc/cron.daily)


  • tärn on kõik
  • list (0,5,10) - iga väärtus
  • vahemik (5-10)
  • samm */10 minutite kohal: iga 10 minuti tagant



A slash, when used in conjunction with some other multi-value option, specifies stepped values—a range in which some members are skipped. For instance, */10 in the minute field indicates a job that’s run every 10 minutes.

Intervallid on enamasti määratud /etc/cron.interval (Ubuntul; cron.hourly, cron.weekly jne) või /etc/cron.d/interval -kataloogis


Cron'iga käitamiseks mõeldud skripte tuleb põhjalikult testida - seal esinev puuk võib jama põhjustada

Kataloogid peavad kindlasti olema root only, muidu võetakse õigused üle


Kasutaja cron:

crontab [-u user] [-l | -e | -r] [file]

-l - kuvab -e - muudab && vaikimisi vi, saab muuta EDITOR või VISUAL -keskkonnamuutujaga -r - kustutab

Crontabi failist lugemine: crontab -u tbaker my-cron && kasutaja tbaker crontab loetakse failist my-cron

Failinäide:

SHELL=/bin/bash MAILTO=tbaker HOME=/home/tbaker 0,30 * * * * /usr/bin/fetchmail -s 0 2 * * mon /usr/local/bin/clean-adouble $HOME

Peale faili loomist tuleb anda näiteks eespooltoodud failikäsk (lihtsaim kuju: crontab failinimi)


Kasutajate cron'id asuvad kas /var/spool/cron, /var/spool/cron/tabs või /var/spool/cron/crontabs - kasutajanimega failid (/var/spool/cron/edgar)

Ligipääs Cron'ile:

  • tavaline õigustesüsteem
  • /etc/cron.allow ja/või /etc/cron.deny


anacron - vajalik süsteemides, mis pole 24/7 üleval. Käivitudes kontrollib, kas määratud tegevuste tähtaeg on üle - kui jah, käivitab

/etc/anacrontab:

SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

  1. These replace cron's entries

1 5 cron.daily nice run-parts --report /etc/cron.daily 7 10 cron.weekly nice run-parts --report /etc/cron.weekly @monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly

1 - periood päevades käsu käivitamiseks (iga päev, teisel kord nädalas) 5 - paus minutites anacroni käivituse ja käsu käivituse vahel (vältimaks hunniku käskudega ülelaadimist)

Käitamine:

  • alguses skriptiga
  • cronjob - võib anda vajaliku viivituse ja tõsta koormavamad tegevused töövälisesse aega


at - lihtne viivitusega käivitus:

  • kellaaeg - HH:MM
  • noon, midnight, teatime (viimane on 16:00)
  • MMDDYY, MM/DD/YY või DD.MM.YY, month-name day või month-name day year
  • now + ajavahemik (5 minutes, 3 hours jne)

peale käsu andmist ja aja määramist tuleb sisestada käsud, lõppu Ctrl-D (at> -käsukest)

-f -parameeter - käsud loetakse failist: at -f kasud.sh noon

Eeldab atd deemoni töötamist (saab käivitada alguses skriptiga)

atq - näitab töösolevaid at-e atrm - eemaldab töönumbri järgi (< atq)

batch - nagu at, aga käivitab protsessid siis, kui süsteemi üldkoormus langeb alla 0,8

/etc/at.allow ja /etc/at.deny - nagu cron, AGA:

  • kui MÕLEMAD puuduvad, saab ainult root kasutada (croni puhul saavad kõik)


VÕRGUNDUSE ALUSED


NB! Vahel on piir võrgu ja muude seadmete vahel udune. N: rööpliides + PLIP või jadaliides/USB + PPP

Ethernet - keerupaari mõte on segamise minimeerimine. 10Base-T, 100Base-T (mbps, twisted pair)

Tänapäeval Gbit ehk 1000Base-T

Vanemad: Token Ring (IBM), LocalTalk (Apple), FDDI, HIPPI, Fibre Channel

WiFi: 11Mbps (802.11b), 54Mbps (802.11a ja 802.11g), 300Mbps (802.11n). NB! WEP/WPA/WPA2


Hub: pooldupleksside (kordamööda) Switch: täisdupleks (korraga)

Linux toetab TCP/IP-le lisaks ka IPX/SPXi (Novell) ja AppleTalki, kuid mitte NetBEUId (MS)


Asjakohased TCP kihid (ülalt alla) - application, transport, Internet, link

MAC-aadress - ifconfig eth0 vmm

IPv6 - 8 x 4 hex-numbrit. 0000 võib ära jätta, asendades ::-ga

netmask: 192.168.29.39/24 = 192.168.29.39 maskiga 255.255.255.0


Ta b l e 8 .1 ​ IPv4 Network Classes and Private Network Ranges

Class Address Range Reserved Private Addresses A 1.0.0.0–127.255.255.255 10.0.0.0–10.255.255.255 üldvõrgud B 128.0.0.0–191.255.255.255 172.16.0.0–172.31.255.255 üldvõrgud C 192.0.0.0–223.255.255.255 192.168.0.0–192.168.255.255 üldvõrgud D 224.0.0.0–239.255.255.255 none multicasting E 240.0.0.0–255.255.255.255 none reserveeritud


IPv6 kohalikud aadressid algavad fec, fed, fee või fef-ga.

Broadcast:

  • IP 72.24.21.201
  • Mask 255.255.0.0
  • BC 172.24.255.255

Kui mask sisaldab muud peale 0 ja 255, on keerukam, teisendatakse läbi kahendsüsteemi

IP 172.24.21.201, Mask 255.255.128.0 . Kahendkujul: 10101100 00011000 00010101 11001001 11111111 11111111 10000000 00000000

Kohtades, kus all (maskis) on 0, tuleb üles 1. Tulemus: 10101100 00011000 01111111 11111111 ehk 72.24.127.255


Hostid

Kasulik tarkvara:

  • nslookup - otsib nimeserverist. Vananenud
  • host - lihtne DNS-otsing (pmst IP)
  • dig - keerukas DNS-otsing (pikem inf)
  • whois

Kohaliku võrgu jaoks piisab /etc/hosts'ist: 127.0.0.1 localhost 192.168.7.23 apollo.luna.edu apollo


Vaikimisi otsitakse /etc/hosts'ist enne DNS'i. Vajadusel saab muuta seda /etc/nsswitch.conf'ist: keerata "hosts: files dns" paar ringi


Levinumad pordid

Ta b l e 8 . 2 ​ Port Numbers, Their Purposes, and Typical Linux Servers

Port Number TCP or UDP Purpose Example Linux Servers


20 TCP File Transfer Protocol ProFTPd, vsftpd (FTP) data 21 TCP FTP ProFTPd, vsftpd 22 TCP Secure Shell (SSH) OpenSSH, Dropbear 23 TCP Telnet in.telnetd 25 TCP Simple Mail Transfer Sendmail, Postfix,

     				 Protocol (SMTP) 		Exim, qmail

53 TCP and UDP Domain Name System (DNS) Berkeley Internet Name

                                      				Domain (BIND; a.k.a.

named), djbdns 67 UDP Dynamic Host Configuration Internet Software Consor-

      				Protocol (DHCP) 		tium (ISC) DHCP (dhcpd)

80 TCP Hypertext Transfer Apache, Roxen, thttpd Protocol (HTTP) 110 TCP Post Office Protocol Dovecot, Qpopper, popa3d

       			version 3 (POP-3) 

111 TCP and UDP Portmapper NFS, NIS, other RPC-based

                         					services

113 TCP auth/ident identd 119 TCP Network News Transfer InterNetNews (INN), Protocol (NTTP) Diablo, Leafnode 139 TCP NetBIOS Session (Windows Samba file sharing) 143 TCP Internet Mail Access Dovecot, Cyrus IMAP, Protocol (IMAP) UW-IMAP 161 UDP Simple Network Management Net-SNMP Protocol (SNMP) 177 UDP XDMCP XDM, KDM, GDM 389 TCP LDAP OpenLDAP 443 TCP HTTP over SSL (HTTPS) Apache, Roxen 445 TCP Microsoft Directory Samba Services (DS) 465 TCP SMTP over SSL; or URL Ren- Sendmail, Postfix, Exim, dezvous Directory (URD) 1 qmail; or network routers 631 TCP Internet Printing Protocol Common Unix Printing System (CUPS) 993 TCP IMAP over SSL Dovecot, Cyrus IMAP, UW-IMAP 995 TCP POP-3 over SSL Dovecot, Qpopper, popa3d 5900+ TCP Remote Framebuffer (RFB) Virtual Network Computing

                                 				(VNC): OpenVNC, TightVNC

6000–6007 TCP The X Window System (X) X.org-X11, XFree86


Alla 1024 - privilegeeritud pordid (root)


/etc/services:

ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp # SSH Remote Login Protocol telnet 23/tcp smtp 25/tcp

Võrgukonf:

kaardi draiveri laadimine modprobe'iga (tuleb teada mooduli nime; N: modprobe realtek)


DHCP

BOOTPROTO=dhcp

Ubuntus määratakse /etc/network/interfaces -failis: iface eth0 inet dhcp


Staatiline konf:

DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.29.39 NETMASK=255.255.255.0 NETWORK=192.168.29.0 BROADCAST=192.168.29.255 GATEWAY=192.168.29.1 ONBOOT=yes

Nimeserver(id) - /etc/resolv.conf:

nameserver IPnr


ifconfig N: # ifconfig eth0 up 192.168.29.39 netmask 255.255.255.0

Kui käsitsi, vajab ka ruutimist läbi lüüsi: # route add default gw 192.168.29.1

Veel üks näide ruutimisest:

  1. route add -net 172.20.0.0 netmask 255.255.0.0 gw 172.21.1.1

ruutimisinfo: route -n


ifup ja ifdown

/etc/hostname või /etc/HOSTNAME Fedoras /etc/sysconfig/network

ping -c nr masin - nr korda


traceroute - näitab teekonda masinates -n näitab IP-d hostname'i asemel


Diagnostika netstat'iga:

  • liides: netstat -i
  • ruutimine: netstat -r
  • NAT: netstat -M
  • programmide netikasutus: netstat -p
  • pordid: netstat
  • kõik ühendused: netstat -a


Toorpaketid: tcpdump


SKRIPTID, E-POST JA SQL

env ja export

keskkonnamuutujad

aliased


BASHi skriptid algavad #!/bin/sh -reaga (shebang) chmod


skriptinäide:

  1. !/bin/sh

echo -n “Enter a username: “ read name useradd -m $name passwd $name mkdir -p /shared/$name chown $name.users /shared/$name chmod 775 /shared/$name ln -s /shared/$name /home/$name/shared chown $name.users /home/$name/shared


if-lause:

if [ -s /tmp/tempstuff ] then echo “/tmp/tempstuff found; aborting!” exit fi

if-else:

if [ conditional-expression ] then commands else other-commands fi

case:

case word in pattern1) command(s) ;; pattern2) command(s) ;; ... esac

for:

  1. !/bin/bash

for d in `ls *.wav` ; do aplay $d done


while:

while [ condition ] do commands done


funktsioonid:

  1. /bin/bash

doit() { cp $1 $2 } function check() { if [ -s $2 ] then echo “Target file exists! Exiting!” exit fi }


E-post

Sendmail, Postfix, Exim, qmail


Pull mail - POP/IMAP Fetchmail (toob ära) meiliklient


mail [-v] [-s subject] [-c cc-addr] [-b bcc-addr] to-addr

mõnes distros on edasijõudnum klient - nail


mailq - postijärjekord

Redirect: /etc/aliases või /etc/mail/aliases

.forward -fail


SQL


Superserver: inetd, xinetd

/etc/inetd.conf rida:

ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd -l

teenus, sokkel, prot,


võivad ka olla /etc/inetd.conf.d/ kataloogis


turvapoint: kõik, mida vaja pole, kinni!


TCP wrappers: tcpd-käsk ning /etc/hosts.allow ja /etc/hosts.deny


/etc/xinet.conf - jällegi kõik mittevajalik: disable!

Tulemüürivärk

Ebavajalikud serverid kinni - kontrolli netstat -ap

lsof - avatud failid

lsof -i


nmap -sT süsteem - avatud pordid


sudo, /etc/sudoers


/etc/security/limits.conf


ulimit-käsk