Uus juhend.

Instruktsioonid selle juhendis on vanad ning ilmselt enam ei kehti. Uuem juhend asub siin.

Gentoo Linux.

Juba ammu oli plaanis kirja panna, kuidas Gentoo Linuxi installeerimine käib, aga siiani ei leidnud mahti. Nüüd aga õnnestus abikaasal majapidamisse jäänud Windowsi masin viiruseid täis korjata ning uut Windowsi sinna viiruseid ootama panna polnud mingit soovi. Seega Windows välja ning Linux asemele.

Miks just Gentoo? Miks mitte mõni teine palju kiiremini ning lihtsamalt installeeritav distributsioon? Kunagi sai igasuguseid erinevaid Linuxi distributsioone proovitud, küll RedHat-i erinevad versioonid ja Mandrake. RedHat 6.1 karbiversioon on veel siiani alles. Kõiki õnnestus paigaldada ja tööle saada, aga kahjuks ei osanud midagi edasi teha. Kuni ühel heal päeval avastasin Gentoo Linuxi ning lihtsalt huvi pärast proovisin. Võtsin paigaldusjuhised ette ning sealt sõrmega järge ajades toksisin käske sisse. Sain paigaldatud ning tööle kah. Lisaks sellele oli see suurepäraseks Linuxi koolituseks, kuna kõik komponendid olid nüüd ise paigaldatud ning ise konfigureeritud. Peale selle on Gentoo foorum (http://forums.gentoo.org) suurepärane infoallikas misiganes küsimuste ja probleemide korral.

Seega siis Gentoo Linux.

Gentoo Linux paigaldusjuhendid http://www.gentoo.org/doc/en/handbook/handbook-x86.xml on ühed parimad, mida ma näinud olen. Kui inglise keelega probleeme pole, peaks igaüks, kellel vähegi arvutiga kokkupuutumist olnud, Gentoo Linuxi paigaldamisega toime tulema. Alljärgnevalt panen kirja need sammud, mis minu arvutil teha tuli tuginedes ametlikule ingliskeelsele paigaldusjuhendile. Ehk leiab mõni need kasulikud olevat.

NB! Alljärgnev ei ole mõeldud paigaldusjuhendiks. Konfiguratsioonifailid ning parameetrid on sellised, nagu minu läpakal oli vaja ning ei pruugi teiste arvutitega toimida.

Riistvara.

Arvutiks siis HP läpakas OmniBook 6000 700 MHz Pentium III protessori, 256 MB mälu ning 20 GB kõvakettaga. Ülejäänud komponendid saab edukalt välja uurida paigaldamise käigus, seetõttu ei peatu ma neil siin pikemalt.

CD Gentoo Linuxi paigaldamiseks.

Minul on olemas ametlik Gentoo Linuxi CD, mille ma USA-st tellisin. Sama CD tõmmise saab laadida Gentoo serverist või selle ametlikest peegeldustest. Soovitatav on kasutada kohalikku Eestis asuvat peegeldust ftp://ftp.linux.ee. Gentoo CD-de tõmmised leiab siit: http://ftp.linux.ee/pub/gentoo/distfiles/releases/x86/current/installcd.

Võrguühenduse olemasolul on Gentoo Linuxi paigaldamiseks vajalik ainult minimal CD tõmmise install-x86-minimal-2005.0.iso laadimine ning CD-le kirjutamine. Enne CD kirjutamist on soovitatav laadida ka fail install-x86-minimal-2005.0.iso.md5 ISO faili MD5 kontrollsummaga ning selle abil CD tõmmise kontrollimine.

$ md5sum -c install-x86-minimal-2005.0.iso.md5

Alglaadimine CD-lt.

Minu läpakal tuleb kohe peale käivitamist vajutada ESC klahvi, et saada ette menüü koos alglaadimise valikutega: kõvakettalt, flopilt, CD-lt. Söödan aga CD seadmesse ning laadima.

Gentoo Linuxi paigaldaja esmane käsurida tuleb ette peaaegu momentaalselt. F1 ja F2 klahvidega saab infot erinevate kernelite ning variantide kohta. Minul mingeid lisanõudeid ei ole, seega vajutan ENTER klahvi jätkamiseks.

Järgnevalt laaditakse CD-lt kernel, tuvastatakse riistvara ning olengi Linuxi käsureal. Kuna mul on Soome paigutusega klaviatuur, siis esmase asjana muudan klaviatuuri paigutuse ära. Esmalt kiikan järgi, millised mu variandid on:

# ls /usr/share/keymaps/i386/qwerty

Ning siis valin välja fi-latin1:

# loadkeys fi-latin1

Järgmiseks kontrollin, kas mu võrgu seaded tunti automaatselt ära. Koduvõrgus jagab mul server IP aadresses, seega peaks kõik olema juba paigas.

# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:00:86:44:7B:8E
          inet addr:192.168.0.169  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:52 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:9639 (9.4 Kb)  TX bytes:1362 (1.3 Kb)
          Interrupt:10 Base address:0x1800

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Näitab, et eth0 on olemas ning ka IP aadress 192.168.0.169 eraldatud.

Proovin ka välisühenduse toimist pingi abil:

# ping -c 3 ftp.linux.ee
PING noa.linux.ee (195.222.16.154) 56(84) bytes of data.
64 bytes from noa.linux.ee (195.222.16.154): icmp_seq=1 ttl=57 time=39.3 ms
64 bytes from noa.linux.ee (195.222.16.154): icmp_seq=2 ttl=57 time=39.0 ms
64 bytes from noa.linux.ee (195.222.16.154): icmp_seq=3 ttl=57 time=38.9 ms

--- noa.linux.ee ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 38.907/39.091/39.321/0.235 ms

Ka välisühendusega on kõik korras.

Kõvaketta jaotamine.

Järgnevalt jagan oma 20 GB kõvaketta. Kõvaketas tuleks jagada vähemalt kolmeks osaks: boot, swap ning root.

Serveris on mul kaks 80 GB ketast, milledest esimese jagasin viieks osaks: boot, swap, tmp, var ning root. Teise ketta tegin puhtal home kettaks. Seejuures on tmp monteeritud külge ilma õiguseta seal olevaid programme või skripte käivitada. Kuna kõik välismaailmaga suhtlevad programmi paigutavad oma ajutised failid /tmp kataloogi, ei saa pahalased oma skripte seal käivitada.

Läpaka ketta jagan kolmeks osaks: 32 MB boot jaotisele, 512 MB swap kettale ning ülejäänu läheb root jaotisele. Swap jaotise suuruse kohta oli kunagi reegliks teha see 2 korda suurem kui füüsilise mälu hulk arvutis. See reegel kehtis aegadel, mil mälu oli kallis ning selle suurus piiratud. Nii serveris kui tööarvutis on mul 1 GB mälu ning swap jaotise tegin samuti 1 GB suuruse. Kui nüüd vaadata, siis server ei kasuta seda üldse ning tööarvutis on kõigest 5 MB kasutatud. Kuskilt jäi silma soovitus alates 512 MB mälust teha swap sama suureks kui füüsilise mälu hulk arvutis. Igatahes oma läpakas 256 MB mäluga teen swap jaotise 512 MB.

Käivitan fdisk-i ning kustutan kõik eelmised jaotised oma kõvakettalt:

# fdisk /dev/hda
Command (m for help):

Käsuga p vaatan olemasolevat jaotiste tabelit ning käsuga d kustutan nad kõik ükshaaval kuni lõpuks näitab p käsk mulle tühja tabelit.

Nüüd loon oma esimese jaotise, milleks on boot jaotis. Sisestan n uue jaotise loomiseks, siis p primary jaotiseks, edasi 1. Kui fdisk küsib esimest silindrit, vajutan ENTER klahvi vaikimisi väärtuse kasutamiseks. Viimase silindri küsimuse kohal sisestan +32M 32 MB-se jaotise loomiseks:

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2432, default 1): (vajutan ENTER)
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2432, default 2432): +32M

