Kihagyás

Gentoo

1. Bevezetés

A Gentoo Linux (kiejtés /ˈdʒɛntuː/ dzsen-tú) egy Linux-disztribúció. A tervezésénél fő szempont volt a modularitás, hordozhatóság és az optimalizálhatóság a felhasználó gépének megfelelően. Ezt úgy éri el, hogy az összes program alapvetően forrásból telepíthető a felhasználó által megadott optimalizálási paraméterekkel. A nagyobb programcsomagok rendelkezésre állnak előre lefordított, bináris formátumban is különböző architektúrákra. A Gentoo mindezt a Portage csomagkezelési rendszer használatával éri el.

A Gentoo Linux a hosszú farkú szamárpingvin (Pygoscelis papua) angol megfelelőjéről kapta a nevét a gyorsaságuk és alkalmazkodóképességük miatt. A szamárpingvin akár 36 km/h-s sebességgel is képes úszni és kiválóan alkalmazkodik a legzordabb időjáráshoz is.

A Gentoo forrásalapúsága és nagyfokú rugalmassága miatt kiválóan alkalmas forkolásra, saját disztribució kiadására, hisz könnyen saját igényre szabható a rendszer. Köztük, olyan nem kis cégek is vannak, mint pl. a Google a Chromium OS disztribúciójával.

2. Történelmi áttekintés

Az első Gentoo Linuxot, még Enoch Linux néven Daniel Robbins alkotta meg. A cél egy binárisok nélküli disztribúció készítése volt, mely lehetővé a hardverekre való optimalizálást a legszükségesebb programok használatával. Az Enoch disztribúciót 1999 decemberében adták ki 0.75-ös verziószám alatt.

Daniel Robbins és társai kifejlesztettek egy GCC klónt EGCS néven és ezen a ponton átkeresztelték a disztribúciót Gentoora. A változtatások olyan sikeresek voltak, hogy később hivatalosan is a GCC (v2.95) részévé váltak.

Ahogy az Enoch egyre finomodott, átnevezték Gentoo Linuxnak, noha párhuzamosan kiadtak még néhány Enoch verziót. Az első stabil verzió, a Gentoo Linux 1.0 2002 március 31 jelent meg. Robbins ez idő tájt még egy 450 MHz-es órajelre tuningolt Celeron 300-ason futtatta a Linuxait, de vett egy újabb gépet, amin nem működött megfelelően a rendszer. Később realizálódott benne, hogy másoknak is ugyanilyen gondjai vannak, amit nem tud megoldani és - szégyenszemre, mint Linux fejlesztő - FreeBSD-re váltott, majd néhány hónap múlva a BSD-s tapasztalatokkal felvértezve újult erővel vágott bele a Gentoo fejlesztésébe.

Noha a 2.2-es Linux kernel kiadása csalódás volt számára, a javított 2.4-es szériával úgy érezte új világ nyílt meg előtte, szóval a Gentoo Linux feléledt hamvaiból. E kudarcnak és a BSD-nek hála ekkor vágott bele a Portage koncepcióba, ami a Gentoo disztribúciók nélkülözhetetlen alapkellékévé vált.

Robbins 2000. január 3-án Új Mexikói székhellyel bejegyezte a Gentoo Technologies, Inc. céget, majd miután a Gentoo az egyik legmeghatározóbb Linux disztribúcióvá vált, 2004. 05. 28-ai dátummal bejegyezte a non-profit Gentoo Alapítványt (Gentoo Foundation, Inc. néven) és levédette a jogokat. A Gentoo Alapítványnak ma az elnök mellett öt tagja van.

A nagyobb döntések meghozatalához létrehoztak egy Gentoo Tanácsot, melynek jelenleg hét tagja van, melyeket egy évre választanak és havonta, vagy, ha a tagok szerint szükséges többször üléseznek egy nyilvános meeting keretein belül.

3. Jellemzők

