Viimati sai kirja pandud Gentoo Linuxi installeerimine vanal HP notebook arvutil. Vahepeal on kõvasti vett merre voolanud ning aeg edasi läinud. Seal kirjapandu ilmselt enam ei toimi ning kuna hetkel on just plaanis uuemal Dell Latitude D820 notebook arvutil Gentoo Linuxi uuesti installeerimine, siis panen selle siin ka kirja. Ehk on mõnel kodanikul sellest jutust ka mingit kasu. Antud juhend ei asenda Gentoo Linuxi ametlikku paigaldusjuhendit http://www.gentoo.org/doc/en/handbook/handbook-x86.xml.
Eelmine kord sai esitatud küsimus, et miks just Gentoo ning ka veidi lahatud põhjusi Gentoo Linuxi valikul. Eks need põhjused on samad ka nüüd ning lisaks ka 5-aastane kogemus Gentoo kasutamisel. Samuti on idling 1-3% faster than other distributions üheks põhjuseks.
Arvutiks seekord Dell Latitude D8200 läpakas 2 GHz Centrino Duo T2500 protsessori, 4 GB mälu ning 160 GB kõvakettaga.
CD tõmmise saab tõmmata Gentoo serverist või mõnest ametlikust peegeldusest. 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-2008.0.iso laadimine ning CD-le kirjutamine. Enne CD kirjutamist on soovitatav laadida ka fail install-x86-minimal-2008.0.iso.DIGEST ISO faili MD5 kontrollsummaga ning selle abil CD tõmmise kontrollimine.
$ md5sum -c install-x86-minimal-2008.0.iso.DIGEST
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. Klaviatuuripaigutus sellel läpakal on US ning ka klaviatuuripaigutuse küsimusele vastan ENTER klahvi vajutamisega.
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:15:C5:08:5E:CB
inet addr:192.168.0.176 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::215:c5ff:fe08:5ecb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:413 errors:0 dropped:0 overruns:0 frame:0
TX packets:226 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:56897 (55.5 Kb) TX bytes:33810 (33.0 Kb)
Interrupt:18
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:30 errors:0 dropped:0 overruns:0 frame:0
TX packets:30 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:540 (540.0 b) TX bytes:540 (540.0 b)
Näitab, et eth0 on olemas ning ka IP aadress 192.168.0.176 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=55 time=30.0 ms
64 bytes from noa.linux.ee (195.222.16.154): icmp_seq=2 ttl=55 time=0.000 ms
64 bytes from noa.linux.ee (195.222.16.154): icmp_seq=3 ttl=55 time=0.000 ms
--- noa.linux.ee ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.000/10.000/30.001/14.142 ms
Ka välisühendusega on kõik korras.
Nagu eelnevalt sai mainitud, on mu läpakal 160 GB kõvaketas. Pool sellest, ehk siis 80 GB, on Windowsi kasutuses ning Gentoo Linuxi jaoks jääb teine 80 GB-ne pool. Vaja läheb vähemalt kolme osa: boot, swap ning root. Tegelikult on plaanis kasutada eraldi jaotisi ka /usr, /var, /opt ning /home tarvis.
Käivitan fdisk-i ning vaatan olemasolevaid kõvaketta jaotisi käsuga p
. Hetkel on siin ainult Windowsi jaotis, mida ma ei näpi:
#fdisk /dev/hda
Command (m for help):p
Disk /dev/hda: 160.0 GB, 160041885696 bytes 255 heads, 63 sectors/track, 19457 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x0de90de8 Device Boot Start End Blocks Id System /dev/hda1 * 1 9728 78140128+ 7 HPFS/NTFS
Loon oma esimese jaotise, milleks on boot jaotis. Sisestan n
uue jaotise loomiseks, siis p
primary jaotiseks, edasi 2
. 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):2
First cylinder (9729-19457, default 9729):(vajutan ENTER)
Using default value 9729 Last cylinder or +size or +sizeM or +sizeK (9729-19457, default 19457):+32M
Uuesti p
käsku kasutades peaks nüüdd tabel näitama kahte jaotist:
Command (m for help): p
Disk /dev/hda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0de90de8
Device Boot Start End Blocks Id System
/dev/hda1 * 1 9728 78140128+ 7 HPFS/NTFS
/dev/hda2 9729 9733 40162+ 83 Linux
Boot jaotis tuleb teha laaditavaks ning Windows jaotiselt see lipp maha võtta, seega sisestan a
ning 1
. Seejärel uuesti a
ning 2
. Uuesti p
käsku kasutades peaks siin olema * ainult /dev/hda2 järel.
Järgmiseks loon swap jaotise. Sisestan n
uue jaotise loomiseks, p
primary jaotiseks, numbriks annan 3
. Esimeseks silindriks kasutan vaikimisi väärtust ning viimase silindri küsimusele vastan +1G
. 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 3
jaotise numbriks ning 82
jaotise tüübiks. Käsuga p
saan ette sellise tabeli:
Command (m for help): p
Disk /dev/hda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0de90de8
Device Boot Start End Blocks Id System
/dev/hda1 1 9728 78140128+ 7 HPFS/NTFS
/dev/hda2 * 9729 9733 40162+ 83 Linux
/dev/hda3 9734 9856 987997+ 82 Linux swap / Solaris
Kõvakettal saab olla ainult 4 primary jaotist, millest 3 on nüüdseks juba kasutusel. Kuna mul on plaanis lisada veel vähemalt 3 jaotist, teen kogu ülejäänud vaba kettaruumi Extended jaotiseks. Sisestan n
ning siis e
Extended jaotise loomiseks. Nii esimese kui ka viimase silindri küsimusele vastan ENTER klahvi vajutusega. p
käsuga peaks tabel nüüd välja nägema selline:
Command (m for help): p
Disk /dev/hda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0de90de8
Device Boot Start End Blocks Id System
/dev/hda1 1 9728 78140128+ 7 HPFS/NTFS
/dev/hda2 * 9729 9733 40162+ 83 Linux
/dev/hda3 9734 9856 987997+ 82 Linux swap / Solaris
/dev/hda4 9857 19457 77120032+ 5 Extended
Järgmine jaotis on väike FAT32 jaotis, mille abil on lihtne jagada faile Windowsi ja Linuxi vahel. Selle loomiseks sisestan n
. Esimeseks silindriks kasutan vaikimisi väärtust ning viimaseks silindriks +2G
2GB-se jaotise loomiseks. Käsuga t
muudan selle jaotise tüübiks W95 FAT32 (tüüp b
). Jaotiste tabel on nüüd järgmine:
Command (m for help): p
Disk /dev/hda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0de90de8
Device Boot Start End Blocks Id System
/dev/hda1 1 9728 78140128+ 7 HPFS/NTFS
/dev/hda2 * 9729 9733 40162+ 83 Linux
/dev/hda3 9734 9856 987997+ 82 Linux swap / Solaris
/dev/hda4 9857 19457 77120032+ 5 Extended
/dev/hda5 9857 10100 1959898+ b W95 FAT32
Järgnevalt loon väikese root jaotise. Kuna mul on plaanis kasutada eraldi loogilisi jaotisi /home, /usr, /var ning /opt jaoks, piisab root jaotisele täiesti 1 GB-st. n
, ENTER esimeks silindriks ning +1G
viimaseks silindriks.
Viimane jaotis võtab enda alla kogu allesjäänud ruumi kettal. Selleks sisestan n
ning kasutan vaikimisi väärtusi nii esimesele kui viimasele silindrile. Jaotise tüübiks sisestan t
käsuga 8e
ehk Linux LVM. See jaotis jääb loogiliste jaotiste tarvis. p
käsk peaks nüüd näitama lõplikku jaotiste tabelit:
Command (m for help): p
Disk /dev/hda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0de90de8
Device Boot Start End Blocks Id System
/dev/hda1 1 9728 78140128+ 7 HPFS/NTFS
/dev/hda2 * 9729 9733 40162+ 83 Linux
/dev/hda3 9734 9856 987997+ 82 Linux swap / Solaris
/dev/hda4 9857 19457 77120032+ 5 Extended
/dev/hda5 9857 10100 1959898+ b W95 FAT32
/dev/hda6 10101 10223 987966 83 Linux
/dev/hda7 10224 19457 74172073+ 8e Linux LVM
Füüsilised kõvaketta jaotised on sellega valmis ning kirjutan uue tabeli kettale 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.
Loogilised jaotised on sarnased tegelikele kõvaketta jaotistele ning pesitsevad ühel või mitmel füüsilisel kõvaketta jaotisel. Seejuures võivad loogilised jaotised paikneda mitmel füüsilisel jaotisel või isegi mitmel kõvakettal. Nende suurust on võimalik hiljem vastavalt vajadusele muuta, kui näiteks /home jaotis jääb liiga väikseks. Läpaka puhul mitteoluline, aga suurel arvutil saab näiteks lisada teise kõvaketta ning loogilise jaotise laiendada uuele kettale. Õige failisüsteemi puhul on loogiliste jaotiste suuruse muutmine võimalik "kuumalt" ning isegi arvuti taaskäivitamine pole vajalik.
Esmalt muudan LVM konfiguratsioonifaili nii, et see kasutaks ainult neid kõvakettaid, mis mul loogiliste jaotiste jaoks on eraldatud:
# nano -w /etc/lvm/lvm.conf
Otsin üles rea filter = [ "a/.*/" ] ning muudan selle järgmiselt:
filter = [ "a|/dev/hda|", "r/.*/"
]
Muudetud faili salvestamiseks vajutan klaviatuuril CTRL+O, siis ENTER failinime kinnitamiseks ning lõpuks CTRL+X väljumiseks.
Järgnevad kaks käsku on vajaliku juhul, kui installeerimine jäi pooleli ning on vaja üles leida olemasolevad loogilised grupid:
#vgscan
Reading all physical volumes. This may take a while... #vgchange -a y
Seejärel valmistan füüsilised jaotised ette:
# pvcreate /dev/hda7
Physical volume "/dev/hda7" successfully created
Loon loogiliste jaotiste grupi. Loogiliste jaotiste grupp on mitme füüsilise jaotise baasil loodud grupp:
# vgcreate vg /dev/hda7
Volume group "vg" successfully created
Siin vg on uue loogiliste jaotiste grupi nimi. Kasutades seda gruppi loon eelpool mainitud loogilised jaotised:
#lvcreate -L15G -nusr vg
Logical volume "usr" created #lvcreate -L10G -nvar vg
Logical volume "var" created #lvcreate -L5G -nopt vg
Logical volume "opt" created #lvcreate -L25G -nhome vg
Logical volume "home" created
Need uued jaotised peaksid nüüd /dev/vg all olema nähtavad:
# ls /dev/vg
home opt usr var
Järgmiseks loon oma uutel kõvaketta jaotistel failisüsteemid. Mul on kõvakettal kaheksa jaotist:
boot /dev/hda2 swap /dev/hda3 shared /dev/hda5 root /dev/hda6 usr /dev/vg/usr var /dev/vg/var opt /dev/vg/opt home /dev/vg/home
Boot ja root jaotistele teen ext2 failisüsteemi, kuna neid ma hiljem peaaegu et ei puutu ning zhurnaaliga failisüsteem nagu ext3 ei annaks midagi juurde:
#mke2fs /dev/hda2
#mke2fs /dev/hda6
Shared jaotis on failide jagamiseks Windowsi ning Linuxi vahel ning selleks kasutan FAT32 failisüsteemi:
# mkdosfs -vF 32 /dev/hda5
Vormistan swap jaotise ning võtan selle kasutusse:
#mkswap /dev/hda3
Setting up swapspace version 1, size = 1011703 kB no label, UUID=76c6e683-a0be-49a9-a50e-6848892db628 #swapon /dev/hda3
Ülejäänud jaotiste puhul kasutan xfs failisüsteemi, mis on minu praeguseks lemmikuks number 1. Oluliseks põhjuseks on see, et xfs failisüsteemi suurust on võimalik "kuumalt" muuta.
#mkfs.xfs /dev/vg/usr
#mkfs.xfs /dev/vg/var
#mkfs.xfs /dev/vg/opt
#mkfs.xfs /dev/vg/home
Kuna jaotised ning failisüsteemid on loodud, on aeg need külge monteerida:
#mount /dev/hda6 /mnt/gentoo
#mkdir /mnt/gentoo/{boot,var,usr,opt,home}
#mount /dev/hda2 /mnt/gentoo/boot
#mount /dev/vg/usr /mnt/gentoo/usr
#mount /dev/vg/var /mnt/gentoo/var
#mount /dev/vg/opt /mnt/gentoo/opt
#mount /dev/vg/home /mnt/gentoo/home
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). 6. märtsil 2009 kell 17:00 (15:00 UTC) :
# date 030615002009
Järgmiseks laadin kohalikust ftp.linux.ee serverist alla Gentoo paigaldusfaili stage3-i686-2008.0.tar.bz2. Esmalt liigun külgemonteeritud kõvaketta root jaotisele:
# cd /mnt/gentoo
Ning siis laadin nii paigaldusfaili kui ka MD5 kontrollsumma koos sisufailiga. Paigaldusfail on 112 MB, nii et aeglase internetiühenduse korral kulub selleks veidi aega:
#wget http://ftp.linux.ee/pub/gentoo/distfiles/releases/x86/current/stages/stage3-i686-2008.0.tar.bz2
#wget http://ftp.linux.ee/pub/gentoo/distfiles/releases/x86/current/stages/stage3-i686-2008.0.tar.bz2.CONTENTS
#wget http://ftp.linux.ee/pub/gentoo/distfiles/releases/x86/current/stages/stage3-i686-2008.0.tar.bz2.DIGESTS
Kontrollin, et allalaaditud failid oleksis vigadeta:
# md5sum -c stage3-i686-2008.0.tar.bz2.DIGEST
./stage3-i686-2008.0.tar.bz2: OK
./stage3-i686-2008.0.tar.bz2.CONTENTS: OK
Ning seejärel pakin selle lahti. Lahtipakkimine võtab ka veidi aega:
# tar -xvjpf stage3-i686-2008.0.tar.bz2
Kuna mul on root jaotis väga väike (1 GB), kustutan need allalaaditud failid peale lahtipakkimist ära:
# rm stage3-i686-2008.0.tar.bz2*
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.
Veendun, et olen ikka /mnt/gentoo kataloogis:
# pwd
/mnt/gentoo>
Seejärel laadin alla portage faili (34 MB) koos MD5 kontrollsummaga:
#wget http://ftp.linux.ee/pub/gentoo/distfiles/snapshots/portage-latest.tar.bz2
#wget http://ftp.linux.ee/pub/gentoo/distfiles/snapshots/portage-latest.tar.bz2.md5sum
Kontrollin, et fail ei oleks katkine:
# md5sum -c portage-latest.tar.bz2.md5sum
Ning siis pakin lahti. Kuigi see arhiivifail ise on väiksem, on siin palju pisikesi faile ning nende lahtipakkimine ei lähe kiiresti:
# tar -xvf portage-latest.tar.bz2 -C /mnt/gentoo/usr
Lahtipakkimise järel kustutan arhiivifaili:
# portage-latest.tar.bz2*
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. Baassüsteem paigaldamisel piirdun ainult nende võtmetega, mis selleks hädavajalikud ning võtan põhjalikuma võtmete seadmise graafilise liidese paigaldamisel.
# nano -w /mnt/gentoo/etc/make.conf
USE="-X"
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j3"
GENTOO_MIRRORS="http://ftp.linux.ee/pub/gentoo/distfiles/"
AUTOCLEAN="yes"
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. USE võtmete täieliku kirjelduse leiab siit: http://www.gentoo.org/dyn/use-index.xml.
USE="-X"
Teine oluline muutuja on CHOST. See määrab ära süsteemi arhitektuuri ning peaks vaikimisi make.conf failis olema juba õige.
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-4.1.2/gcc/.
-march=prescott | optimeerib koodi uutele Pentium4 protsessoritele MMX, SSE, SSE2 ja SSE3 käskudega. |
-O2 | lülitab siise 2. taseme optimiseerimise. |
-pipe | peaks kompileerimise protsessi mõningal määral kiirendama. |
-fomit-frame-pointer | ei kasuta frame pointerit juhul, kui seda pole vaja. |
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
Edasi, CXXFLAGS on soovitav panna võrduma CFLAGS muutujaga. CXXFLAGS defineerib võtmed C++ kompilaatorile.
CXXFLAGS="${CFLAGS}"
MAKEOPTS muutuja võimaldab anda ette võtmeid make programmile ning "-j3" võtmega luban kuni kolm paralleelset kompileerimise protsessi. Soovitatakse kasutada väärtust, mis on ühe võrra suurem tuumade arvust.
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/"
AUTOCLEAN="yes"
Uue versiooni installeerimisel kustutatakse vanad versiooni.
Enne uude keskkonda sisenemist tuleb kopeerida olemasolevad nimeserveri seaded:
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
Siis monteerida /proc ning /dev failisüsteemid:
#mount -t proc none /mnt/gentoo/proc
#mount -o bind /dev /mnt/gentoo/dev
Ja lõpuks uude keskkonda sisenemine:
#chroot /mnt/gentoo /bin/bash
#env-update
>>> Regenerating /etc/ld.so.cache... #source /etc/profile
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. Kuna ma sain hoiatuse, et portage vajab uuendamist, teen seda nüüd:
# emerge --oneshot portage
Kataloogis /etc uuendamist vajavad konfiguratsioonifailid uuendan käsuga etc-update:
# etc-update
Scanning Configuration files...
Automerging trivial changes in: /etc/logrotate.d/elog-save-summary
Exiting: Nothing left to do; exiting. :)
Mul on plaanis kasutada ainult inglise ning eesti keelt, mille määran ära failis /etc/locale.gen:
#nano -w /etc/locale.gen
en_US ISO-8859-1 en_US.UTF-8 UTF-8 et_EE ISO-8859-15 et_EE.UTF-8 UTF-8
#locale-gen
* Generating 4 locales (this might take a while) with 1 jobs * (1/4) Generating en_US.ISO-8859-1 ... [ ok ] * (2/4) Generating en_US.UTF-8 ... [ ok ] * (3/4) Generating et_EE.ISO-8859-15 ... [ ok ] * (4/4) Generating et_EE.UTF-8 ... [ ok ] * Generation complete
Esmane süsteem on pärit stage3 arhiivifailist, mis on tunduvalt vanem, kui hetkel kasutuses olevad versioonid. Seetõttu värskendan kogu süsteemi praegu, kus pakkide arv on veel väike ning ajakulu kõige väiksem. Samuti ei pea ma praegu eriti hoolima konfliktidest ning konfiguratsioonifailide muudatustest.
Enne tegelikku uuendamist teesklen uuendamist nägemaks, millised pakid uuendatatakse ning samuti heidan pilgu peale USE lippudele:
# emerge -pv --emptytree world
...
[blocks b ] <sys-fs/e2fsprogs-1.41 ("<sys-fs/e2fsprogs-1.41" is blocking sys-libs/e2fsprogs-libs-1.41.3-r1)
[uninstall ] sys-libs/com_err-1.40.8 USE="nls"
[blocks b ] sys-libs/com_err ("sys-libs/com_err" is blocking sys-libs/e2fsprogs-libs-1.41.3-r1)
[uninstall ] sys-libs/ss-1.40.8 USE="nls"
[blocks b ] sys-libs/ss ("sys-libs/ss" is blocking sys-libs/e2fsprogs-libs-1.41.3-r1)
Esimese asjana jäävad silma mõned pakid, mis blokeerivad uute versioonide paigaldamist. Praeguses etapis on suht turvaline need lihtsalt eemaldada ning siis uuesti proovida:
# emerge -C sys-fs/e2fsprogs sys-libs/com_err sys-libs/ss
# emerge -pv --emptytree world
...
[ebuild R ] sys-apps/tcp-wrappers-7.6-r8 USE="ipv6" 113 kB
...
[ebuild R ] sys-devel/gcc-4.1.2 USE="fortran mudflap nls (-altivec) -bootstrap -build -d -doc -gcj -gtk (-hardened)
-ip28 -ip32r10k -libffi% (-multilib) -multislot (-n32) (-n64) -nocxx -objc -objc++ -objc-gc -test -vanilla" 38,848 kB
...
USE lippudest ei meeldi mulle ipv6 ning fortran. Avan oma make.conf faili ning keelan seal need lipud. Samas lisan xattr ning xinetd lipud. Kõikide USE lippude kirjeldusteks ava http://www.gentoo.org/dyn/use-index.xml.
#nano -w /etc/make.conf
USE="-X-fortran -ipv6 xattr xinetd
"
Juhul, kui gcc või libc versioonid peaksid olema muutunud, tuleks enne süsteemi kompileerimist eraldi kompileerida gcc ning glibc. Selle kohta on palju erinevaid arvamusi, kuidas gcc ning glibc uuendamine peaks käima ning kui mitu korda neid kompileerida tuleks. Minule on siiani piisanud ühest korrast, aga kes soovib, võib ka kaks või rohkem kordi kompileerida.
# emerge -v gcc glibc
Kui kõik blokeeringud on likvideeritud ning USE lipud paigas, alustan pikka ning vaevarikast süsteemi kompileerimist. Leidke endale sobiv tegevus selleks ajaks, mina lähen Tehnika Maailma lugema.
# emerge -v --emptytree world
Paar tundi hiljem on kompileerimine lõpetatud. Osad konfiguratsioonifailid vajavad uuendamist ning teen seda käsuga etc-update
. Antud hetkel ei hooli me vanadest failidest ning -5
asendab kõik vanad failid pikemalt lobisemata uute versioonidega. Uuendame ka keskkonna muutujad ning võtame need kasutusse:
#etc-update
Scanning Configuration files... Automerging trivial changes in: /etc/security/limits.conf Automerging trivial changes in: /etc/nanorc Automerging trivial changes in: /etc/ssh/ssh_config Automerging trivial changes in: /etc/ssh/sshd_config The following is the list of files which need updating, each configuration file is followed by a list of possible replacement files. 1) /etc/bash/bashrc (1) 2) /etc/ca-certificates.conf (1) 3) /etc/init.d/crypto-loop (1) 4) /etc/pam.d/login (1) 5) /etc/login.defs (1) 6) /etc/man.conf (1) 7) /etc/ssh/moduli (1) 8) /etc/security/namespace.init (1) 9) /etc/pam.d/sshd (1) 10) /etc/udev/udev.conf (1) 11) /etc/wgetrc (1) Please select a file to edit by entering the corresponding number. (don't use -3, -5, -7 or -9 if you're unsure what to do) (-1 to exit) (-3 to auto merge all remaining files) (-5 to auto-merge AND not use 'mv -i') (-7 to discard all updates) (-9 to discard all updates AND not use 'rm -i'):-5
#env-update
>>> Regenerating /etc/ld.so.cache... #source /etc/profile
Kui eelnevalt sai arvuti kell pandud UTC aja peale, siis nüüd sätin ajatsooni paika näitamaks Eesti kohalikku aega:
# cp /usr/share/zoneinfo/Europe/Tallinn /etc/localtime
Kuna sellel masinal kasutan ma ka Windowsi, tuleb kell panna kohaliku aja peale:
#nano -w /etc/conf.d/clock
CLOCK="local
" TIMEZONE="Europe/Tallinn
"
Järgnevalt laadin alla kerneli lähtekoodid:
# USE="symlink" emerge -v gentoo-sources
symlink võtme kasutamine tekitab automaatselt sümboolse lingi /usr/src/linux sellele kerneli versioonile. Soovi korral võib selle võtme ka make.conf faili lisada.
Nüüd asun oma kernelit konfigureerima. 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.
Enne kerneli konfigureerimist heidan pilgu peale oma läpaka rauale. Selles on abiks lspci
nimeline käsk. Süsteemi kompileerimisel seda automaatselt ei paigaldatud ning selle kasutamiseks pean paigaldama pciutils nimelise paki:
#emerge -v pciutils
#lspci
00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03) 00:01.0 PCI bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port (rev 03) 00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01) 00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 01) 00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 01) 00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 01) 00:1c.3 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 4 (rev 01) 00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 01) 00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 01) 00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 01) 00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 01) 00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01) 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e1) 00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 01) 00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 01) 00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 01) 01:00.0 VGA compatible controller: nVidia Corporation G72M [Quadro NVS 110M/GeForce Go 7300] (rev a1) 03:01.0 CardBus bridge: O2 Micro, Inc. Cardbus bridge (rev 21) 03:01.4 FireWire (IEEE 1394): O2 Micro, Inc. Firewire (IEEE 1394) (rev 02) 09:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5752 Gigabit Ethernet PCI Express (rev 02) 0c:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
Mul on sellele masinale sobiv kerneli konfiguratsioon varasemast ajast juba olemas ning aja kokkuhoiuks kasutan selle ära kopeerides vana konfiguratsioonifaili /usr/src/linux kataloogi nimega .config. Kes soovib, võib seda sama konfiguratsioonifaili alustuseks kasutada. Kes aga soovib alustada puhtalt lehelt, jätku järgmine samm vahele. Hoiatus! See kerneli konfiguratsioon on minu läpaka jaoks ning teistsuguse riistvara puhul ei toimi.
#wget https://www.vaikene.ee/enar/config-20090307
#cp config-20090307 /usr/src/linux/.config
#cd /usr/src/linux
#make oldconfig
make oldconfig
laadib vana konfiguratsioonifaili ning küsib kinnitust nende võtmete puhul, mis on kas muutunud või värskelt kernelile lisatud. Alati tasub ? abi kasutada ning lugeda, mis kerneli progejad nende võtmete kohta kirjutavad. Kui tundub, et antud võtit pole vaja ning abiinfos on kah kirjas "If unsure, say N", siis on antud võtme keelamine üldjuhul turvaline. Kui aga on kirjas "If unsure, say Y", siis soovitan antud võtme ikka lubada. Osade teenuste või seadmemoodulite puhul on väljapääsuks ka moodulina (m) kompileerimine.
Uus konfiguratsioonifail valmis, vaatan kerneli konfiguratsiooni üle:
# make menuconfig
Help, Help ning veelkord Help. Võib ka ? klahvi kasutada. Kerneli progejad on iga võtme kohta midagi kirjutanud, sealhulgas ka soovitused mida teha, kui ei suuda otsustada. Tasub kõik võtmed läbi jalutada, vajutada ? klahvil abiinfo lugemiseks ning siis otsustada, kas see lubada, keelata või hoopis moodulina kompileerida.
General setup --->
(-20090307
) Local version - append to kernel release
Mul on kombeks lisada kernelile oma versiooninumber, milleks on kompileerimise kuupäev, antud juhul siis 7. märts 2009. Nii on mul lihtne eristada sama kerneli mitut versiooni.
General setup ---> <*
> Kernel .config support [*
] Enable access to .config through /proc/config.gz
Võimaldab mul näha hetkel jooksva kerneli konfiguratsiooni.
Processor type and features --->
Processor family (Core 2/newer Xeon
)
Valin oma läpaka protsesori.
Processor type and features --->
Preemption Model (Voluntary Kernel Preemption (Desktop)
)
Selle võtmega loovutab kernel protsessori tihedamalt kasutajaprogrammidele, mis mulle läpaka puhul sobib rohkem. Vastasel juhul töötaks kernel küll kiiremini, kuid koormuse korral tunduks arvuti mulle kui kasutajale uimasem.
Power management options ---> [*
] ACPI (Advanced Configuration and Power Interface) Support --->) <M
> AC Adapter <M
> Battery <M
> Button <M
> Video <M
> Fan <M
> Processor <M
> Thermal Zone
Kõik ACPI komponendid kompileerin moodulitena.
Power management options ---> CPU Frequency scaling ---> [*
] CPU Frequency scaling <M
> 'powersave' governor <M
> 'userspace' governor for userspace frequency scaling <M
> 'ondemand' cpufreq policy governor <M
> 'conservative' cpufreq governor <M
> ACPI Processor P-States driver <M
> Intel Speedstep on ICH-M chipsets (ioport interface)
Luban protsessori töökiiruse muutmise ning lisan kõik moodulid. Eks hiljem näe, millised neist just vajalikuks osutuvad. Läpakal on protsessori töökiiruse muutmine vastavalt vajadusele abiks aku kasutamise optimiseerimiseks. Protsessor pannakse väiksema sagedusega tiksuma ning alles koormuse kasvades suurendatakse sagedust.
Bus options (PCI etc.) ---> 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.
[*
] Networking support ---> Networking options ---> [*
] Packet socket <*
> Unix domain sockets [*
] TCP/IP networking
Ilma võrguta on tänapäeval raske hakkama saada. Unix domain sockets on hädavajalik isegi juhul, kui masinat mitte kunagi võrku ei ühendata.
Device Drivers ---> Block devices ---> <*
> 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 ---> <*
> Serial ATA (prod) and Parallel ATA (experimental) drivers ---> [*
] ATA ACPI Support <*
> AHCI SATA support [*
] ATA SFF support <*
> Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support
Kompileerin oma SATA ketta toe kernelisse.
[*
] Multiple devices driver support (RAID and LVM) ---> <*
> Device mapper support
Vajalik, kuna osad jaotised said tehtud LVM2 abil.
[*
] Network device support ---> [*
] Ethernet (1000 Mbit) ---> <M
> Broadcom Tigon3 support
Võrgukaardi toe kompileerin moodulina.
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 ---> <*
Sound card support ---> <M
> Advanced Linux Sound Architecture ---> PCI devices ---> <M
> Intel HD Audio
Kompileerin oma häälekaardi toe kerneli moodulina.
Device Drivers ---> [*
] HID Devices ---> <*
USB Human Interface Device (full HID) support
Enamus tänapäeva hiirtest ning klaveritest kasutab USB-d.
Device Drivers ---> [*
] USB support ---> <*
> EHCI HCD (USB 2.0) support <*
> UHCI HCD (most Intel and VIA) support
Ei saa me tänapäeval ilma USB-ta hakkama.
File systems ---> <*
> Second extended fs support <*
> Ext3 journaling file system support <*
> XFS filesystem support
Mulle olulised failisüsteemid kompileerin otse kernelisse. Moodulitena võib lisada nende failisüsteemide toetuse, millele ei ole vaja ligi pääseda alglaadimise ajal.
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 boot jaotisesse ning kopeerin ka konfiguratsioonifaili sinna:
#cp arch/i386/boot/bzImage /boot/kernel-2.6.27-r8-20090307
#cp System.map /boot/System.map-2.6.27-r8-20090307
#cp .config /boot/config-2.6.27-r8-20090307
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.27-gentoo-r8-20090307/ -type f -iname *.o -or -iname *.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
ac
battery
button
processor
thermal
acpi-cpufreq
cpufreq-conservative
cpufreq-ondemand
cpufreq-powersave
bluetooth
aes
cryptoloop
usbserial
Peale selle faili muutmist tuleb ka moodulite andmebaas uuendada:
# update-modules
Järgnevalt loon /etc/fstab konfiguratsioonifaili, kus on ära määratud failisüsteemi ühenduspunktid. Antud kirjutise alguses said tehtud kõvaketta jaotised /dev/hda2 jne. Paraku ei pruugi need uue kerneliga jääda samaks ning tegelikult tean ma ette, et minu SATA kõvaketta jaotised uued kerneliga laadides on hoopis /dev/sda2 jne.
#nano -w /etc/fstab
/dev/sda2
/boot ext2 noauto,noatime 1 1 /dev/sda6
/ext2
noatime 0 1/dev/vg/usr /usr xfs noatime 0 2
/dev/vg/var /var xfs noatime 0 2
/dev/vg/opt /opt xfs noatime 0 2
/dev/vg/home /home xfs noatime 0 2
/dev/sda3 none swap sw 0 0
tmpfs /tmp tmpfs defaults,nosuid,size=1024M,mode=1777 0 0
Esialgses näitefailis asendan BOOT, ROOT ning SWAP tegelike kõvaketta jaotistega: BOOT jaotiseks /dev/sda2, ROOT jaotiseks /dev/sda5 ning SWAP jaotiseks /dev/sda3. Lisan ka kõik teised jaotises, nagu /usr, /var, /opt ning /home. /tmp kataloogi jaoks kasutan tmpfs failisüsteemi suurusega kuni 1 GB, mis luuakse mälus ning kiirendab ajutiste failide töötlemist.
Järgmiseks annan oma arvutile võrgus kasutatava nime ning määran ka domeeni. Maksuametil on kuuldavasti masinad nimedega "maasikas" ning "vaarikas". Arvan, et "mustikas" oleks sobiv nimi minu masinale:
#nano -w /etc/conf.d/hostname
HOSTNAME="mustikas
" #nano -w /etc/conf.d/net
nis_domain_lo="vaikene.net"
Antud masinal saab olema kaks võrguühendust: traadiga võrguadapter ning traadita adapter. Hetkel jätan traadita võrgu kõrvale ning sean ainult traadiga võrguadapteri kasutama koduvõrgu DHCP serverit IP aadressi saamiseks:
#nano -w /etc/conf.d/net
config_eth0=( "dhcp" )
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.1mustikas.vaikene.net mustikas
localhost
Nüüd määran root kasutaja parooli. Kasutage ikka keerulisi paroole, kus on väikesed ning suured tähed segamini numbritega:
#passwd
New UNIX password:********
Retype new UNIX password:********
passwd: password updated successfully
Paigaldan veel mõned tarvilikud süsteemse tarkvara paketid. Esmalt süsteemne logija, milleks mina kasutan syslog-ng nimelist:
#emerge -v syslog-ng
#rc-update add syslog-ng default
Siis Cron-i deemon vixie-cron, mis käivitab regulaarseid planeeritud töid:
#emerge -v vixie-cron
#rc-update add vixie-cron default
Vältimaks süsteemsete logide liiga suureks kasvamist, paigaldan logrotate:
# emerge -v logrotate
XFS failisüsteemi tarbeks paigaldan xfsprogs:
# emerge -v xfsprogs
Kuna ma kasutan loogilisi kettajaotisi ning LVM2-te, siis paigaldan ka LVM2:
# emerge -v lvm2
Ning võrguühenduse toimimiseks ning dünaamilise IP aadressi kasutamiseks DHCP kliendi:
# emerge -v dhcpcd
Linuxi kerneli laadimiseks on vaja alglaadijat ehk bootloader-t. Minu valikuks on grub, mille ka paigaldan:
# emerge -v grub
Seejärel loon alglaadija konfiguratsioonifaili /boot/grub/grub.conf:
#nano -w /boot/grub/grub.conf
default 1 timeout 10 title=Windows XP rootnoverify (hd0,0) makeactive chainloader +1 title=Linux 2.6.27-r8 (7-MAR-2009) root (hd0,1) kernel /boot/kernel-2.6.27-r8-20090307 root=/dev/sda6 pci=assign-busses vga=0x31B
Siin default 1
näitab, et vaikimisi laaditakse teine valik (indeksi väärtus 0). Edasi timeout 10
tähendab, et vaikimisi valik laaditakse 10 sekundi järel.
Linuxi valik algab reaga title=Linux 2.6.27-r8 (7-MAR-2009)
. Seda rida näidatakse alglaadija menüüs ning võin siia kirjutada mida iganes. Edasi, root (hd0,1)
tähendab, et kernel on esimese kõvaketta teisel jaotisel (minu boot jaotis), kernel /boot/kernel-2.6.27-r8-20090307 root=/dev/sda6 pci=assign-busses vga=0x31B
aga täpsustab laaditava kerneli ning annab sellele ette parameetrid. Oluline on root=/dev/sda6
õieti paika saada, vastasel juhul ei leia kernel root jaotist üles.
Lõpuks paigaldan alglaadija boot jaotisele:
#grub
grub>root (hd0,1)
grub>setup (hd0)
grub>quit
Sellega peaks kõik vajalikud sammud olema tehtud ning on aeg proovida, kas mu läpakas ka käivitub:
#exit
#cd
#umount /mnt/gentoo/{boot,usr,var,opt,home,proc,dev,}
#vgchange -a n
#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:
#swapon /dev/hda3
#vgscan
#vgchange -a y
#mount /dev/hda6 /mnt/gentoo
#mount /dev/hda2 /mnt/gentoo/boot
#mount /dev/vg/usr /mnt/gentoo/usr
#mount /dev/vg/var /mnt/gentoo/var
#mount /dev/vg/opt /mnt/gentoo/opt
#mount /dev/vg/home /mnt/gentoo/home
#mount -t proc none /mnt/gentoo/proc
#mount -o bind /dev /mnt/gentoo/dev
#chroot /mnt/gentoo /bin/bash
#env-update
#source /etc/profile
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,usb,video -s /bin/bash enar
#passwd enar
Password:********
Re-enter password:********
Käivitan ka sshd deemoni selleks, et masinale üle võrgu ssh abil ligi pääseda:
#/etc/init.d/sshd start
#rc-update add sshd default
Ja ongi mul toimiv Gentoo Linux läpakas. Graafilise kasutajaliidese paigaldame järgmisena.