====== Gentoo 2004.3 installacija: Stage 1 NTPL iz Stage 3 ====== **Izvor:**[[http://forums.gentoo.org/viewtopic-t-274968-postdays-0-postorder-asc-start-0.html|Installing Gentoo 2004.3: Stage 1 NPTL on a Stage 3 Tarball]]\\ **Autor:** Bob P\\ **Prevod:** z10n \\ **Komentari i podrška:** [[http://www.gentoo-srbija.org/1_250_0.html|Instalacija Gentoo.2004.3: Stage1+NTPL iz Stage3 arhive]]\\ **Ostalo:** [[http://mysite.verizon.net/res8b0x8/gentoo/stage1-3.pdf|PDF verzija na engleskom]] //__**BRŽE OD METKA I SNAŽNIJE OD LOKOMOTIVE...Kako da napravite snažan i brz Gentoo Linux sistem !**__// ===== Uvod ===== Svaka Gentoo instalacija koja se bazira samo na instalaciju iz Stage 3 arhive, pati od dva problema: prvi problem stvaraju zavisnosti na baznom sistemu a drugi je potencijal da iste, iza sebe ostave neželjene fajlove iz Stage arhive, jer u arhivi **/var/db/pkg** nije dovršen. Ovde [[http://forums.gentoo.org/viewtopic.php?t=254119|rac]] (Administrator) kaže: //"Postoji preko 80 paketa u stage1 arhivi koji nisu izlistani u /var/db/pkg. Zašto? Kada radite vaš "emerge system", naravo da želite da upotrebite Vaš novi toolchain da bi ste preveli sistem i sav Vaš sofver koji koristite. Ako Portage vidi da je određena verzija iz Stage arhive i dalje trenutna, zanemariće je, i neće je ponovo prevesti. U situaciji gde neko očigledno bira šta će da prevodi, Portage će zaboraviti da je većina tog softvera već instalirana, što će na kraju napraviti takav efekat da Portage neće biti u stanju da počisti sve kada se "emerge system" završi"//. Kad malo bolje pogledamo, izgleda da ima dosta razloga za novu instalaciju od Stage 1 arhive, i dosta razloga da se Gentoo uvek instalira iz Stage 3 arhive. Još jedna dobra vest je ta, da je moguće izvesti Stage 1 instalaciju koristeći Stage 3 arhivu i na kraju dobiti najbolje iz oba sveta ;-) Ovaj instalacioni vodič će opisati kako da uradite takozvanu "Stage 1 na 3" instalaciju Gentoo Linuxa na Pentium klasi PC'a (x86 platforma) koristeći 2004.3 instalacioni mediji, CD-ROM i EIDE hard disk. Pored toga ćemo koristiti poslednji 2.6 kernel, NPTL triding, udev, i poslednju verziju GCC 3.4.3 kompajlera. ===== Postupak instalacije ===== ===== 1.0 Dovlačenje i prženje ISO slike minimalnog Live diska ===== ISO slika potrebnog Live diska se nalazi na adresi [[ftp://mirror.etf.bg.ac.yu/gentoo/releases/x86/2004.3/livecd/install-x86-minimal-2004.3-r1.iso|install-x86-minimal-2004.3-r1.iso]]\\ ===== 2.0 Podizanje sistema - Minimal Installation CD ===== Na početku u boot promptu "boot:", pritiskamo da bi smo selektovali standardni (default) gentoo kernel.\\ ===== 3.0 Konfiguracija mrežne kartice ===== Predpostavimo da je naša mrežna kartica prepoznata i da adresu dobijamo preko mreže konekcijom na DHCP server. # dhcpcd eth0 Ako to ipak nije slučaj, onda postupamo na sledeći način. Upisujemo statičku IP adresu u fajl /etc/conf.d/net i default gateway, naravno, ako ga imamo: # nano -w /etc/conf.d Primer konfiguracije statičke IP adrese izgleda ovako: iface_eth0="192.168.1.5 broadcast 192.168.1.255 netmask 255.255.255.0" gateway="eth0/192.168.1.1" ===== 4.0 Konfiguracija hard diska ===== **4.1 Pregled parametara hard diska**\\ U sledećem primeru prihvatamo činjenicu da je samo jedan hard disk instaliran na našem sistemu. On će biti prepoznat kao /dev/hda. Prvo ćemo pogledati default parametre diska pri podizanju, ovako: # hdparm /dev/hda /dev/hda: multcount = 16 (on) IO_support = 0 (default 16-bit) unmaskirq = 0 (off) using_dma = 1 (on) keepsettings = 0 (off) readonly = 0 (off) readahead = 256 (on) geometry = 16383/255/63, sectors = 120034123776, start = 0 Korisno je pogledati i informacije o disku: # hdparm -i /dev/hda /dev/hda: Model=WDC WD1200JB-00GVA0, FwRev=08.02D08, SerialNo=WD-WMAL92634373 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq} RawCHS=16383/16/63, TrkSize=57600, SectSize=600, ECCbytes=74 BuffType=DualPortCache, BuffSize=8192kB, MaxMultSect=16, MultSect=16 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=234441648 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120} PIO modes: pio0 pio1 pio2 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5 AdvancedPM=no, WriteCache=enabled Drive conforms to: device does not report version: * signifies the current active mode **4.2 Podešavanje parametara hard diska koristeći hdparm**\\ U ovom primeru se koristi hard disk WD1200JB. Moguće je dobiti bolje performanse koristeći nekoliko parametara programom hdparm. Sledeći parametri vrlo dobro rade sa ovim modelom diska: # hdparm -a256A1c1d1m16u1 /dev/hda /dev/hda: setting fs readahead to 256 setting 32-bit IO_support flag to 1 setting multcount to 16 setting unmaskirq to 1 (on) setting using_dma to 1 (on) setting drive read-lookahead to 1 (on) multcount = 16 (on) IO_support = 1 (32-bit) unmaskirq = 1 (on) using_dma = 1 (on) readahead = 256 (on) **4.3 Test performansi hard diska** Ovo su tipični rezultati za Pentium klasu PC'a bez UDMA... # hdparm -tT /dev/hda /dev/hda: Timing cached reads: 144 MB in 2.04 seconds = 70.60 MB/sec Timing buffered disk reads: 26 MB in 2.65 seconds = 9.81 MB/sec ...a ovo za Pentium 3 klasu sa UDMA66: # hdparm -tT /dev/hda /dev/hda: Timing cached reads: 520 MB in 2.01 seconds = 258.75 MB/sec Timing buffered disk reads: 114 MB in 3.01 seconds = 37.90 MB/sec **4.4 Particionisanje hard diska** **4.4.1 Prikaz informacija o particijama** U tehničkom smislu, sintaksa ove komande se koristi da bi se promenile informacije o particijama, ali ako je slučaj **ne** particionisanog diska onda će biti prikazane informacije koje su trenutno dostupne: # fdisk /dev/hda The number of cylinders for this disk is set to 14593. There is nothing wrong with that, but this is larger than 1024, and in certain setups could cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): p Disk /dev/hda: 120.0 GB, 120034123776 bytes 255 heads, 63 sectors/track, 14593 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System Command (m for help): **4.4.2 Planiranje particione sheme:** Da bi smo održali jednostavnost, krećemo sledećom shemom za particionisanje. Detalje ćemo izostaviti, jer predpostavljamo da znamo kako da particionišemo hard :-) !? Partition File System ID Size Description /dev/hda1 ReiserFS 3.6 83 100 MB Boot partition /dev/hda2 (swap) 82 512 MB Swap partition /dev/hda3 ReiserFS 3.6 83 Remainder Root Partition **4.4.3 Particionisanje hard diska ** Nema detalja jer predpostavljam da znamo kako se to radi ... **4.4.4 Provera particja** Disk /dev/hda: 120.0 GB, 120034123776 bytes 255 heads, 63 sectors/track, 14593 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 76 506047+ 82 Linux swap /dev/hda3 77 14593 116607802+ 83 Linux **4.4.5 Particionisanje se privodi kraju...** Izlazimo iz Fdiska i snimamo formirane particije pritiskom tastera "w" da bi smo upisali particionu tabelu na disk i izašli iz Fdiska. Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks Particionisanje se može uraditi i programom **cfdisk**, samo otkucamo #cfdisk i startovaće se "udoban" meni iz kojeg imamo detaljan "grafički" prikaz kompletne particione tabele na disku ;-) **4.5 Instalacija fajl sistema** Sledeći primer obuhvata instalaciju Reiser 3.6 fajlsistema na /boot i / (root) particiju i naravno swap na /swap particiju. **4.5.1 Instalacija Reiser FS na /dev/hda1 i /dev/hda3** # mkreiserfs /dev/hda1 && mkreiserfs /dev/hda3 Ostaje nam samo da odgovorimo potvrdno sa "Y" kada budemo dobili pitanje da li da se nastavi instalacija Reiser FS na hard disk. **4.5.2 Instalacija swap particije na /dev/hda2** # mkswap /dev/hda2 && swapon /dev/hda2 **4.6 Montiranje fajl sistem komandom "mount"** Kada je sve gotovo, i particije i fajlsistemi, na redu je "montaža": # mount /dev/hda3 /mnt/gentoo # mkdir /mnt/gentoo/boot # mount /dev/hda1 /mnt/gentoo/boot ===== 5.0 Instalacija Gentoo fajlova ===== **5.1 Nabavka Stage3 arhive** Prvo Prebacujemo se u **gentoo** direktorijum, kako bi smo arhivu odmah dovukli u direktorijum gde će i biti otpakovana: # cd /mnt/gentoo Potrebna su nam dva fajla koje moramo da dovučemo sa mirora: Stage 3 arhivu i njen checksum file. Ovi fajlovi su locirani na mirorima u sledećem direktorijumu: /releases/x86/2004.3/stages/x86/ . Da bi smo ih dovukli, koristićemo komandu "wget" iz bash prompta. Sve kucamo u jednoj liniji, ovako: # wget ftp://mirror.etf.bg.ac.yu/gentoo/releases/x86/2004.3/stages/x86/stage3-x86-2004.3.tar.bz2 # wget ftp://mirror.etf.bg.ac.yu/gentoo/releases/x86/2004.3/stages/x86/stage3-x86-2004.3.tar.bz2.md5 Ako želimo da proverimo listu mirora, [[http://www.gentoo-srbija.org/mirori.html|Klik ovde!]]\\ (naravno, ako naša arhitektura nije x86, potrebno je da promenimo putanju i naziv fajla da bi smo dovukli pravu arhivu). **5.2 md5sum provera arhive** # md5sum -c stage3-x86-2004.3.tar.bz2.md5 stage3-x86-2004.3.tar.bz2: OK **5.3 Otpakivanje Stage3 arhive** Ovo ćemo uraditi na sledeći način: tar -xjpvf stage3-x86-2004.3.tar.bz2 Ok. sad je možda pravo vreme da napravimo pauzu i nadoknadimo potrošeni kofein, jer ovo može i da potraje ... **5.4 Portage - instalacija** **5.4.1 Nabavka Portage arhive - (Portage snapshot)** # wget ftp://mirror.etf.bg.ac.yu/gentoo/snapshots/.tar.bz2 **5.4.2 Portage arhiva - raspakivanje** Kako bi smo raspakovali Portage, koristimo: tar -xjvf /mnt/gentoo/.tar.bz2 -C /mnt/gentoo/usr Portage arhiva (snapshot) imaja naziv u formatu "portage-YYYYMMDD.tar.bz2", gde YYYY, MMM, i DD predstavljaju godinu, mesec i dan kada je arhiva napravljena. Kao što je napisano gore u upustvu uvek treba izabrati poslednju verziju, koja se uvek pojavi predhodnog dana od dana kada istu dovlačimo. Pratimo sledeće linije: # wget ftp://mirror.etf.bg.ac.yu/gentoo/snapshots/portage-20050101.tar.bz2 # wget ftp://mirror.etf.bg.ac.yu/gentoo/snapshots/portage-20050101.tar.bz2.md5sum # md5sum -c portage-20050101.tar.bz2.md5sum # tar -xjvf /mnt/gentoo/portage-20050101.tar.bz2 -C /mnt/gentoo/usr Moram da napomenem da neki od ovih koraka zahtevaju dosta vremena, u zavisnosti od konfiguracije i brzine internet konekcije. ===== 6.0 Instalacija Gentoo Base Sistema ===== **6.1 Kopiranje DNS informacija** Kopiramo DNS informacije iz /etc/resolv.conf kako bi smo obezbedili mrežu u našem novom Gentoo okruženju. # cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf **6.2 Montiranje proc fajl sistema** Montiraćemo /proc fajl sistem da obezbedimo našoj novoj Gentoo instalaciji da koristi kernel informacije unutar chroot okruženja. # mount -t proc none /mnt/gentoo/proc # cp /proc/mounts /mnt/gentoo/etc/mtab **6.3 Chroot u novo okruženje** # chroot /mnt/gentoo /bin/bash # env-update # source /etc/profile **6.4 Datum i vreme** **6.4.1 Podešavanje ispravnog datuma i vremena** Komanda za datum koristi sintaksu MMDDHHMMYYYY, gde je MM mesec, DD dan, HHMM je vreme i YYYY godina. Vreme kad ovo kucam je Nedelja 27 Mart 2005 u 22:56. # date 032722562005 Sun Mar 27 22:56:00 Local time zone must be set--see zic manual page 2005 **6.4.2 Simbolički link (symlink) za vremensku zonu** Ovaj primer prikazuje dostupne vremenske zone za zapadnu hemisferu: # ls /usr/share/zoneinfo/America Mi ćemo lokalnu vremensku zonu da podesimo na Evropsko. Da bi smo to uradili prvo ćemo obrisati symlink koji vodi na default vremensku zonu, pa ćemo posle zameniti simlinkom lokalne vremenske zone: # rm /etc/localtime # ln -s /usr/share/zoneinfo/Europe/Belgrade /etc/localtime Sun Mar 27 22:56:50 CST 2005 **6.5 USE flagovi, opcije za Portage i opcije za kompajler: /etc/make.conf** U sledećem primeru, sistem prevodimo za ~x86 arhitekturu i za Pentium klasu i586 podarhitekturu. Naša CHOST podešavanja će biti i586-pc-linux-gnu. ovde nećemo puno govoriti puno o USE flagovima jer je trenutno stanje dokumentacije za iste, pa može se reći ne dovršeno. Trenutno postoji oko 100 ne dokumentovanih USE flagova. Mi ćemo ovde koristiti malu kolekciju USE flagova da bi smo napravili naš base sistem. Slobodni se da dodajete USE flagove koje Vi smatrate da će vam biti potrebni, u zavisnosti kakav sistem želite da napravite. **Pažnja:** Uključivanje nptl, ithreads i phreads USE flagova a izbacivanje nptlonly USE flaga je nameran, kako bi smo za glibc omogućili podršku za oba NPTL i linuxthreads (pthreds). **Napomena:** Zbog sve češćih problema sa linux26-header-ima, preporučuje se korišćenje stable grane (x86) po defaultu. Ako se ipak odlučite za testing granu (~x86), nastavljate na svoju odgovornost. # cat /etc/make.conf CHOST="i586-pc-linux-gnu" CFLAGS="-O2 -march=pentium -pipe" CXXFLAGS=${CFLAGS} # "x86" **izbor za stabilnu softver granu** # "~x86" **izbor za testing softver granu** ACCEPT_KEYWORDS="x86" PORTAGE_TMPDIR=/var/tmp PORTDIR=/usr/portage DISTDIR=${PORTDIR}/distfiles PKGDIR=${PORTDIR}/packages PORT_LOGDIR=/var/log/portage PORTDIR_OVERLAY=/usr/local/portage GENTOO_MIRRORS="ftp://mirror.etf.bg.ac.yu/gentoo" MAKEOPTS="-j2" PORTAGE_NICENESS=3 AUTOCLEAN="yes" FEATURES="sandbox userpriv distlocks" USE="acpi cups ithreads ldap nls nptl pam pthreads python readline samba ssl tcpd" Naravno, konfiguracija make.conf fajla zavisi od, na primer, arhitekture procesora, namene Vašeg novog sistema itd. **6.6 Dodatna Portage podešavanja** **6.6.1 Pravljenje direktorijuma za Portage** Primer /etc/make.confa u nastavku, određuje direktorijume za Portage log fajlove i njegovo preklapanje (overlay). Ako nameravamo da koristimo loging i overlay funkcije, prikazane u primeru make.conf fajla, onda moramo da napravimo ove direktorijume na našem sistemu, pošto ovakav primer nije uključen kao standardni deo Gentoo instalacije, tj. standardno (po defaultu) ne postoje ovi direktorijumi. # mkdir /var/log/portage # mkdir /usr/local/portage **6.6.2 Package Keywords** **Uključivanje GCC 3.4.3 u stabilnu granu** Propustićemo ovaj korak ako smo predhodno konfigurisali naš sistem za testing (unstable ~x86) granu (eng.branch). Ako to nije slučaj nastavljamo dalje. Trenutno, kad je ovaj vodič napisan, GCC 3.4.3 je deo nestabilne (unstable) ili testing grane u Portage'u. Ako smo odlučili da koristimo "x86" stabilnu granu, onda moramo da konfigurišemo Portage i da ga "obavestimo" da smo uključili korišćenje nestabilnog (~x86) paketa, GCC 3.4.3 i još nekih toolkit komponenata. Da bi smo konfigurisali sabilnu granu sistema da koristi **ebuild** testing (unstable) grane, moramo da dopustimo Portage'u da zna da smo odobrili ovaj podskup testing grane da se koristi u našem sistemu. Ovo će biti završeno tako što ćemo upisati ime paketa i prikladnu "ključnu reč" (keyword) u **/etc/portage/package.keywords** fajl, i na ovaj način će biti uključujena podrška za nestabilnu, testing granu u našem sistemu. # cat /etc/portage/package.keywords sys-devel/gcc ~x86 sys-devel/gcc-config ~x86 sys-libs/libstdc++-v3 ~x86 sys-libs/glibc ~x86 **6.6.3 Nadogradnja Portage stabla** Na redu je Portage arhiva i nadogradnja iste kako bi smo uključili trenutno Portage stablo. emerge --sync **6.7 Aktivacija korisničkih lokala "User Locales"** Kada kompajliramo, prevodimo, glibc (ovo ćemo uraditi u sledećem koraku), predefinisano (default) Gentoo "ponašanje" je da prevede kompletan skup svih dostupnih korisničkih lokala. Da bi smo ovo izbegli, kako bi smo drastično smanjili vreme koje je potrebno za prevođenje, koristimo USE flag **userlocales** **6.7.1 Dodavanje userlocales USE flaga za glibc** # cat /etc/portage/package.use sys-libs/glibc userlocales **6.7.2 Određivanje korisničkih lokala** Ako ne postoji fajl /etc/locales.build, onda ga moramo sami napraviti, koristeći, naravno, naš omiljeni editor. Za naše potrebe, sadržaj fajla bi trebao da izgleda ovako: # cat /etc/locales.build en_US/ISO-8859-1 en_US.UTF-8/UTF-8 Kada budemo prevodili glibc, ako je uključen ovaj USE flag **userlocales** onda će glibc "pogledati" fajl /etc/locales.build, pročitati sadržaj i nastaviti sa prevođenjem korisničkih lokala koji su u istom fajlu definisani. Ovim postupkom, kako smo već spomenuli, štedimo vreme koje je potrebno za prevođenje glibc biblioteke. ===== 7.0 Izgradnja osnovnog skupa alata (Toolkit) ===== **7.1 Izgradnja osnovnog skupa alata** Konačno prelazimo na najzanimljiviji i po meni, najlepši deo ove alternativne instalacije: izgradnju osnovnog skupa alata, sa kojim ćemo podići kompletan Gentoo sistem. Ovaj skup alata zovemo **Toolkit** ili **Toolchain**. U daljem tekstu će Vam postati jasnije "zašto se baš tako zove!?" Da bi smo obezbedili **NPTL** podršku, od nas se traži da koristimo 2.6 verziju jezgra (kernela) i njegova, linux26 zaglavlja (linux26-headers). Na žalost, 2004.3 Stage 3 arhiva, sadrži zastarela linux zaglavlja (linux-headers), koja će, u ovom slučaju, imati ulogu blokera, kada budemo pokušali da uradimo instalaciju linux26 zaglavlja. Kako bi smo ovo izbegli, pre nego što krenemo u izgradnju našeg skupa alata (toolkita), prvo ćemo očistiti (uraditi unemerge) starih linux zaglavlja pa onda tek nastaviti sa instalacijom (emerge) linux26 zaglavlja. Linux zaglavlja jezgra (linux kernel headers), se uglavnom nadograđuju samo kada radimo nadogradnju nove verzije GNU C biblioteka (glibc). Kao rezultat ovoga, nas, uvek, čeka ponovo prevođenje glibc biblioteke posle nadogradnje linux26 zaglavlja. Takođe nas čeka instalacija nove verzije binutils i nadogradnja trenutne verzije GCC kada gradimo osnovni skup alata (toolkit). \\ Pogledajte sledeće linije, kako sve ovo otprilike izgleda, red po red: # env-update && source /etc/profile # emerge -C linux-headers # emerge linux26-headers # emerge gcc-config glibc binutils gcc ili ako preferirate jednu liniju, onda ovako: # env-update && source /etc/profile && emerge -C linux-headers && emerge linux26-headers && emerge gcc-config glibc binutils gcc **7.2 Ponovo prevođenje skupa alata: GCC 3.4.3** Nakon što smo instalirali (uradili emerge) nove verzije GCC kompajlera, trebali bi smo da zastanemo i da, za kratko, razmislimo šta smo zapravo uradili. Kad pogledamo sa strane, mi smo upravo iskoristili GCC 3.3.4 i skup alata koji je izgrađen sa GCC 3.3.4, da bi smo preveli GCC 3.4.3. Dakle pre nego što budemo krenuli u avanturu izgradnje Gentoo sistema, trebali bi smo ponovo da prevedemo kompletan toolchain, kako bi smo na kraju, kao rezultat, dobili GCC 3.4.3 koji je izgrađen sa GCC 3.4.3. Logično, zar ne? Pre nego krenemo sa potrošnjom vremena u izgradnji novog skupa alata, trebali bi smo da "preispitamo", vrlo važan fajl **/etc/make.conf** i da uradimo neophodne izmene, kako bi smo iskoristili nove karakteristike poboljšanja performansi koje nudi GCC 3.4.3. Nakon što završimo sa izmenama u make.conf fajlu, sledeće što se očekuje od nas je ponovo prevođenje skupa alata, gde koristimo novi GCC 3.4.3 komplajler. \\ **Rezultat:** Dobijamo 3.4.3 skup alata, prevedenih sa 3.4.3 skupom alata koji je izgrađen sa 3.4.3 skupom alata. Čisto i jednostavno, zar ne :-/ ? **7.2.1 Izmene u fajlu make.conf** Pa da krenemo. Evo nekih podešavanja u make.conf fajlu koje vredi razmotriti. To su trenutni CFLAGS (GCC flagovi) koji se koriste za izgradnju sistema i koji su se pokazali kao pouzdani, na nekoliko različitih instalacija. Ova podešavanja uključuju ekstremni nivo optimizacije koda (odmah se primećuje -O3 flag), i neki bezbedni i stabilni gccflagovi (CFLAGS) koji poboljšavaju performanse. Naravno, u zavisnosti od vašeg hardvera, možete ovde menjati, dodati ili isključiti neka podešavanja. \\ Kao što primećujete u ovom primeru se upotrebljava Intel Pentium. CFLAGS="-O3 -march=pentium -mtune=pentium -fforce-addr -momit-leaf-frame-pointer -fomit-frame-pointer -ftracer -pipe" CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden" Ako se ne osećate slobodno da koritite ovakav ekstremni nivo optimizacije koda, možete jednostavno "oboriti" ova podešavanja na manji nivo optimizacije. Ovo će, verovatno, smanjiti vreme za prevođenje, po ceni smanjenja performansi sistema. Naravno, i dalje ćete dobiti većinu privilegija koje nudi GCC 3.4.3, tako da će na kraju, čak i ovo biti dobar kompromis. Ovo, takođe, može biti dobar izbor za sve one koji ne žele "život na ivici noža" ili ne žele da izgube mnogo vremena na otklanjanju mogućih problema. \\ Pogledajte primer ovakvog slučaja: CFLAGS="-O2 -march=pentium -mtune=pentium -pipe" CXXFLAGS=${CFLAGS} **7.2.2 konfiguracija i izbor standardnog (default) C kompajlera** Iako smo instalirali (uradili emerge) GCC 3.4.3 kompajlera, on se svakako neće automatski podesiti kao naš standardni (default) kompajler. Ako ipak sumnjate u ovo, bacite pogled, na brzu u terminalu, na standardni izlaz komande "**emerge info**" ili "**gcc'config -l**". Kao što možete videti, iako smo uradili emerge GCC 3.4.3 on je idalje u senci, nama potrebnog, standardnog (default) kompajlera. \\ Standardni izlaz pri proveri izgleda ovako: # gcc-config -l [1] i386-pc-linux-gnu-3.3.4 * [2] i386-pc-linux-gnu-3.4.3 [3] i386-pc-linux-gnu-3.4.3-hardened [4] i386-pc-linux-gnu-3.4.3-hardenednopie [5] i386-pc-linux-gnu-3.4.3-hardenednossp Kako bi smo promenili gcc 3.4.3 na, nama potrebni, default kompajler koristimo sledeću komandu: # gcc-config 2 **7.2.3 Nadogradnja (update) sistemskog okruženja** Kako bi smo dalje nastavili sa instalacijom, potrebna nam je nadogradnja (update) okruženja. Koristimo komandu: # env-update && source /etc/profile **7.2.4 Prevođenje sistemskog skupa alata** Da, da, da, sad je pravo vreme da ponovo prevedemo naš sistemski skup alata. Prvo počinjemo sa ponovnim prevođenjem biblioteke glibc, binutils, gcc i na kraju Portage nadogradnjom. Ovo će, kao što smo već, naglasili, prevesti GCC 3.4.3 skup alata (koji je predhodno bio preveden sa GCC 3.3.4) sa GCC 3.4.3 kompajlerom, samo što će ovoga puta biti uključeni naši novi USE flagovi i podešavanja za kompajler CFLAGS. Krećemo: # emerge glibc binutils gcc portage Kada se prevođenje sistemskih alata završi, ponovo ćemo prevesti ceo sistem kako bi smo bili sigurni da je naš kompletan skup sistemskih alata preveden GCC 3.4.3 kompajlerom i karakterističnim podešavanjima za naš hardver. **Rezultat** //(još jednom)//: Skup sistemskih alata je preveden 3.4.3 kompajlerom pa je zatim kompletan sistem izgrađen sa istim 3.4.3 skupom alata, tako da na kraju dobijamo Gentoo sistem preveden sistemskim alatima koji su prethodno prevedeni GCC 3.4.3 kompajlerom. Sledi prevođenje (praznog stabla) sistema: # emerge -e system **7.2.5 Pregled** Na kraju svega, zbog preglednosti i čistoće, svešćemo sve ovo na samo tri koraka! Ove koraci se izvode u jednoj liniji, takozvani, **one-liner** sistem i predstavlja dobru ponudu ako želite da napravite, malo veću, pauzu dok Gentoo i Portage rade svoj posao, i da ne morate nakon svake komande da čekate kako bi ste izveli sledeću. Lepota ;-) **Prvi korak:** # env-update && source /etc/profile && emerge -C linux-headers && emerge linux26-headers && emerge gcc-config glibc binutils gcc **Drugi korak:** Pregledajte i izmenite USE i CFLAGS flagove u fajlu **/etc/make.conf** **Treći korak:** # gcc-config 2 && env-update && source /etc/profile && emerge glibc binutils gcc portage && emerge -e system ===== 8.0 Izgradnja Sveta (World) ===== **8.1 Ccache instalacija (alternativno)** Sada kada imamo potpuno funkcionalan skup sistemskih alata (toolkit), instaliraćemo program ccache. Ccache je keš za kompajler, koji pomaže tako što smanjuje vreme koje je potrebno za prevođenje programa koji su već bili prevedeni (recompiled programs). Kompajler keš (ccache) neće imati efekta na vreme potrebno za prvo kompajliranje programa, tako da je ovo samo alternativni korak. \\ **Napomena:** Veličina (CCACHE_SIZE) je postavljena na 512Mb u make.conf primeru (make.conf.example). Ako imate dosta prostora na disku, i planirate da emergujete nešto "veliko", na primer menadžere prozora kao što su GNOME i KDE ili ako radite emerge -e system ili emerge -e world, onda ćete morati da povećate veličinu keš kompajlera na, recimo CCACHE_SIZE="2G". ccache instalacija se izvodi po običaju: emerge ccache **8.2 Instalacija programa** Krećemo sa instalacijom korisnih paketa, odnosno puštamo pakete u "svet";-) # emerge syslog-ng xinetd grub vixie-cron reiserfsprogs sysfsutils udev dhcpcd hotplug coldplug gentoolkit # emerge --nodeps acpid ntp **8.3 Nadograđujemo okruženje** Nakon instalacije, emergovanja, programa dodajemo ove servise u standardni (default) nivo pokretanja sistema (runlevel). Prikazaćemo dva načina kao se ovo izvodi, pa kako je kome lakše. Izaberite koji vam više odgovara. **Prvi način:** # rc-update add syslog-ng default # rc-update add net.eth0 default # rc-update add vixie-cron default # rc-update add xinetd default # rc-update add sshd default # rc-update add hotplug default # rc-update add coldplug default # rc-update add acpid default # rc-update add ntp-client default **Drugi način**, takozvana "//ub3r-g33k//" metoda, probajte ovaj dobar bash loop, smanjiće "količinu" kucanja. for x in syslog-ng net.eth0 vixie-cron xinetd sshd hotplug coldplug acpid ntp-client ; do rc-update add $x default ; done **8.4 Konfiguracija NTP klijenta** U prethodnom koraku smo uradili emerge klijenta za NTP (Network Time Protocol), kako bi smo omogućili korišćenje NTP servera za sinhronizaciju našeg sistemskog vremena (sata). Koristimo sledeću komandu da bi smo uradili sinhronizaciju. # ntpdate -b -u pool.ntp.org ===== 9.0 Jezgro (kernel) ===== **9.1 Nabavka jezgra** Naša odluka da uključimo NPTL podršku, zahteva od nas da koristimo 2.6 jezgro. Pored toga što nam NPTL ne dozvoljava da koristimo zastarelo 2.4 jezgo, sa druge strane, nas ne ograničava da koristimo bilo koju vrstu 2.6 jezgra (nitro, ck, cko, love, dark, vanila...) U narednom primeru koristimo Gentoo Development Sources jezgro. Kao što smo već napomenuli, 2.4 jezgo neće raditi. # emerge gentoo-dev-sources **9.2 Pravljenje simboličkog linka (kernel symlink)** # rm /usr/src/linux # cd /usr/src # ln -s linux-2.6.10-gentoo-r2 linux **9.3 Konfiguracija** **9.3.1 Podrška za UDEV** Da bi smo koristili UDEV, potrebno je da izmenimo neke parametre u fajlu /etc/conf.d/rc. Evo pregleda parametara. Nakon izmene trebaju da izgledaju ovako: RC_NET_STRICT_CHECKING="no" RC_DEVICES="udev" RC_DEVICE_TARBALL="no" **9.3.2 Konfiguracija ostalih opcija jezgra** Ako ste od početka pratili ovaj vodič za instalaciju, shvatili ste da želimo najbolje performanse za naš sistem, to podrazumeva da "ručno", ne preko genkernela, prevedemo naše jezgro. Treba obratiti pažnju na neke stvari. Pošto smo u ovom vodiču odabrali UDEV, treba obratiti pažnju na uključivanje podrške za učitavanje hotplug firmvera (Hotplug firmware loading support) i na isključivanje podrške za devfs fajlsistem (/dev file system support). Pokrećemo meni za konfiguracuiju: # cd /usr/src/linux # make menuconfig Uključujemo podršku za **Hotplug firmware loading** Device Drivers ---> Generic Driver Options ---> <*> Hotplug firmware loading support Iključujemo devfs: File systems ---> Pseudo filesystems ---> [ ] /dev file system support (OBSOLETE) **9.3.3 Prevođenje jezgra** Da bi smo preveli jezgro i odabrane module, koristimo dole navedenu komandu. Čini se da je ovo mnogo bolja od ostalih //one-liner// metoda prevođenja jezgra, usput ovo će automatski instalirati kernel za Vas :) # make && make modules && make modules_install && make install ===== 10. Konfiguracija sistema ===== **10.1 Konfiguracija mrežnih adaptera** Preporučujem da pokušate da konfigurišete Vaš mrežni adapter držeći se Gentoo priručnika (Gentoo Installation Handbook), ali ćemo pored toga da analiziramo sledeći primer, gde našu IP adresu dobijamo sa DHCP servera. # cat /etc/conf.d/net iface_eth0="dhcp" dhcpcd_eth0="-t 10" naravno ako ovo ne zadovoljava naše potrebe, pogledajmo šta kaže priručnik kako bi trebalo: # (For DHCP) iface_eth0="dhcp" # Some network admins require that you use the # hostname and domainname provided by the DHCP server. # In that case, add the following to let dhcpcd use them. # That will override your own hostname and domainname definitions. dhcpcd_eth0="-HD" # If you intend on using NTP to keep your machine clock synchronized, use # the -N option to prevent dhcpcd from overwriting your /etc/ntp.conf file dhcpcd_eth0="-N" #(For static IP) iface_eth0="192.168.0.2 broadcast 192.168.0.255 netmask 255.255.255.0" gateway="eth0/192.168.0.1" #(For rp-pppoe) iface_eth0="up" Kao što primećujete, ovde imamo primer konfiguracije mrežnog adaptera (kartice) i u slučaju dinamičke DHCP i u slučaju statičke IP adrese. **10.2 Podešavanje naziva randne stanice (Hostnames) i naziva domena (Domainnames)** Pokušaćemo da se i u ovom primeru držimo Gentoo priručnika, ali pošto sus e neke stvari, vezane za hostname, promenile od kada je isti napisan, primer iz priručnika većina smatra zastarelim, no dobro razlike su male i mi ćemo ovde pokazati kako se podešava naziv naše Gentoo kutije na oba načina: **10.2.1 Naziv računara (Hostname)** Sledeći primer pokazuje podešavanja naziva na stari i novi način. Kao primer imena za računar, iskoristićemo Bobov originalni naziv 'boatanchor' ili 'sidro' __**zastareo način:**__ # echo boatanchor > /etc/hostname __**noviji način:**__ # cat /etc/conf.d/hostname HOSTNAME="boatanchor" **10.2.2 Podešavanje naziva domena (Domainname)** Kao i prethodnu operaciju, i ovu delimo na zastareo i novi način, dakle: # echo mydomain.com > /etc/dnsdomainname # echo nis.mydomain.com > /etc/nisdomainname ili # cat /etc/conf.d/domainname OVERRIDE=1 DNSDOMAIN="mydomain.com" NISDOMAIN="nis.mydomain.com" **10.2.3 Podesite /etc/hosts** Ako u Vašoj mreži postoji nameserver koji upravlja svim imenima u mreži, preskočite ovaj korak. Ako Vaš računar nije na mreži (standalone system) ili računar ima statičku IP adresu a nemate DNS koji ima zabeležene sve mašine u mreži na nekom nemeserveru, onda je najbolje da sami odredite informacije o adresama i imenima u fajlu **/etc/hosts file**. 127.0.0.1 localhost.localdomain localhost static.ip.addr.ess boatanchor.mydomain.com boatanchor Vrednosti '//stati.čke.ip.adres.se//' treba zameniti sa IP adresom Vašeg Gentoo računara. Na primer. ako Vaš Gentoo ima IP adresu 192.168.0.5, Vaš /etc/hosts fajl treba da sadrži sledeće linije. 127.0.0.1 localhost.localdomain localhost 192.168.0.5 boatanchor.mydomain.com boatanchor **10.2.4 Dodavanje domainname u standardni nivo za pokretanje (Default Runlevel)** # rc-update add domainname default **10.2.5 Preovera rezultata** # hostname -f boatanchor.mydomain.com **10.3 Gensplash** Za sve nas //eye-candy// zavisnike koji jednostavno ne možemo da živimo bez stvarčica kao što su sličke, u ovoj sekciji ćemo ukratko objasniti kako da dodamo **gensplash** koji će nam omogućiti ultra-cool framebuffer sličku u konzoli. Predpostavimo da većina nas ima velike monitore, gensplash ćemo konfigurisati za nešto veću rezoluciju (1280x1024), ali naravno Vi ste slobodni da ovu vrednost prilagodite Vašim potrebama, naravno. one-liner komanda ovako zvuči: # emerge splashutils && splash_geninitramfs -v -g /boot/fbsplash-emergence-1024x768 -r 1024x768 emergence && rc-update add splash default prosto ko pasulj ;) **10.4 Grub Bootloader** **10.4.1 Grub.conf** Sledeći korak nam je butloader. Kako bi smo uspešno startovali naš Gentoo Linux, potrebno je da konfigurišemo program za pokretanje sistema, butloader (eng. bootloader) a kao logičan izbor imamo Grub Bootloader. Iskoristićemo teks editor koji najviše volimo, kako bi smo napravili /boot/grub/grub.conf fajl. U ovom slučaju, kao i u većini drugih, koristimo nano editor: # cd /boot/grub # nano -w grub.conf Ako želite da se spasete kucanja ili prepravke ///boot/grub/grub.conf.sample// fajla, možete jednostavno **copy/paste** metodom ubaciti sledeći tekst u fajl. timeout 30 default 1 fallback 0 splashimage=(hd0,0)/grub/gentoo.xpm.gz # Boot Gentoo Linux (no framebuffer) title Gentoo-2.6.10-r2 root (hd0,0) kernel (hd0,0)/vmlinuz ro root=/dev/hda3 video=vesafb:ywrap,pmipal,1024x768-16@85 # Boot Gentoo Linux at 1280x1024 framebuffer resolution title Gentoo-2.6.10-r2, 1280x1024 root (hd0,0) kernel (hd0,0)/vmlinuz ro root=/dev/hda3 video=vesafb:ywrap,pmipal,1280x1024-24@85 splash=verbose,theme:emergence initrd (hd0,0)/fbsplash-emergence-1280x1024 Napomenuo bih samo da reč koja počinje sa "kernel" i završava se "splash=verbose,theme:emergence" treba da bude napisana u jednom redu. U ovom primeru, koristimo vesafb-tng video drajver, i linija video= treba da bude formirana u skladu s tim. **10.4.2 Grub Bootloader - instalacija** Grub pokrećemo iz komandnog prompta i koristimo sledeću komandu da 'upakujemo' //grub// u MBR našeg hard diska. Zapamtite, da mi, kad brojimo diskove počinjemo od **1**, ali Grub to radi od **0**, tako da **/dev/hda1** odgovara disku **0** i particiji **0**. instalacija: # grub grub> root (hd0,0) grub> setup (hd0) grub> quit **10.4.3 Dovucite Cool Cool Grub Splash Screen** Takođe ćemo nabaviti i jako lep Gentoo specific splash screen za Grub. wget http://www.schultz-net.dk/downloads/grub/gentoo.xpm.gz **10.5 Filesistemi - Konfiguracija /etc/fstab fajla** Ovaj primer /etc/fstab fajla odgovara particionoj shemi našeg dika koju smo koristili na početku ovog vodiča za instalaciju ultra-hyper-super snažnog i brzog Gentoo Linux sistema! Naravno, ako ste koristili drugačiju particionu shemu, unesite Vaše parametre. # /dev/hda1 /boot reiserfs noauto,notail 1 2 /dev/hda3 / reiserfs notail 0 1 /dev/hda2 none swap sw 0 0 /dev/cdroms/cdrom0 /mnt/cdrom iso9660 user,noauto,ro,exec 0 0 /dev/fd0 /mnt/floppy auto noauto,users 0 0 # NOTE: The next line is critical for boot! none /proc proc defaults 0 0 # glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for # POSIX shared memory (shm_open, shm_unlink). # (tmpfs is a dynamically expandable/shrinkable ramdisk, and will # use almost no memory if not populated with files) # Adding the following line to /etc/fstab should take care of this: none /dev/shm tmpfs nodev,nosuid 0 0 **10.6 Podešavanje parametara hard diska** Ako se vratimo i pogledamo unazad, na 4 korak, tada smo uneli parametre za optimizaciju našeg disk. Sada kada se nalazimo u //**chroot**// okruženju našeg predizajniranog Gentoo sistema, potrebno je da ove parametre podesimo kako bi ostali trajni na našem sistemu. Da bi smo ovo uradili, potrebno je da te iste parametre upišemo u /etc/conf.d/hdparm fajl, a to izgleda ovako: # cat /etc/conf.d/hdparm disc0_args="-a256A1c1d1m16u1" cdrom0_args="-d1c1u1" Nakon unošenja odgovarajućih parametara u /etc/conf.d/hdparm otkucaćemo sledeću komandu kako bi smo ubacili hdparm u boot nivo pokretanja sistema (boot runlevel). # rc-update add hdparm boot **10.7 Korisnički nalozi** Pre nego krenemo sa korišćenjem našeg novo Gentoo sistema, moramo da promenimo lozinku (password) na sistemu, zatim da dodamo korisnike na sistem.\\ **Napomena:** // Zamenite primere korisničkih imena koje ćemo koristiti Vašim imenima korisnika.// Prvo, promenite **root** lozinku: # passwd New password Unesite Vašu novu lozinku Re-enter password Ponovite Vašu novu lozinku Na redu je zanimljiv deo gde dolazi do izražaja jedna od Gentoo filozofija i njegova karakterističnost. Kako bi korisnici mogli da koriste naredbu "**su**" da bi dobili svoj privremeni root status, isti korisnici se moraju dodati u korisničku grupu pod nazivom "**wheel**". To ćemo uraditi na sledeći način: # useradd -m -G users,wheel bob # passwd bob New password: Enter bob's password Re-enter password: Re-enter bob's password Sada dodajte korisnike koji nemaju mogućnost korišćenja root privilegija: # useradd -m -G users mary # passwd mary New password: Enter mary's password Re-enter password: Re-enter mary's password **10.8 Uključite NUMLOCK ON pri podizanju sistema** Ako koristite numeričku tastaturu, uključite NUMLOCK pri podizanju sistema. \\ Izvršite sledeću komandu: # rc-update add numlock default **10.9 Definišite vreme za gašenje ekrana u terminalu (Console Screen Blanking Interval)** Ako niste zadovoljni sa standardnim vremenskim intervalom koje je definosano za gašenje ekrana kada ste u terminalu (obično to bude jako kratko vreme), možete odrediti željeni vremenski interval (od 1 do 60 minuta) koristeći sledeći komandu. Zamenite "n" i ubacite vrednost željenog intervala za gašenje monitora u minutima. Vrednost 0 će isključiti gašenje ekrana. # setterm -blank n Ova komanda je privremena, posle restarta vrednost vremenskog intervala za gašenje ekrana se vraća na standardno (default). Da bi ste promene za vremenski interval gašenja trajno podesili izvedite sledeću konadu. # echo 'setterm -blank n' >> /etc/conf.d/local.start **10.10 Izlazak iz chroot okruženja i demontaža (unmount) particija** Sada ćemo izaći iz chroot okruženja i demontirati sve montirane particije. exit cd ~/ umount /mnt/gentoo/proc /mnt/gentoo/boot /mnt/gentoo swapoff /dev/hda2 **11. REBOOT!** I sada, momenat koji smo dugo čekali! # shutdown -r now Kada se sistem restartuje, bićete dočekani sledećom porukom This is boatanchor.mydomain.com (Linux i586 2.6.10-gentoo-r2) HH:MM:SS boatanchor login: Uživajte i zabavljajte se u Vašem novom Gentoo sistemu!