A Gentoo főként azon Linux felhasználók tetszését nyerheti el, akik teljes kontroll alatt akarják tartani a gépüket. Ideális azok számára, akiknek van kedvük pepecselni azzal, hogy a lehető legjobban a saját hardverükre legyen optimalizálva a rendszer kezdve az architektúrától, a kernel modulokon át a felhasználó szintű szoftverekig.

Ennek az optimalizálhatóságnak köszönhetően a Gentoo kiváló asztali gépeknek éppúgy, mint szervereknek és régebbi gépeken is meglehetősen jól fut bizonyos keretek közt.

A Gentoo kiváló a tanulni vágyóknak is, programozóknak, adminisztrátoroknak, hisz a legalapvetőbb szinten kell a rendszert telepíteni, konfigurálni.

3.1. Portage

A Portage a Gentoo szoftver disztribúció és csomagkezelő rendszere. Az eredeti koncepció a port rendszer volt, melyet Berkeley Software Distribution (BSD) rendszerekhez fejlesztettek ki és amely nagyfokú rugalmasságot enged meg a telepítés során éppúgy, mint a szoftverek karbantartása területén. Erről a flexibilitásról a fordítási időben használható un. USE flagek gondoskodnak, melyek lehetővé teszik a függőségek kezelését, biztonságos telepítést (sandbox-on keresztül), a rendszer profilok használatát, vagy éppen a telepített fájlok felülírását, vagy megőrzését. A Portage rendszert Python nyelven programozták, ez a disztribúció „lelke”.

Jelen pillanatban közel 20 000 csomag található a hivatalos Portage rendszerben, de léteznek nem hivatalos kiterjesztések is (Gentoo Portage Overlays), sőt a rendszer azt is megengedi, hogy saját magunk is létrehozzunk egyet a Layman repo menedzselő eszköz jóvoltából.

Noha a Gentoot nem bináris disztribúciónak tervezték, a Portage rendszer lehetővé teszi a bináris csomagok telepítését is, abban az esetben, ha azok a túl nagyok, vagy épp nem érhetők el forrásban.

3.2. Hordozhatóság

A Gentoo és a Portage rendszer lehetővé teszi, hogy telepítés közben forrásból natív kódot állítsunk elő az adott architektúrára. Így noha a fordítás jelentős időt és erőforrást emészt fel, lehetővé válik a hordozhatóság, virtuális gép futtatása nélkül is.

Eredetileg a Gentoot x86-os architektúrára tervezték, de jelenleg az alpha, amd64, arm, arm64, hppa, ia64, ppc, ppc64, risc, sparc, x86 architektúrákat támogatja.

Az architektúra kiválasztását, valamint a fordító paraméterezéseit a /etc/portage/make.conf fájlban lehet megtenni, pl., ha Sandy Bridge chipünk van, akkor következőképpen:

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=sandybridge -O2 -pipe"
CXXFLAGS="${CFLAGS}"

A CPU család és modell meghatározásában segíthet /proc/cpuinfo tartalma, amit a következő módon nézhetünk meg:

user# grep -m1 -A3 "vendor_id" /proc/cpuinfo

A biztonságos Gentoo C flagek használatáról itt olvashatsz, további információk pedig GCC dokumentációjában.

3.3. Modularitás, optimalizáció

A Gentoo a forrás alapúságának és a Portage rendszernek köszönhetően nem csak csomagokat képes kezelni, hanem a csomagokon belül is tud optimalizálni.

Íme néhány szempont, ami miatt a Portage modulárisnak tekinthető:

  • profilok (BSD, Linux és az architektúrák stb.) választhatósága
  • a Portage rendszerben a csomagok kategória, valamint azon belüli csomagnév szerint érhetőek el.
  • vannak olyan csomagok, melyek összessége "meta-csomagok" is elérhetőek
  • egyes megkülönböztetett, dinamikus csomaghalmazok az emerge parancs előre definiált paramétereként is elérhetőek
  • USE flagek (csomagokon belüli modulok pl. USB, nyelvi modulok stb.)