Uuesti p käsku kasutades peaks nüüd tabel näitama ühte jaotist:

Command (m for help): p

Disk /dev/hda: 20.0 GB, 20003880960 bytes
255 heads, 63 sectors/track, 2432 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1          1         5     40131   83  Linux

Boot jaotis tuleb teha laaditavaks, seega sisestan a ning seejärel 1. Uuesti p käsku kasutades peaks siin olema * /dev/hda1 järel.

Järgmiseks loon swap jaotise. Sisestan n uue jaotise loomiseks, p primary jaotiseks, numbriks annan 2. Esimeseks silindriks kasutan vaikimisi väärtust ning viimase silindri küsimusele vastan +512M. Vaikimisi on kõik uued jaotised tüübinumbriga 83 ehk siis Linuxi jaotised. Swap jaotisel tuleb tüüp muuta, seega anna käsu t, sisestan 2 jaotise numbriks ning 82 jaotise tüübiks. Käsuga p saan ette sellise tabeli:

Command (m for help): p

Disk /dev/hda: 20.0 GB, 20003880960 bytes
255 heads, 63 sectors/track, 2432 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1 *        1         5     40131   83  Linux
/dev/hda2          6        68    506047+  82  Linux swap

Lõpuks jätan kogu ülejäänud kettapinna root jaotisele. Ikka n, siis p ning 3 jaotise numbriks. Esimese silindrina aktsepteerin vaikimisi väärtust vajutades ENTER klahvi ning viimase silindri puhul toimin samamoodi. Käsuga p saan ette oma lõpliku jaotiste tabeli:

Command (m for help): p

Disk /dev/hda: 20.0 GB, 20003880960 bytes
255 heads, 63 sectors/track, 2432 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1 *        1         5     40131   83  Linux
/dev/hda2          6        68    506047+  82  Linux swap
/dev/hda3         69      2432  18988830   83  Linux

Nüüd jääb üle ainult uus jaotiste tabel kõvakettale kirjutada käsuga w. NB! See on see hetk, mil kõvakettal olev info tegelikult muudetakse ja endine info kõvakettal läheb kaotsi. Mina kontrollisin mitu korda üle, et kõik vajalikud failid olid eelnevalt serverisse kopeeritud.

Failisüsteemide loomine.

Järgmiseks loon oma uutel kõvaketta jaotistel failisüsteemid. Mul on kõvakettal kolm jaotist:

boot  /dev/hda1
swap  /dev/hda2
root  /dev/hda3

Boot jaotisele teen ext2 failisüsteemi, kuna seda ma hiljem peaaegu et ei puutu ning zhurnaaliga failisüsteem nagu ext3 ei annaks midagi juurde:

# mke2fs /dev/hda1

Root jaotise failisüsteemiks valin reiserfs. Siin on zhurnaaliga failisüsteem igati abiks ning reiserfs on mul siiani kõigis masinates edukalt toiminud:

# mkreiserfs /dev/hda3

Lõpuks loon ning aktiveerin swap jaotise:

# mkswap /dev/hda2
Setting up swapspace version 1, size = 518184 kB
# swapon /dev/hda2

Jaotiste monteerimine.

Kuna jaotised ning failisüsteemid on loodud, on aeg need külge monteerida:

# mount /dev/hda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/hda1 /mnt/gentoo/boot

Kella sättimine.

Kell peab olema õige enne, kui paigaldamisega saab jätkata. Mul on mitu korda tulnud ette vigu paigaldamisel, mis olid just valest kellaajast tingitud.

Kui Windows seab arvuti kella kohaliku aja järgi, siis Linuxis on soovitatav seada arvuti kell Greenwichi ajale (tänapäeval nimetatakse ka UTC ajaks). Ehk siis talvel tuleks kell sättida -2 ja suvel -3 tundi Eesti ajaga võrreldes.

Kellaaeg tuleb anda kujul MMDDhhmmYYYY (kuu, päev, tunnid, minutid, aasta). 16. juunil 2005 kell 20:12 (17:12 UTC):

# date 061617122005

Gentoo paigaldusfailide allalaadimine.

Järgmiseks laadin kohalikust ftp.linux.ee serverist alla Gentoo paigaldusfaili stage1-x86-2005.0.tar.bz2. Esmalt liigun külgemonteeritud kõvaketta root jaotisele:

# cd /mnt/gentoo

Ning siis laadin nii paigaldusfaili kui ka MD5 kontrollsumma. Paigaldusfail on 16 MB, nii et aeglase internetiühenduse korral kulub selleks veidi aega:

# wget http://ftp.linux.ee/pub/gentoo/distfiles/releases/x86/current/stages/x86/stage1-x86-2005.0.tar.bz2
# wget http://ftp.linux.ee/pub/gentoo/distfiles/releases/x86/current/stages/x86/stage1-x86-2005.0.tar.bz2.md5

Kontrollin, et see allalaaditud fail oleks vigadeta:

# md5sum -c stage1-x86-2005.0.tar.bz2.md5

Ning seejärel pakin selle lahti. Lahtipakkimine võtab veelgi kauem:

# tar -xvjpf stage1-x86-2005.0.tar.bz2

Portage paigaldamine.

http://ftp.linux.ee/pub/gentoo/distfiles/snapshots/ kataloogis on terve hulk viimaseid portage faile. Need uuenevad iga päev ja nende hulgast tuleks leida see kõige uuem. Antud teksti kirjutamise hetkel on selleks portage-20050615.tar.bz2.

