Drzna namestitev Gentoo
Gentoo Linux je precej nenavadna zadevščina in nameščati Gentoo je nekaj takega, kot bi sestavljali svoj avtomobil, če ne kar izdelovali dele, ki bodo pozneje sestavljali naš avto. Kaj sploh je Gentoo? Daniel Robbins, oče Gentooja, ni bil zadovoljen s ponudbo GNU/Linuxa. Distribucije, ki so bile na voljo, so se mu zdele preveč zapletene, neprimerne, orodja, ki so bila na voljo, pa niso počela tega, kar si je želel. Tako sta se rodila Gentoo in portage, koncept in orodja za vzdrževanje, prevajanje in nadgradnjo paketov distribucije. Uporabniki BSD se bodo najbrž nasmehnili in pomislili na sistem ports, ki počne prav to.
Pred namestitvijo je treba vedeti, da imamo pred seboj kar težko nalogo, ki bo predvsem dolgotrajna. Ne bom ovinkaril in se sprenevedal, celotna namestitev sistema vam bo vzela vsaj tri dni časa. Nemogoče? Nak, celoten sistem bomo prevedli in optimalizirali za računalnik, v katerem bo tekel. Ne samo jedra sistema, temveč vse. Prevajali bomo osnovne knjižnice C, prevajalnik GCC, okolje XFree, namizje KDE in še cel kup manjših programov, potrebnih za delovanje sistema.
Za uspešno delo bomo potrebovali naslednje sestavine:
Najprej se bo treba odpraviti na spletni naslov http://www.gentoo.org, kjer je distribucija doma. Možnosti za namestitev je veliko, tu se bomo osredotočili na arhitekturo x86 in iz enega od zrcalnih strežnikov prenesli sliko osnovnega zagonskega CD-ROMa, ki ga najdemo v imeniku /releases/x86/1.4/livecd/basic/. Okroglih 100 MB bo v našem računalniku v nekako desetih minutah. Med tem časom se splača malo pobrskati po dokumentaciji, da bomo vedeli, kaj počnemo, in preveriti, ali je varnostna kopija sistema narejena, da ne bo prišlo do katastrofe. Preostane nam le še to, da zagonsko sliko posnamemo na prazen medij, ploščo pustimo kar v računalniku, računalnik znova zaženemo, preverimo zagonske nastavitve in počakamo, da se na zaslonu prikaže začetni pozdrav.
Strojna oprema in omrežje
V računalniku, s katerim smo preizkušali, je Gentoo sam našel vso potrebno strojno opremo, grafično kartico NVidia, omrežno kartico RTL in zvočno kartico VIA AC97, ki je integrirana na osnovni plošči. Prav tako je prepoznal procesor Athlon XP 1600+, miško PS/2 in krmilnik USB. Torej vse, kar potrebujemo za začetek. Za nastavitev omrežja se uporabi poizvedovanje DHCP; če v vašem omrežju ni strežnika DHCP, bo to neuspešno in omrežje boste morali nastaviti sami.
# net-setup eth0
Če je na vaš računalnik priključen modem ADSL, ga bo treba pripraviti za uporabo.
# adsl-setup
# adsl-start
Pri namestitvi bomo nujno potrebovali tudi navodila za namestitev, zato bo treba preklopiti na drugo navidezno konzolo s tipkama ALT+F2, kjer bomo na zaslonu prikazali pomoč z ukazom:
# links /mnt/cdrom/install.html
Po nekaj uvodnih besedah nam priročnik pove, da je vsem, ki Gentoo prvič nameščajo, priporočena uporaba tretjestopenjskega arhiva (stage3 tarball); pri tej namestitvi je količina programov, ki jih moramo sami prevajati, minimalna in namestitev bo najhitrejša. Mi se bomo pozabavali s prvo stopnjo, saj se gremo drzno namestitev. Zato berite naprej.
Razdelitev in formatiranje diska
Področje, na katerem se dogajajo svete vojne, vsak je prepričan, da je njegov način razdelitve diska pravi. Za testno namestitev Gentooja diska nisem razdeljeval na več manjših delov, temveč sem se odločil kar za en sam velik razdelek poleg izmenjalnega razdelka, tako bo še najmanj kompliciranja. Po tem, ko je disk razdeljen, ga bo treba še formatirati in vključiti izmenjalni razdelek. Zdaj se je treba odločiti tudi, kateri datotečni sistem bo na vašem disku. Izbira je precejšna, ext2, ext3, ReiserFS... Opravka imamo z domačim sistemom, ne bomo se ukvarjali z velikanskim številom datotek v enem imeniku, tudi z blazno velikimi datotekami ne. Ext3 bo kar pravšnja izbira.
# mke2fs -j /dev/hdb2
# mkswap /dev/hdb1
# swapon /dev/hdb1
# mount /dev/hdb2 /mnt/gentoo
Disk je formatiran in priklopljen v imenik /mnt/gentoo, zdaj je treba tja razpakirati celotno strukturo imenikov in datotek, ki bo rabila kot osnova našega sistema, in narediti seznam zrcalnih strežnikov distribucije, tako da bomo kar najhitreje prišli do izvirnih datotek.
# cd /mnt/gentoo
# tar -xvjpf /mnt/cdrom/stages/stage1-x86-20030910.tar.bz2
# mirrorselect -a -s4 -o " /mnt/gentoo/etc/make.conf
Takole, naš sistem je v neki grobi osnovi že uporaben, zdaj se bomo z ukazom chroot preselili nanj. Postorili bomo vse potrebno za delovanje našega sistema in hkrati uskladili portage sistem s tistim uradnim v internetu:
# mount -t proc proc /mnt/gentoo/proc
# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profile
# emerge sync
Če ukaz emerge sync ne bo deloval, uporabite emerge webrsync. Ena izmed prednosti distribucije Gentoo je možnost optimalizacije za našo arhitekturo in naš procesor in to bomo storili zdaj. Sistem gradimo čisto od začetka, zato bodo vse nastavitve precej vplivale na hitrost skupnega sistema. Celotna optimizacija je omejena na spremembe v eni sami datoteki. Našli jo boste v imeniku /etc. Najprej si oglejte spremenljivko CHOST, kjer se nastavi arhitektura, za katero bomo prevajali naš sistem.
seznam arhitektur
I386-pc-linux-gnu
procesorji, združljivi z intel 386
i486-pc-linux-gnu
procesorji, združljivi z intel 486
i586-pc-linux-gnu
procesorji Pentium, K6
i686-pc-linux-gnu
procesorji PPro, Pentium 2, 3, 4, Athlon, Duron
Za prevajanje je treba nastaviti še spremenljivki CFLAGS in CXXFLAGS. Prva pove prevajalniku programov C, s kakšnimi parametri naj prevede program, druga pa to stori tudi za prevajalnik C++. Kakšna je idealna izbira? To je vprašanje, s katerim se ubadajo mnogi, zato se ne bomo spuščali v prevelike podrobnosti, temveč bomo naredili le kratek povzetek ugotovljenega.
Emerge v akciji
Najprej bomo prevajalniku povedali, za katero arhitekturo oziroma za kateri procesor naj optimalizira prevedene programe. Na voljo sta nam dve stikali, -mcpu in -march. Prvo optimalizira kodo tako, da teče bolje na izbranem procesorju, vendar je koda še vedno združljiva z drugimi procesorji x86. Če namesto -mcpu uporabimo stikalo -march, naša distribucija ne bo več združljiva z drugimi procesorji in bomo morali ves sistem znova prevajati, če bomo svojega Athlona nadomestili s procesorjem Petium. Nekaj združljivosti izgubimo zaradi hitrosti. S prevajalnikom gcc 3.3.2 lahko prevajamo kodo za sledeče procesorje: i386, i486, i586, i686, pentium, pentium-mmx, pentiumpro, pentium2, pentium3, pentium4, k6, k6-2, k6-3, athlon, athlon-tbird, athlon-4, athlon-xp, athlon-mp. Poleg izbire arhitekture je treba določiti še stopnjo optimalizacije.
optimalizacija prevedene kode za prevajalnik GCC
-O0
Brez optimalizacije, privzeta nastavitev.
-O, -O1
Minimalna optimalizacija, prevajalnik se trudi zmanjšati velikost izvršne datoteke in pridobiti na hitrosti izvajanja.
-O2
Prevajalnik bo izvedel skoraj vse vrste optimalizacije, ki ne vplivajo bistveno na velikost izvršne datoteke.
-O3
Izvaja se popolna optimalizacija, za čim hitrejše delovanje kode.
-Os
Optimalizacija velikosti. Prevajalnik se bo trudil narediti čim krajšo izvršno datoteko.
Naši spremenljivki CFLAGS in CXXFLAGS bosta videti nekako takole:
CFLAGS="-O3 -march=athlon-xp -pipe"
CXXFLAGS="${CFLAGS}"
S stikalom -pipe povemo prevajalniku, naj za izmenjavo podatkov med posameznimi stopnjami prevajanja uporabi cevovode namesto začasnih datotek. Tako bomo prihranili čas in prostor na disku.
Ostane nam le še to, da sistemu portage povemo, kaj bi pravzaprav radi vključili v svojo distribucijo. V ta namen je spremenljivka USE in velikansko število zastavic, ki nam povedo, kaj vse smo vključili v distribucijo. Začeli bomo takole:
USE="3dnow alsa arts avi cdr crypt cups dga dvd dvdr -esd fbcon -gnome gd gdbm gpm imagemagick imlib java jpeg kde mpeg ncurses nls oggvorbis pdflib png qt samba spell truetype unicode usb xinerama xmms"
Tole je le manjši del zastavic, ki jih lahko uporabimo. Za podroben opis vseh zastavic je najbolje, da si ogledate priročnik za namestitev. Vključili smo podporo zvoku ALSA in zvočni strežnik Arts, podporo predvajanju in snemanju plošč CD in DVD, prav tako smo vključili podporo namizju KDE in okenskemu okolju X. Če ste kakšno zastavico pozabili in bi si jo pozneje zaželeli vključiti, je dovolj, da zastavico vključite in še enkrat prevedete želeni program.
Prevajanje sistema
Vse je pripravljeno in končno se lahko lotimo prevajanja našega sistema. Najprej bomo prevedli GNU C knjižnice, potem GNU C prevajalnik in še nekaj drugih ključnih orodij. Vse to se bo prevajalo kar dvakrat. Najprej z generičnim prevajalnikom, ki je zdaj v sistemu, potem pa s tistim, ki smo ga prvič prevedli. Precej opravljenega dela, a se bo izplačalo.
# cd /usr/portage
# scripts/bootstrap-2.6.sh
Če pri zagonu skripte bootstrap-2.6.sh uporabite stikalo -f (fetch only), bo skripta v vaš računalnik prenesla vse potrebne izvirne datoteke brez prevajanja. Zdaj, ko so stvari prevedene, lahko nadaljujemo. Pa si najprej oglejmo, kaj vse še moramo prevesti, in šele nato začnimo prevajati.
# source /etc/profile
# emerge --pretend system | less
Prevesti bo treba okrog sedemdeset paketov. To bo trajalo še dalj časa kakor prejšnje prevajanje. Če se še niste sprijaznili s tem, da bo vse skupaj trajalo precej časa, je skrajni čas, da to storite zdaj.
# emerge system
Tako, zdaj bi vas moralo pričakati sporočilo, da so vsi programi prevedeni. Ostane nam še nekaj malenkosti in naš sistem bo kmalu nared. Najprej se bomo postavili v naš, srednjeevropski časovni pas.
# ln -sf /usr/share/zoneinfo/Europe/Ljubljana /etc/localtime
Treba bo popraviti še datoteko /etc/fstab v kateri so napisana pravila za samodejni priklop diskov in drugih enot v ustrezne imenike ob zagonu sistema.
Namizje s poštnim odjemalcem in konzolo
Nastavitve in prevajanje jedra
Ali bomo uporabili generično jedro, ki je prišlo skupaj z distribucijo Gentoo? Ne. Ostali bomo drzni in brezkompromisno namestili jedro 2.6.x, ki je trenutno aktualno. Konfiguracijo jedra bom prepustil vsakemu posamezniku, opozoriti je treba le na nekaj malenkosti. V jedro je treba vključiti datotečni sistem, ki bo na korenskem razdelku, /dev/pts datotečni sistem, začetni ram disk (initrd support), podporo Unixu PTY in datotečni sistem DevFS, ki se mora avtomatsko priklopiti že ob zagonu.
# emerge sys-kernel/gentoo-dev-sources
# emerge genkernel
# genkernel --menuconfig kernel
# emerge -k app-admin/sysklogd
# rc-update add sysklogd default
# emerge -k sys-apps/vixie-cron
# rc-update add vixie-cron default
Če smo v internet povezani prek modema ADSL, si moramo namestiti tudi paket rp-pppoe in ga po vnovičnem zagonu sistema tudi nastaviti.
# USE="-X" emerge -k rp-pppoe
Pametno bi bilo spremeniti privzeto geslo za korenskega uporabnika, ker je zdaj nastavljeno na nekaj naključnih znakov, ki jih pa ne poznamo. Takoj zatem naredimo tudi uporabnika bigw, s katerim se bomo prijavili v sistem, saj kot korenski uporabnik tega ne bomo počeli, mar ne?
# passwd
# useradd bigw -m -G users,wheel,audio -s /bin/bash
# passwd bigw
Računalnik moramo še poimenovati, mu določiti domeno, v kateri je, in popraviti datoteko /etc/hosts.
# echo thefish > /etc/hostname
# echo lubica.lan > /etc/dnsdomainname
V datoteko /etc/modules.autoload.d/kernel-2.6 dodamo vrstico z imenom gonilnika za našo omrežno kartico, nato popravimo datoteko /etc/conf.d/net, kjer nastavimo naslov IP našega računalnika in prehodnega strežnika.
# rc-update add net.eth0 default
Večpredstavnost, splet in še kaj
Nastavitev zagonske ličinke (GRUB bootloader)
Za izbor in zagon sistema si lahko izberete GRUB ali LILO. Prvi naj bi bil boljši, novejši in nasploh superioren, torej ga bomo drzno uporabili! V testnem računalniku je bila namestitev narejena na drugi disk, ki je bil priklopljen na primarnem krmilniku IDE. Grub bomo namestili na MBR (master boot record) prvega diska.
# emerge --use-pkg grub
# grub
grub> root (hd1,1)
grub> setup (hd0)
grub> quit
Grub je zdaj nameščen na disku, vendar moramo še vedno napisati konfiguracijsko datotko /boot/grub/grub.conf. Pri testnem računalniku je bila vsebina datoteke taka:
timeout 30
default 0
splashimage (hd1,1)/boot/grub/splash.xpm.gz
title GNU/Linux
root (hd1,1)
kernel (hd1,1)/boot/kernel-2.6.3-gentoo-r1 root=/dev/discs/disc1/part2 vga=0x317 splash=silent
initrd (hd1,1)/boot/initrd-2.6.3-gentoo-r1
Še zadnje, najdrznejše, kar bomo storili: vnovični zagon sistema.
# exit
# cd /
# umount /mnt/gentoo/proc
# umount /mnt/gentoo
# reboot
Če je šlo vse posreči, boste na zaslonu zagledali pozdravni zaslon Gentoo GNU/Linuxa in lahko se boste prijavili v sistem. Pred vami je povsem delujoč operacijski sistem, ki pa je še vedno kakor nepopisan list in zdaj je odvisno od vsakega uporabnika posebej, kako si bo sistem prilagodil. Preden sem se odpravil spat, sem naredil še tole:
# emerge kde kdevelop mplayer mozilla opera nvidia-kernel nvidia-glx
Rezultat tega ukaza je sistem, v katerem je na volje praktično vse, kar bi si človek želel. Manjka le še pisarniški paket. Torej, če vam je na disku ostalo še kakšnih šest gigabajtov prostora, se veselo lotite prevajanja programskega paketa OpenOffice.org. Zabavno bo! Seveda pa si lahko omislite tudi binarno, že prevedeno različico, ki bo uporabna, brž ko jo boste prenesli v svoj računalnik.
Gentoo?
Za vsakega pravega hekerja je Gentoo prava poslastica, neskončno stvari, ki jih je mogoče nastaviti, popraviti in spremeniti. Za vse, ki bi radi iz svojega sistema iztisnili kar največ, je Gentoo prava stvar. Omejeni boste le s svojo ustvarjalnostjo in domišljijo. Na spletnem naslovu http://www.gentoo.org/ boste našli silno veliko dokumentacije, priročnikov in navodil za uporabo. Vsekakor je Gentoo zanimiva zadeva, ki pa ni za uporabnike, ki se prvič srečujejo z GNU/Linuxom. Potrpežljivost je lastnost, ki vam bo prišla prav pri nameščanju te distribucije, pa tudi kakšna igralna konzola ne bo odveč :-).