Pár érv, mely bizonyítja, hogy a Gentoo a legmélyebben optimalizálható rendszerek körébe tartozik:

  • make paraméterek választhatósága
  • több architektúra (x86, amd64) támogatásának konfigurálhatósága (akár csomagonként)
  • a már szemléltetett architektúra választhatóság, C flagek használata
  • USE flagek (SSE, MMX, több szálas támogatás stb.)
  • verziókezelés (rugalmas maszkolhatóság, csomagonként, architektúránként)
  • maszkolás licencek alapján
  • külső (akár saját) csomagok integrálhatósága

4. Telepítés és konfigurálás

A Gentoo-t többféleképpen lehet telepíteni. A leggyakoribb módja a gentoo telepítésének a Minimális Telepítő CD, vagy Hibrid ISO használata, de más LiveCD, LiveUSB, vagy akármilyen másik Linux segítségével, de akár hálózatról is telepíthető.

A koncepció lényege az, hogy egy működő rendszer segítségével elő lehet készíteni a telepítést (particionálás, formázás stb.), majd a felmásolt alap – magát már fejleszteni képes – Gentoo rendszer (un. stage) számára át lehet adni a környezeti paramétereket és a vezérlést, úgynevezett chroot környezet használatával.

További információ a Gentoo kézikönyvben található.

4.1. Stage-ek

A stage-ek (állapotok) tömörített formában érhetőek el. 2005 októbere után az első két stage hivatalosan már nem támogatott, mivel folyamatos körkörös hibákat okozott és a teljes rendszer újrafordításával ugyanúgy elérhető a megfelelően optimalizált állapot a stage 3 esetében is.

  • Stage 1: újrafordítás és konfigurálás az alap toolchaintől kezdve.
  • Stage 2: a toolchain félkész állapotban van, de még egyes elemek fordítást igényelnek.
  • Stage 3: a rendszer már indításra kész, s az alaprendszer is le van fordítva. Csak a kernelt kell fordítani, illetve igény szerint speciális eszközöket (boot loader, cron és syslog démon). Adott esetben konfigurációs fájlok szerkesztése.
  • Stage 4: teljes Gentoo környezetet tartalmazó bootolható rendszer. Kiválóan alkalmas backupok számára, vagy olyan helyeken, ahol problémás a chrootolás.

A processzor architektúráknak és a rendszer elsődleges céljának megfelelően több stage 3 és stage 4 tölthető le, ilyenek pl. a minimal, multilib, cloud, hardened verziók.

4.2. Kernelek

A kernel (rendszermag), mint általában minden csomag, szintén forrásban érkezik a Gentooba. Mint a legtöbb Linux disztribúció a Gentoo is kínál egy előre konfigurált kernelt, de szabad kezet ad a konfigurálásban is, ugyanakkor annyit segít, hogy számos patch settel elérhető a hivatalos Linux kernel.

Néhány kernel a teljesség igénye nélkül:

  • genkernel: előre konfigurált kernel azok számára, akik nem értenek hozzá, vagy nem akarnak a konfigurálással foglalkozni.
  • gentoo-sources: ajánlott rendszermag, ami több a Gentoo által alkalmazott foltot tartalmaz.
  • hardened-sources: szerverek számára ajánlott Gentoo kernel.
  • vanilla-sources: a hivatalos kernel fa.
  • git-sources: a hivatalos kernel fa napi frissítése, ami leginkább fejlesztőknek, tesztelőknek ajánlott.
  • ck-sources: Con Kolivas kernel patch setje, a maximális interaktivitás és reagálási képesség elérése céljából.

4.3. Rendszerbetöltő

Miután a kernel telepítve lett, egy boot loadert (rendszerbetöltőt) kell még feltennünk, hogy a rendszert külső indítóeszköz nélkül tudjuk elindítani. Ez a rendszerbetöltő telepíthető a MBR-ba, egy adott partícióra, vagy egy másik eszközre és általában alkalmas több rendszer indítására (másik Linux, Windows stb.) egy menü segítségével. Ilyen rendszerbetöltők pl. a Grub, vagy a Lilo.