Veendun, et olen ikka /mnt/gentoo kataloogis:

# pwd
/mnt/gentoo>

Ja seejärel laadin alla portage faili (19 MB) koos MD5 kontrollsummaga:

# wget http://ftp.linux.ee/pub/gentoo/distfiles/snapshots/portage-20050615.tar.bz2
# wget http://ftp.linux.ee/pub/gentoo/distfiles/snapshots/portage-20050615.tar.bz2.md5sum

Kontrollin, et fail ei oleks katkine:

# md5sum -c portage-20050615.tar.bz2.md5sum

Ning siis pakin lahti:

# tar -xvjf /mnt/gentoo/portage-20050615.tar.bz2 -C /mnt/gentoo/usr

Kompilaatori võtmete seadmine.

Nüüd on aeg panna paika kompilaatori võtmed, mis teevad sellest Gentoo Linuxist just selle ainukese ja õige Linuxi antud arvutile. Selleks tuleb muuta make.conf nimelist faili /mnt/gentoo/etc kataloogis. Seal on ka näitefail, mille ma ära kasutan:

# cp /mnt/gentoo/etc/make.conf.example /mnt/gentoo/etc/make.conf
# nano -w /mnt/gentoo/etc/make.conf

Esmalt muutuja nimega USE. Selle abil pannakse paika, millised omadused programmidel saavad olema, nagu näiteks DVD lugeja tugi, graafiline kasutajaliides jne. Selle muutuja abil saab palju huvitavaid asju ära teha ning kahjuks ka oma süsteemi edukalt tuksi keerata. Siin on minu USE muutuja nagu ma antud arvuti jaoks sisestasin. Miinus märk võtme ees lülitab antud võtme välja:

USE="nptl wifi dvd -gnome gtk2 kde qt X acpi alsa arts avi bash-completion cups dga divx4linux truetype gif hal -ipv6 jpeg maildir mozilla mp3 mpeg msn pam pcmcia png python quicktime readline samba sse threads usb win32codecs xine xmms xvid"

Kõiki ei hakka siin eraldi kirjeldama, kuna see läheks väga pikaks ning samuti ei ole ma ekspert nende alal. Samuti on siin ilmselt terve hulk ülearuseid võtmeid, kuna Gentoo Linuxil on endal vaikimisi võtmed, mis ilmselt on minul dubleeritud. Näiteks võtmed X, kde, qt, cups on juba vaikimisi lubatud ning nende lisamine USE muutujale ei muuda midagi. Pigem peaks vaatama, millised võtmed on vaikimisi lubatud ning siis keelama need, mida pole vaja.

USE võtmete täieliku kirjelduse leiab siit: http://www.gentoo.org/dyn/use-index.xml.

nptlKompileerib libc teegid koos toega uuele threading mudelile 2.6 kernelis. Peaks paljusid lõimesid kasutavad rakendused kiiremini tööle panema, aga ei oska kommenteerida. Halba pole siiani midagi teinud.
wifiKuna kasutan kodus raadiovõrku, siis vajalik.
dvdDVD seade on olemas jah.
-gnomeGNOME töölaua asemel kasutan KDE-d, seega see võti peaks vältima mittevajalike GNOME failide paigaldamist.
gtk2GTK+ on GNOME töölaua poolt kasutatav graafiline teek, millest on kaks versiooni: GTK+ 1.X ja GTK+ 2.X. Kuigi ma GNOME töölauda ennast ei kasuta, on need teegid paljudele rakendustele vajalikud. See võti palub neil rakendustel võimaluse korral kasutada GTK+ 2.X teeke, mille puhul näevad need rakendused palju paremad ja kaasaegsemad välja.
kdeMinu töölaud. Kõik rakendused võiksid ennast KDE jaoks kompileerida.
qtTeek KDE töölaua tarvis. See võti palub rakendustel, mis seda oskavad, kasutada QT teeki tehes nad KDE töölauaga paremini kokkusobivaks.
XX on kogu graafilise süsteemi alus ning see võti lisab X-i toe rakendustele, mis võib-olla muidu kompileeruksid ilma igasuguse graafikata.
cupsCUPS on vajalik Linuxis printimiseks. Kuna ma kasutan ainult CUPS-i, siis see võti palub kõigil sellega kursis olla.
-ipv6IPV6 on uue põlvkonna IP aadresside süsteem. Minul see kasutusel ei ole ning probleemide vältimiseks palun kõigil rakendustel sellega arvestada.

Teine oluline muutuja on CHOST. See määrab ära süsteemi arhitektuuri. Kuna minul on tegemist Pentium III protsessoriga, siis "i686-pc-linux-gnu" on minu jaoks see õige väärtus:

CHOST="i686-pc-linux-gnu"

Kolmas muutuja antud failis on CFLAGS. Selle rolliks on anda kompilaatorile ette õiged võtmed ja just need võtmed optimiseerivad kompileerimise protsessi just antud protessori tarvis. Kui kompileerimine ei õnnestu ja Gentoo loobib kummalisi vigu, on põhjust need võtmed uuesti üle vaadata ning otsida vigu ning näpukaid. GNU kompilaatori GCC võtmete kirjeldused leiab GNU koduleheküljelt http://gcc.gnu.org/onlinedocs/gcc-3.3.5/gcc/.

Minu praegused võtmed on sellised:

CFLAGS="-march=pentium3 -O3 -pipe -funroll-loops -fomit-frame-pointer"

-march=pentium3optimeerib koodi Pentium III protsessorile.
-O3lülitab siise 3. taseme optimiseerimise.
-pipepeaks kompileerimise protsessi mõningal määral kiirendama.
-funroll-loopsoptimiseerib tsükleid, mille kordumiste arvu on võimalik kompileerimisel ette näha.
-fomit-frame-pointerei kasuta frame pointerit juhul, kui seda pole vaja.

Lisaks on võimalik selle muutuja abil sundida kompilaatorit genereerima spetsiaalseid protsessori instruktsioone, mis ainult osadel protsessoritel on realiseeritud. Abiks on vaadata faili /proc/cpuinfo:

# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 8
model name      : Pentium III (Coppermine)
stepping        : 3
cpu MHz         : 697.176
cache size      : 256 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse
bogomips        : 1376.25

Antud info kohaselt võiks ma lisada ka võtmed -mmmx ja -msse.

Edasi, CXXFLAGS on soovitav panna võrduma CFLAGS muutujaga. CXXFLAGS defineerib võtmed C++ kompilaatorile.

CXXFLAGS="${CFLAGS}"

Sektsioonis "Portage Directories" korjan ma kõigilt muutujatelt kommentaari märgid eest ära. Nii ma tean täpselt, kus vastavad kataloogid asuvad. Siin on kaks muutujat, millele vastavaid katalooge tegelikult ei ole ning mis tuleb endal käsitisi luua. Kui seda ei tee, siis järgmised sammud ebaõnnestuvad.

PORTDIR_OVERLAY=/usr/local/portage
PORT_LOGDIR=/var/log/portage

Kataloogid /usr/local/portage ja /var/log/portage tuleb endal käsitisi luua:

# mkdir /mnt/gentoo/usr/local/portage
# mkdir /mnt/gentoo/var/log/portage

Järgmine muutuja on GENTOO_MIRRORS, mis näitab, kust Gentoo oma komponendid ning nende uued versiooni laadib. Siin on kasulik näidata kohalikku Eestis asuvat serverit:

GENTOO_MIRRORS="http://ftp.linux.ee/pub/gentoo/distfiles/"

Muutujat SYNC kasutatakse Gentoo Linuxi komponentide andmebaasi uuendamiseks. Iga kord andes korralduse emerge --sync sünkroniseeritakse lokaalne andmebaas antud serveris oleva baasiga. Minul on kodune server seatud antud andmebaasi kord päevas sünkroniseerima, seega saan ma siin kasutada oma serveris asuvat peegeldust:

SYNC="rsync://server/gentoo-portage"

Server omakorda kasutab Eestis olevat Gentoo peegeldust:

SYNC="rsync://rsync1.ee.gentoo.org/gentoo-portage"

Selle sama rea oleks võinud ka oma läpaka make.conf faili sisestada, aga lokaalvõrgus oleva serveri kasutamine on palju kiirem.

Siis veel mõned seaded:

MAKEOPTS="-j2"

Selles ei ole ma päris kindel. See lubab kompileerimisel kuni kahte paraleelset protsessi. Soovitatakse kasutada väärtust, mis on protsessorite arv +1, ehk siis 2 minu juhul. Samas tundub, et pahatihti on kompileerimise vead tingitud just sellest parameetrist, kuna üks protsess lõpetab enne teist ning alustab uuega, mis omakorda sõltub teise protsessi tulemustest. Aegajalt olen sattunud probleemide otsa, mis kaovad kohe peale MAKEOPTS="-j1" seadmist.

AUTOCLEAN="yes"

Uue versiooni installeerimisel kustutatakse vanad versiooni.

FEATURES="sandbox ccache"

Siin on jälle terve rida vaikimisi parameetreid, nii et selle rea seadmine ei oma suurt mõtet.

sandboxkomponendid kompileeritakse suletud süsteemis ning alles siis tõstetakse töötavasse süsteemi ümber.
ccachelubab kompileerimise puhverdamise, nn. CCACHE kasutamist. Sama komponendi uuesti kompileerimisel (näiteks peale USE või CFLAGS muutmist) peaks protsess olema tunduvalt kiirem.

CCACHE lubamisel tuleb määrata ka puhvri suurus muutujaga CCACHE_SIZE:

CCACHE_SIZE="512M"

Uude keskkonda sisenemine.

Enne uude keskkonda sisenemist tuleb kopeerida olemasolevad võrguseaded:

# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

Siis monteerida /proc failisüsteem:

# mount -t proc none /mnt/gentoo/proc

Ja lõpuks uude keskkonda sisenemine:

# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profile

Kui env-update käsk annab vea, siis jäi ilmselt make.conf failis määratud PORTOVERLAY_DIR /usr/local/portage loomata (minul juhtub nii peaaegu alati):

# mkdir /usr/local/portage

Ja uuesti:

# env-update
# source /etc/profile

Kompileerimise esimene etapp.

Järgnevalt sünkroniseerin portage andmebaasi. Viimane portage fail sai küll eelnevalt alla laaditud ja lahti pakitud, aga andmebaasid võivad olla vahepeal uuenenud ja ma tahan ju neid kõige uuemaid ning värskemaid versioone:

# emerge --sync

See protsess võib üsna palju aega võtta. Kui see saab lõpuks valmis, võib asuda esmase süsteemi ehitamisele:

# cd /usr/portage
# scripts/bootstrap.sh

Kui kohe alguses antakse veateade, siis jäi ilmselt PORT_LOGDIR muutuja poolt defineeritud kataloog loomata. Eks see tuleb siis nüüd lõpuks ikkagi luua ja bootstrap käsk uuesti anda

# mkdir /var/log/portage
# scripts/bootstrap.sh

See, mis nüüd toimuma hakkab, võtab tõesti palju aega :-). Kusjuures pahatihti on vähemalt minul see katkenud mingi järjekordse veateatega. Seejuures sama käsu uuesti andmisel antud viga enam ei tule. Ühesõnaga, vigade korral annad sama käsu uuesti ning loodad, et seekord õnnestub:

# scripts/bootstrap.sh

Selle protessi käigus (nimetatakse seda liikumist stage 1-lt stage 2-le) kompileeritakse esmalt kompilaator gcc, siis uut kompilaatorit kasutades libc teegid ja lõpuks kompileeritakse gcc kompilaator uuesti kasutades just äsja kompileeritud libc teeke. Ühesõnaga suur hulk vaeva selleks, et nii kompilaator kui C teegid oleksid optimiseeritud just minu arvutile

Kompileerimise teine etapp

Sellel etapil laadin alla ja kompileerin kõik Linuxi süsteemis vaja minevad utiliidid. Kuna nii C teegid kui ka kompilaator said esimesel etapil minu arvuti jaoks optimiseeritud, siis saavad ka kõik need utiliidid kompileeritud just minu arvuti jaoks. Pikk töö seisab ees, aga õnneks on minu osa selles väga väike.

Esmalt vaatan, millised komponendid üldse sellel etapil kaasatud on:

# emerge --pretend --emptytree --verbose system

These are the packages that I would merge, in order:

Calculating system dependencies ...done!
[ebuild  N    ] sys-devel/patch-2.5.9  -build* -debug -static 197 kB
(...)
[ebuild  N    ] sys-libs/pwdb-0.62  -debug (-selinux) 130 kB

Total size of downloads: 83,675 kB

Nagu näha, tuleb alla laadida 80 MB lähtekoodi ning see kõik ka kompileerida. Mis siis ikka, annan aga tuld:

# emerge --emptytree system

Nüüd võib asuda mõnda huvitavat filmi (või kahte) vaatama asuda. Süsteemi kompileerimine on pikk ja vaevarikas töö, mis võtab päris kõvasti aega sõltuvalt sellest, kui kiire arvutiga on tegemist. Pentium III protsessoriga läpakas ei ole just kõige kiirem arvuti.