4.4. Szolgáltatások

Ahhoz, hogy egy rendszer a mindennapi használatra alkalmas legyen szükség van szolgáltatások (fájlrendszerek csatolása, naplózás, hálózatkezelés, grafikus környezet stb.) elindítására. Ezeket végzik az init (indító rendszerek). Szolgáltatások[halott link] és futási szintek listája

A Gentoo több lehetőséget kínál fel, használható az alapértelmezett OpenRC, de választható pl. a legtöbb Linux disztribúció által támogatott systemd is.

Az alapértelmezett OpenRC nem rugaszkodik el sem az eredeti unixos filozófiától (KISS), sem az init rendszerek eredeti céljától, ugyanakkor a mai igényeknek megfelelően rugalmas is, így egy modern, de Unix közeli operációs rendszer számára ideális. A Gentoo init szkriptjei 100%-osan kompatibilisek az OpenRC-vel, sőt a Gentoo külön OpenRC kompatibilis szolgáltatásokat tart karban pl. eudev (ami a ma már sysemd-be integrált udev alternatívája).

5. Csomagkezelő (emerge)

Az emerge parancssori felülete a Portage, és a legtöbb felhasználó így kommunikál a Portage-al. Ez a Gentoo egyik legfontosabb parancsa.

Az emerge szoftvercsomagok telepítésére, frissítésére és általános karbantartására szolgál Gentoo Linuxon.

5.1. Használat

Az emerge gazdag kimenetet biztosít a végrehajtandó változtatásokról, valamint információkat és figyelmeztetéseket biztosít az egyes csomagokról vagy a rendszerről. Az --ask, --pretend, és --verbose opciók hasznosak ahhoz, hogy a Portage több információt mutasson – alapértelmezés szerint az emerge parancs azonnal végrehajtja a kért műveletet.

A --help opció információkat nyújt a parancssori beállításokról:

emerge --help

5.2. Csomag telepítése

Telepítsd a net-proxy/tinyproxy csomagot az --ask és --verbose lehetőségekkel:

emerge --ask --verbose net-proxy/tinyproxy

5.3. Csomag keresése

Csomagok keresése proxyval a nevükben:

emerge --search proxy

Csomagok keresése proxyval a nevükben vagy leírásukban:

emerge --searchdesc proxy

Csomagok keresése reguláris kifejezéssel:

emerge -s '%^python$'

Sorold fel az összes csomagot egy kategóriában:

emerge -s '@net-ftp'

5.4. Távolítsd el a csomagokat

Távolítsd el a net-proxy/tinyproxy csomagot a függőségi érzékenységgel --depclean (-c) kapcsolóval:

emerge --ask --verbose --depclean net-proxy/tinyproxy

Ez csak azokat a csomagokat távolíthatja el, amelyekre nincs szükség egy jelenleg telepített csomag függőségeként.

A csomagok eltávolításához használja az emerge --deselect parancsot a --depclean parancs alternatívájaként.

5.5. Csomagok frissítése

Futtassd az emerge-t a teljes rendszer frissítéséhez a függőségekkel eggyütt:

emerge --ask --verbose --update --deep --newuse @world

Vagy rövid opciókkal:

emerge -avuDN @world

A --changed-use kapcsoló helyett használható a --newuse, bár ezzel az opcióval egyes USE jelzők már nem tükrözik a Gentoo lerakatában lévők aktuális állapotát. A --with-bdeps=y felépítési idő függőségek frissítésére is használható.

Ügyelj a Portage által a frissítés végén közölt információkra. Ezen információk egy része elérhető lehet a Portage naplójában.

Ha a Portage függőségi problémákat jelent, néha használhatod a --backtrack=30 (vagy még nagyobb szám) segíthet. Alapértelmezés szerint a Portage viszonylag alacsony korláttal rendelkezik arra vonatkozóan, hogy meddig próbálja feloldani a függőségeket (teljesítmény okokból), esetenként ez nem elég.