Seejuures kipub seegi protsess vigade tõttu katkema. Antud läpakal pidin vist kolm korda seda etappi uuesti alustama. Üheks võimalikuks põhjuseks on, et HP OmniBook 6000 läpakad kipuvad koormuse all üle kuumenema ning protsessor hakkab vigu tegema. Sain täiesti suvalisi veateateid, nagu näiteks ei õnnestunud mõnda patch-i peale panna. Uuesti proovides ei olnud selle patch-l enam midagi viga. Lõpuks tõstsin läpaka laua pealt üles, et õhk käiks vabalt põhja alt läbi ja annaks natukenegi lisajahutust. Kui siis veel vahepeal fööniga külma õhu rezhiimis õhku korpuse sisse puhusin, sai lõpuks ka teine etapp tehtud.

Siit ka hoiatus kõigile: Gentoo Linuxi installeerimine annab protsessorile kõvasti koormust ning korraliku jahutuse puudumisel või overclocked masina puhul paigaldus ei õnnestu ning halvimal juhul võib masinast ka lahti saada. Ette rutates mainin, et antud läpakal läheb ventilaator vahetusse, kuna ei pidanud sellele vatile vastu.

Mitu päeva hiljem ...

Tegelikul kõigest järgmisel hommikul. Jätsin arvuti ööseks kompileerima ning hommikuks oli valmis teise etapi kompileerimine valmis.

Kui eelnevalt sai arvuti kell pandud UTC aja peale, siis nüüd sätin ajatsooni paika näitamaks Eesti kohalikku aega:

# ln -sf /usr/share/zoneinfo/Europe/Tallinn /etc/localtime

Järgnevalt laadin alla kerneli lähtekoodid:

# emerge gentoo-sources

Ja siis kontrollin, et /usr/src kataloogis oleks linux nimeline symlink antud versioonile:

# ls -l /usr/src/linux
lrwxrwxrwx  1 root root 23 Jun 15 18:48 /usr/src/linux -> linux-2.6.11-gentoo-r11

Kui seda ei ole või see viitab valele versioonile, siis kustutan olemasoleva ning loon uue:

# rm /usr/src/linux
# ln -s /usr/src/linux-2.6.11-gentoo-r11 /usr/src/linux

Kerneli konfigureerimine.

Nüüd asun oma kernelit konfigureerima. Võiks kasutada ka genkernel-t, aga siis jääks ju kogu lõbu ja käsitöö ära. Seejuures ei ole kerneli konfigureerimises midagi keerulist. Kunagi alguses kartsin just seda osa kõige enam, aga peale mõnda proovimist osutus see päris lihtsaks.

Kernelisse tuleb lisada tugi kõikidele vajaminevatele teenustele ning rauale, mis mu läpakas on. Teenuste ning raua tugi võib olla kompileeritud otse kernelisse või siis moodulitena, mis laaditakse kernelisse alglaadimiel. Kõik universaalsed Linuxi distributsioonid nagu Fedora, Ubuntu ja teised tulevad väikese kerneli ning suure hulga moodulitega, et tulla toime võimalikult suure hulga erineva riistvaraga. Mina aga tean oma rauda täpselt, ning kompileerin toe sellele otse kernelisse. Moodulitena kompileerin ainult teenused ning toe rauale, mida ehk kunagi kasutan, aga mitte igapäevaselt.

Enne kerneli konfigureerimist heidan pilgu peale oma läpaka rauale. Selles on abiks lspci nimeline käsk. Süsteemi kompileerimise teisel etapil seda automaatselt ei paigaldatud, nii et mul on kaks võimalust: kas vajutan klahve ALT+F2 teise konsooli avamiseks või kompileerin pciutils paki, milles see käsk sisaldub.

ALT+F2 avab uue konsooliakna, milles saan kasutada CD-l olevat lspci käsku. Tagasi esimesele konsooliaknale saan vajutades klahve ALT+F1. Selle variandi eeliseks on, et juba kerneli konfiguratsioonis olles saan lihtsalt lülitada kahe konsooli vahel ning uuesti oma riistvarale pilgu peale heita.

Lisaks vaatan, millised moodulid laaditi Gentoo paigaldus-CD poolt tehes seda käsuga lsmod. Gentoo pagaldamisel üritatakse ära tunda nii palju rauda kui võimalik ning laadida kõige selle toetamiseks vajaminevad moodulid. Laaditud moodulite nimekiri on heaks vihjeks kerneli konfigureerimisel.

# (vajutan ALT+F2 teise konsooli avamiseks)
# lspci
0000:00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03)
0000:00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
0000:00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 02)
0000:00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
0000:00:07.2 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (rev 01)
0000:00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
0000:00:0a.0 CardBus bridge: Texas Instruments PCI1420
0000:00:0a.1 CardBus bridge: Texas Instruments PCI1420
0000:00:0b.0 Ethernet controller: 3Com Corporation 3c556 Hurricane CardBus [Cyclone] (rev 10)
0000:00:0b.1 Communication controller: 3Com Corporation Mini PCI 56k Winmodem (rev 10)
0000:00:0d.0 Multimedia audio controller: ESS Technology ES1983S Maestro-3i PCIAudio Accelerator
0000:01:00.0 VGA compatible controller: ATI Technologies Inc Rage Mobility P/M AGP 2x (rev 64)
# lsmod
Module                  Size  Used by
ipv6                  185472  10
floppy                 44912  0
rtc                     8488  0
yenta_socket           14808  0
rsrc_nonstatic          6768  1 yenta_socket
pcmcia_core            27712  2 yenta_socket,rsrc_nonstatic
evdev                   6368  0
3c59x                  30680  0
mii                     2352  1 3c59x
parport_pc             27876  0
parport                22088  1 parport_pc
ahci                    7604  0
sata_qstor              6100  0
sata_uli                4368  0
sata_sis                4240  0
sata_sx4                9716  0
sata_nv                 5620  0
sata_via                5364  0
sata_svw                4596  0
sata_sil                5620  0
sata_promise            6900  0
libata                 27700  10 ahci,sata_qstor,sata_uli,sata_sis,sata_sx4,sata_nv,sata_via,sata_svw,sata_sil,sata_promise
dm_mirror              15320  0
dm_mod                 38080  1 dm_mirror
sbp2                   16920  0
ohci1394               25812  0
ieee1394               59704  2 sbp2,ohci1394
sl811_hcd               9392  0
ohci_hcd               15384  0
uhci_hcd               23936  0
usb_storage            47680  0
usbhid                 25696  0
ehci_hcd               22872  0
usbcore                75064  7 sl811_hcd,ohci_hcd,uhci_hcd,usb_storage,usbhid,ehci_hcd
# (vajutan ALT+F1 esimesele konsoolile tagasiminemiseks)

Raua kohalt on mul nüüd pilt selge. Lähen /usr/src/linux kataloogi ning käivitan kerneli konfigureerimise:

# cd /usr/src/linux
# make menuconfig

Kerneli konfigureerimisel peatun ainult nendel parameetritel, mida ma muudan. Ülejäänud parameetrid jäävad nii, nagu nad vaikimisi lubatud või keelatud on.

General setup --->
(-20050619) Local version - append to kernel release (NEW)

Mul on kombeks lisada kernelile oma versiooninumber, milleks on kompileerimise kuupäev, antud juhul siis 19. juuni 2005. Nii on mul lihtne eristada sama kerneli mitut versiooni.

Loadable module support --->
[*] Module unloading

Võimaldab kord kernelisse laaditud moodulid kernelist uuesti eemaldada. On abiks erinevate moodulite proovimisel.

Processor type and features --->
  Processor family --->
(X) Pentium-III/Celeron(Coppermine)/Pentium-III Xeon)

Valin oma läpaka protsesori.

Processor type and features --->
[ ] Symmetric multi-processing support

Läpakal on kahjuks ainult üks protsessor, seega pean toe mitmele protsessorile keelama.

Power management options (ACPI, APM) --->
  ACPI (Advanced Configuration and Power Interface) Support --->)
<M>   AC Adapter
<M>   Battery
<M>   Button
<M>   Video
<M>   Fan
<M>   Processor
<M>     Thermal Zone
< >   ASUS/Medion Laptop Extras
< >   IBM ThinkPad Laptop Extras
< >   Toshiba Laptop Extras

Kõik ACPI komponendid kompileerin moodulitena ning keelan ASUS, IBM ja Toshiba moodulid (neil pole minu HP-ga midgi pistmist).

Bus options (PCI, PCMCIA, EISA, MCA, ISA) --->
  PCCARD (PCMCIA/CardBus) support --->
<*> PCCard (PCMCIA/CardBus) spport
<*> CardBus yenta-compatible bridge support

Kompileerin PCMCIA toe otse kernelisse sisse, kuna läpakad kasutavad PCMCIA-d. Samuti kompileerin kernelisse siise CardBus yenta-compatible bridge toe. Põhjuseks vaata lsmod käsu väljundit -- yenta-socket leiti ning laaditi Gentoo poolt, ilmselt on siis tegemist õige valikuga.

Device Drivers --->
  Block devices --->
<M> Loopback device support
<M>   Cryptoloop Support

Need kaks moodulit võimaldavad mul luua krüpteeritud failisüsteemi, milles on hea hoida andmeid nagu pangakaartide koodid ja muu selline tundlik informatsioon. Kõik selles failisüsteemis olevad andmed on krüpteeritud ning ligipääs neile kaitstud parooliga (koera nimi ei ole hea ja turvaline parool :-).

Device Drivers --->
  Block devices --->
<*> RAM disk support
(16)  Default number of RAM disks
(4096) Default RAM disk size (kbytes)
[*]   Initial RAM disk (initrd) support

Kompileerin kernelisse sisse RAM ketta toe ning luban selle kohe alglaadimisel. Nimelt tahan ma arvuti käivitamisel näha kena graafilist pilti tavalise must-valge teksti asemel. Selleks on aga vaja RAM ketast ning tuge sellele alglaadimisel (initrd).

Device Drivers --->
  ATA/ATAPI/MFM/RLL support --->
< > RZ1000 chipset bugfix/support

Sellel ei ole minu läpakaga pistmist.

Device Drivers --->
  Networking support --->
    Ethernet (10 or 100Mbit) --->
[*] 3COM cards
<M>  3c590/3c900 series (592/595/597) "Vortex/Boomerang" support

Kompileerin toe oma sisemisele võrguadapterile kerneli moodulina. Hiljem hakkan seda masinat kasutama eelkõige raadiovõrgu adapteriga, seega tugi sisemisele võrguadapterile kompileerituna kernelisse pole mulle vajalik.

Device Drivers --->
  Networking support --->
    Ethernet (10000 Mbit) --->
< > S210 10Gbe XFrame NIC

No ei ole mul seda.

Device Drivers --->
  Networking support --->
    Wireless LAN (non-hamradio) --->
[*] Wireless LAN drivers (non-hamradio) ∧ Wireless Extensions
<M>  Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)
<M>    Prism 2.5 PCI 802.11b based PCI adaptor support
<M>  Hermes PCMIA card support

Need moodulid on vajaliku mu raadiovõrgu käimasaamiseks.

Device Drivers --->
  Input device support --->
<M> Event interface

Event interface on alternatiivne moodus hiirtega töötamisel. Läpakatel on tavaliselt nn. touchpad hiir, mille seadistamiseks on event interface vajalik. Kompileerin selle siiski moodulina ning laadin kui vaja.

Device Drivers --->
  Character devices --->
<M> Enhanced Real Time Clock support
<*> ATI chipset support
< > Intel i865 chipset support
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
<M>  ATI Radeon

Esmalt kompileerin mooduli arvuti sisemisele kellale ligipääsemiseks. Siis lisan kernelile ATI graafikaadapterite kiibistiku toe ning kompileerin mooduli ATI Radeon adapterile. Seejuures eemaldan Intel i865 kiibistiku toe, mida mul pole vaja.

Device Drivers --->
  Graphics support --->
[*] Support for frame buffer devices
<*>  VESA VGA graphics support
(1024x768@60) VESA default mode
<*> ATI Radeon display support

Siin valmistun ette graafilise pildi näitamist kohe arvuti laadimisel: luban frame buffer seadmete kasutamise, lisan kernelisse VESA VGA toe, määran vaikimisi resolutsiooni ning lisan ATI Radeon adapteri.

Device Drivers --->
  Graphics support --->
    Console display driver support --->
[*] Video mode selection support
<*> Framebuffer Console support

Jätkan graafilise pildi ettevalmistamist.

Device Drivers --->
  Graphics support --->
[*] Support for the framebuffer splash

Selle parameetriga on kernel alglaadimisel graafilise pildi näitamiseks ettevalmistatud.

Device Drivers --->
  Graphics support --->
[*] Backlight ∧ LCD device support --->
  <M> Lowlevel Backlight controls
  <M> Lowlevel LCD controls

Igaks juhuks kompileerin moodulid läpaka LCD ekraani kontrollimiseks. Hiljem on hea proovida, mis nendega saab ka teha.

Device Drivers --->
  Sound --->
    Advanced Linux Sound Architecture --->
      PCI devices --->
<M> ESS Allegro/Maestro3

Kompileerin oma häälekaardi toe kerneli moodulina.

Device Drivers --->
  USB support --->
< > Cypress USB thermometer driver support
< > USB PhidgetServo support

Ei tea, mis põhjusel need kaks on vaikimisi lubatud?

File systems --->
<*> Reiserfs support

Reiserfs toetuse kompileerin kernelisse sisse, kuna root jaotise failisüsteemiks valisin reisefs ja moodulina ei õnnestuks selle laadimine.

File systems --->
  Network File Systems --->
<*> SMB file system support (to mount Windows shares etc.)
[*]   Use a default NLS
(cp852) Default Remote NLS Option

Lisan kernelile ka toe Windowsi jagatud võrguketastele ning vaikimisi kooditabeliks 852.

File systems --->
  Native Language Support --->
(iso8859-15) Default NLS Option
<*>  Codepage 850 (Europe)
<*>  Codepage 852 (Central/Eastern Europe)
<*>  NLS ISO 8859-1 (Latin1; Western European Languages)
<*>  NLS ISO 8859-2 (Latin2; Slavic/Central European Languages)
<*>  NLS ISO 8859-4 (Latin4; old Baltic charset)
<*>  NLS ISO 8859-13 (Latin7; Baltic)
<*>  NLS ISO 8859-15 (Latin9; Western European Languages with Euro)
<*>  NLS UTF8

Kompileerin otse kernelisse sisse to erinevatele kooditabelitele, mis võivad vajalikuks osutuda.

Profiling support --->
[ ] Profiling support

Võtan maha toetuse kerneli profileerimisele (pole plaanis seda tegema hakata).

Kernel hacking --->
[ ] Kernel debugging
[ ] Debug preemptible kernel
[ ] Compile the krenle with frame pointers
[ ] Use 4Kb for kernel stacks instead of 8Kb

Samuti eemaldan kõik kerneli häkkimise võtmed.

Cryptographic options --->
<M> AES cipher algorithms (i586)

Eelnevalt mainitud krüpteeritud failisüsteemi tarbeks kompileerin AES krüpteerimismooduli.

Sellega ongi kerneli konfigureerimine tehtud. Väljun konfiguratsioonist salvestades muudetud parameetrid ning siis kompileerin kerneli käsuga make ning siis paigaldan kerneli moodulid käsiga make modules_install:

# make
# make modules_install

Nüüd paigaldan kerneli enda boot jaotisesse ning kopeerin ka konfiguratsioonifaili sinna:

# cp arch/i386/boot/bzImage /boot/kernel-2.6.11-r11-20050619
# cp System.map /boot/System.map-2.6.11-r11-20050619
# cp .config /boot/config-2.6.11-r11-20050619

See tehtud, tuleb veel lisada kerneli moodulid, mida tahan igal käivitamisel laadida, vastavasse konfiguratsioonifaili. Eelnevalt manan endale ette nimekirja kõikide moodulite nimedest, et vajalikud üles leida:

# find /lib/modules/2.6.11-gentoo-r11-20050619/ -type f -iname '*.o' -or -iname '*.ko'
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/lib/libcrc32c.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/lib/crc-ccitt.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/net/ipv4/netfilter/ipt_NOTRACK.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/net/ipv4/netfilter/iptable_raw.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/arch/i386/crypto/aes-i586.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/arch/i386/kernel/apm.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/sound/pci/ac97/snd-ac97-codec.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/sound/pci/snd-maestro3.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/net/wireless/orinoco_cs.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/net/wireless/orinoco.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/net/wireless/hermes.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/net/wireless/orinoco_pci.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/net/dummy.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/net/3c59x.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/acpi/ac.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/acpi/thermal.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/acpi/processor.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/acpi/button.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/acpi/fan.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/acpi/battery.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/acpi/video.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/base/firmware_class.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/char/drm/radeon.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/char/rtc.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/scsi/sata_sis.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/scsi/sata_sx4.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/scsi/ipr.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/scsi/dpt_i2o.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/block/loop.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/block/cryptoloop.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/input/evdev.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/video/backlight/lcd.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/drivers/video/backlight/backlight.ko
/lib/modules/2.6.11-gentoo-r11-20050619/kernel/crypto/crc32c.ko

Käivitamisel laaditavate moodulite nimekiri tuleb sisestada kataloogis /etc/modules.autoload.d olevasse faili kernel-2.6:

# nano -w /etc/modules.autoload.d/kernel-2.6
battery
ac
fan
thermal
video
button
orinoco-cs
3c59x
rtc
evdev
lcd
backlight

Paigaldan ka teenused raua automaatseks äratundmiseks ning lisan need alglaadimisel käivitatavate teenuste hulka:

# emerge coldplug
# rc-update add coldplug boot
# emerge hotplug
# rc-update add hotplug default

Failisüsteemi informatsioon.

Järgnevalt loon /etc/fstab konfiguratsioonifaili, kus on ära määratud süsteemi failisüsteemi ühenduspunktid:

# nano -w /etc/fstab
/dev/hda1               /boot           ext2            noauto,noatime          1 1
/dev/hda3               /               reiserfs        noatime,notail          0 0
/dev/hda2               none            swap            sw                      0 0
/dev/cdroms/cdrom0      /mnt/cdrom      iso9660         noauto,ro,user,unhide   0 0
/dev/fd0                /mnt/floppy     auto            noauto,user             0 0

Esialgses näitefailis asendan BOOT, ROOT ning SWAP tegelike kõvaketta jaotistega: BOOT jaotiseks /dev/hda1, ROOT jaotiseks /dev/hda3 ning SWAP jaotiseks /dev/hda2. Loomulikult tuleb ka muuta näitefailis olev root jaotise failisüsteem, milleks minu juhul on reisefs. Reiserfs puhul soovitatakse lisada ka parameeter notail.

Veel lisan mõned parameetrid CD-le ning flopiseadmele: mõlemad saavad parameetri user, mis lubab nende hilisemat monteerimist tavakasutajana ning CD seadmele lisan ka parameetri unhide. See viimane võimaldab ligipääsu varjatud failidele CD-l

Masina nimi.

Järgmiseks annan oma arvutile võrgus kasutatava nime ning määran ka domeeni:

# nano -w /etc/conf.d/hostname
HOSTNAME="hpx"

# nano -w /etc/conf.d/domainname
DNSDOMAIN="vaikene.net"
NISDOMAIN"vaikene.net"

Võrgu konfigureerimine.

Võrguseaded tuleb paika panna failis /etc/conf.d/net. Antud masinal saab olema kaks võrguühendust: sisseehitatud võrguadapter ning PCMCIA kaardina lisatud raadiovõrgu kaart. Hetkel jätan raadiovõrgu kõrvale ning sean ainult sisseehitatud võrguadapteri kasutama koduvõrgu DHCP serverit IP aadressi saamiseks:

# nano -w /etc/conf.d/net
#iface_eth0="192.168.0.2 broadcast 192.168.0.255 netmask 255.255.255.0"
iface_eth0="dhcp"
dhcpcd_eth0="-h $HOSTNAME"

Esmalt lisan kommentaarimärgi reale, millel võrguühendusele omistatakse staatiline IP aadress ning selle asemel aktiveerin rea, mille alusel IP aadressi saamiseks kasutatakse DHCP serverit. Samuti lisan DHCP kliendile võtme, millega antud arvuti nimi saadetakse DHCP serverile DNS kirje loomiseks. Nii pääseb läpakale hiljem üle võrgu ligi arvuti nime kasutades sõltumata IP aadressist, mis sel hetkel on kasutusel.

Lisan sisseehitatud võrguadapteri käivitamise alglaadimise skriptidele:

# rc-update add net.eth0 default

Lõpuks muudan faili /etc/hosts ning lisan sinna oma arvuti täieliku võrgunime ning lühinime. Nimed antud real peavad olema just sellises järjekorras:

# nano -w /etc/hosts
127.0.0.1   hpx.vaikene.net hpx localhost

PCMCIA.

Kuna läpakal on pesa kahe PCMCIA kaardi tarvis, paigaldan ka PCMCIA paki. USE="-X" välistab antud hetkel X serveri installeerimise:

# USE="-X" emerge pcmcia-cs
# rc-update add pcmcia default

Süsteemi informatsioon.

Nüüd määran root kasutaja parooli:

# passwd
New UNIX password:********
Retype new UNIX password:********
passwd: password updated successfully

Edasi panen paika oma klaviatuuri failis /etc/conf.d/keymaps:

# nano -w /etc/conf.d/keymaps
KEYMAP="fi-latin1"
SET_WINDOWKEYS="yes"

Klaviatuuri koodiks on see sama fi-latin1, mille võtsin kasutusele paigaldamist alustades.

Kuna arvuti sisemine kell sai seatud nätama UTC aega, siis annan sellest süsteemile ka teada:

# nano -w /etc/conf.d/clock
CLOCK="UTC"
CLOCK_SYSTOHC="yes"

See viimane rida sünkroniseerib kellad arvuti seiskamisel. Nimelt loetakse kellaaeg arvuti kellast käivitamisel ning sealt edasi tiksub juba süsteemikell, mille muutmisel jääb arvuti kell muutmata.

Süsteemne tarkvara.

Nüüd paigaldan veel mõned tarvilikud süsteemse tarkvara paketid. Esmalt süsteemne logija, milleks mina kasutan syslog-ng nimelist:

# emerge syslog-ng
# rc-update add syslog-ng default

Siis Cron-i deemon vixie-cron, mis käitab regulaarseid planeeritud töid:

# emerge vixie-cron
# rc-update add vixie-cron default

Järgmiseks , mis indekseerib süsteemi failid kiireks leidmiseks locate abil:

# emerge slocate

Reiserfs failisüsteemi tarbeks paigaldan reiserfsprogs:

# emerge reiserfsprogs

Ning võrguühenduse toimimiseks ning dünaamilise IP aadressi kasutamiseks DHCP kliendi:

# emerge dhcpc

Alglaadija.

Linuxi kerneli laadimiseks on vaja alglaadijat ehk bootloader-t. Minu valikuks on grub, mille ka paigaldan:

# emerge grub

Järgmiseks loon alglaadija konfiguratsioonifaili /boot/grub/grub.conf:

# nano -w /boot/grub/grub.conf
default 0
timeout 10
splashimage=(hd0,0)/grub/splash.xpm.gz

title=Gentoo Linux 2.6.11-r11 (19-Jun-2005)
root (hd0,0)
kernel /kernel-2.6.11-r11-20050619 root=/dev/hda3

Siin default 0 näitab, et vaikimisi laaditakse esimene valik (indeksi väärtus 0). Edasi timeout 10 tähendab, et vaikimisi valik laaditakse 10 sekundi järel, splashimage=(hd0,0)/grub/splash.xpm.gz aga manab alglaadija menüüle taustapildi.

Esimene valik algab reaga title=Gentoo Linux 2.6.11-r11 (19-Jun-2005). Seda rida näidatakse alglaadija menüüs ning võin siia kirjutada mida iganes. Edasi, root (hd0,0) tähendab, et kernel on esimese kõvaketta esimesel jaotisel (minu boot jaotis), kernel /kernel-2.6.11-r11-20050619 root=/dev/hda3 aga täpsustab laaditava kerneli versiooni ning annab kernelile ette parameetrid, milleks minul on esialgu ainult root jaotise asukoht.

Lõpuks paigaldan alglaadija boot jaotisele:

# grub
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

Süsteemi taaskäivitamine.

Sellega peaks kõik vajalikud sammud olema tehtud ning on aeg proovida, kas mu läpakas ka käivitub:

# exit
livecd gentoo # cd
livecd / # umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo
livecd / # reboot

Kui esmane laadimine ei õnnestu, näiteks seetõttu et failis /boot/grub/grub.conf sai tehtud viga, siis pole katki veel midagi. Tuleb aga CD-lt uuesti laadida, käivitada CD-l olev süsteem, monteerida kõvaketta jaotised külge ning teha parandused:

livecd root # mount /dev/hda3 /mnt/gentoo
livecd root # mount /dev/hda1 /mnt/gentoo/boot
livecd root # nano -w /mnt/gentoo/boot/grub/grub.conf
(parandused ...)
livecd root # umount /mnt/gentoo/boot /mnt/gentoo
livecd root # reboot

Kui juhtumisi on vaja uus kernel kompileerida, siis ka sellega saab edukalt hakkama:

livecd root # swapon /dev/hda2
livecd root # mount /dev/hda3 /mnt/gentoo
livecd root # mount /dev/hda1 /mnt/gentoo/boot
livecd root # mount -t proc none /mnt/gentoo/proc
livecd root # chroot /mnt/gentoo /bin/bash
# source /etc/profile
# cd /usr/src/linux
# make menuconfig

Kasutaja loomine.

Kui lõpuks on arvuti võimeline ennast ise laadima, login root kasutajana sisse ning loon endale igapäevaseks kasutamiseks kasutajatunnuse:

Login: root
Password: ********

# useradd -m -G users,wheel,audio,cdrom,floppy,games,usb,video -s /bin/bash enar
# passwd enar
Password: ********
Re-enter password: ********

Ja ongi mul tomiviv Gentoo Linux läpakas. Tõsi, ei mingit graafilist kasutajaliidest ega muid vilesid, aga nendest kirjutan järgmine kord.